From 1b0a367a79b407cd2a838381b2a12fd91681f2c3 Mon Sep 17 00:00:00 2001 From: Riccardo Zaglia Date: Mon, 4 Jul 2022 17:03:39 +0200 Subject: [PATCH 01/60] Do not switch to statistics tab after connection --- alvr/dashboard/js/app/monitor.js | 36 -------------------------------- 1 file changed, 36 deletions(-) diff --git a/alvr/dashboard/js/app/monitor.js b/alvr/dashboard/js/app/monitor.js index 4d18bf8635..3accebdd70 100644 --- a/alvr/dashboard/js/app/monitor.js +++ b/alvr/dashboard/js/app/monitor.js @@ -892,42 +892,6 @@ define([ } function updateStatistics(statistics) { - clearTimeout(timeoutHandler); - // $("#connectionCard").hide(); - // $("#statisticsCard").show(); - if (!clientConnected) { - clientConnected = true; - // hide connection - if ($("#connectionTab").hasClass("active")) - $("#connectionTab").removeClass("active"); - if ($("#connection").hasClass("active")) $("#connection").removeClass("active"); - // show statistics - if (!$("#statisticsTab").hasClass("active")) $("#statisticsTab").addClass("active"); - if (!$("#statistics").hasClass("active")) $("#statistics").addClass("active"); - if (!$("#statistics").hasClass("show")) $("#statistics").addClass("show"); - // hide logging - if ($("#loggingTab").hasClass("active")) $("#loggingTab").removeClass("active"); - if ($("#logging").hasClass("active")) $("#logging").removeClass("active"); - if ($("#logging").hasClass("show")) $("#logging").removeClass("show"); - } - timeoutHandler = setTimeout(() => { - // $("#connectionCard").show(); - // $("#statisticsCard").hide(); - clientConnected = false; - // show connection - if (!$("#connectionTab").hasClass("active")) $("#connectionTab").addClass("active"); - if (!$("#connection").hasClass("active")) $("#connection").addClass("active"); - // hide statistics - if ($("#statisticsTab").hasClass("active")) - $("#statisticsTab").removeClass("active"); - if ($("#statistics").hasClass("active")) $("#statistics").removeClass("active"); - if ($("#statistics").hasClass("show")) $("#statistics").removeClass("show"); - // hide logging - if ($("#loggingTab").hasClass("active")) $("#loggingTab").removeClass("active"); - if ($("#logging").hasClass("active")) $("#logging").removeClass("active"); - if ($("#logging").hasClass("show")) $("#logging").removeClass("show"); - }, 2000); - for (const stat in statistics) { $("#statistic_" + stat).text(statistics[stat]); } From ac51254f3b1ae8d9247bf989c7e8f602390d02e2 Mon Sep 17 00:00:00 2001 From: Riccardo Zaglia Date: Fri, 23 Sep 2022 19:21:45 +0200 Subject: [PATCH 02/60] Expose nvenc and mediacodec options --- alvr/server/cpp/alvr_server/Settings.cpp | 15 +++ alvr/server/cpp/alvr_server/Settings.h | 15 +++ .../cpp/platform/win32/VideoEncoderNVENC.cpp | 74 +++++++++++- alvr/server/src/connection.rs | 16 +++ alvr/session/src/lib.rs | 14 +++ alvr/session/src/settings.rs | 114 +++++++++++++----- 6 files changed, 210 insertions(+), 38 deletions(-) diff --git a/alvr/server/cpp/alvr_server/Settings.cpp b/alvr/server/cpp/alvr_server/Settings.cpp index 022024b5bf..eb61cd9e3f 100644 --- a/alvr/server/cpp/alvr_server/Settings.cpp +++ b/alvr/server/cpp/alvr_server/Settings.cpp @@ -163,6 +163,21 @@ void Settings::Load() m_enableFec = config.get("enable_fec").get(); m_enableLinuxVulkanAsync = config.get("linux_async_reprojection").get(); + + m_nvencPreset = config.get("nvenc_preset").get(); + m_nvencRefreshRate = config.get("nvenc_refresh_rate").get(); + m_nvencEnableIntraRefresh = config.get("enable_intra_refresh").get(); + m_nvencIntraRefreshPeriod = config.get("intra_refresh_period").get(); + m_nvencIntraRefreshCount = config.get("intra_refresh_count").get(); + m_nvencMaxNumRefFrames = config.get("max_num_ref_frames").get(); + m_nvencGopLength = config.get("gop_length").get(); + m_nvencPFrameStrategy = config.get("p_frame_strategy").get(); + m_nvencRateControlMode = config.get("rate_control_mode").get(); + m_nvencRcBufferSize = config.get("rc_buffer_size").get(); + m_nvencRcInitialDelay = config.get("rc_initial_delay").get(); + m_nvencRcMaxBitrate = config.get("rc_max_bitrate").get(); + m_nvencRcAverageBitrate = config.get("rc_average_bitrate").get(); + m_nvencEnableAQ = config.get("enable_aq").get(); Debug("Config JSON: %hs\n", json.c_str()); Info("Serial Number: %hs\n", mSerialNumber.c_str()); diff --git a/alvr/server/cpp/alvr_server/Settings.h b/alvr/server/cpp/alvr_server/Settings.h index 2f879f4a19..002f0d76e1 100644 --- a/alvr/server/cpp/alvr_server/Settings.h +++ b/alvr/server/cpp/alvr_server/Settings.h @@ -129,4 +129,19 @@ class Settings bool m_enableFec; bool m_enableLinuxVulkanAsync; + + int64_t m_nvencPreset; + int64_t m_nvencRefreshRate; + int64_t m_nvencEnableIntraRefresh; + int64_t m_nvencIntraRefreshPeriod; + int64_t m_nvencIntraRefreshCount; + int64_t m_nvencMaxNumRefFrames; + int64_t m_nvencGopLength; + int64_t m_nvencPFrameStrategy; + int64_t m_nvencRateControlMode; + int64_t m_nvencRcBufferSize; + int64_t m_nvencRcInitialDelay; + int64_t m_nvencRcMaxBitrate; + int64_t m_nvencRcAverageBitrate; + int64_t m_nvencEnableAQ; }; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index d4d1ed684e..a8390ca3a2 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -152,13 +152,25 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar // 7. Intra refresh // 8. Adaptive quantization(AQ) enabled - m_NvNecoder->CreateDefaultEncoderParams(&initializeParams, EncoderGUID, NV_ENC_PRESET_LOW_LATENCY_HQ_GUID); + GUID preset = NV_ENC_PRESET_LOW_LATENCY_HQ_GUID; + if (Settings::Instance().m_nvencPreset == 0) { + preset = NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID; + } else if (Settings::Instance().m_nvencPreset == 1) { + preset = NV_ENC_PRESET_LOW_LATENCY_HQ_GUID; + } else if (Settings::Instance().m_nvencPreset == 2) { + preset = NV_ENC_PRESET_LOW_LATENCY_HP_GUID; + } + m_NvNecoder->CreateDefaultEncoderParams(&initializeParams, EncoderGUID, preset); initializeParams.encodeWidth = initializeParams.darWidth = renderWidth; initializeParams.encodeHeight = initializeParams.darHeight = renderHeight; initializeParams.frameRateNum = refreshRate; initializeParams.frameRateDen = 1; + if (Settings::Instance().m_nvencRefreshRate != -1) { + initializeParams.frameRateNum = Settings::Instance().m_nvencRefreshRate; + } + // Use reference frame invalidation to faster recovery from frame loss if supported. mSupportsReferenceFrameInvalidation = m_NvNecoder->GetCapabilityValue(EncoderGUID, NV_ENC_CAPS_SUPPORT_REF_PIC_INVALIDATION); bool supportsIntraRefresh = m_NvNecoder->GetCapabilityValue(EncoderGUID, NV_ENC_CAPS_SUPPORT_INTRA_REFRESH); @@ -167,7 +179,15 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar // 16 is recommended when using reference frame invalidation. But it has caused bad visual quality. // Now, use 0 (use default). - int maxNumRefFrames = 0; + uint32_t maxNumRefFrames = 0; + uint32_t gopLength = NVENC_INFINITE_GOPLENGTH; + + if (Settings::Instance().m_nvencMaxNumRefFrames != -1) { + maxNumRefFrames = Settings::Instance().m_nvencMaxNumRefFrames; + } + if (Settings::Instance().m_nvencGopLength != -1) { + gopLength = Settings::Instance().m_nvencGopLength; + } if (m_codec == ALVR_CODEC_H264) { auto &config = encodeConfig.encodeCodecConfig.h264Config; @@ -178,8 +198,18 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar // config.intraRefreshPeriod = refreshRate * 10; // config.intraRefreshCnt = refreshRate; //} + if (Settings::Instance().m_nvencEnableIntraRefresh != -1) { + config.enableIntraRefresh = Settings::Instance().m_nvencEnableIntraRefresh; + } + if (Settings::Instance().m_nvencIntraRefreshPeriod != -1) { + config.intraRefreshPeriod = Settings::Instance().m_nvencIntraRefreshPeriod; + } + if (Settings::Instance().m_nvencIntraRefreshCount != -1) { + config.intraRefreshCnt = Settings::Instance().m_nvencIntraRefreshCount; + } + config.maxNumRefFrames = maxNumRefFrames; - config.idrPeriod = NVENC_INFINITE_GOPLENGTH; + config.idrPeriod = gopLength; } else { auto &config = encodeConfig.encodeCodecConfig.hevcConfig; @@ -190,8 +220,18 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar // config.intraRefreshPeriod = refreshRate * 10; // config.intraRefreshCnt = refreshRate; //} + if (Settings::Instance().m_nvencEnableIntraRefresh != -1) { + config.enableIntraRefresh = Settings::Instance().m_nvencEnableIntraRefresh; + } + if (Settings::Instance().m_nvencIntraRefreshPeriod != -1) { + config.intraRefreshPeriod = Settings::Instance().m_nvencIntraRefreshPeriod; + } + if (Settings::Instance().m_nvencIntraRefreshCount != -1) { + config.intraRefreshCnt = Settings::Instance().m_nvencIntraRefreshCount; + } + config.maxNumRefFramesInDPB = maxNumRefFrames; - config.idrPeriod = NVENC_INFINITE_GOPLENGTH; + config.idrPeriod = gopLength; } // According to the document, NVIDIA Video Encoder Interface 5.0, @@ -204,9 +244,13 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar // Disable automatic IDR insertion by NVENC. We need to manually insert IDR when packet is dropped // if don't use reference frame invalidation. - encodeConfig.gopLength = NVENC_INFINITE_GOPLENGTH; + encodeConfig.gopLength = gopLength; encodeConfig.frameIntervalP = 1; + if (Settings::Instance().m_nvencPFrameStrategy != -1) { + encodeConfig.frameIntervalP = Settings::Instance().m_nvencPFrameStrategy; + } + // NV_ENC_PARAMS_RC_CBR_HQ is equivalent to NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP. //encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ;// NV_ENC_PARAMS_RC_CBR_HQ; encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ; @@ -217,8 +261,28 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar encodeConfig.rcParams.maxBitRate = static_cast(bitrateBits); encodeConfig.rcParams.averageBitRate = static_cast(bitrateBits); + if (Settings::Instance().m_nvencRateControlMode != -1) { + encodeConfig.rcParams.rateControlMode = (NV_ENC_PARAMS_RC_MODE)Settings::Instance().m_nvencRateControlMode; + } + if (Settings::Instance().m_nvencRcBufferSize != -1) { + encodeConfig.rcParams.vbvBufferSize = Settings::Instance().m_nvencRcBufferSize; + } + if (Settings::Instance().m_nvencRcInitialDelay != -1) { + encodeConfig.rcParams.vbvInitialDelay = Settings::Instance().m_nvencRcInitialDelay; + } + if (Settings::Instance().m_nvencRcMaxBitrate != -1) { + encodeConfig.rcParams.maxBitRate = Settings::Instance().m_nvencRcMaxBitrate; + } + if (Settings::Instance().m_nvencRcAverageBitrate != -1) { + encodeConfig.rcParams.averageBitRate = Settings::Instance().m_nvencRcAverageBitrate; + } + if (Settings::Instance().m_use10bitEncoder) { encodeConfig.rcParams.enableAQ = 1; encodeConfig.encodeCodecConfig.hevcConfig.pixelBitDepthMinus8 = 2; } + + if (Settings::Instance().m_nvencEnableAQ != -1) { + encodeConfig.rcParams.enableAQ = Settings::Instance().m_nvencEnableAQ; + } } \ No newline at end of file diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 70ef2c8248..28c72e8867 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -228,6 +228,8 @@ async fn client_handshake( Switch::Disabled => 0., }; + let nvenc_overrides = settings.video.advanced_codec_options.nvenc_overrides; + let new_openvr_config = OpenvrConfig { universe_id: settings.headset.universe_id, headset_serial_number: settings.headset.serial_number, @@ -462,6 +464,20 @@ async fn client_handshake( sharpening: session_settings.video.color_correction.content.sharpening, enable_fec: session_settings.connection.enable_fec, linux_async_reprojection: session_settings.extra.patches.linux_async_reprojection, + nvenc_preset: nvenc_overrides.preset as i64, + nvenc_refresh_rate: nvenc_overrides.refresh_rate, + enable_intra_refresh: nvenc_overrides.enable_intra_refresh, + intra_refresh_period: nvenc_overrides.intra_refresh_period, + intra_refresh_count: nvenc_overrides.intra_refresh_count, + max_num_ref_frames: nvenc_overrides.max_num_ref_frames, + gop_length: nvenc_overrides.gop_length, + p_frame_strategy: nvenc_overrides.p_frame_strategy, + rate_control_mode: nvenc_overrides.rate_control_mode, + rc_buffer_size: nvenc_overrides.rc_buffer_size, + rc_initial_delay: nvenc_overrides.rc_initial_delay, + rc_max_bitrate: nvenc_overrides.rc_max_bitrate, + rc_average_bitrate: nvenc_overrides.rc_average_bitrate, + enable_aq: nvenc_overrides.enable_aq, }; if SESSION_MANAGER.lock().get().openvr_config != new_openvr_config { diff --git a/alvr/session/src/lib.rs b/alvr/session/src/lib.rs index ebf1711c3b..2fa9adb173 100644 --- a/alvr/session/src/lib.rs +++ b/alvr/session/src/lib.rs @@ -115,6 +115,20 @@ pub struct OpenvrConfig { pub sharpening: f32, pub enable_fec: bool, pub linux_async_reprojection: bool, + pub nvenc_preset: i64, + pub nvenc_refresh_rate: i64, + pub enable_intra_refresh: i64, + pub intra_refresh_period: i64, + pub intra_refresh_count: i64, + pub max_num_ref_frames: i64, + pub gop_length: i64, + pub p_frame_strategy: i64, + pub rate_control_mode: i64, + pub rc_buffer_size: i64, + pub rc_initial_delay: i64, + pub rc_max_bitrate: i64, + pub rc_average_bitrate: i64, + pub enable_aq: i64, } #[derive(Serialize, Deserialize, Clone, Debug)] diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index 4c8624d1d8..42c01a0857 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -35,20 +35,50 @@ pub enum FrameSize { }, } +#[repr(i64)] #[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase", tag = "type", content = "content")] +pub enum NvencPreset { + LowLatencyDefault = 0, + LowLatencyHighQuality = 1, + LowLatencyHighPerformance = 2, +} + +/// Except for preset, the value of these fields is not applied if == -1 (flag) +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase")] +pub struct NvencOverrides { + pub preset: NvencPreset, + pub refresh_rate: i64, + pub enable_intra_refresh: i64, + pub intra_refresh_period: i64, + pub intra_refresh_count: i64, + pub max_num_ref_frames: i64, + pub gop_length: i64, + pub p_frame_strategy: i64, + pub rate_control_mode: i64, + pub rc_buffer_size: i64, + pub rc_initial_delay: i64, + pub rc_max_bitrate: i64, + pub rc_average_bitrate: i64, + pub enable_aq: i64, +} + +#[derive(SettingsSchema, Serialize, Deserialize, Clone, Debug)] +#[serde(rename_all = "camelCase", tag = "type", content = "content")] pub enum MediacodecDataType { Float(f32), Int32(i32), Int64(i64), - String(String), // Note: Double, Rect and Size are for level 28 and not compatible with the Oculus Go + String(String), } -// #[derive(SettingsSchema, Serialize, Deserialize)] -// #[serde(rename_all = "camelCase")] -// pub struct VideoCoding { -// codec: CodecType, -// mediacodec_extra_options: Vec<(String, MediacodecDataType)>, -// } +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase")] +pub struct AdvancedCodecOptions { + pub nvenc_overrides: NvencOverrides, + pub mediacodec_extra_options: Vec<(String, MediacodecDataType)>, +} #[derive(SettingsSchema, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] @@ -179,6 +209,9 @@ pub struct VideoDesc { pub adaptive_bitrate: Switch, + #[schema(advanced)] + pub advanced_codec_options: AdvancedCodecOptions, + #[schema(advanced)] pub seconds_from_vsync_to_photons: f32, @@ -572,32 +605,6 @@ pub fn session_settings_default() -> SettingsDefault { codec: CodecTypeDefault { variant: CodecTypeDefaultVariant::H264, }, - // video_coding: VideoCodingDefault { - // codec: CodecTypeDefault { - // variant: CodecTypeDefaultVariant::H264, - // }, - // mediacodec_extra_options: DictionaryDefault { - // key: "".into(), - // value: MediacodecDataTypeDefault { - // variant: MediacodecDataTypeDefaultVariant::String, - // Float: 0.0, - // Int32: 0, - // Int64: 0, - // String: "".into(), - // }, - // content: vec![ - // ("operating-rate".into(), MediacodecDataType::Int32(i32::MAX)), - // ("priority".into(), MediacodecDataType::Int32(0)), - // // low-latency: only applicable on API level 30. Quest 1 and 2 might not be - // // cabable, since they are on level 29. - // ("low-latency".into(), MediacodecDataType::Int32(1)), - // ( - // "vendor.qti-ext-dec-low-latency.enable".into(), - // MediacodecDataType::Int32(1), - // ), - // ], - // }, - // }, client_request_realtime_decoder: true, use_10bit_encoder: false, sw_thread_count: 0, @@ -620,6 +627,47 @@ pub fn session_settings_default() -> SettingsDefault { bitrate_light_load_threshold: 0.7, }, }, + advanced_codec_options: AdvancedCodecOptionsDefault { + nvenc_overrides: NvencOverridesDefault { + preset: NvencPresetDefault { + variant: NvencPresetDefaultVariant::LowLatencyHighQuality, + }, + refresh_rate: -1, + enable_intra_refresh: -1, + intra_refresh_period: -1, + intra_refresh_count: -1, + max_num_ref_frames: -1, + gop_length: -1, + p_frame_strategy: -1, + rate_control_mode: -1, + rc_buffer_size: -1, + rc_initial_delay: -1, + rc_max_bitrate: -1, + rc_average_bitrate: -1, + enable_aq: -1, + }, + mediacodec_extra_options: DictionaryDefault { + key: "".into(), + value: MediacodecDataTypeDefault { + variant: MediacodecDataTypeDefaultVariant::String, + Float: 0.0, + Int32: 0, + Int64: 0, + String: "".into(), + }, + content: vec![ + ("operating-rate".into(), MediacodecDataType::Int32(i32::MAX)), + ("priority".into(), MediacodecDataType::Int32(0)), + // low-latency: only applicable on API level 30. Quest 1 and 2 might not be + // cabable, since they are on level 29. + ("low-latency".into(), MediacodecDataType::Int32(1)), + ( + "vendor.qti-ext-dec-low-latency.enable".into(), + MediacodecDataType::Int32(1), + ), + ], + }, + }, seconds_from_vsync_to_photons: 0.005, foveated_rendering: SwitchDefault { enabled: !cfg!(target_os = "linux"), From 1a868b0fee01199da1d6892eefaf51ebf76f5c71 Mon Sep 17 00:00:00 2001 From: Vixea Date: Sun, 9 Oct 2022 16:27:07 -0500 Subject: [PATCH 03/60] update sdk Should allow someone to add HDR encoding if wanted --- .../cpp/platform/win32/VideoEncoderVCE.h | 12 +- .../win32/amf/common/Linux/ThreadLinux.cpp | 675 - .../win32/amf/common/VulkanImportTable.cpp | 414 - .../win32/amf/common/VulkanImportTable.h | 219 - .../win32/amf/include/core/VulkanAMF.h | 113 - .../win32/amf/include/core/vulkan/vk_icd.h | 236 - .../win32/amf/include/core/vulkan/vk_layer.h | 210 - .../amf/include/core/vulkan/vk_platform.h | 84 - .../amf/include/core/vulkan/vk_sdk_platform.h | 69 - .../win32/amf/include/core/vulkan/vulkan.h | 93 - .../win32/amf/include/core/vulkan/vulkan.hpp | 94517 ---------------- .../amf/include/core/vulkan/vulkan_android.h | 112 - .../amf/include/core/vulkan/vulkan_beta.h | 56 - .../amf/include/core/vulkan/vulkan_core.h | 12189 -- .../amf/include/core/vulkan/vulkan_directfb.h | 54 - .../amf/include/core/vulkan/vulkan_fuchsia.h | 47 - .../amf/include/core/vulkan/vulkan_ggp.h | 58 - .../amf/include/core/vulkan/vulkan_ios.h | 47 - .../amf/include/core/vulkan/vulkan_macos.h | 47 - .../amf/include/core/vulkan/vulkan_metal.h | 54 - .../win32/amf/include/core/vulkan/vulkan_vi.h | 47 - .../amf/include/core/vulkan/vulkan_wayland.h | 54 - .../amf/include/core/vulkan/vulkan_win32.h | 315 - .../amf/include/core/vulkan/vulkan_xcb.h | 55 - .../amf/include/core/vulkan/vulkan_xlib.h | 55 - .../include/core/vulkan/vulkan_xlib_xrandr.h | 45 - .../amf/{ => public}/common/AMFFactory.cpp | 50 +- .../amf/{ => public}/common/AMFFactory.h | 12 +- .../win32/amf/{ => public}/common/AMFMath.h | 88 +- .../win32/amf/{ => public}/common/AMFSTL.cpp | 28 +- .../win32/amf/{ => public}/common/AMFSTL.h | 9 +- .../win32/amf/{ => public}/common/ByteArray.h | 9 +- .../{ => public}/common/CurrentTimeImpl.cpp | 13 +- .../amf/{ => public}/common/CurrentTimeImpl.h | 17 +- .../amf/{ => public}/common/DataStream.h | 0 .../{ => public}/common/DataStreamFactory.cpp | 0 .../{ => public}/common/DataStreamFile.cpp | 0 .../amf/{ => public}/common/DataStreamFile.h | 0 .../{ => public}/common/DataStreamMemory.cpp | 0 .../{ => public}/common/DataStreamMemory.h | 0 .../amf/{ => public}/common/IOCapsImpl.cpp | 16 +- .../amf/{ => public}/common/IOCapsImpl.h | 0 .../amf/{ => public}/common/InterfaceImpl.h | 3 + .../amf/{ => public}/common/ObservableImpl.h | 0 .../common/PropertyStorageExImpl.cpp | 22 +- .../common/PropertyStorageExImpl.h | 320 +- .../{ => public}/common/PropertyStorageImpl.h | 0 .../win32/amf/{ => public}/common/Thread.cpp | 91 +- .../win32/amf/{ => public}/common/Thread.h | 6 +- .../amf/{ => public}/common/TraceAdapter.cpp | 83 +- .../amf/{ => public}/common/TraceAdapter.h | 8 +- .../common/Windows/ThreadWindows.cpp | 7 +- .../include/components/Ambisonic2SRenderer.h | 0 .../include/components/AudioCapture.h | 4 +- .../{ => public}/include/components/Capture.h | 0 .../include/components/ChromaKey.h | 0 .../include/components/ColorSpace.h | 50 +- .../include/components/Component.h | 4 +- .../include/components/ComponentCaps.h | 0 .../include/components/CursorCapture.h | 0 .../include/components/DisplayCapture.h | 42 +- .../include/components/FFMPEGAudioConverter.h | 0 .../include/components/FFMPEGAudioDecoder.h | 0 .../include/components/FFMPEGAudioEncoder.h | 0 .../include/components/FFMPEGComponents.h | 0 .../include/components/FFMPEGFileDemuxer.h | 0 .../include/components/FFMPEGFileMuxer.h | 1 + .../include/components/FFMPEGVideoDecoder.h | 2 +- .../amf/public/include/components/HQScaler.h | 65 + .../include/components/MediaSource.h | 0 .../include/components/PreAnalysis.h | 48 +- .../include/components/PreProcessing.h | 23 +- .../include/components/VideoCapture.h | 0 .../include/components/VideoConverter.h | 25 +- .../include/components/VideoDecoderUVD.h | 9 +- .../include/components/VideoEncoderHEVC.h | 147 +- .../include/components/VideoEncoderVCE.h | 138 +- .../include/components/VideoStitch.h | 0 .../include/components/ZCamLiveStream.h | 0 .../{ => public}/include/core/AudioBuffer.h | 50 + .../amf/{ => public}/include/core/Buffer.h | 8 + .../amf/{ => public}/include/core/Compute.h | 3 +- .../include/core/ComputeFactory.h | 10 +- .../amf/{ => public}/include/core/Context.h | 0 .../{ => public}/include/core/CurrentTime.h | 4 +- .../win32/amf/public/include/core/D3D12AMF.h | 49 + .../amf/{ => public}/include/core/Data.h | 0 .../amf/{ => public}/include/core/Debug.h | 0 .../amf/{ => public}/include/core/Dump.h | 0 .../amf/{ => public}/include/core/Factory.h | 22 +- .../amf/{ => public}/include/core/Interface.h | 0 .../amf/{ => public}/include/core/Plane.h | 0 .../amf/{ => public}/include/core/Platform.h | 8 + .../include/core/PropertyStorage.h | 0 .../include/core/PropertyStorageEx.h | 1 + .../amf/{ => public}/include/core/Result.h | 2 +- .../amf/{ => public}/include/core/Surface.h | 24 +- .../amf/{ => public}/include/core/Trace.h | 8 +- .../amf/{ => public}/include/core/Variant.h | 61 +- .../amf/{ => public}/include/core/Version.h | 2 +- 100 files changed, 1024 insertions(+), 110445 deletions(-) delete mode 100644 alvr/server/cpp/platform/win32/amf/common/Linux/ThreadLinux.cpp delete mode 100644 alvr/server/cpp/platform/win32/amf/common/VulkanImportTable.cpp delete mode 100644 alvr/server/cpp/platform/win32/amf/common/VulkanImportTable.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/VulkanAMF.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_icd.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_layer.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_platform.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_sdk_platform.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan.hpp delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_android.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_beta.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_core.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_directfb.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_fuchsia.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_ggp.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_ios.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_macos.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_metal.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_vi.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_wayland.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_win32.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xcb.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xlib.h delete mode 100644 alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xlib_xrandr.h rename alvr/server/cpp/platform/win32/amf/{ => public}/common/AMFFactory.cpp (90%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/AMFFactory.h (97%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/AMFMath.h (97%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/AMFSTL.cpp (98%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/AMFSTL.h (99%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/ByteArray.h (99%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/CurrentTimeImpl.cpp (76%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/CurrentTimeImpl.h (74%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/DataStream.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/DataStreamFactory.cpp (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/DataStreamFile.cpp (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/DataStreamFile.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/DataStreamMemory.cpp (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/DataStreamMemory.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/IOCapsImpl.cpp (99%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/IOCapsImpl.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/InterfaceImpl.h (98%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/ObservableImpl.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/PropertyStorageExImpl.cpp (96%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/PropertyStorageExImpl.h (67%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/PropertyStorageImpl.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/Thread.cpp (91%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/Thread.h (99%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/TraceAdapter.cpp (85%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/TraceAdapter.h (99%) rename alvr/server/cpp/platform/win32/amf/{ => public}/common/Windows/ThreadWindows.cpp (97%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/Ambisonic2SRenderer.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/AudioCapture.h (96%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/Capture.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/ChromaKey.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/ColorSpace.h (81%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/Component.h (99%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/ComponentCaps.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/CursorCapture.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/DisplayCapture.h (53%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/FFMPEGAudioConverter.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/FFMPEGAudioDecoder.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/FFMPEGAudioEncoder.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/FFMPEGComponents.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/FFMPEGFileDemuxer.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/FFMPEGFileMuxer.h (96%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/FFMPEGVideoDecoder.h (99%) create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/components/HQScaler.h rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/MediaSource.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/PreAnalysis.h (73%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/PreProcessing.h (70%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/VideoCapture.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/VideoConverter.h (87%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/VideoDecoderUVD.h (95%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/VideoEncoderHEVC.h (67%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/VideoEncoderVCE.h (73%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/VideoStitch.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/components/ZCamLiveStream.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/AudioBuffer.h (80%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Buffer.h (98%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Compute.h (98%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/ComputeFactory.h (97%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Context.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/CurrentTime.h (96%) create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Data.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Debug.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Dump.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Factory.h (96%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Interface.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Plane.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Platform.h (98%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/PropertyStorage.h (100%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/PropertyStorageEx.h (99%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Result.h (98%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Surface.h (93%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Trace.h (95%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Variant.h (98%) rename alvr/server/cpp/platform/win32/amf/{ => public}/include/core/Version.h (98%) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index 1aff1c6713..435118d28f 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -1,12 +1,12 @@ #pragma once #include "VideoEncoder.h" -#include "amf/common/AMFFactory.h" -#include "amf/include/components/VideoEncoderVCE.h" -#include "amf/include/components/VideoEncoderHEVC.h" -#include "amf/include/components/VideoConverter.h" -#include "amf/common/AMFSTL.h" -#include "amf/common/Thread.h" +#include "amf/public/common/AMFFactory.h" +#include "amf/public/include/components/VideoEncoderVCE.h" +#include "amf/public/include/components/VideoEncoderHEVC.h" +#include "amf/public/include/components/VideoConverter.h" +#include "amf/public/common/AMFSTL.h" +#include "amf/public/common/Thread.h" typedef std::function AMFTextureReceiver; diff --git a/alvr/server/cpp/platform/win32/amf/common/Linux/ThreadLinux.cpp b/alvr/server/cpp/platform/win32/amf/common/Linux/ThreadLinux.cpp deleted file mode 100644 index eb259340ac..0000000000 --- a/alvr/server/cpp/platform/win32/amf/common/Linux/ThreadLinux.cpp +++ /dev/null @@ -1,675 +0,0 @@ -// -// Notice Regarding Standards. AMD does not provide a license or sublicense to -// any Intellectual Property Rights relating to any standards, including but not -// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; -// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 -// (collectively, the "Media Technologies"). For clarity, you will pay any -// royalties due for such third party technologies, which may include the Media -// Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// -// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// - - -#include "../Thread.h" - - -#if defined (__linux) || (__APPLE__) - -#if defined(__GNUC__) - //disable gcc warinings on STL code - #pragma GCC diagnostic ignored "-Weffc++" -#endif - -#define POSIX - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if !defined(__APPLE__) -#include -#endif - -#if defined(__ANDROID__) -#include -#endif - -#include -#include -#include - -#include "../AMFSTL.h" - -using namespace amf; - -extern "C" void AMF_STD_CALL amf_debug_trace(const wchar_t* text); - - -void perror(const char* errorModule) -{ - char buf[128]; -#if defined(__ANDROID__) || (__APPLE__) - strerror_r(errno, buf, sizeof(buf)); - fprintf(stderr, "%s: %s", buf, errorModule); -#else - char* err = strerror_r(errno, buf, sizeof(buf)); - fprintf(stderr, "%s: %s", err, errorModule); -#endif - - exit(1); -} - -#if defined(__APPLE__) -amf_uint64 AMF_STD_CALL get_current_thread_id() -{ - return reinterpret_cast(pthread_self()); -} -#else -amf_uint32 AMF_STD_CALL get_current_thread_id() -{ - return static_cast(pthread_self()); -} -#endif - - -// int clock_gettime(clockid_t clk_id, struct timespec *tp); -//---------------------------------------------------------------------------------------- -// threading -//---------------------------------------------------------------------------------------- -amf_long AMF_STD_CALL amf_atomic_inc(amf_long* X) -{ - return __sync_add_and_fetch(X, 1); -} -//---------------------------------------------------------------------------------------- -amf_long AMF_STD_CALL amf_atomic_dec(amf_long* X) -{ - return __sync_sub_and_fetch(X, 1); -} -//---------------------------------------------------------------------------------------- -amf_handle AMF_STD_CALL amf_create_critical_section() -{ - pthread_mutex_t* mutex = new pthread_mutex_t; - pthread_mutexattr_t attr; - pthread_mutexattr_init(&attr); - pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE); - pthread_mutex_init(mutex, &attr); - - return (amf_handle)mutex; -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_delete_critical_section(amf_handle cs) -{ - pthread_mutex_t* mutex = (pthread_mutex_t*)cs; - int err = pthread_mutex_destroy(mutex); - delete mutex; - return err == 0; -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_enter_critical_section(amf_handle cs) -{ - pthread_mutex_t* mutex = (pthread_mutex_t*)cs; - return pthread_mutex_lock(mutex) == 0; -} -//---------------------------------------------------------------------------------------- -bool AMF_CDECL_CALL amf_wait_critical_section(amf_handle cs, amf_ulong ulTimeout) -{ - return amf_wait_for_mutex(cs, ulTimeout); -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_leave_critical_section(amf_handle cs) -{ - pthread_mutex_t* mutex = (pthread_mutex_t*)cs; - return pthread_mutex_unlock(mutex) == 0; -} -//---------------------------------------------------------------------------------------- -struct MyEvent -{ - bool m_manual_reset; - pthread_cond_t m_cond; - pthread_mutex_t m_mutex; - bool m_triggered; -}; -//---------------------------------------------------------------------------------------- - -amf_handle AMF_STD_CALL amf_create_event(bool initially_owned, bool manual_reset, const wchar_t* name) -{ - MyEvent* event = new MyEvent; - - - // Linux does not natively support Named Condition variables - // so raise an error. - // Implement this using boost (NamedCondition), Qt, or some other framework. - if(name != NULL) - { - perror("Named Events not supported under Linux yet"); - exit(1); - } - event->m_manual_reset = manual_reset; - pthread_cond_t cond_tmp = PTHREAD_COND_INITIALIZER; - event->m_cond = cond_tmp; - pthread_mutex_t mutex_tmp = PTHREAD_MUTEX_INITIALIZER; - event->m_mutex = mutex_tmp; - - event->m_triggered = false; - if(initially_owned) - { - amf_set_event((amf_handle)event); - } - - return (amf_handle)event; -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_delete_event(amf_handle hevent) -{ - MyEvent* event = (MyEvent*)hevent; - int err1 = pthread_mutex_destroy(&event->m_mutex); - int err2 = pthread_cond_destroy(&event->m_cond); - delete event; - return err1 == 0 && err2 == 0; -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_set_event(amf_handle hevent) -{ - MyEvent* event = (MyEvent*)hevent; - pthread_mutex_lock(&event->m_mutex); - event->m_triggered = true; - int err1 = pthread_cond_broadcast(&event->m_cond); - pthread_mutex_unlock(&event->m_mutex); - - return err1 == 0; -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_reset_event(amf_handle hevent) -{ - MyEvent* event = (MyEvent*)hevent; - pthread_mutex_lock(&event->m_mutex); - event->m_triggered = false; - int err = pthread_mutex_unlock(&event->m_mutex); - - return err == 0; -} -//---------------------------------------------------------------------------------------- -static bool AMF_STD_CALL amf_wait_for_event_int(amf_handle hevent, unsigned long timeout, bool bTimeoutErr) -{ - bool ret = true; - int err = 0; - MyEvent* event = (MyEvent*)hevent; - pthread_mutex_lock(&event->m_mutex); - - timespec ts; - clock_gettime(CLOCK_REALTIME, &ts); - amf_uint64 start_time = ((amf_uint64)ts.tv_sec) * 1000 + ((amf_uint64)ts.tv_nsec) / 1000000; //to msec - - if(event->m_manual_reset) - { - while(!event->m_triggered) - { - if(timeout == AMF_INFINITE) - { - err = pthread_cond_wait(&event->m_cond, &event->m_mutex); //MM todo - timeout is not supported - ret = err == 0; - } - else - { - clock_gettime(CLOCK_REALTIME, &ts); - amf_uint64 current_time = ((amf_uint64)ts.tv_sec) * 1000 + ((amf_uint64)ts.tv_nsec) / 1000000; //to msec - if(current_time - start_time > (amf_uint64)timeout) - { - ret = bTimeoutErr ? false : true; - break; - } - amf_uint64 to_wait = start_time + timeout; - - timespec abstime; - abstime.tv_sec = (time_t)(to_wait / 1000); // timeout is in millisec - abstime.tv_nsec = (time_t)((to_wait - ((amf_uint64)abstime.tv_sec) * 1000) * 1000000); // the rest to nanosec - - err = pthread_cond_timedwait(&event->m_cond, &event->m_mutex, &abstime); - ret = err == 0; - } - } - } - else - { - if(event->m_triggered) - { - ret = true; - } - else - { - if (timeout == AMF_INFINITE) { - err = pthread_cond_wait(&event->m_cond, &event->m_mutex); - } else { - start_time += timeout; - timespec abstime; - abstime.tv_sec = (time_t) (start_time / 1000); // timeout is in millisec - abstime.tv_nsec = (time_t) ((start_time - (amf_uint64) (abstime.tv_sec) * 1000) * - 1000000); // the rest to nanosec - err = pthread_cond_timedwait(&event->m_cond, &event->m_mutex, &abstime); - } - - if (bTimeoutErr) { - ret = (err == 0); - } else { - ret = (err == 0 || err == ETIMEDOUT); - } - } - if(ret == true) - { - event->m_triggered = false; - } - } - pthread_mutex_unlock(&event->m_mutex); - - return ret; -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_wait_for_event(amf_handle hevent, unsigned long timeout) -{ - return amf_wait_for_event_int(hevent, timeout, true); -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_wait_for_event_timeout(amf_handle hevent, amf_ulong ulTimeout) -{ - return amf_wait_for_event_int(hevent, ulTimeout, false); -} -//---------------------------------------------------------------------------------------- -amf_handle AMF_STD_CALL amf_create_mutex(bool initially_owned, const wchar_t* name) -{ - pthread_mutex_t* mutex = new pthread_mutex_t; - pthread_mutex_t mutex_tmp = PTHREAD_MUTEX_INITIALIZER; - *mutex = mutex_tmp; - - if(initially_owned) - { - pthread_mutex_lock(mutex); - } - return (amf_handle)mutex; -} -//---------------------------------------------------------------------------------------- -amf_handle AMF_STD_CALL amf_open_mutex(const wchar_t* pName) -{ - assert(false); - return 0; -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_delete_mutex(amf_handle hmutex) -{ - pthread_mutex_t* mutex = (pthread_mutex_t*)hmutex; - int err = pthread_mutex_destroy(mutex); - delete mutex; - return err == 0; -} -//---------------------------------------------------------------------------------------- - -#if defined(__APPLE__) -int sem_timedwait1(sem_t* semaphore, const struct timespec* timeout) -{ - struct timeval timenow; - struct timespec sleepytime; - int retcode; - - /// This is just to avoid a completely busy wait - sleepytime.tv_sec = 0; - sleepytime.tv_nsec = 10000000; // 10ms - - while((retcode = sem_trywait(semaphore)) != 0) - { - gettimeofday (&timenow, NULL); - - if((timenow.tv_sec >= timeout->tv_sec) && ((timenow.tv_usec * 1000) >= timeout->tv_nsec)) - { - return retcode; - } - nanosleep (&sleepytime, NULL); - } - return retcode; -} -#endif - -#if defined(__ANDROID__) -int pthread_mutex_timedlock1(pthread_mutex_t* mutex, const struct timespec* timeout) -{ - struct timeval timenow; - struct timespec sleepytime; - int retcode; - - /// This is just to avoid a completely busy wait - sleepytime.tv_sec = 0; - sleepytime.tv_nsec = 10000000; // 10ms - - while((retcode = pthread_mutex_trylock (mutex)) == EBUSY) - { - gettimeofday (&timenow, NULL); - - if((timenow.tv_sec >= timeout->tv_sec) && ((timenow.tv_usec * 1000) >= timeout->tv_nsec)) - { - return ETIMEDOUT; - } - nanosleep (&sleepytime, NULL); - } - return retcode; -} -#endif - -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_wait_for_mutex(amf_handle hmutex, unsigned long timeout) -{ - pthread_mutex_t* mutex = (pthread_mutex_t*)hmutex; - if(timeout == AMF_INFINITE) - { - return pthread_mutex_lock(mutex) == 0; - } - - // ulTimeout is in milliseconds - long timeout_sec = timeout / 1000; /* Seconds */; - long timeout_nsec = (timeout - (timeout / 1000) * 1000) * 1000000; - - timespec wait_time; //absolute time - clock_gettime(CLOCK_REALTIME, &wait_time); - - wait_time.tv_sec += timeout_sec; - wait_time.tv_nsec += timeout_nsec; - - if (wait_time.tv_nsec >= 1000000000) - { - wait_time.tv_sec++; - wait_time.tv_nsec -= 1000000000; - } - -#ifdef __APPLE__ - int* tmpptr = NULL; - *tmpptr = 1; -// assert(false); // not supported - return false; - -#else -#if defined(__ANDROID__) - return pthread_mutex_timedlock1(mutex, &wait_time) == 0; -#else - return pthread_mutex_timedlock(mutex, &wait_time) == 0; -#endif -#endif -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_release_mutex(amf_handle hmutex) -{ - pthread_mutex_t* mutex = (pthread_mutex_t*)hmutex; - return pthread_mutex_unlock(mutex) != 0; -} - -//---------------------------------------------------------------------------------------- -amf_handle AMF_STD_CALL amf_create_semaphore(amf_long iInitCount, amf_long iMaxCount, const wchar_t* /*pName*/) -{ - if(iMaxCount == 0 || iInitCount > iMaxCount) - { - return NULL; - } - - sem_t* semaphore = new sem_t; - if(sem_init(semaphore, 0, iInitCount) != 0) - { - delete semaphore; - return NULL; - } - return (amf_handle)semaphore; -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_delete_semaphore(amf_handle hsemaphore) -{ - bool ret = true; - if(hsemaphore == NULL) - { - return true; - } - sem_t* semaphore = (sem_t*)hsemaphore; - ret = (0==sem_destroy(semaphore)) ? 1:0; - delete semaphore; - return ret; -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_wait_for_semaphore(amf_handle hsemaphore, amf_ulong timeout) -{ - if(hsemaphore == NULL) - { - return true; - } - - // ulTimeout is in milliseconds - long timeout_sec = timeout / 1000; /* Seconds */; - long timeout_nsec = (timeout - (timeout / 1000) * 1000) * 1000000; - - timespec wait_time; //absolute time - clock_gettime(CLOCK_REALTIME, &wait_time); - - wait_time.tv_sec += timeout_sec; - wait_time.tv_nsec += timeout_nsec; - - if (wait_time.tv_nsec >= 1000000000) - { - wait_time.tv_sec++; - wait_time.tv_nsec -= 1000000000; - } - - sem_t* semaphore = (sem_t*)hsemaphore; - if(timeout != AMF_INFINITE) - { - #if defined(__APPLE__) - return sem_timedwait1 (semaphore, &wait_time) == 0; // errno=ETIMEDOU - #else - return sem_timedwait (semaphore, &wait_time) == 0; // errno=ETIMEDOUT - #endif - } - else - { - return sem_wait(semaphore) == 0; - } -} -//---------------------------------------------------------------------------------------- -bool AMF_STD_CALL amf_release_semaphore(amf_handle hsemaphore, amf_long iCount, amf_long* iOldCount) -{ - if(hsemaphore == NULL) - { - return true; - } - sem_t* semaphore = (sem_t*)hsemaphore; - - if(iOldCount != NULL) - { - int iTmp = 0; - sem_getvalue(semaphore, &iTmp); - *iOldCount = iTmp; - } - - for(int i = 0; i < iCount; i++) - { - sem_post(semaphore); - } - return true; -} -//------------------------------------------------------------------------------ -/* - * Delay is specified in milliseconds. - * Function will return prematurely if msDelay value is invalid. - * - * */ -void AMF_STD_CALL amf_sleep(amf_ulong msDelay) -{ -#if defined(NANOSLEEP_DONTUSE) - struct timespec sts, sts_remaining; - int iErrorCode; - - ts.tv_sec = msDelay / 1000; - ts.tv_nsec = (msDelay - sts.tv_sec * 1000) * 1000000; // nanosec - // put in code to measure sleep clock jitter - do - { - iErrorCode = nanosleep(&sts, &sts_remaining); - if(iErrorCode) - { - switch(errno) - { - case EINTR: - sts = sts_remaining; - break; - - case EFAULT: - case EINVAL: - case default: - perror("amf_sleep"); - return; - /* TODO: how to log errors? */ - } - } - } while(iErrorCode); -#else - usleep(msDelay * 1000); -#endif -} - -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -// memory -//---------------------------------------------------------------------------------------- -//---------------------------------------------------------------------------------------- -void AMF_STD_CALL amf_debug_trace(const wchar_t* text) -{ -#if defined(__ANDROID__) - __android_log_write(ANDROID_LOG_DEBUG, "AMF_TRACE", amf_from_unicode_to_multibyte(text).c_str()); -#else - fprintf(stderr, "%ls", text); -#endif -} - -void* AMF_STD_CALL amf_virtual_alloc(size_t size) -{ - void* mem = NULL; -#if defined(__ANDROID__) - mem = memalign(sysconf(_SC_PAGESIZE), size); - if(mem == NULL) - { - amf_debug_trace(L"Failed to alloc memory using memalign() function."); - } -#else - int exitCode = posix_memalign(&mem, sysconf(_SC_PAGESIZE), size); - if(exitCode != 0) - { - amf_debug_trace(L"Failed to alloc memory using posix_memaling() function."); - } -#endif - - return mem; -} -//------------------------------------------------------------------------------------------------------- -void AMF_STD_CALL amf_virtual_free(void* ptr) -{ - free(ptr); // according to linux help memory allocated by memalign() must be freed by free() -} -//---------------------------------------------------------------------------------------- -void* AMF_STD_CALL amf_aligned_alloc(size_t count, size_t alignment) -{ -#if defined(__APPLE__) - void* p = nullptr; - posix_memalign(&p, alignment, count); - return p; -#else - return memalign(alignment, count); -#endif -} -//---------------------------------------------------------------------------------------- -void AMF_STD_CALL amf_aligned_free(void* ptr) -{ - return free(ptr); -} - -amf_handle AMF_STD_CALL amf_load_library(const wchar_t* filename) -{ - void *ret = dlopen(amf_from_unicode_to_multibyte(filename).c_str(), RTLD_NOW | RTLD_GLOBAL); - if(ret ==0 ) - { - const char *err = dlerror(); - int a=1; - } - return ret; -} - -void* AMF_STD_CALL amf_get_proc_address(amf_handle module, const char* procName) -{ - return dlsym(module, procName); -} -//------------------------------------------------------------------------------------------------- -int AMF_STD_CALL amf_free_library(amf_handle module) -{ - return dlclose(module) == 0; -} -void AMF_STD_CALL amf_increase_timer_precision() -{ -} -void AMF_STD_CALL amf_restore_timer_precision() -{ -} -//---------------------------------------------------------------------------------------- -double AMF_STD_CALL amf_clock() -{ - //MM: clock() Win32 - returns time from beginning of the program - //MM: clock() works different in Linux - returns consumed processor time - timespec ts; - clock_gettime(CLOCK_REALTIME, &ts); - double cur_time = ((double)ts.tv_sec) + ((double)ts.tv_nsec) / 1000000000.; //to sec - return cur_time; -} -//---------------------------------------------------------------------------------------- -amf_int64 AMF_STD_CALL get_time_in_seconds_with_fraction() -{ - struct timeval tv; - - gettimeofday(&tv, NULL); - - amf_int64 ntp_time = ((tv.tv_sec * 1000) + (tv.tv_usec / 1000)); - return ntp_time; -} -//--------------------------------------------------------------------------------------- -amf_pts AMF_STD_CALL amf_high_precision_clock() -{ - timespec ts; - clock_gettime(CLOCK_REALTIME, &ts); - return ts.tv_sec * 10000000LL + ts.tv_nsec / 100.; //to nanosec -} -//-------------------------------------------------------------------------------- -// the end -//-------------------------------------------------------------------------------- - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/common/VulkanImportTable.cpp b/alvr/server/cpp/platform/win32/amf/common/VulkanImportTable.cpp deleted file mode 100644 index 2185a7862d..0000000000 --- a/alvr/server/cpp/platform/win32/amf/common/VulkanImportTable.cpp +++ /dev/null @@ -1,414 +0,0 @@ -// -// Notice Regarding Standards. AMD does not provide a license or sublicense to -// any Intellectual Property Rights relating to any standards, including but not -// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; -// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 -// (collectively, the "Media Technologies"). For clarity, you will pay any -// royalties due for such third party technologies, which may include the Media -// Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// -// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// -///------------------------------------------------------------------------- -/// @file VulkanImportTable.cpp -/// @brief Vulkan import table -///------------------------------------------------------------------------- -#include "VulkanImportTable.h" -#include "../common/TraceAdapter.h" -#include "Thread.h" - -using namespace amf; - -//------------------------------------------------------------------------------------------------- - -// -#define GET_DLL_ENTRYPOINT(h, w) w = reinterpret_cast(amf_get_proc_address(h, #w)); if(w==nullptr) \ - { AMFTraceError(L"VulkanImportTable", L"Failed to aquire entrypoint " + *#w); return AMF_FAIL; }; -#define GET_INSTANCE_ENTRYPOINT(i, w) w = reinterpret_cast(vkGetInstanceProcAddr(i, #w)); if(w==nullptr) \ - { AMFTraceError(L"VulkanImportTable", L"Failed to aquire entrypoint " + *#w); return AMF_FAIL; }; -#define GET_INSTANCE_ENTRYPOINT_NORETURN(i, w) w = reinterpret_cast(vkGetInstanceProcAddr(i, #w)); -#define GET_DEVICE_ENTRYPOINT(i, w) w = reinterpret_cast(vkGetDeviceProcAddr(i, #w)); if(w==nullptr) \ - { AMFTraceError(L"VulkanImportTable", L"Failed to aquire entrypoint " + *#w); return AMF_FAIL; }; - -VulkanImportTable::VulkanImportTable() : - m_hVulkanDll(nullptr), - vkCreateInstance(nullptr), - vkDestroyInstance(nullptr), - vkEnumeratePhysicalDevices(nullptr), - vkGetPhysicalDeviceFeatures(nullptr), - vkGetPhysicalDeviceFormatProperties(nullptr), - vkGetPhysicalDeviceImageFormatProperties(nullptr), - vkGetPhysicalDeviceProperties(nullptr), - vkGetPhysicalDeviceQueueFamilyProperties(nullptr), - vkGetPhysicalDeviceMemoryProperties(nullptr), - vkGetInstanceProcAddr(nullptr), - vkGetDeviceProcAddr(nullptr), - vkCreateDevice(nullptr), - vkDestroyDevice(nullptr), - vkEnumerateInstanceExtensionProperties(nullptr), - vkEnumerateDeviceExtensionProperties(nullptr), - vkEnumerateInstanceLayerProperties(nullptr), - vkEnumerateDeviceLayerProperties(nullptr), - vkGetDeviceQueue(nullptr), - vkQueueSubmit(nullptr), - vkQueueWaitIdle(nullptr), - vkDeviceWaitIdle(nullptr), - vkAllocateMemory(nullptr), - vkFreeMemory(nullptr), - vkMapMemory(nullptr), - vkUnmapMemory(nullptr), - vkFlushMappedMemoryRanges(nullptr), - vkInvalidateMappedMemoryRanges(nullptr), - vkGetDeviceMemoryCommitment(nullptr), - vkBindBufferMemory(nullptr), - vkBindImageMemory(nullptr), - vkGetBufferMemoryRequirements(nullptr), - vkGetImageMemoryRequirements(nullptr), - vkGetImageSparseMemoryRequirements(nullptr), - vkGetPhysicalDeviceSparseImageFormatProperties(nullptr), - vkQueueBindSparse(nullptr), - vkCreateFence(nullptr), - vkDestroyFence(nullptr), - vkResetFences(nullptr), - vkGetFenceStatus(nullptr), - vkWaitForFences(nullptr), - vkCreateSemaphore(nullptr), - vkDestroySemaphore(nullptr), - vkCreateEvent(nullptr), - vkDestroyEvent(nullptr), - vkGetEventStatus(nullptr), - vkSetEvent(nullptr), - vkResetEvent(nullptr), - vkCreateQueryPool(nullptr), - vkDestroyQueryPool(nullptr), - vkGetQueryPoolResults(nullptr), - vkCreateBuffer(nullptr), - vkDestroyBuffer(nullptr), - vkCreateBufferView(nullptr), - vkDestroyBufferView(nullptr), - vkCreateImage(nullptr), - vkDestroyImage(nullptr), - vkGetImageSubresourceLayout(nullptr), - vkCreateImageView(nullptr), - vkDestroyImageView(nullptr), - vkCreateShaderModule(nullptr), - vkDestroyShaderModule(nullptr), - vkCreatePipelineCache(nullptr), - vkDestroyPipelineCache(nullptr), - vkGetPipelineCacheData(nullptr), - vkMergePipelineCaches(nullptr), - vkCreateGraphicsPipelines(nullptr), - vkCreateComputePipelines(nullptr), - vkDestroyPipeline(nullptr), - vkCreatePipelineLayout(nullptr), - vkDestroyPipelineLayout(nullptr), - vkCreateSampler(nullptr), - vkDestroySampler(nullptr), - vkCreateDescriptorSetLayout(nullptr), - vkDestroyDescriptorSetLayout(nullptr), - vkCreateDescriptorPool(nullptr), - vkDestroyDescriptorPool(nullptr), - vkResetDescriptorPool(nullptr), - vkAllocateDescriptorSets(nullptr), - vkFreeDescriptorSets(nullptr), - vkUpdateDescriptorSets(nullptr), - vkCreateFramebuffer(nullptr), - vkDestroyFramebuffer(nullptr), - vkCreateRenderPass(nullptr), - vkDestroyRenderPass(nullptr), - vkGetRenderAreaGranularity(nullptr), - vkCreateCommandPool(nullptr), - vkDestroyCommandPool(nullptr), - vkResetCommandPool(nullptr), - vkAllocateCommandBuffers(nullptr), - vkFreeCommandBuffers(nullptr), - vkBeginCommandBuffer(nullptr), - vkEndCommandBuffer(nullptr), - vkResetCommandBuffer(nullptr), - vkCmdBindPipeline(nullptr), - vkCmdSetViewport(nullptr), - vkCmdSetScissor(nullptr), - vkCmdSetLineWidth(nullptr), - vkCmdSetDepthBias(nullptr), - vkCmdSetBlendConstants(nullptr), - vkCmdSetDepthBounds(nullptr), - vkCmdSetStencilCompareMask(nullptr), - vkCmdSetStencilWriteMask(nullptr), - vkCmdSetStencilReference(nullptr), - vkCmdBindDescriptorSets(nullptr), - vkCmdBindIndexBuffer(nullptr), - vkCmdBindVertexBuffers(nullptr), - vkCmdDraw(nullptr), - vkCmdDrawIndexed(nullptr), - vkCmdDrawIndirect(nullptr), - vkCmdDrawIndexedIndirect(nullptr), - vkCmdDispatch(nullptr), - vkCmdDispatchIndirect(nullptr), - vkCmdCopyBuffer(nullptr), - vkCmdCopyImage(nullptr), - vkCmdBlitImage(nullptr), - vkCmdCopyBufferToImage(nullptr), - vkCmdCopyImageToBuffer(nullptr), - vkCmdUpdateBuffer(nullptr), - vkCmdFillBuffer(nullptr), - vkCmdClearColorImage(nullptr), - vkCmdClearDepthStencilImage(nullptr), - vkCmdClearAttachments(nullptr), - vkCmdResolveImage(nullptr), - vkCmdSetEvent(nullptr), - vkCmdResetEvent(nullptr), - vkCmdWaitEvents(nullptr), - vkCmdPipelineBarrier(nullptr), - vkCmdBeginQuery(nullptr), - vkCmdEndQuery(nullptr), - vkCmdResetQueryPool(nullptr), - vkCmdWriteTimestamp(nullptr), - vkCmdCopyQueryPoolResults(nullptr), - vkCmdPushConstants(nullptr), - vkCmdBeginRenderPass(nullptr), - vkCmdNextSubpass(nullptr), - vkCmdEndRenderPass(nullptr), - vkCmdExecuteCommands(nullptr), - vkDestroySurfaceKHR(nullptr), - vkGetPhysicalDeviceSurfaceSupportKHR(nullptr), - vkGetPhysicalDeviceSurfaceCapabilitiesKHR(nullptr), - vkGetPhysicalDeviceSurfaceFormatsKHR(nullptr), - vkGetPhysicalDeviceSurfacePresentModesKHR(nullptr), - vkCreateSwapchainKHR(nullptr), - vkDestroySwapchainKHR(nullptr), - vkGetSwapchainImagesKHR(nullptr), - vkAcquireNextImageKHR(nullptr), - vkQueuePresentKHR(nullptr), -#if defined(_WIN32) - vkCreateWin32SurfaceKHR(nullptr), -#endif - vkCreateDebugReportCallbackEXT(nullptr), - vkDebugReportMessageEXT(nullptr), - vkDestroyDebugReportCallbackEXT(nullptr) -{ -} - -VulkanImportTable::~VulkanImportTable() -{ - if (m_hVulkanDll != nullptr) - { - amf_free_library(m_hVulkanDll); - } - m_hVulkanDll = nullptr; -} - -AMF_RESULT VulkanImportTable::LoadFunctionsTable() -{ - if (m_hVulkanDll != nullptr) - { - return AMF_OK; - } -#if defined(_WIN32) - m_hVulkanDll = amf_load_library(L"vulkan-1.dll"); -#elif defined(__linux__) - m_hVulkanDll = amf_load_library(L"libvulkan.so.1"); -#endif - - if (m_hVulkanDll == nullptr) - { - AMFTraceError(L"VulkanImportTable", L"amf_load_library() failed to load vulkan dll!"); - return AMF_FAIL; - } - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateInstance); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateInstance); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyInstance); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkEnumeratePhysicalDevices); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceFeatures); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceFormatProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceImageFormatProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceQueueFamilyProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceMemoryProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetInstanceProcAddr); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetDeviceProcAddr); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateDevice); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyDevice); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkEnumerateInstanceExtensionProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkEnumerateDeviceExtensionProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkEnumerateInstanceLayerProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkEnumerateDeviceLayerProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetDeviceQueue); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkQueueSubmit); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkQueueWaitIdle); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDeviceWaitIdle); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkAllocateMemory); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkFreeMemory); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkMapMemory); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkUnmapMemory); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkFlushMappedMemoryRanges); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkInvalidateMappedMemoryRanges); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetDeviceMemoryCommitment); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkBindBufferMemory); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkBindImageMemory); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetBufferMemoryRequirements); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetImageMemoryRequirements); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetImageSparseMemoryRequirements); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceSparseImageFormatProperties); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkQueueBindSparse); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateFence); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyFence); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkResetFences); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetFenceStatus); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkWaitForFences); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateSemaphore); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroySemaphore); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateEvent); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyEvent); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetEventStatus); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkSetEvent); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkResetEvent); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateQueryPool); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyQueryPool); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetQueryPoolResults); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateBufferView); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyBufferView); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateImage); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyImage); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetImageSubresourceLayout); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateImageView); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyImageView); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateShaderModule); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyShaderModule); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreatePipelineCache); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyPipelineCache); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPipelineCacheData); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkMergePipelineCaches); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateGraphicsPipelines); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateComputePipelines); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyPipeline); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreatePipelineLayout); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyPipelineLayout); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateSampler); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroySampler); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateDescriptorSetLayout); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyDescriptorSetLayout); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateDescriptorPool); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyDescriptorPool); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkResetDescriptorPool); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkAllocateDescriptorSets); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkFreeDescriptorSets); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkUpdateDescriptorSets); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateFramebuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyFramebuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateRenderPass); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyRenderPass); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetRenderAreaGranularity); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateCommandPool); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroyCommandPool); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkResetCommandPool); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkAllocateCommandBuffers); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkFreeCommandBuffers); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkBeginCommandBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkEndCommandBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkResetCommandBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdBindPipeline); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetViewport); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetScissor); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetLineWidth); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetDepthBias); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetBlendConstants); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetDepthBounds); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetStencilCompareMask); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetStencilWriteMask); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetStencilReference); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdBindDescriptorSets); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdBindIndexBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdBindVertexBuffers); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdDraw); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdDrawIndexed); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdDrawIndirect); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdDrawIndexedIndirect); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdDispatch); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdDispatchIndirect); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdCopyBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdCopyImage); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdBlitImage); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdCopyBufferToImage); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdCopyImageToBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdUpdateBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdFillBuffer); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdClearColorImage); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdClearDepthStencilImage); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdClearAttachments); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdResolveImage); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdSetEvent); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdResetEvent); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdWaitEvents); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdPipelineBarrier); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdBeginQuery); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdEndQuery); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdResetQueryPool); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdWriteTimestamp); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdCopyQueryPoolResults); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdPushConstants); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdBeginRenderPass); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdNextSubpass); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdEndRenderPass); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCmdExecuteCommands); - - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceSurfaceSupportKHR); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceSurfaceCapabilitiesKHR); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceSurfaceFormatsKHR); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkGetPhysicalDeviceSurfacePresentModesKHR); - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkDestroySurfaceKHR); - -#ifdef _WIN32 - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateWin32SurfaceKHR); -#else - GET_DLL_ENTRYPOINT(m_hVulkanDll, vkCreateXlibSurfaceKHR); -#endif - return AMF_OK; -} - -AMF_RESULT VulkanImportTable::LoadInstanceFunctionsTableExt(VkInstance instance, bool bDebug) -{ - if(bDebug) - { - GET_INSTANCE_ENTRYPOINT(instance, vkCreateDebugReportCallbackEXT); - GET_INSTANCE_ENTRYPOINT(instance, vkDebugReportMessageEXT); - GET_INSTANCE_ENTRYPOINT(instance, vkDestroyDebugReportCallbackEXT); - } - return AMF_OK; -} - -//------------------------------------------------------------------------------------------------- -AMF_RESULT VulkanImportTable::LoadDeviceFunctionsTableExt(VkDevice device) -{ - GET_DEVICE_ENTRYPOINT(device, vkCreateSwapchainKHR); - GET_DEVICE_ENTRYPOINT(device, vkDestroySwapchainKHR); - GET_DEVICE_ENTRYPOINT(device, vkGetSwapchainImagesKHR); - GET_DEVICE_ENTRYPOINT(device, vkAcquireNextImageKHR); - GET_DEVICE_ENTRYPOINT(device, vkQueuePresentKHR); - return AMF_OK; -} - -#undef GET_DEVICE_ENTRYPOINT -#undef GET_INSTANCE_ENTRYPOINT -#undef GET_INSTANCE_ENTRYPOINT_NORETURN \ No newline at end of file diff --git a/alvr/server/cpp/platform/win32/amf/common/VulkanImportTable.h b/alvr/server/cpp/platform/win32/amf/common/VulkanImportTable.h deleted file mode 100644 index 30117271d4..0000000000 --- a/alvr/server/cpp/platform/win32/amf/common/VulkanImportTable.h +++ /dev/null @@ -1,219 +0,0 @@ -// -// Notice Regarding Standards. AMD does not provide a license or sublicense to -// any Intellectual Property Rights relating to any standards, including but not -// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; -// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 -// (collectively, the "Media Technologies"). For clarity, you will pay any -// royalties due for such third party technologies, which may include the Media -// Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// -// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// -///------------------------------------------------------------------------- -/// @file VulkanImportTable.h -/// @brief Vulkan import table -///------------------------------------------------------------------------- -#pragma once - -#include "../include/core/Result.h" - -#define VK_NO_PROTOTYPES - -#include "../include/core/VulkanAMF.h" - -//#define ENABLE_VALIDATION - -struct VulkanImportTable -{ - VulkanImportTable(); - ~VulkanImportTable(); - - AMF_RESULT LoadFunctionsTable(); - AMF_RESULT LoadInstanceFunctionsTableExt(VkInstance instance, bool bDebug); - AMF_RESULT LoadDeviceFunctionsTableExt(VkDevice device); - // core Vulkan - - PFN_vkCreateInstance vkCreateInstance; - PFN_vkDestroyInstance vkDestroyInstance; - PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices; - PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures; - PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties; - PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties; - PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties; - PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties; - PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties; - PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr; - PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr; - PFN_vkCreateDevice vkCreateDevice; - PFN_vkDestroyDevice vkDestroyDevice; - PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties; - PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties; - PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties; - PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties; - PFN_vkGetDeviceQueue vkGetDeviceQueue; - PFN_vkQueueSubmit vkQueueSubmit; - PFN_vkQueueWaitIdle vkQueueWaitIdle; - PFN_vkDeviceWaitIdle vkDeviceWaitIdle; - PFN_vkAllocateMemory vkAllocateMemory; - PFN_vkFreeMemory vkFreeMemory; - PFN_vkMapMemory vkMapMemory; - PFN_vkUnmapMemory vkUnmapMemory; - PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges; - PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges; - PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment; - PFN_vkBindBufferMemory vkBindBufferMemory; - PFN_vkBindImageMemory vkBindImageMemory; - PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements; - PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements; - PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements; - PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties; - PFN_vkQueueBindSparse vkQueueBindSparse; - PFN_vkCreateFence vkCreateFence; - PFN_vkDestroyFence vkDestroyFence; - PFN_vkResetFences vkResetFences; - PFN_vkGetFenceStatus vkGetFenceStatus; - PFN_vkWaitForFences vkWaitForFences; - PFN_vkCreateSemaphore vkCreateSemaphore; - PFN_vkDestroySemaphore vkDestroySemaphore; - PFN_vkCreateEvent vkCreateEvent; - PFN_vkDestroyEvent vkDestroyEvent; - PFN_vkGetEventStatus vkGetEventStatus; - PFN_vkSetEvent vkSetEvent; - PFN_vkResetEvent vkResetEvent; - PFN_vkCreateQueryPool vkCreateQueryPool; - PFN_vkDestroyQueryPool vkDestroyQueryPool; - PFN_vkGetQueryPoolResults vkGetQueryPoolResults; - PFN_vkCreateBuffer vkCreateBuffer; - PFN_vkDestroyBuffer vkDestroyBuffer; - PFN_vkCreateBufferView vkCreateBufferView; - PFN_vkDestroyBufferView vkDestroyBufferView; - PFN_vkCreateImage vkCreateImage; - PFN_vkDestroyImage vkDestroyImage; - PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout; - PFN_vkCreateImageView vkCreateImageView; - PFN_vkDestroyImageView vkDestroyImageView; - PFN_vkCreateShaderModule vkCreateShaderModule; - PFN_vkDestroyShaderModule vkDestroyShaderModule; - PFN_vkCreatePipelineCache vkCreatePipelineCache; - PFN_vkDestroyPipelineCache vkDestroyPipelineCache; - PFN_vkGetPipelineCacheData vkGetPipelineCacheData; - PFN_vkMergePipelineCaches vkMergePipelineCaches; - PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines; - PFN_vkCreateComputePipelines vkCreateComputePipelines; - PFN_vkDestroyPipeline vkDestroyPipeline; - PFN_vkCreatePipelineLayout vkCreatePipelineLayout; - PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout; - PFN_vkCreateSampler vkCreateSampler; - PFN_vkDestroySampler vkDestroySampler; - PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout; - PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout; - PFN_vkCreateDescriptorPool vkCreateDescriptorPool; - PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool; - PFN_vkResetDescriptorPool vkResetDescriptorPool; - PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets; - PFN_vkFreeDescriptorSets vkFreeDescriptorSets; - PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets; - PFN_vkCreateFramebuffer vkCreateFramebuffer; - PFN_vkDestroyFramebuffer vkDestroyFramebuffer; - PFN_vkCreateRenderPass vkCreateRenderPass; - PFN_vkDestroyRenderPass vkDestroyRenderPass; - PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity; - PFN_vkCreateCommandPool vkCreateCommandPool; - PFN_vkDestroyCommandPool vkDestroyCommandPool; - PFN_vkResetCommandPool vkResetCommandPool; - PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers; - PFN_vkFreeCommandBuffers vkFreeCommandBuffers; - PFN_vkBeginCommandBuffer vkBeginCommandBuffer; - PFN_vkEndCommandBuffer vkEndCommandBuffer; - PFN_vkResetCommandBuffer vkResetCommandBuffer; - PFN_vkCmdBindPipeline vkCmdBindPipeline; - PFN_vkCmdSetViewport vkCmdSetViewport; - PFN_vkCmdSetScissor vkCmdSetScissor; - PFN_vkCmdSetLineWidth vkCmdSetLineWidth; - PFN_vkCmdSetDepthBias vkCmdSetDepthBias; - PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants; - PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds; - PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask; - PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask; - PFN_vkCmdSetStencilReference vkCmdSetStencilReference; - PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets; - PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer; - PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers; - PFN_vkCmdDraw vkCmdDraw; - PFN_vkCmdDrawIndexed vkCmdDrawIndexed; - PFN_vkCmdDrawIndirect vkCmdDrawIndirect; - PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect; - PFN_vkCmdDispatch vkCmdDispatch; - PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect; - PFN_vkCmdCopyBuffer vkCmdCopyBuffer; - PFN_vkCmdCopyImage vkCmdCopyImage; - PFN_vkCmdBlitImage vkCmdBlitImage; - PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage; - PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer; - PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer; - PFN_vkCmdFillBuffer vkCmdFillBuffer; - PFN_vkCmdClearColorImage vkCmdClearColorImage; - PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage; - PFN_vkCmdClearAttachments vkCmdClearAttachments; - PFN_vkCmdResolveImage vkCmdResolveImage; - PFN_vkCmdSetEvent vkCmdSetEvent; - PFN_vkCmdResetEvent vkCmdResetEvent; - PFN_vkCmdWaitEvents vkCmdWaitEvents; - PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier; - PFN_vkCmdBeginQuery vkCmdBeginQuery; - PFN_vkCmdEndQuery vkCmdEndQuery; - PFN_vkCmdResetQueryPool vkCmdResetQueryPool; - PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp; - PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults; - PFN_vkCmdPushConstants vkCmdPushConstants; - PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass; - PFN_vkCmdNextSubpass vkCmdNextSubpass; - PFN_vkCmdEndRenderPass vkCmdEndRenderPass; - PFN_vkCmdExecuteCommands vkCmdExecuteCommands; - - - // public extensions - PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR; - PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR; - PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR; - PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR; - PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR; - - PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR; - PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR; - PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR; - PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR; - PFN_vkQueuePresentKHR vkQueuePresentKHR; - - #ifdef _WIN32 - PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR; - #else - PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR; - #endif - - PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT; - PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT; - PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT; - - amf_handle m_hVulkanDll; -}; diff --git a/alvr/server/cpp/platform/win32/amf/include/core/VulkanAMF.h b/alvr/server/cpp/platform/win32/amf/include/core/VulkanAMF.h deleted file mode 100644 index 3b053e6066..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/VulkanAMF.h +++ /dev/null @@ -1,113 +0,0 @@ -// -// Notice Regarding Standards. AMD does not provide a license or sublicense to -// any Intellectual Property Rights relating to any standards, including but not -// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; -// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 -// (collectively, the "Media Technologies"). For clarity, you will pay any -// royalties due for such third party technologies, which may include the Media -// Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// -// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. -// -// Permission is hereby granted, free of charge, to any person obtaining a copy -// of this software and associated documentation files (the "Software"), to deal -// in the Software without restriction, including without limitation the rights -// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -// copies of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be included in -// all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -// THE SOFTWARE. -// - -#ifndef __VulkanAMF_h__ -#define __VulkanAMF_h__ -#pragma once -#include "Platform.h" -#ifdef _WIN32 - #define VK_USE_PLATFORM_WIN32_KHR -#elif defined(__linux) - #define VK_USE_PLATFORM_XLIB_KHR -#endif - -#include "vulkan/vulkan.h" - -#if defined(__cplusplus) -namespace amf -{ -#endif - typedef struct AMFVulkanDevice - { - amf_size cbSizeof; // sizeof(AMFVulkanDevice) - void* pNext; // reserved for extensions - VkInstance hInstance; - VkPhysicalDevice hPhysicalDevice; - VkDevice hDevice; - } AMFVulkanDevice; - - typedef struct AMFVulkanSync - { - amf_size cbSizeof; // sizeof(AMFVulkanSemaphore) - void* pNext; // reserved for extensions - VkSemaphore hSemaphore; - bool bSubmitted; // if true - wait for hSemaphore. re-submit hSemaphore if not synced by other ways and set to true - VkFence hFence; // To sync on CPU; can be nullptr. Submitted in vkQueueSubmit. If waited for hFence, null it, do not delete or reset. - } AMFVulkanSync; - - typedef struct AMFVulkanBuffer - { - amf_size cbSizeof; // sizeof(AMFVulkanBuffer) - void* pNext; // reserved for extensions - VkBuffer hBuffer; - VkDeviceMemory hMemory; - amf_int64 iSize; - amf_int64 iAllocatedSize; // for reuse - amf_uint32 eAccessFlags; // VkAccessFlagBits - amf_uint32 eUsage; // AMF_BUFFER_USAGE - amf_uint32 eAccess; // AMF_MEMORY_CPU_ACCESS - AMFVulkanSync Sync; - } AMFVulkanBuffer; - - typedef struct AMFVulkanSurface - { - amf_size cbSizeof; // sizeof(AMFVulkanSurface) - void* pNext; // reserved for extensions - // surface properties - VkImage hImage; - VkDeviceMemory hMemory; - amf_int64 iSize; // memory size - amf_uint32 eFormat; // VkFormat - amf_int32 iWidth; - amf_int32 iHeight; - amf_uint32 eCurrentLayout; // VkImageLayout - amf_uint32 eUsage; // AMF_SURFACE_USAGE - amf_uint32 eAccess; // AMF_MEMORY_CPU_ACCESS - AMFVulkanSync Sync; // To sync on GPU - } AMFVulkanSurface; - - typedef struct AMFVulkanView - { - amf_size cbSizeof; // sizeof(AMFVulkanSurface) - void* pNext; // reserved for extensions - // surface properties - AMFVulkanSurface *pSurface; - VkImageView hView; - amf_int32 iPlaneWidth; - amf_int32 iPlaneHeight; - amf_int32 iPlaneWidthPitch; - amf_int32 iPlaneHeightPitch; - } AMFVulkanView; -#if defined(__cplusplus) -} // namespace amf -#endif -#endif // __VulkanAMF_h__ \ No newline at end of file diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_icd.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_icd.h deleted file mode 100644 index 5e29ef5575..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_icd.h +++ /dev/null @@ -1,236 +0,0 @@ -// -// File: vk_icd.h -// -/* - * Copyright (c) 2015-2016 The Khronos Group Inc. - * Copyright (c) 2015-2016 Valve Corporation - * Copyright (c) 2015-2016 LunarG, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -#ifndef VKICD_H -#define VKICD_H - -#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 qyering 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. -#define CURRENT_LOADER_ICD_INTERFACE_VERSION 6 -#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 PFN_GetPhysicalDeviceProcAddr -typedef PFN_vkVoidFunction(VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char *pName); -#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 isntance, 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, -} 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 - -#endif // VKICD_H diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_layer.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_layer.h deleted file mode 100644 index 0651870c70..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_layer.h +++ /dev/null @@ -1,210 +0,0 @@ -// -// File: vk_layer.h -// -/* - * Copyright (c) 2015-2017 The Khronos Group Inc. - * Copyright (c) 2015-2017 Valve Corporation - * Copyright (c) 2015-2017 LunarG, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -/* 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 - */ -#pragma once - -#include "vulkan.h" -#if defined(__GNUC__) && __GNUC__ >= 4 -#define VK_LAYER_EXPORT __attribute__((visibility("default"))) -#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) -#define VK_LAYER_EXPORT __attribute__((visibility("default"))) -#else -#define VK_LAYER_EXPORT -#endif - -#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 -typedef PFN_vkVoidFunction (VKAPI_PTR *PFN_GetPhysicalDeviceProcAddr)(VkInstance instance, const char* pName); - -// 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/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_platform.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_platform.h deleted file mode 100644 index 18b913abc6..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_platform.h +++ /dev/null @@ -1,84 +0,0 @@ -// -// File: vk_platform.h -// -/* -** Copyright 2014-2021 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 isn't 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/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_sdk_platform.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_sdk_platform.h deleted file mode 100644 index 96d8676949..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vk_sdk_platform.h +++ /dev/null @@ -1,69 +0,0 @@ -// -// File: vk_sdk_platform.h -// -/* - * Copyright (c) 2015-2016 The Khronos Group Inc. - * Copyright (c) 2015-2016 Valve Corporation - * Copyright (c) 2015-2016 LunarG, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef VK_SDK_PLATFORM_H -#define VK_SDK_PLATFORM_H - -#if defined(_WIN32) -#define NOMINMAX -#ifndef __cplusplus -#undef inline -#define inline __inline -#endif // __cplusplus - -#if (defined(_MSC_VER) && _MSC_VER < 1900 /*vs2015*/) -// C99: -// Microsoft didn't implement C99 in Visual Studio; but started adding it with -// VS2013. However, VS2013 still didn't have snprintf(). The following is a -// work-around (Note: The _CRT_SECURE_NO_WARNINGS macro must be set in the -// "CMakeLists.txt" file). -// NOTE: This is fixed in Visual Studio 2015. -#define snprintf _snprintf -#endif - -#define strdup _strdup - -#endif // _WIN32 - -// Check for noexcept support using clang, with fallback to Windows or GCC version numbers -#ifndef NOEXCEPT -#if defined(__clang__) -#if __has_feature(cxx_noexcept) -#define HAS_NOEXCEPT -#endif -#else -#if defined(__GXX_EXPERIMENTAL_CXX0X__) && __GNUC__ * 10 + __GNUC_MINOR__ >= 46 -#define HAS_NOEXCEPT -#else -#if defined(_MSC_FULL_VER) && _MSC_FULL_VER >= 190023026 && defined(_HAS_EXCEPTIONS) && _HAS_EXCEPTIONS -#define HAS_NOEXCEPT -#endif -#endif -#endif - -#ifdef HAS_NOEXCEPT -#define NOEXCEPT noexcept -#else -#define NOEXCEPT -#endif -#endif - -#endif // VK_SDK_PLATFORM_H diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan.h deleted file mode 100644 index b187c9c178..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan.h +++ /dev/null @@ -1,93 +0,0 @@ -#ifndef VULKAN_H_ -#define VULKAN_H_ 1 - -/* -** Copyright 2015-2021 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 -#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_ENABLE_BETA_EXTENSIONS -#include "vulkan_beta.h" -#endif - -#endif // VULKAN_H_ diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan.hpp b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan.hpp deleted file mode 100644 index c5901b6d3f..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan.hpp +++ /dev/null @@ -1,94517 +0,0 @@ -// Copyright 2015-2021 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( _MSVC_LANG ) -# define VULKAN_HPP_CPLUSPLUS _MSVC_LANG -#else -# define VULKAN_HPP_CPLUSPLUS __cplusplus -#endif - -#if 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#if 17 <= VULKAN_HPP_CPP_VERSION -#include -#endif - -#if defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -# if !defined(VULKAN_HPP_NO_SMART_HANDLE) -# define VULKAN_HPP_NO_SMART_HANDLE -# endif -#else -# include -# include -#endif - -#if !defined(VULKAN_HPP_ASSERT) -# include -# 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_ENABLE_DYNAMIC_LOADER_TOOL) -# define VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL 1 -#endif - -#if VULKAN_HPP_ENABLE_DYNAMIC_LOADER_TOOL == 1 -# if defined( __linux__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) -# include -# elif defined( _WIN32 ) -typedef struct HINSTANCE__ * HINSTANCE; -# if defined( _WIN64 ) -typedef int64_t( __stdcall * FARPROC )(); -# else -typedef int( __stdcall * FARPROC )(); -# 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, const char * lpProcName ); -# endif -#endif - -#if !defined(__has_include) -# define __has_include(x) false -#endif - -#if ( 201711 <= __cpp_impl_three_way_comparison ) && __has_include( ) && !defined( VULKAN_HPP_NO_SPACESHIP_OPERATOR ) -# define VULKAN_HPP_HAS_SPACESHIP_OPERATOR -#endif -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) -# include -#endif - - -static_assert( VK_HEADER_VERSION == 171 , "Wrong VK_HEADER_VERSION!" ); - -// 32-bit vulkan is not typesafe for 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 -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) -# if !defined( VULKAN_HPP_TYPESAFE_CONVERSION ) -# define VULKAN_HPP_TYPESAFE_CONVERSION -# endif -#endif - -// 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 - -#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__) -# define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) -# 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 defined(VULKAN_HPP_TYPESAFE_CONVERSION) -# define VULKAN_HPP_TYPESAFE_EXPLICIT -#else -# define VULKAN_HPP_TYPESAFE_EXPLICIT explicit -#endif - -#if defined(__cpp_constexpr) -# define VULKAN_HPP_CONSTEXPR constexpr -# if __cpp_constexpr >= 201304 -# define VULKAN_HPP_CONSTEXPR_14 constexpr -# else -# define VULKAN_HPP_CONSTEXPR_14 -# 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_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 ) && !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 !defined(VULKAN_HPP_NAMESPACE) -#define VULKAN_HPP_NAMESPACE vk -#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) - -namespace VULKAN_HPP_NAMESPACE -{ - -#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 & value ) VULKAN_HPP_NOEXCEPT - : m_count( 1 ) - , m_ptr( &value ) - {} - - template ::value, int>::type = 0> - ArrayProxy( typename std::remove_const::type & value ) VULKAN_HPP_NOEXCEPT - : m_count( 1 ) - , m_ptr( &value ) - {} - - ArrayProxy( uint32_t count, T * ptr ) VULKAN_HPP_NOEXCEPT - : m_count( count ) - , m_ptr( ptr ) - {} - - template ::value, int>::type = 0> - ArrayProxy( uint32_t count, typename std::remove_const::type * ptr ) VULKAN_HPP_NOEXCEPT - : m_count( count ) - , 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() ) - {} - - ArrayProxy( std::initializer_list & list ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( list.size() ) ) - , m_ptr( list.begin() ) - {} - - template ::value, int>::type = 0> - ArrayProxy( std::initializer_list::type> & list ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( list.size() ) ) - , m_ptr( list.begin() ) - {} - -#if __GNUC__ >= 9 -#pragma GCC diagnostic pop -#endif - - template - ArrayProxy( std::array const & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxy( std::array::type, N> const & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template - ArrayProxy( std::array & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxy( std::array::type, N> & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template ::type>> - ArrayProxy( std::vector const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxy( std::vector::type, Allocator> const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>> - ArrayProxy( std::vector & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxy( std::vector::type, Allocator> & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - const T * begin() const VULKAN_HPP_NOEXCEPT - { - return m_ptr; - } - - const T * end() const VULKAN_HPP_NOEXCEPT - { - return m_ptr + m_count; - } - - const T & front() const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_ASSERT( m_count && m_ptr ); - return *m_ptr; - } - - const T & 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 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 ) - {} - - ArrayProxyNoTemporaries( T & value ) VULKAN_HPP_NOEXCEPT - : m_count( 1 ) - , m_ptr( &value ) - {} - - ArrayProxyNoTemporaries( T && value ) = delete; - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( typename std::remove_const::type & value ) VULKAN_HPP_NOEXCEPT - : m_count( 1 ) - , m_ptr( &value ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( typename std::remove_const::type && value ) = delete; - - ArrayProxyNoTemporaries( uint32_t count, T * ptr ) VULKAN_HPP_NOEXCEPT - : m_count( count ) - , m_ptr( ptr ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( uint32_t count, typename std::remove_const::type * ptr ) VULKAN_HPP_NOEXCEPT - : m_count( count ) - , m_ptr( ptr ) - {} - - ArrayProxyNoTemporaries( std::initializer_list const & list ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( list.size() ) ) - , m_ptr( list.begin() ) - {} - - ArrayProxyNoTemporaries( std::initializer_list const && list ) = delete; - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::initializer_list::type> const & list ) - VULKAN_HPP_NOEXCEPT - : m_count( static_cast( list.size() ) ) - , m_ptr( list.begin() ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::initializer_list::type> const && list ) = delete; - - ArrayProxyNoTemporaries( std::initializer_list & list ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( list.size() ) ) - , m_ptr( list.begin() ) - {} - - ArrayProxyNoTemporaries( std::initializer_list && list ) = delete; - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::initializer_list::type> & list ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( list.size() ) ) - , m_ptr( list.begin() ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::initializer_list::type> && list ) = delete; - - template - ArrayProxyNoTemporaries( std::array const & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template - ArrayProxyNoTemporaries( std::array const && data ) = delete; - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::array::type, N> const & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::array::type, N> const && data ) = delete; - - template - ArrayProxyNoTemporaries( std::array & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template - ArrayProxyNoTemporaries( std::array && data ) = delete; - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::array::type, N> & data ) VULKAN_HPP_NOEXCEPT - : m_count( N ) - , m_ptr( data.data() ) - {} - - template ::value, int>::type = 0> - ArrayProxyNoTemporaries( std::array::type, N> && data ) = delete; - - template ::type>> - ArrayProxyNoTemporaries( std::vector const & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>> - ArrayProxyNoTemporaries( std::vector const && data ) = delete; - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxyNoTemporaries( std::vector::type, Allocator> const & data ) - VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxyNoTemporaries( std::vector::type, Allocator> const && data ) = delete; - - template ::type>> - ArrayProxyNoTemporaries( std::vector & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>> - ArrayProxyNoTemporaries( std::vector && data ) = delete; - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxyNoTemporaries( std::vector::type, Allocator> & data ) VULKAN_HPP_NOEXCEPT - : m_count( static_cast( data.size() ) ) - , m_ptr( data.data() ) - {} - - template ::type>, - typename B = T, - typename std::enable_if::value, int>::type = 0> - ArrayProxyNoTemporaries( std::vector::type, Allocator> && data ) = delete; - - const T * begin() const VULKAN_HPP_NOEXCEPT - { - return m_ptr; - } - - const T * end() const VULKAN_HPP_NOEXCEPT - { - return m_ptr + m_count; - } - - const T & front() const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_ASSERT( m_count && m_ptr ); - return *m_ptr; - } - - const T & 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; - }; -#endif - - 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) - {} - -#if defined(_WIN32) && !defined(_WIN64) - 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() ); - } - -#if 17 <= VULKAN_HPP_CPP_VERSION - template ::value, int>::type = 0> - operator std::string_view() const - { - return std::string_view( this->data() ); - } -#endif - - template ::value, int>::type = 0> - bool operator<( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return *static_cast const *>( this ) < *static_cast const *>( &rhs ); - } - - template ::value, int>::type = 0> - bool operator<=( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return *static_cast const *>( this ) <= *static_cast const *>( &rhs ); - } - - template ::value, int>::type = 0> - bool operator>( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return *static_cast const *>( this ) > *static_cast const *>( &rhs ); - } - - template ::value, int>::type = 0> - bool operator>=( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return *static_cast const *>( this ) >= *static_cast const *>( &rhs ); - } - - template ::value, int>::type = 0> - bool operator==( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return *static_cast const *>( this ) == *static_cast const *>( &rhs ); - } - - template ::value, int>::type = 0> - bool operator!=( ArrayWrapper1D const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return *static_cast const *>( this ) != *static_cast const *>( &rhs ); - } - }; - - // specialization of relational operators between std::string and arrays of chars - 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(); - } - - 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 - 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)) - {} - }; - - template struct FlagTraits - { - enum { allFlags = 0 }; - }; - - template - class Flags - { - public: - 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); - } - - // 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 ); - } - - 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; } - explicit operator bool() const VULKAN_HPP_NOEXCEPT { return !!m_ptr; } - - private: - RefType *m_ptr; - }; - - template struct StructExtends { enum { value = false }; }; - - template - struct IsPartOfStructureChain - { - static const bool valid = false; - }; - - template - struct IsPartOfStructureChain - { - static const bool valid = std::is_same::value || IsPartOfStructureChain::valid; - }; - - template - struct StructureChainContains - { - static const bool value = std::is_same>::type>::value || - StructureChainContains::value; - }; - - template - struct StructureChainContains<0, T, ChainElements...> - { - static const bool value = std::is_same>::type>::value; - }; - - template - struct StructureChainValidation - { - using TestType = typename std::tuple_element>::type; - static const bool valid = - StructExtends>::type>::value && - ( TestType::allowDuplicate || !StructureChainContains::value ) && - StructureChainValidation::valid; - }; - - template - struct StructureChainValidation<0, ChainElements...> - { - static const bool valid = true; - }; - - template - class StructureChain : public std::tuple - { - public: - StructureChain() VULKAN_HPP_NOEXCEPT - { - static_assert( StructureChainValidation::valid, - "The structure chain is not valid!" ); - link(); - } - - StructureChain( StructureChain const & rhs ) VULKAN_HPP_NOEXCEPT : std::tuple( rhs ) - { - static_assert( StructureChainValidation::valid, - "The structure chain is not valid!" ); - link(); - } - - StructureChain( StructureChain && rhs ) VULKAN_HPP_NOEXCEPT - : std::tuple( std::forward>( rhs ) ) - { - static_assert( StructureChainValidation::valid, - "The structure chain is not valid!" ); - link(); - } - - StructureChain( ChainElements const &... elems ) VULKAN_HPP_NOEXCEPT : std::tuple( elems... ) - { - static_assert( StructureChainValidation::valid, - "The structure chain is not valid!" ); - link(); - } - - StructureChain & operator=( StructureChain const & rhs ) VULKAN_HPP_NOEXCEPT - { - std::tuple::operator=( rhs ); - link(); - return *this; - } - - StructureChain & operator=( StructureChain && rhs ) = delete; - - template >::type, size_t Which = 0> - T & get() VULKAN_HPP_NOEXCEPT - { - return std::get::value>( static_cast&>( *this ) ); - } - - template >::type, size_t Which = 0> - T const & get() const VULKAN_HPP_NOEXCEPT - { - return std::get::value>( static_cast const &>( *this ) ); - } - - template - std::tuple get() VULKAN_HPP_NOEXCEPT - { - return std::tie( get(), get(), get()... ); - } - - template - std::tuple get() const VULKAN_HPP_NOEXCEPT - { - return std::tie( get(), get(), get()... ); - } - - template - typename std::enable_if< - std::is_same>::type>::value && - ( Which == 0 ), - bool>::type - isLinked() const VULKAN_HPP_NOEXCEPT - { - return true; - } - - template - typename std::enable_if< - !std::is_same>::type>::value || - ( Which != 0 ), - bool>::type - isLinked() const VULKAN_HPP_NOEXCEPT - { - 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< - !std::is_same>::type>::value || - ( Which != 0 ), - void>::type relink() VULKAN_HPP_NOEXCEPT - { - 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< - !std::is_same>::type>::value || - ( Which != 0 ), - void>::type unlink() VULKAN_HPP_NOEXCEPT - { - 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 - {}; - - 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 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 ! - } - } - }; - -#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(); - } - - 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; - } - - const Type & 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 - -#if !defined(VK_NO_PROTOTYPES) - class DispatchLoaderStatic - { - public: -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkAcquireFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain ) const VULKAN_HPP_NOEXCEPT - { - return ::vkAcquireFullScreenExclusiveModeEXT( device, swapchain ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - VkResult vkAcquireNextImage2KHR( VkDevice device, const VkAcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex ) const VULKAN_HPP_NOEXCEPT - { - return ::vkAcquireNextImage2KHR( device, pAcquireInfo, pImageIndex ); - } - - 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 ); - } - - VkResult vkAcquirePerformanceConfigurationINTEL( VkDevice device, const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VkPerformanceConfigurationINTEL* pConfiguration ) const VULKAN_HPP_NOEXCEPT - { - return ::vkAcquirePerformanceConfigurationINTEL( device, pAcquireInfo, pConfiguration ); - } - - VkResult vkAcquireProfilingLockKHR( VkDevice device, const VkAcquireProfilingLockInfoKHR* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkAcquireProfilingLockKHR( device, pInfo ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkAcquireWinrtDisplayNV( VkPhysicalDevice physicalDevice, VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT - { - return ::vkAcquireWinrtDisplayNV( physicalDevice, display ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - VkResult vkAcquireXlibDisplayEXT( VkPhysicalDevice physicalDevice, Display* dpy, VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT - { - return ::vkAcquireXlibDisplayEXT( physicalDevice, dpy, display ); - } -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - - VkResult vkAllocateCommandBuffers( VkDevice device, const VkCommandBufferAllocateInfo* pAllocateInfo, VkCommandBuffer* pCommandBuffers ) const VULKAN_HPP_NOEXCEPT - { - return ::vkAllocateCommandBuffers( device, pAllocateInfo, pCommandBuffers ); - } - - VkResult vkAllocateDescriptorSets( VkDevice device, const VkDescriptorSetAllocateInfo* pAllocateInfo, VkDescriptorSet* pDescriptorSets ) const VULKAN_HPP_NOEXCEPT - { - return ::vkAllocateDescriptorSets( device, pAllocateInfo, pDescriptorSets ); - } - - VkResult vkAllocateMemory( VkDevice device, const VkMemoryAllocateInfo* pAllocateInfo, const VkAllocationCallbacks* pAllocator, VkDeviceMemory* pMemory ) const VULKAN_HPP_NOEXCEPT - { - return ::vkAllocateMemory( device, pAllocateInfo, pAllocator, pMemory ); - } - - VkResult vkBeginCommandBuffer( VkCommandBuffer commandBuffer, const VkCommandBufferBeginInfo* pBeginInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkBeginCommandBuffer( commandBuffer, pBeginInfo ); - } - - VkResult vkBindAccelerationStructureMemoryNV( VkDevice device, uint32_t bindInfoCount, const VkBindAccelerationStructureMemoryInfoNV* pBindInfos ) const VULKAN_HPP_NOEXCEPT - { - return ::vkBindAccelerationStructureMemoryNV( device, bindInfoCount, pBindInfos ); - } - - VkResult vkBindBufferMemory( VkDevice device, VkBuffer buffer, VkDeviceMemory memory, VkDeviceSize memoryOffset ) const VULKAN_HPP_NOEXCEPT - { - return ::vkBindBufferMemory( device, buffer, memory, memoryOffset ); - } - - VkResult vkBindBufferMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos ) const VULKAN_HPP_NOEXCEPT - { - return ::vkBindBufferMemory2( device, bindInfoCount, pBindInfos ); - } - - VkResult vkBindBufferMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindBufferMemoryInfo* pBindInfos ) const VULKAN_HPP_NOEXCEPT - { - return ::vkBindBufferMemory2KHR( device, bindInfoCount, pBindInfos ); - } - - VkResult vkBindImageMemory( VkDevice device, VkImage image, VkDeviceMemory memory, VkDeviceSize memoryOffset ) const VULKAN_HPP_NOEXCEPT - { - return ::vkBindImageMemory( device, image, memory, memoryOffset ); - } - - VkResult vkBindImageMemory2( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos ) const VULKAN_HPP_NOEXCEPT - { - return ::vkBindImageMemory2( device, bindInfoCount, pBindInfos ); - } - - VkResult vkBindImageMemory2KHR( VkDevice device, uint32_t bindInfoCount, const VkBindImageMemoryInfo* pBindInfos ) const VULKAN_HPP_NOEXCEPT - { - return ::vkBindImageMemory2KHR( device, bindInfoCount, pBindInfos ); - } - - VkResult vkBuildAccelerationStructuresKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const * ppBuildRangeInfos ) const VULKAN_HPP_NOEXCEPT - { - return ::vkBuildAccelerationStructuresKHR( device, deferredOperation, infoCount, pInfos, ppBuildRangeInfos ); - } - - void vkCmdBeginConditionalRenderingEXT( VkCommandBuffer commandBuffer, const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBeginConditionalRenderingEXT( commandBuffer, pConditionalRenderingBegin ); - } - - void vkCmdBeginDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBeginDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); - } - - void vkCmdBeginQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, VkQueryControlFlags flags ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBeginQuery( commandBuffer, queryPool, query, flags ); - } - - 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 ); - } - - void vkCmdBeginRenderPass( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, VkSubpassContents contents ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBeginRenderPass( commandBuffer, pRenderPassBegin, contents ); - } - - void vkCmdBeginRenderPass2( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBeginRenderPass2( commandBuffer, pRenderPassBegin, pSubpassBeginInfo ); - } - - void vkCmdBeginRenderPass2KHR( VkCommandBuffer commandBuffer, const VkRenderPassBeginInfo* pRenderPassBegin, const VkSubpassBeginInfo* pSubpassBeginInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBeginRenderPass2KHR( commandBuffer, pRenderPassBegin, pSubpassBeginInfo ); - } - - void vkCmdBeginTransformFeedbackEXT( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBeginTransformFeedbackEXT( commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets ); - } - - void vkCmdBindDescriptorSets( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBindDescriptorSets( commandBuffer, pipelineBindPoint, layout, firstSet, descriptorSetCount, pDescriptorSets, dynamicOffsetCount, pDynamicOffsets ); - } - - void vkCmdBindIndexBuffer( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset, VkIndexType indexType ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBindIndexBuffer( commandBuffer, buffer, offset, indexType ); - } - - void vkCmdBindPipeline( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBindPipeline( commandBuffer, pipelineBindPoint, pipeline ); - } - - void vkCmdBindPipelineShaderGroupNV( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline, uint32_t groupIndex ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBindPipelineShaderGroupNV( commandBuffer, pipelineBindPoint, pipeline, groupIndex ); - } - - void vkCmdBindShadingRateImageNV( VkCommandBuffer commandBuffer, VkImageView imageView, VkImageLayout imageLayout ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBindShadingRateImageNV( commandBuffer, imageView, imageLayout ); - } - - void vkCmdBindTransformFeedbackBuffersEXT( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBindTransformFeedbackBuffersEXT( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes ); - } - - void vkCmdBindVertexBuffers( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBindVertexBuffers( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets ); - } - - void vkCmdBindVertexBuffers2EXT( VkCommandBuffer commandBuffer, uint32_t firstBinding, uint32_t bindingCount, const VkBuffer* pBuffers, const VkDeviceSize* pOffsets, const VkDeviceSize* pSizes, const VkDeviceSize* pStrides ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBindVertexBuffers2EXT( commandBuffer, firstBinding, bindingCount, pBuffers, pOffsets, pSizes, pStrides ); - } - - void vkCmdBlitImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBlitImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions, filter ); - } - - void vkCmdBlitImage2KHR( VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBlitImage2KHR( commandBuffer, pBlitImageInfo ); - } - - void vkCmdBuildAccelerationStructureNV( VkCommandBuffer commandBuffer, const VkAccelerationStructureInfoNV* 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 ); - } - - void vkCmdBuildAccelerationStructuresIndirectKHR( VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkDeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const * ppMaxPrimitiveCounts ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBuildAccelerationStructuresIndirectKHR( commandBuffer, infoCount, pInfos, pIndirectDeviceAddresses, pIndirectStrides, ppMaxPrimitiveCounts ); - } - - void vkCmdBuildAccelerationStructuresKHR( VkCommandBuffer commandBuffer, uint32_t infoCount, const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, const VkAccelerationStructureBuildRangeInfoKHR* const * ppBuildRangeInfos ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdBuildAccelerationStructuresKHR( commandBuffer, infoCount, pInfos, ppBuildRangeInfos ); - } - - void vkCmdClearAttachments( VkCommandBuffer commandBuffer, uint32_t attachmentCount, const VkClearAttachment* pAttachments, uint32_t rectCount, const VkClearRect* pRects ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdClearAttachments( commandBuffer, attachmentCount, pAttachments, rectCount, pRects ); - } - - void vkCmdClearColorImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdClearColorImage( commandBuffer, image, imageLayout, pColor, rangeCount, pRanges ); - } - - void vkCmdClearDepthStencilImage( VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VkImageSubresourceRange* pRanges ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdClearDepthStencilImage( commandBuffer, image, imageLayout, pDepthStencil, rangeCount, pRanges ); - } - - void vkCmdCopyAccelerationStructureKHR( VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureInfoKHR* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyAccelerationStructureKHR( commandBuffer, pInfo ); - } - - void vkCmdCopyAccelerationStructureNV( VkCommandBuffer commandBuffer, VkAccelerationStructureNV dst, VkAccelerationStructureNV src, VkCopyAccelerationStructureModeKHR mode ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyAccelerationStructureNV( commandBuffer, dst, src, mode ); - } - - void vkCmdCopyAccelerationStructureToMemoryKHR( VkCommandBuffer commandBuffer, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyAccelerationStructureToMemoryKHR( commandBuffer, pInfo ); - } - - void vkCmdCopyBuffer( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferCopy* pRegions ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyBuffer( commandBuffer, srcBuffer, dstBuffer, regionCount, pRegions ); - } - - void vkCmdCopyBuffer2KHR( VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyBuffer2KHR( commandBuffer, pCopyBufferInfo ); - } - - void vkCmdCopyBufferToImage( VkCommandBuffer commandBuffer, VkBuffer srcBuffer, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkBufferImageCopy* pRegions ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyBufferToImage( commandBuffer, srcBuffer, dstImage, dstImageLayout, regionCount, pRegions ); - } - - void vkCmdCopyBufferToImage2KHR( VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyBufferToImage2KHR( commandBuffer, pCopyBufferToImageInfo ); - } - - void vkCmdCopyImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageCopy* pRegions ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); - } - - void vkCmdCopyImage2KHR( VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyImage2KHR( commandBuffer, pCopyImageInfo ); - } - - void vkCmdCopyImageToBuffer( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkBuffer dstBuffer, uint32_t regionCount, const VkBufferImageCopy* pRegions ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyImageToBuffer( commandBuffer, srcImage, srcImageLayout, dstBuffer, regionCount, pRegions ); - } - - void vkCmdCopyImageToBuffer2KHR( VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyImageToBuffer2KHR( commandBuffer, pCopyImageToBufferInfo ); - } - - void vkCmdCopyMemoryToAccelerationStructureKHR( VkCommandBuffer commandBuffer, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdCopyMemoryToAccelerationStructureKHR( commandBuffer, pInfo ); - } - - 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 ); - } - - void vkCmdDebugMarkerBeginEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdDebugMarkerBeginEXT( commandBuffer, pMarkerInfo ); - } - - void vkCmdDebugMarkerEndEXT( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdDebugMarkerEndEXT( commandBuffer ); - } - - void vkCmdDebugMarkerInsertEXT( VkCommandBuffer commandBuffer, const VkDebugMarkerMarkerInfoEXT* pMarkerInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdDebugMarkerInsertEXT( commandBuffer, pMarkerInfo ); - } - - void vkCmdDispatch( VkCommandBuffer commandBuffer, uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdDispatch( commandBuffer, groupCountX, groupCountY, groupCountZ ); - } - - 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 ); - } - - 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 ); - } - - void vkCmdDispatchIndirect( VkCommandBuffer commandBuffer, VkBuffer buffer, VkDeviceSize offset ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdDispatchIndirect( commandBuffer, buffer, offset ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - 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 ); - } - - void vkCmdDrawMeshTasksNV( VkCommandBuffer commandBuffer, uint32_t taskCount, uint32_t firstTask ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdDrawMeshTasksNV( commandBuffer, taskCount, firstTask ); - } - - void vkCmdEndConditionalRenderingEXT( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdEndConditionalRenderingEXT( commandBuffer ); - } - - void vkCmdEndDebugUtilsLabelEXT( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdEndDebugUtilsLabelEXT( commandBuffer ); - } - - void vkCmdEndQuery( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdEndQuery( commandBuffer, queryPool, query ); - } - - void vkCmdEndQueryIndexedEXT( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t query, uint32_t index ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdEndQueryIndexedEXT( commandBuffer, queryPool, query, index ); - } - - void vkCmdEndRenderPass( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdEndRenderPass( commandBuffer ); - } - - void vkCmdEndRenderPass2( VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdEndRenderPass2( commandBuffer, pSubpassEndInfo ); - } - - void vkCmdEndRenderPass2KHR( VkCommandBuffer commandBuffer, const VkSubpassEndInfo* pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdEndRenderPass2KHR( commandBuffer, pSubpassEndInfo ); - } - - void vkCmdEndTransformFeedbackEXT( VkCommandBuffer commandBuffer, uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VkBuffer* pCounterBuffers, const VkDeviceSize* pCounterBufferOffsets ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdEndTransformFeedbackEXT( commandBuffer, firstCounterBuffer, counterBufferCount, pCounterBuffers, pCounterBufferOffsets ); - } - - void vkCmdExecuteCommands( VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdExecuteCommands( commandBuffer, commandBufferCount, pCommandBuffers ); - } - - void vkCmdExecuteGeneratedCommandsNV( VkCommandBuffer commandBuffer, VkBool32 isPreprocessed, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdExecuteGeneratedCommandsNV( commandBuffer, isPreprocessed, pGeneratedCommandsInfo ); - } - - void vkCmdFillBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize size, uint32_t data ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdFillBuffer( commandBuffer, dstBuffer, dstOffset, size, data ); - } - - void vkCmdInsertDebugUtilsLabelEXT( VkCommandBuffer commandBuffer, const VkDebugUtilsLabelEXT* pLabelInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdInsertDebugUtilsLabelEXT( commandBuffer, pLabelInfo ); - } - - void vkCmdNextSubpass( VkCommandBuffer commandBuffer, VkSubpassContents contents ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdNextSubpass( commandBuffer, contents ); - } - - void vkCmdNextSubpass2( VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdNextSubpass2( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo ); - } - - void vkCmdNextSubpass2KHR( VkCommandBuffer commandBuffer, const VkSubpassBeginInfo* pSubpassBeginInfo, const VkSubpassEndInfo* pSubpassEndInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdNextSubpass2KHR( commandBuffer, pSubpassBeginInfo, pSubpassEndInfo ); - } - - void vkCmdPipelineBarrier( VkCommandBuffer commandBuffer, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, VkDependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdPipelineBarrier( commandBuffer, srcStageMask, dstStageMask, dependencyFlags, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers ); - } - - void vkCmdPipelineBarrier2KHR( VkCommandBuffer commandBuffer, const VkDependencyInfoKHR* pDependencyInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdPipelineBarrier2KHR( commandBuffer, pDependencyInfo ); - } - - void vkCmdPreprocessGeneratedCommandsNV( VkCommandBuffer commandBuffer, const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdPreprocessGeneratedCommandsNV( commandBuffer, pGeneratedCommandsInfo ); - } - - void vkCmdPushConstants( VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdPushConstants( commandBuffer, layout, stageFlags, offset, size, pValues ); - } - - void vkCmdPushDescriptorSetKHR( VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdPushDescriptorSetKHR( commandBuffer, pipelineBindPoint, layout, set, descriptorWriteCount, pDescriptorWrites ); - } - - void vkCmdPushDescriptorSetWithTemplateKHR( VkCommandBuffer commandBuffer, VkDescriptorUpdateTemplate descriptorUpdateTemplate, VkPipelineLayout layout, uint32_t set, const void* pData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdPushDescriptorSetWithTemplateKHR( commandBuffer, descriptorUpdateTemplate, layout, set, pData ); - } - - void vkCmdResetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdResetEvent( commandBuffer, event, stageMask ); - } - - void vkCmdResetEvent2KHR( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2KHR stageMask ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdResetEvent2KHR( commandBuffer, event, stageMask ); - } - - void vkCmdResetQueryPool( VkCommandBuffer commandBuffer, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdResetQueryPool( commandBuffer, queryPool, firstQuery, queryCount ); - } - - void vkCmdResolveImage( VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageResolve* pRegions ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdResolveImage( commandBuffer, srcImage, srcImageLayout, dstImage, dstImageLayout, regionCount, pRegions ); - } - - void vkCmdResolveImage2KHR( VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdResolveImage2KHR( commandBuffer, pResolveImageInfo ); - } - - void vkCmdSetBlendConstants( VkCommandBuffer commandBuffer, const float blendConstants[4] ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetBlendConstants( commandBuffer, blendConstants ); - } - - void vkCmdSetCheckpointNV( VkCommandBuffer commandBuffer, const void* pCheckpointMarker ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetCheckpointNV( commandBuffer, pCheckpointMarker ); - } - - void vkCmdSetCoarseSampleOrderNV( VkCommandBuffer commandBuffer, VkCoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VkCoarseSampleOrderCustomNV* pCustomSampleOrders ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetCoarseSampleOrderNV( commandBuffer, sampleOrderType, customSampleOrderCount, pCustomSampleOrders ); - } - - void vkCmdSetCullModeEXT( VkCommandBuffer commandBuffer, VkCullModeFlags cullMode ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetCullModeEXT( commandBuffer, cullMode ); - } - - void vkCmdSetDepthBias( VkCommandBuffer commandBuffer, float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetDepthBias( commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); - } - - void vkCmdSetDepthBounds( VkCommandBuffer commandBuffer, float minDepthBounds, float maxDepthBounds ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetDepthBounds( commandBuffer, minDepthBounds, maxDepthBounds ); - } - - void vkCmdSetDepthBoundsTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthBoundsTestEnable ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetDepthBoundsTestEnableEXT( commandBuffer, depthBoundsTestEnable ); - } - - void vkCmdSetDepthCompareOpEXT( VkCommandBuffer commandBuffer, VkCompareOp depthCompareOp ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetDepthCompareOpEXT( commandBuffer, depthCompareOp ); - } - - void vkCmdSetDepthTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthTestEnable ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetDepthTestEnableEXT( commandBuffer, depthTestEnable ); - } - - void vkCmdSetDepthWriteEnableEXT( VkCommandBuffer commandBuffer, VkBool32 depthWriteEnable ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetDepthWriteEnableEXT( commandBuffer, depthWriteEnable ); - } - - void vkCmdSetDeviceMask( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetDeviceMask( commandBuffer, deviceMask ); - } - - void vkCmdSetDeviceMaskKHR( VkCommandBuffer commandBuffer, uint32_t deviceMask ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetDeviceMaskKHR( commandBuffer, deviceMask ); - } - - void vkCmdSetDiscardRectangleEXT( VkCommandBuffer commandBuffer, uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VkRect2D* pDiscardRectangles ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetDiscardRectangleEXT( commandBuffer, firstDiscardRectangle, discardRectangleCount, pDiscardRectangles ); - } - - void vkCmdSetEvent( VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags stageMask ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetEvent( commandBuffer, event, stageMask ); - } - - void vkCmdSetEvent2KHR( VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfoKHR* pDependencyInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetEvent2KHR( commandBuffer, event, pDependencyInfo ); - } - - void vkCmdSetExclusiveScissorNV( VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetExclusiveScissorNV( commandBuffer, firstExclusiveScissor, exclusiveScissorCount, pExclusiveScissors ); - } - - void vkCmdSetFragmentShadingRateEnumNV( VkCommandBuffer commandBuffer, VkFragmentShadingRateNV shadingRate, const VkFragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetFragmentShadingRateEnumNV( commandBuffer, shadingRate, combinerOps ); - } - - void vkCmdSetFragmentShadingRateKHR( VkCommandBuffer commandBuffer, const VkExtent2D* pFragmentSize, const VkFragmentShadingRateCombinerOpKHR combinerOps[2] ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetFragmentShadingRateKHR( commandBuffer, pFragmentSize, combinerOps ); - } - - void vkCmdSetFrontFaceEXT( VkCommandBuffer commandBuffer, VkFrontFace frontFace ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetFrontFaceEXT( commandBuffer, frontFace ); - } - - void vkCmdSetLineStippleEXT( VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetLineStippleEXT( commandBuffer, lineStippleFactor, lineStipplePattern ); - } - - void vkCmdSetLineWidth( VkCommandBuffer commandBuffer, float lineWidth ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetLineWidth( commandBuffer, lineWidth ); - } - - VkResult vkCmdSetPerformanceMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceMarkerInfoINTEL* pMarkerInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetPerformanceMarkerINTEL( commandBuffer, pMarkerInfo ); - } - - VkResult vkCmdSetPerformanceOverrideINTEL( VkCommandBuffer commandBuffer, const VkPerformanceOverrideInfoINTEL* pOverrideInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetPerformanceOverrideINTEL( commandBuffer, pOverrideInfo ); - } - - VkResult vkCmdSetPerformanceStreamMarkerINTEL( VkCommandBuffer commandBuffer, const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetPerformanceStreamMarkerINTEL( commandBuffer, pMarkerInfo ); - } - - void vkCmdSetPrimitiveTopologyEXT( VkCommandBuffer commandBuffer, VkPrimitiveTopology primitiveTopology ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetPrimitiveTopologyEXT( commandBuffer, primitiveTopology ); - } - - void vkCmdSetRayTracingPipelineStackSizeKHR( VkCommandBuffer commandBuffer, uint32_t pipelineStackSize ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetRayTracingPipelineStackSizeKHR( commandBuffer, pipelineStackSize ); - } - - void vkCmdSetSampleLocationsEXT( VkCommandBuffer commandBuffer, const VkSampleLocationsInfoEXT* pSampleLocationsInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetSampleLocationsEXT( commandBuffer, pSampleLocationsInfo ); - } - - void vkCmdSetScissor( VkCommandBuffer commandBuffer, uint32_t firstScissor, uint32_t scissorCount, const VkRect2D* pScissors ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetScissor( commandBuffer, firstScissor, scissorCount, pScissors ); - } - - void vkCmdSetScissorWithCountEXT( VkCommandBuffer commandBuffer, uint32_t scissorCount, const VkRect2D* pScissors ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetScissorWithCountEXT( commandBuffer, scissorCount, pScissors ); - } - - void vkCmdSetStencilCompareMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t compareMask ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetStencilCompareMask( commandBuffer, faceMask, compareMask ); - } - - 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 ); - } - - void vkCmdSetStencilReference( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t reference ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetStencilReference( commandBuffer, faceMask, reference ); - } - - void vkCmdSetStencilTestEnableEXT( VkCommandBuffer commandBuffer, VkBool32 stencilTestEnable ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetStencilTestEnableEXT( commandBuffer, stencilTestEnable ); - } - - void vkCmdSetStencilWriteMask( VkCommandBuffer commandBuffer, VkStencilFaceFlags faceMask, uint32_t writeMask ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetStencilWriteMask( commandBuffer, faceMask, writeMask ); - } - - void vkCmdSetViewport( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewport* pViewports ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetViewport( commandBuffer, firstViewport, viewportCount, pViewports ); - } - - void vkCmdSetViewportShadingRatePaletteNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkShadingRatePaletteNV* pShadingRatePalettes ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetViewportShadingRatePaletteNV( commandBuffer, firstViewport, viewportCount, pShadingRatePalettes ); - } - - void vkCmdSetViewportWScalingNV( VkCommandBuffer commandBuffer, uint32_t firstViewport, uint32_t viewportCount, const VkViewportWScalingNV* pViewportWScalings ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetViewportWScalingNV( commandBuffer, firstViewport, viewportCount, pViewportWScalings ); - } - - void vkCmdSetViewportWithCountEXT( VkCommandBuffer commandBuffer, uint32_t viewportCount, const VkViewport* pViewports ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdSetViewportWithCountEXT( commandBuffer, viewportCount, pViewports ); - } - - void vkCmdTraceRaysIndirectKHR( VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VkDeviceAddress indirectDeviceAddress ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdTraceRaysIndirectKHR( commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, indirectDeviceAddress ); - } - - void vkCmdTraceRaysKHR( VkCommandBuffer commandBuffer, const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdTraceRaysKHR( commandBuffer, pRaygenShaderBindingTable, pMissShaderBindingTable, pHitShaderBindingTable, pCallableShaderBindingTable, width, height, depth ); - } - - 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 ); - } - - void vkCmdUpdateBuffer( VkCommandBuffer commandBuffer, VkBuffer dstBuffer, VkDeviceSize dstOffset, VkDeviceSize dataSize, const void* pData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdUpdateBuffer( commandBuffer, dstBuffer, dstOffset, dataSize, pData ); - } - - void vkCmdWaitEvents( VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, VkPipelineStageFlags srcStageMask, VkPipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VkMemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VkBufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VkImageMemoryBarrier* pImageMemoryBarriers ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdWaitEvents( commandBuffer, eventCount, pEvents, srcStageMask, dstStageMask, memoryBarrierCount, pMemoryBarriers, bufferMemoryBarrierCount, pBufferMemoryBarriers, imageMemoryBarrierCount, pImageMemoryBarriers ); - } - - void vkCmdWaitEvents2KHR( VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfoKHR* pDependencyInfos ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdWaitEvents2KHR( commandBuffer, eventCount, pEvents, pDependencyInfos ); - } - - void vkCmdWriteAccelerationStructuresPropertiesKHR( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdWriteAccelerationStructuresPropertiesKHR( commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery ); - } - - void vkCmdWriteAccelerationStructuresPropertiesNV( VkCommandBuffer commandBuffer, uint32_t accelerationStructureCount, const VkAccelerationStructureNV* pAccelerationStructures, VkQueryType queryType, VkQueryPool queryPool, uint32_t firstQuery ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdWriteAccelerationStructuresPropertiesNV( commandBuffer, accelerationStructureCount, pAccelerationStructures, queryType, queryPool, firstQuery ); - } - - void vkCmdWriteBufferMarker2AMD( VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdWriteBufferMarker2AMD( commandBuffer, stage, dstBuffer, dstOffset, marker ); - } - - void vkCmdWriteBufferMarkerAMD( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdWriteBufferMarkerAMD( commandBuffer, pipelineStage, dstBuffer, dstOffset, marker ); - } - - void vkCmdWriteTimestamp( VkCommandBuffer commandBuffer, VkPipelineStageFlagBits pipelineStage, VkQueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdWriteTimestamp( commandBuffer, pipelineStage, queryPool, query ); - } - - void vkCmdWriteTimestamp2KHR( VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkQueryPool queryPool, uint32_t query ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCmdWriteTimestamp2KHR( commandBuffer, stage, queryPool, query ); - } - - VkResult vkCompileDeferredNV( VkDevice device, VkPipeline pipeline, uint32_t shader ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCompileDeferredNV( device, pipeline, shader ); - } - - VkResult vkCopyAccelerationStructureKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureInfoKHR* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCopyAccelerationStructureKHR( device, deferredOperation, pInfo ); - } - - VkResult vkCopyAccelerationStructureToMemoryKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCopyAccelerationStructureToMemoryKHR( device, deferredOperation, pInfo ); - } - - VkResult vkCopyMemoryToAccelerationStructureKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCopyMemoryToAccelerationStructureKHR( device, deferredOperation, pInfo ); - } - - VkResult vkCreateAccelerationStructureKHR( VkDevice device, const VkAccelerationStructureCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureKHR* pAccelerationStructure ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateAccelerationStructureKHR( device, pCreateInfo, pAllocator, pAccelerationStructure ); - } - - VkResult vkCreateAccelerationStructureNV( VkDevice device, const VkAccelerationStructureCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkAccelerationStructureNV* pAccelerationStructure ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateAccelerationStructureNV( device, pCreateInfo, pAllocator, pAccelerationStructure ); - } - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - VkResult vkCreateAndroidSurfaceKHR( VkInstance instance, const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateAndroidSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - VkResult vkCreateBuffer( VkDevice device, const VkBufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBuffer* pBuffer ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateBuffer( device, pCreateInfo, pAllocator, pBuffer ); - } - - VkResult vkCreateBufferView( VkDevice device, const VkBufferViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkBufferView* pView ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateBufferView( device, pCreateInfo, pAllocator, pView ); - } - - VkResult vkCreateCommandPool( VkDevice device, const VkCommandPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkCommandPool* pCommandPool ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateCommandPool( device, pCreateInfo, pAllocator, pCommandPool ); - } - - VkResult vkCreateComputePipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkComputePipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateComputePipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); - } - - VkResult vkCreateDebugReportCallbackEXT( VkInstance instance, const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugReportCallbackEXT* pCallback ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDebugReportCallbackEXT( instance, pCreateInfo, pAllocator, pCallback ); - } - - VkResult vkCreateDebugUtilsMessengerEXT( VkInstance instance, const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDebugUtilsMessengerEXT* pMessenger ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDebugUtilsMessengerEXT( instance, pCreateInfo, pAllocator, pMessenger ); - } - - VkResult vkCreateDeferredOperationKHR( VkDevice device, const VkAllocationCallbacks* pAllocator, VkDeferredOperationKHR* pDeferredOperation ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDeferredOperationKHR( device, pAllocator, pDeferredOperation ); - } - - VkResult vkCreateDescriptorPool( VkDevice device, const VkDescriptorPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorPool* pDescriptorPool ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDescriptorPool( device, pCreateInfo, pAllocator, pDescriptorPool ); - } - - VkResult vkCreateDescriptorSetLayout( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorSetLayout* pSetLayout ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDescriptorSetLayout( device, pCreateInfo, pAllocator, pSetLayout ); - } - - VkResult vkCreateDescriptorUpdateTemplate( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDescriptorUpdateTemplate( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); - } - - VkResult vkCreateDescriptorUpdateTemplateKHR( VkDevice device, const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDescriptorUpdateTemplateKHR( device, pCreateInfo, pAllocator, pDescriptorUpdateTemplate ); - } - - VkResult vkCreateDevice( VkPhysicalDevice physicalDevice, const VkDeviceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDevice* pDevice ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDevice( physicalDevice, pCreateInfo, pAllocator, pDevice ); - } - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - VkResult vkCreateDirectFBSurfaceEXT( VkInstance instance, const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDirectFBSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - - VkResult vkCreateDisplayModeKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, const VkDisplayModeCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkDisplayModeKHR* pMode ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDisplayModeKHR( physicalDevice, display, pCreateInfo, pAllocator, pMode ); - } - - VkResult vkCreateDisplayPlaneSurfaceKHR( VkInstance instance, const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateDisplayPlaneSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); - } - - VkResult vkCreateEvent( VkDevice device, const VkEventCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkEvent* pEvent ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateEvent( device, pCreateInfo, pAllocator, pEvent ); - } - - VkResult vkCreateFence( VkDevice device, const VkFenceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateFence( device, pCreateInfo, pAllocator, pFence ); - } - - VkResult vkCreateFramebuffer( VkDevice device, const VkFramebufferCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkFramebuffer* pFramebuffer ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateFramebuffer( device, pCreateInfo, pAllocator, pFramebuffer ); - } - - VkResult vkCreateGraphicsPipelines( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateGraphicsPipelines( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); - } - - VkResult vkCreateHeadlessSurfaceEXT( VkInstance instance, const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateHeadlessSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); - } - -#ifdef VK_USE_PLATFORM_IOS_MVK - VkResult vkCreateIOSSurfaceMVK( VkInstance instance, const VkIOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateIOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_IOS_MVK*/ - - VkResult vkCreateImage( VkDevice device, const VkImageCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImage* pImage ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateImage( device, pCreateInfo, pAllocator, pImage ); - } - -#ifdef VK_USE_PLATFORM_FUCHSIA - VkResult vkCreateImagePipeSurfaceFUCHSIA( VkInstance instance, const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateImagePipeSurfaceFUCHSIA( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - - VkResult vkCreateImageView( VkDevice device, const VkImageViewCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkImageView* pView ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateImageView( device, pCreateInfo, pAllocator, pView ); - } - - VkResult vkCreateIndirectCommandsLayoutNV( VkDevice device, const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkIndirectCommandsLayoutNV* pIndirectCommandsLayout ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateIndirectCommandsLayoutNV( device, pCreateInfo, pAllocator, pIndirectCommandsLayout ); - } - - VkResult vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkInstance* pInstance ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateInstance( pCreateInfo, pAllocator, pInstance ); - } - -#ifdef VK_USE_PLATFORM_MACOS_MVK - VkResult vkCreateMacOSSurfaceMVK( VkInstance instance, const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateMacOSSurfaceMVK( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ - -#ifdef VK_USE_PLATFORM_METAL_EXT - VkResult vkCreateMetalSurfaceEXT( VkInstance instance, const VkMetalSurfaceCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateMetalSurfaceEXT( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_METAL_EXT*/ - - VkResult vkCreatePipelineCache( VkDevice device, const VkPipelineCacheCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineCache* pPipelineCache ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreatePipelineCache( device, pCreateInfo, pAllocator, pPipelineCache ); - } - - VkResult vkCreatePipelineLayout( VkDevice device, const VkPipelineLayoutCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPipelineLayout* pPipelineLayout ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreatePipelineLayout( device, pCreateInfo, pAllocator, pPipelineLayout ); - } - - VkResult vkCreatePrivateDataSlotEXT( VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreatePrivateDataSlotEXT( device, pCreateInfo, pAllocator, pPrivateDataSlot ); - } - - VkResult vkCreateQueryPool( VkDevice device, const VkQueryPoolCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkQueryPool* pQueryPool ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateQueryPool( device, pCreateInfo, pAllocator, pQueryPool ); - } - - VkResult vkCreateRayTracingPipelinesKHR( VkDevice device, VkDeferredOperationKHR deferredOperation, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateRayTracingPipelinesKHR( device, deferredOperation, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); - } - - VkResult vkCreateRayTracingPipelinesNV( VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkRayTracingPipelineCreateInfoNV* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateRayTracingPipelinesNV( device, pipelineCache, createInfoCount, pCreateInfos, pAllocator, pPipelines ); - } - - VkResult vkCreateRenderPass( VkDevice device, const VkRenderPassCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateRenderPass( device, pCreateInfo, pAllocator, pRenderPass ); - } - - VkResult vkCreateRenderPass2( VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateRenderPass2( device, pCreateInfo, pAllocator, pRenderPass ); - } - - VkResult vkCreateRenderPass2KHR( VkDevice device, const VkRenderPassCreateInfo2* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkRenderPass* pRenderPass ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateRenderPass2KHR( device, pCreateInfo, pAllocator, pRenderPass ); - } - - VkResult vkCreateSampler( VkDevice device, const VkSamplerCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSampler* pSampler ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateSampler( device, pCreateInfo, pAllocator, pSampler ); - } - - VkResult vkCreateSamplerYcbcrConversion( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateSamplerYcbcrConversion( device, pCreateInfo, pAllocator, pYcbcrConversion ); - } - - VkResult vkCreateSamplerYcbcrConversionKHR( VkDevice device, const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSamplerYcbcrConversion* pYcbcrConversion ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateSamplerYcbcrConversionKHR( device, pCreateInfo, pAllocator, pYcbcrConversion ); - } - -#ifdef VK_USE_PLATFORM_SCREEN_QNX - VkResult vkCreateScreenSurfaceQNX( VkInstance instance, const VkScreenSurfaceCreateInfoQNX* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateScreenSurfaceQNX( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - - VkResult vkCreateSemaphore( VkDevice device, const VkSemaphoreCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSemaphore* pSemaphore ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateSemaphore( device, pCreateInfo, pAllocator, pSemaphore ); - } - - VkResult vkCreateShaderModule( VkDevice device, const VkShaderModuleCreateInfo* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkShaderModule* pShaderModule ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateShaderModule( device, pCreateInfo, pAllocator, pShaderModule ); - } - - VkResult vkCreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, const VkSwapchainCreateInfoKHR* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateSharedSwapchainsKHR( device, swapchainCount, pCreateInfos, pAllocator, pSwapchains ); - } - -#ifdef VK_USE_PLATFORM_GGP - VkResult vkCreateStreamDescriptorSurfaceGGP( VkInstance instance, const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateStreamDescriptorSurfaceGGP( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_GGP*/ - - VkResult vkCreateSwapchainKHR( VkDevice device, const VkSwapchainCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchain ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateSwapchainKHR( device, pCreateInfo, pAllocator, pSwapchain ); - } - - VkResult vkCreateValidationCacheEXT( VkDevice device, const VkValidationCacheCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkValidationCacheEXT* pValidationCache ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateValidationCacheEXT( device, pCreateInfo, pAllocator, pValidationCache ); - } - -#ifdef VK_USE_PLATFORM_VI_NN - VkResult vkCreateViSurfaceNN( VkInstance instance, const VkViSurfaceCreateInfoNN* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateViSurfaceNN( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_VI_NN*/ - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - VkResult vkCreateWaylandSurfaceKHR( VkInstance instance, const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateWaylandSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkCreateWin32SurfaceKHR( VkInstance instance, const VkWin32SurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateWin32SurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_XCB_KHR - VkResult vkCreateXcbSurfaceKHR( VkInstance instance, const VkXcbSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateXcbSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_XCB_KHR*/ - -#ifdef VK_USE_PLATFORM_XLIB_KHR - VkResult vkCreateXlibSurfaceKHR( VkInstance instance, const VkXlibSurfaceCreateInfoKHR* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkSurfaceKHR* pSurface ) const VULKAN_HPP_NOEXCEPT - { - return ::vkCreateXlibSurfaceKHR( instance, pCreateInfo, pAllocator, pSurface ); - } -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - - VkResult vkDebugMarkerSetObjectNameEXT( VkDevice device, const VkDebugMarkerObjectNameInfoEXT* pNameInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDebugMarkerSetObjectNameEXT( device, pNameInfo ); - } - - VkResult vkDebugMarkerSetObjectTagEXT( VkDevice device, const VkDebugMarkerObjectTagInfoEXT* pTagInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDebugMarkerSetObjectTagEXT( device, pTagInfo ); - } - - void vkDebugReportMessageEXT( VkInstance instance, VkDebugReportFlagsEXT flags, VkDebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDebugReportMessageEXT( instance, flags, objectType, object, location, messageCode, pLayerPrefix, pMessage ); - } - - VkResult vkDeferredOperationJoinKHR( VkDevice device, VkDeferredOperationKHR operation ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDeferredOperationJoinKHR( device, operation ); - } - - void vkDestroyAccelerationStructureKHR( VkDevice device, VkAccelerationStructureKHR accelerationStructure, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyAccelerationStructureKHR( device, accelerationStructure, pAllocator ); - } - - void vkDestroyAccelerationStructureNV( VkDevice device, VkAccelerationStructureNV accelerationStructure, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyAccelerationStructureNV( device, accelerationStructure, pAllocator ); - } - - void vkDestroyBuffer( VkDevice device, VkBuffer buffer, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyBuffer( device, buffer, pAllocator ); - } - - void vkDestroyBufferView( VkDevice device, VkBufferView bufferView, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyBufferView( device, bufferView, pAllocator ); - } - - void vkDestroyCommandPool( VkDevice device, VkCommandPool commandPool, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyCommandPool( device, commandPool, pAllocator ); - } - - void vkDestroyDebugReportCallbackEXT( VkInstance instance, VkDebugReportCallbackEXT callback, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyDebugReportCallbackEXT( instance, callback, pAllocator ); - } - - void vkDestroyDebugUtilsMessengerEXT( VkInstance instance, VkDebugUtilsMessengerEXT messenger, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyDebugUtilsMessengerEXT( instance, messenger, pAllocator ); - } - - void vkDestroyDeferredOperationKHR( VkDevice device, VkDeferredOperationKHR operation, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyDeferredOperationKHR( device, operation, pAllocator ); - } - - void vkDestroyDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyDescriptorPool( device, descriptorPool, pAllocator ); - } - - void vkDestroyDescriptorSetLayout( VkDevice device, VkDescriptorSetLayout descriptorSetLayout, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyDescriptorSetLayout( device, descriptorSetLayout, pAllocator ); - } - - void vkDestroyDescriptorUpdateTemplate( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyDescriptorUpdateTemplate( device, descriptorUpdateTemplate, pAllocator ); - } - - void vkDestroyDescriptorUpdateTemplateKHR( VkDevice device, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyDescriptorUpdateTemplateKHR( device, descriptorUpdateTemplate, pAllocator ); - } - - void vkDestroyDevice( VkDevice device, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyDevice( device, pAllocator ); - } - - void vkDestroyEvent( VkDevice device, VkEvent event, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyEvent( device, event, pAllocator ); - } - - void vkDestroyFence( VkDevice device, VkFence fence, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyFence( device, fence, pAllocator ); - } - - void vkDestroyFramebuffer( VkDevice device, VkFramebuffer framebuffer, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyFramebuffer( device, framebuffer, pAllocator ); - } - - void vkDestroyImage( VkDevice device, VkImage image, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyImage( device, image, pAllocator ); - } - - void vkDestroyImageView( VkDevice device, VkImageView imageView, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyImageView( device, imageView, pAllocator ); - } - - void vkDestroyIndirectCommandsLayoutNV( VkDevice device, VkIndirectCommandsLayoutNV indirectCommandsLayout, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyIndirectCommandsLayoutNV( device, indirectCommandsLayout, pAllocator ); - } - - void vkDestroyInstance( VkInstance instance, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyInstance( instance, pAllocator ); - } - - void vkDestroyPipeline( VkDevice device, VkPipeline pipeline, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyPipeline( device, pipeline, pAllocator ); - } - - void vkDestroyPipelineCache( VkDevice device, VkPipelineCache pipelineCache, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyPipelineCache( device, pipelineCache, pAllocator ); - } - - void vkDestroyPipelineLayout( VkDevice device, VkPipelineLayout pipelineLayout, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyPipelineLayout( device, pipelineLayout, pAllocator ); - } - - void vkDestroyPrivateDataSlotEXT( VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyPrivateDataSlotEXT( device, privateDataSlot, pAllocator ); - } - - void vkDestroyQueryPool( VkDevice device, VkQueryPool queryPool, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyQueryPool( device, queryPool, pAllocator ); - } - - void vkDestroyRenderPass( VkDevice device, VkRenderPass renderPass, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyRenderPass( device, renderPass, pAllocator ); - } - - void vkDestroySampler( VkDevice device, VkSampler sampler, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroySampler( device, sampler, pAllocator ); - } - - void vkDestroySamplerYcbcrConversion( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroySamplerYcbcrConversion( device, ycbcrConversion, pAllocator ); - } - - void vkDestroySamplerYcbcrConversionKHR( VkDevice device, VkSamplerYcbcrConversion ycbcrConversion, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroySamplerYcbcrConversionKHR( device, ycbcrConversion, pAllocator ); - } - - void vkDestroySemaphore( VkDevice device, VkSemaphore semaphore, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroySemaphore( device, semaphore, pAllocator ); - } - - void vkDestroyShaderModule( VkDevice device, VkShaderModule shaderModule, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyShaderModule( device, shaderModule, pAllocator ); - } - - void vkDestroySurfaceKHR( VkInstance instance, VkSurfaceKHR surface, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroySurfaceKHR( instance, surface, pAllocator ); - } - - void vkDestroySwapchainKHR( VkDevice device, VkSwapchainKHR swapchain, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroySwapchainKHR( device, swapchain, pAllocator ); - } - - void vkDestroyValidationCacheEXT( VkDevice device, VkValidationCacheEXT validationCache, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDestroyValidationCacheEXT( device, validationCache, pAllocator ); - } - - VkResult vkDeviceWaitIdle( VkDevice device ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDeviceWaitIdle( device ); - } - - VkResult vkDisplayPowerControlEXT( VkDevice device, VkDisplayKHR display, const VkDisplayPowerInfoEXT* pDisplayPowerInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkDisplayPowerControlEXT( device, display, pDisplayPowerInfo ); - } - - VkResult vkEndCommandBuffer( VkCommandBuffer commandBuffer ) const VULKAN_HPP_NOEXCEPT - { - return ::vkEndCommandBuffer( commandBuffer ); - } - - VkResult vkEnumerateDeviceExtensionProperties( VkPhysicalDevice physicalDevice, const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkEnumerateDeviceExtensionProperties( physicalDevice, pLayerName, pPropertyCount, pProperties ); - } - - VkResult vkEnumerateDeviceLayerProperties( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkLayerProperties* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkEnumerateDeviceLayerProperties( physicalDevice, pPropertyCount, pProperties ); - } - - VkResult vkEnumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VkExtensionProperties* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, pProperties ); - } - - VkResult vkEnumerateInstanceLayerProperties( uint32_t* pPropertyCount, VkLayerProperties* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkEnumerateInstanceLayerProperties( pPropertyCount, pProperties ); - } - - VkResult vkEnumerateInstanceVersion( uint32_t* pApiVersion ) const VULKAN_HPP_NOEXCEPT - { - return ::vkEnumerateInstanceVersion( pApiVersion ); - } - - VkResult vkEnumeratePhysicalDeviceGroups( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkEnumeratePhysicalDeviceGroups( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties ); - } - - VkResult vkEnumeratePhysicalDeviceGroupsKHR( VkInstance instance, uint32_t* pPhysicalDeviceGroupCount, VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkEnumeratePhysicalDeviceGroupsKHR( instance, pPhysicalDeviceGroupCount, pPhysicalDeviceGroupProperties ); - } - - 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 ); - } - - VkResult vkEnumeratePhysicalDevices( VkInstance instance, uint32_t* pPhysicalDeviceCount, VkPhysicalDevice* pPhysicalDevices ) const VULKAN_HPP_NOEXCEPT - { - return ::vkEnumeratePhysicalDevices( instance, pPhysicalDeviceCount, pPhysicalDevices ); - } - - VkResult vkFlushMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges ) const VULKAN_HPP_NOEXCEPT - { - return ::vkFlushMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges ); - } - - void vkFreeCommandBuffers( VkDevice device, VkCommandPool commandPool, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers ) const VULKAN_HPP_NOEXCEPT - { - return ::vkFreeCommandBuffers( device, commandPool, commandBufferCount, pCommandBuffers ); - } - - VkResult vkFreeDescriptorSets( VkDevice device, VkDescriptorPool descriptorPool, uint32_t descriptorSetCount, const VkDescriptorSet* pDescriptorSets ) const VULKAN_HPP_NOEXCEPT - { - return ::vkFreeDescriptorSets( device, descriptorPool, descriptorSetCount, pDescriptorSets ); - } - - void vkFreeMemory( VkDevice device, VkDeviceMemory memory, const VkAllocationCallbacks* pAllocator ) const VULKAN_HPP_NOEXCEPT - { - return ::vkFreeMemory( device, memory, pAllocator ); - } - - void vkGetAccelerationStructureBuildSizesKHR( VkDevice device, VkAccelerationStructureBuildTypeKHR buildType, const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetAccelerationStructureBuildSizesKHR( device, buildType, pBuildInfo, pMaxPrimitiveCounts, pSizeInfo ); - } - - VkDeviceAddress vkGetAccelerationStructureDeviceAddressKHR( VkDevice device, const VkAccelerationStructureDeviceAddressInfoKHR* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetAccelerationStructureDeviceAddressKHR( device, pInfo ); - } - - VkResult vkGetAccelerationStructureHandleNV( VkDevice device, VkAccelerationStructureNV accelerationStructure, size_t dataSize, void* pData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetAccelerationStructureHandleNV( device, accelerationStructure, dataSize, pData ); - } - - void vkGetAccelerationStructureMemoryRequirementsNV( VkDevice device, const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2KHR* pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetAccelerationStructureMemoryRequirementsNV( device, pInfo, pMemoryRequirements ); - } - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - VkResult vkGetAndroidHardwareBufferPropertiesANDROID( VkDevice device, const struct AHardwareBuffer* buffer, VkAndroidHardwareBufferPropertiesANDROID* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetAndroidHardwareBufferPropertiesANDROID( device, buffer, pProperties ); - } -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - VkDeviceAddress vkGetBufferDeviceAddress( VkDevice device, const VkBufferDeviceAddressInfo* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetBufferDeviceAddress( device, pInfo ); - } - - VkDeviceAddress vkGetBufferDeviceAddressEXT( VkDevice device, const VkBufferDeviceAddressInfo* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetBufferDeviceAddressEXT( device, pInfo ); - } - - VkDeviceAddress vkGetBufferDeviceAddressKHR( VkDevice device, const VkBufferDeviceAddressInfo* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetBufferDeviceAddressKHR( device, pInfo ); - } - - void vkGetBufferMemoryRequirements( VkDevice device, VkBuffer buffer, VkMemoryRequirements* pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetBufferMemoryRequirements( device, buffer, pMemoryRequirements ); - } - - void vkGetBufferMemoryRequirements2( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetBufferMemoryRequirements2( device, pInfo, pMemoryRequirements ); - } - - void vkGetBufferMemoryRequirements2KHR( VkDevice device, const VkBufferMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetBufferMemoryRequirements2KHR( device, pInfo, pMemoryRequirements ); - } - - uint64_t vkGetBufferOpaqueCaptureAddress( VkDevice device, const VkBufferDeviceAddressInfo* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetBufferOpaqueCaptureAddress( device, pInfo ); - } - - uint64_t vkGetBufferOpaqueCaptureAddressKHR( VkDevice device, const VkBufferDeviceAddressInfo* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetBufferOpaqueCaptureAddressKHR( device, pInfo ); - } - - VkResult vkGetCalibratedTimestampsEXT( VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetCalibratedTimestampsEXT( device, timestampCount, pTimestampInfos, pTimestamps, pMaxDeviation ); - } - - uint32_t vkGetDeferredOperationMaxConcurrencyKHR( VkDevice device, VkDeferredOperationKHR operation ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeferredOperationMaxConcurrencyKHR( device, operation ); - } - - VkResult vkGetDeferredOperationResultKHR( VkDevice device, VkDeferredOperationKHR operation ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeferredOperationResultKHR( device, operation ); - } - - void vkGetDescriptorSetLayoutSupport( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDescriptorSetLayoutSupport( device, pCreateInfo, pSupport ); - } - - void vkGetDescriptorSetLayoutSupportKHR( VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDescriptorSetLayoutSupportKHR( device, pCreateInfo, pSupport ); - } - - void vkGetDeviceAccelerationStructureCompatibilityKHR( VkDevice device, const VkAccelerationStructureVersionInfoKHR* pVersionInfo, VkAccelerationStructureCompatibilityKHR* pCompatibility ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceAccelerationStructureCompatibilityKHR( device, pVersionInfo, pCompatibility ); - } - - 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 ); - } - - 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 ); - } - - VkResult vkGetDeviceGroupPresentCapabilitiesKHR( VkDevice device, VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceGroupPresentCapabilitiesKHR( device, pDeviceGroupPresentCapabilities ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetDeviceGroupSurfacePresentModes2EXT( VkDevice device, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkDeviceGroupPresentModeFlagsKHR* pModes ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceGroupSurfacePresentModes2EXT( device, pSurfaceInfo, pModes ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - VkResult vkGetDeviceGroupSurfacePresentModesKHR( VkDevice device, VkSurfaceKHR surface, VkDeviceGroupPresentModeFlagsKHR* pModes ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceGroupSurfacePresentModesKHR( device, surface, pModes ); - } - - void vkGetDeviceMemoryCommitment( VkDevice device, VkDeviceMemory memory, VkDeviceSize* pCommittedMemoryInBytes ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceMemoryCommitment( device, memory, pCommittedMemoryInBytes ); - } - - uint64_t vkGetDeviceMemoryOpaqueCaptureAddress( VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceMemoryOpaqueCaptureAddress( device, pInfo ); - } - - uint64_t vkGetDeviceMemoryOpaqueCaptureAddressKHR( VkDevice device, const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceMemoryOpaqueCaptureAddressKHR( device, pInfo ); - } - - PFN_vkVoidFunction vkGetDeviceProcAddr( VkDevice device, const char* pName ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceProcAddr( device, pName ); - } - - void vkGetDeviceQueue( VkDevice device, uint32_t queueFamilyIndex, uint32_t queueIndex, VkQueue* pQueue ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceQueue( device, queueFamilyIndex, queueIndex, pQueue ); - } - - void vkGetDeviceQueue2( VkDevice device, const VkDeviceQueueInfo2* pQueueInfo, VkQueue* pQueue ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDeviceQueue2( device, pQueueInfo, pQueue ); - } - - VkResult vkGetDisplayModeProperties2KHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModeProperties2KHR* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDisplayModeProperties2KHR( physicalDevice, display, pPropertyCount, pProperties ); - } - - VkResult vkGetDisplayModePropertiesKHR( VkPhysicalDevice physicalDevice, VkDisplayKHR display, uint32_t* pPropertyCount, VkDisplayModePropertiesKHR* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDisplayModePropertiesKHR( physicalDevice, display, pPropertyCount, pProperties ); - } - - VkResult vkGetDisplayPlaneCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, VkDisplayPlaneCapabilities2KHR* pCapabilities ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDisplayPlaneCapabilities2KHR( physicalDevice, pDisplayPlaneInfo, pCapabilities ); - } - - VkResult vkGetDisplayPlaneCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkDisplayModeKHR mode, uint32_t planeIndex, VkDisplayPlaneCapabilitiesKHR* pCapabilities ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDisplayPlaneCapabilitiesKHR( physicalDevice, mode, planeIndex, pCapabilities ); - } - - VkResult vkGetDisplayPlaneSupportedDisplaysKHR( VkPhysicalDevice physicalDevice, uint32_t planeIndex, uint32_t* pDisplayCount, VkDisplayKHR* pDisplays ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetDisplayPlaneSupportedDisplaysKHR( physicalDevice, planeIndex, pDisplayCount, pDisplays ); - } - - VkResult vkGetEventStatus( VkDevice device, VkEvent event ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetEventStatus( device, event ); - } - - VkResult vkGetFenceFdKHR( VkDevice device, const VkFenceGetFdInfoKHR* pGetFdInfo, int* pFd ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetFenceFdKHR( device, pGetFdInfo, pFd ); - } - - VkResult vkGetFenceStatus( VkDevice device, VkFence fence ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetFenceStatus( device, fence ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetFenceWin32HandleKHR( VkDevice device, const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetFenceWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - void vkGetGeneratedCommandsMemoryRequirementsNV( VkDevice device, const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetGeneratedCommandsMemoryRequirementsNV( device, pInfo, pMemoryRequirements ); - } - - VkResult vkGetImageDrmFormatModifierPropertiesEXT( VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageDrmFormatModifierPropertiesEXT( device, image, pProperties ); - } - - void vkGetImageMemoryRequirements( VkDevice device, VkImage image, VkMemoryRequirements* pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageMemoryRequirements( device, image, pMemoryRequirements ); - } - - void vkGetImageMemoryRequirements2( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageMemoryRequirements2( device, pInfo, pMemoryRequirements ); - } - - void vkGetImageMemoryRequirements2KHR( VkDevice device, const VkImageMemoryRequirementsInfo2* pInfo, VkMemoryRequirements2* pMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageMemoryRequirements2KHR( device, pInfo, pMemoryRequirements ); - } - - void vkGetImageSparseMemoryRequirements( VkDevice device, VkImage image, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements* pSparseMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageSparseMemoryRequirements( device, image, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); - } - - void vkGetImageSparseMemoryRequirements2( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageSparseMemoryRequirements2( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); - } - - void vkGetImageSparseMemoryRequirements2KHR( VkDevice device, const VkImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VkSparseImageMemoryRequirements2* pSparseMemoryRequirements ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageSparseMemoryRequirements2KHR( device, pInfo, pSparseMemoryRequirementCount, pSparseMemoryRequirements ); - } - - void vkGetImageSubresourceLayout( VkDevice device, VkImage image, const VkImageSubresource* pSubresource, VkSubresourceLayout* pLayout ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageSubresourceLayout( device, image, pSubresource, pLayout ); - } - - VkResult vkGetImageViewAddressNVX( VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageViewAddressNVX( device, imageView, pProperties ); - } - - uint32_t vkGetImageViewHandleNVX( VkDevice device, const VkImageViewHandleInfoNVX* pInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetImageViewHandleNVX( device, pInfo ); - } - - PFN_vkVoidFunction vkGetInstanceProcAddr( VkInstance instance, const char* pName ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetInstanceProcAddr( instance, pName ); - } - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - VkResult vkGetMemoryAndroidHardwareBufferANDROID( VkDevice device, const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetMemoryAndroidHardwareBufferANDROID( device, pInfo, pBuffer ); - } -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - VkResult vkGetMemoryFdKHR( VkDevice device, const VkMemoryGetFdInfoKHR* pGetFdInfo, int* pFd ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetMemoryFdKHR( device, pGetFdInfo, pFd ); - } - - VkResult vkGetMemoryFdPropertiesKHR( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, int fd, VkMemoryFdPropertiesKHR* pMemoryFdProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetMemoryFdPropertiesKHR( device, handleType, fd, pMemoryFdProperties ); - } - - VkResult vkGetMemoryHostPointerPropertiesEXT( VkDevice device, VkExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetMemoryHostPointerPropertiesEXT( device, handleType, pHostPointer, pMemoryHostPointerProperties ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetMemoryWin32HandleKHR( VkDevice device, const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetMemoryWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - 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*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - 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*/ - - VkResult vkGetPastPresentationTimingGOOGLE( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VkPastPresentationTimingGOOGLE* pPresentationTimings ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPastPresentationTimingGOOGLE( device, swapchain, pPresentationTimingCount, pPresentationTimings ); - } - - VkResult vkGetPerformanceParameterINTEL( VkDevice device, VkPerformanceParameterTypeINTEL parameter, VkPerformanceValueINTEL* pValue ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPerformanceParameterINTEL( device, parameter, pValue ); - } - - VkResult vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( physicalDevice, pTimeDomainCount, pTimeDomains ); - } - - VkResult vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkCooperativeMatrixPropertiesNV* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( physicalDevice, pPropertyCount, pProperties ); - } - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - VkBool32 vkGetPhysicalDeviceDirectFBPresentationSupportEXT( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, IDirectFB* dfb ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceDirectFBPresentationSupportEXT( physicalDevice, queueFamilyIndex, dfb ); - } -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - - VkResult vkGetPhysicalDeviceDisplayPlaneProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlaneProperties2KHR* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceDisplayPlaneProperties2KHR( physicalDevice, pPropertyCount, pProperties ); - } - - VkResult vkGetPhysicalDeviceDisplayPlanePropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPlanePropertiesKHR* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceDisplayPlanePropertiesKHR( physicalDevice, pPropertyCount, pProperties ); - } - - VkResult vkGetPhysicalDeviceDisplayProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayProperties2KHR* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceDisplayProperties2KHR( physicalDevice, pPropertyCount, pProperties ); - } - - VkResult vkGetPhysicalDeviceDisplayPropertiesKHR( VkPhysicalDevice physicalDevice, uint32_t* pPropertyCount, VkDisplayPropertiesKHR* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceDisplayPropertiesKHR( physicalDevice, pPropertyCount, pProperties ); - } - - void vkGetPhysicalDeviceExternalBufferProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceExternalBufferProperties( physicalDevice, pExternalBufferInfo, pExternalBufferProperties ); - } - - void vkGetPhysicalDeviceExternalBufferPropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VkExternalBufferProperties* pExternalBufferProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceExternalBufferPropertiesKHR( physicalDevice, pExternalBufferInfo, pExternalBufferProperties ); - } - - void vkGetPhysicalDeviceExternalFenceProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceExternalFenceProperties( physicalDevice, pExternalFenceInfo, pExternalFenceProperties ); - } - - void vkGetPhysicalDeviceExternalFencePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VkExternalFenceProperties* pExternalFenceProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceExternalFencePropertiesKHR( physicalDevice, pExternalFenceInfo, pExternalFenceProperties ); - } - - 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 ); - } - - void vkGetPhysicalDeviceExternalSemaphoreProperties( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceExternalSemaphoreProperties( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties ); - } - - void vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VkExternalSemaphoreProperties* pExternalSemaphoreProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( physicalDevice, pExternalSemaphoreInfo, pExternalSemaphoreProperties ); - } - - void vkGetPhysicalDeviceFeatures( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures* pFeatures ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceFeatures( physicalDevice, pFeatures ); - } - - void vkGetPhysicalDeviceFeatures2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceFeatures2( physicalDevice, pFeatures ); - } - - void vkGetPhysicalDeviceFeatures2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceFeatures2* pFeatures ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceFeatures2KHR( physicalDevice, pFeatures ); - } - - void vkGetPhysicalDeviceFormatProperties( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties* pFormatProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceFormatProperties( physicalDevice, format, pFormatProperties ); - } - - void vkGetPhysicalDeviceFormatProperties2( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceFormatProperties2( physicalDevice, format, pFormatProperties ); - } - - void vkGetPhysicalDeviceFormatProperties2KHR( VkPhysicalDevice physicalDevice, VkFormat format, VkFormatProperties2* pFormatProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceFormatProperties2KHR( physicalDevice, format, pFormatProperties ); - } - - VkResult vkGetPhysicalDeviceFragmentShadingRatesKHR( VkPhysicalDevice physicalDevice, uint32_t* pFragmentShadingRateCount, VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceFragmentShadingRatesKHR( physicalDevice, pFragmentShadingRateCount, pFragmentShadingRates ); - } - - 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 ); - } - - VkResult vkGetPhysicalDeviceImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceImageFormatProperties2( physicalDevice, pImageFormatInfo, pImageFormatProperties ); - } - - VkResult vkGetPhysicalDeviceImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, VkImageFormatProperties2* pImageFormatProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceImageFormatProperties2KHR( physicalDevice, pImageFormatInfo, pImageFormatProperties ); - } - - void vkGetPhysicalDeviceMemoryProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties* pMemoryProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceMemoryProperties( physicalDevice, pMemoryProperties ); - } - - void vkGetPhysicalDeviceMemoryProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceMemoryProperties2( physicalDevice, pMemoryProperties ); - } - - void vkGetPhysicalDeviceMemoryProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceMemoryProperties2* pMemoryProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceMemoryProperties2KHR( physicalDevice, pMemoryProperties ); - } - - void vkGetPhysicalDeviceMultisamplePropertiesEXT( VkPhysicalDevice physicalDevice, VkSampleCountFlagBits samples, VkMultisamplePropertiesEXT* pMultisampleProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceMultisamplePropertiesEXT( physicalDevice, samples, pMultisampleProperties ); - } - - VkResult vkGetPhysicalDevicePresentRectanglesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pRectCount, VkRect2D* pRects ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDevicePresentRectanglesKHR( physicalDevice, surface, pRectCount, pRects ); - } - - void vkGetPhysicalDeviceProperties( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceProperties( physicalDevice, pProperties ); - } - - void vkGetPhysicalDeviceProperties2( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceProperties2( physicalDevice, pProperties ); - } - - void vkGetPhysicalDeviceProperties2KHR( VkPhysicalDevice physicalDevice, VkPhysicalDeviceProperties2* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceProperties2KHR( physicalDevice, pProperties ); - } - - void vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( VkPhysicalDevice physicalDevice, const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( physicalDevice, pPerformanceQueryCreateInfo, pNumPasses ); - } - - void vkGetPhysicalDeviceQueueFamilyProperties( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties* pQueueFamilyProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceQueueFamilyProperties( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); - } - - void vkGetPhysicalDeviceQueueFamilyProperties2( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceQueueFamilyProperties2( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); - } - - void vkGetPhysicalDeviceQueueFamilyProperties2KHR( VkPhysicalDevice physicalDevice, uint32_t* pQueueFamilyPropertyCount, VkQueueFamilyProperties2* pQueueFamilyProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceQueueFamilyProperties2KHR( physicalDevice, pQueueFamilyPropertyCount, pQueueFamilyProperties ); - } - -#ifdef VK_USE_PLATFORM_SCREEN_QNX - 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*/ - - 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 ); - } - - void vkGetPhysicalDeviceSparseImageFormatProperties2( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSparseImageFormatProperties2( physicalDevice, pFormatInfo, pPropertyCount, pProperties ); - } - - void vkGetPhysicalDeviceSparseImageFormatProperties2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VkSparseImageFormatProperties2* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSparseImageFormatProperties2KHR( physicalDevice, pFormatInfo, pPropertyCount, pProperties ); - } - - VkResult vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( VkPhysicalDevice physicalDevice, uint32_t* pCombinationCount, VkFramebufferMixedSamplesCombinationNV* pCombinations ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( physicalDevice, pCombinationCount, pCombinations ); - } - - VkResult vkGetPhysicalDeviceSurfaceCapabilities2EXT( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilities2EXT* pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSurfaceCapabilities2EXT( physicalDevice, surface, pSurfaceCapabilities ); - } - - VkResult vkGetPhysicalDeviceSurfaceCapabilities2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VkSurfaceCapabilities2KHR* pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSurfaceCapabilities2KHR( physicalDevice, pSurfaceInfo, pSurfaceCapabilities ); - } - - VkResult vkGetPhysicalDeviceSurfaceCapabilitiesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, VkSurfaceCapabilitiesKHR* pSurfaceCapabilities ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSurfaceCapabilitiesKHR( physicalDevice, surface, pSurfaceCapabilities ); - } - - VkResult vkGetPhysicalDeviceSurfaceFormats2KHR( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VkSurfaceFormat2KHR* pSurfaceFormats ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSurfaceFormats2KHR( physicalDevice, pSurfaceInfo, pSurfaceFormatCount, pSurfaceFormats ); - } - - VkResult vkGetPhysicalDeviceSurfaceFormatsKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pSurfaceFormatCount, VkSurfaceFormatKHR* pSurfaceFormats ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSurfaceFormatsKHR( physicalDevice, surface, pSurfaceFormatCount, pSurfaceFormats ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetPhysicalDeviceSurfacePresentModes2EXT( VkPhysicalDevice physicalDevice, const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSurfacePresentModes2EXT( physicalDevice, pSurfaceInfo, pPresentModeCount, pPresentModes ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - VkResult vkGetPhysicalDeviceSurfacePresentModesKHR( VkPhysicalDevice physicalDevice, VkSurfaceKHR surface, uint32_t* pPresentModeCount, VkPresentModeKHR* pPresentModes ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSurfacePresentModesKHR( physicalDevice, surface, pPresentModeCount, pPresentModes ); - } - - VkResult vkGetPhysicalDeviceSurfaceSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex, VkSurfaceKHR surface, VkBool32* pSupported ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceSurfaceSupportKHR( physicalDevice, queueFamilyIndex, surface, pSupported ); - } - - VkResult vkGetPhysicalDeviceToolPropertiesEXT( VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceToolPropertiesEXT( physicalDevice, pToolCount, pToolProperties ); - } - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - 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*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkBool32 vkGetPhysicalDeviceWin32PresentationSupportKHR( VkPhysicalDevice physicalDevice, uint32_t queueFamilyIndex ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPhysicalDeviceWin32PresentationSupportKHR( physicalDevice, queueFamilyIndex ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_XCB_KHR - 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*/ - -#ifdef VK_USE_PLATFORM_XLIB_KHR - 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*/ - - VkResult vkGetPipelineCacheData( VkDevice device, VkPipelineCache pipelineCache, size_t* pDataSize, void* pData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPipelineCacheData( device, pipelineCache, pDataSize, pData ); - } - - VkResult vkGetPipelineExecutableInternalRepresentationsKHR( VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPipelineExecutableInternalRepresentationsKHR( device, pExecutableInfo, pInternalRepresentationCount, pInternalRepresentations ); - } - - VkResult vkGetPipelineExecutablePropertiesKHR( VkDevice device, const VkPipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VkPipelineExecutablePropertiesKHR* pProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPipelineExecutablePropertiesKHR( device, pPipelineInfo, pExecutableCount, pProperties ); - } - - VkResult vkGetPipelineExecutableStatisticsKHR( VkDevice device, const VkPipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VkPipelineExecutableStatisticKHR* pStatistics ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPipelineExecutableStatisticsKHR( device, pExecutableInfo, pStatisticCount, pStatistics ); - } - - void vkGetPrivateDataEXT( VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t* pData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetPrivateDataEXT( device, objectType, objectHandle, privateDataSlot, pData ); - } - - 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 ); - } - - void vkGetQueueCheckpointData2NV( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetQueueCheckpointData2NV( queue, pCheckpointDataCount, pCheckpointData ); - } - - void vkGetQueueCheckpointDataNV( VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetQueueCheckpointDataNV( queue, pCheckpointDataCount, pCheckpointData ); - } - -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - 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*/ - - 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 ); - } - - 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 ); - } - - 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 ); - } - - VkDeviceSize vkGetRayTracingShaderGroupStackSizeKHR( VkDevice device, VkPipeline pipeline, uint32_t group, VkShaderGroupShaderKHR groupShader ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetRayTracingShaderGroupStackSizeKHR( device, pipeline, group, groupShader ); - } - - VkResult vkGetRefreshCycleDurationGOOGLE( VkDevice device, VkSwapchainKHR swapchain, VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetRefreshCycleDurationGOOGLE( device, swapchain, pDisplayTimingProperties ); - } - - void vkGetRenderAreaGranularity( VkDevice device, VkRenderPass renderPass, VkExtent2D* pGranularity ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetRenderAreaGranularity( device, renderPass, pGranularity ); - } - - VkResult vkGetSemaphoreCounterValue( VkDevice device, VkSemaphore semaphore, uint64_t* pValue ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetSemaphoreCounterValue( device, semaphore, pValue ); - } - - VkResult vkGetSemaphoreCounterValueKHR( VkDevice device, VkSemaphore semaphore, uint64_t* pValue ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetSemaphoreCounterValueKHR( device, semaphore, pValue ); - } - - VkResult vkGetSemaphoreFdKHR( VkDevice device, const VkSemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetSemaphoreFdKHR( device, pGetFdInfo, pFd ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetSemaphoreWin32HandleKHR( VkDevice device, const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetSemaphoreWin32HandleKHR( device, pGetWin32HandleInfo, pHandle ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - 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 ); - } - - VkResult vkGetSwapchainCounterEXT( VkDevice device, VkSwapchainKHR swapchain, VkSurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetSwapchainCounterEXT( device, swapchain, counter, pCounterValue ); - } - - VkResult vkGetSwapchainImagesKHR( VkDevice device, VkSwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VkImage* pSwapchainImages ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetSwapchainImagesKHR( device, swapchain, pSwapchainImageCount, pSwapchainImages ); - } - - VkResult vkGetSwapchainStatusKHR( VkDevice device, VkSwapchainKHR swapchain ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetSwapchainStatusKHR( device, swapchain ); - } - - VkResult vkGetValidationCacheDataEXT( VkDevice device, VkValidationCacheEXT validationCache, size_t* pDataSize, void* pData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetValidationCacheDataEXT( device, validationCache, pDataSize, pData ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkGetWinrtDisplayNV( VkPhysicalDevice physicalDevice, uint32_t deviceRelativeId, VkDisplayKHR* pDisplay ) const VULKAN_HPP_NOEXCEPT - { - return ::vkGetWinrtDisplayNV( physicalDevice, deviceRelativeId, pDisplay ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - VkResult vkImportFenceFdKHR( VkDevice device, const VkImportFenceFdInfoKHR* pImportFenceFdInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkImportFenceFdKHR( device, pImportFenceFdInfo ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkImportFenceWin32HandleKHR( VkDevice device, const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkImportFenceWin32HandleKHR( device, pImportFenceWin32HandleInfo ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - VkResult vkImportSemaphoreFdKHR( VkDevice device, const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkImportSemaphoreFdKHR( device, pImportSemaphoreFdInfo ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkImportSemaphoreWin32HandleKHR( VkDevice device, const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkImportSemaphoreWin32HandleKHR( device, pImportSemaphoreWin32HandleInfo ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - VkResult vkInitializePerformanceApiINTEL( VkDevice device, const VkInitializePerformanceApiInfoINTEL* pInitializeInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkInitializePerformanceApiINTEL( device, pInitializeInfo ); - } - - VkResult vkInvalidateMappedMemoryRanges( VkDevice device, uint32_t memoryRangeCount, const VkMappedMemoryRange* pMemoryRanges ) const VULKAN_HPP_NOEXCEPT - { - return ::vkInvalidateMappedMemoryRanges( device, memoryRangeCount, pMemoryRanges ); - } - - 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 ); - } - - VkResult vkMergePipelineCaches( VkDevice device, VkPipelineCache dstCache, uint32_t srcCacheCount, const VkPipelineCache* pSrcCaches ) const VULKAN_HPP_NOEXCEPT - { - return ::vkMergePipelineCaches( device, dstCache, srcCacheCount, pSrcCaches ); - } - - VkResult vkMergeValidationCachesEXT( VkDevice device, VkValidationCacheEXT dstCache, uint32_t srcCacheCount, const VkValidationCacheEXT* pSrcCaches ) const VULKAN_HPP_NOEXCEPT - { - return ::vkMergeValidationCachesEXT( device, dstCache, srcCacheCount, pSrcCaches ); - } - - void vkQueueBeginDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkQueueBeginDebugUtilsLabelEXT( queue, pLabelInfo ); - } - - VkResult vkQueueBindSparse( VkQueue queue, uint32_t bindInfoCount, const VkBindSparseInfo* pBindInfo, VkFence fence ) const VULKAN_HPP_NOEXCEPT - { - return ::vkQueueBindSparse( queue, bindInfoCount, pBindInfo, fence ); - } - - void vkQueueEndDebugUtilsLabelEXT( VkQueue queue ) const VULKAN_HPP_NOEXCEPT - { - return ::vkQueueEndDebugUtilsLabelEXT( queue ); - } - - void vkQueueInsertDebugUtilsLabelEXT( VkQueue queue, const VkDebugUtilsLabelEXT* pLabelInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkQueueInsertDebugUtilsLabelEXT( queue, pLabelInfo ); - } - - VkResult vkQueuePresentKHR( VkQueue queue, const VkPresentInfoKHR* pPresentInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkQueuePresentKHR( queue, pPresentInfo ); - } - - VkResult vkQueueSetPerformanceConfigurationINTEL( VkQueue queue, VkPerformanceConfigurationINTEL configuration ) const VULKAN_HPP_NOEXCEPT - { - return ::vkQueueSetPerformanceConfigurationINTEL( queue, configuration ); - } - - VkResult vkQueueSubmit( VkQueue queue, uint32_t submitCount, const VkSubmitInfo* pSubmits, VkFence fence ) const VULKAN_HPP_NOEXCEPT - { - return ::vkQueueSubmit( queue, submitCount, pSubmits, fence ); - } - - VkResult vkQueueSubmit2KHR( VkQueue queue, uint32_t submitCount, const VkSubmitInfo2KHR* pSubmits, VkFence fence ) const VULKAN_HPP_NOEXCEPT - { - return ::vkQueueSubmit2KHR( queue, submitCount, pSubmits, fence ); - } - - VkResult vkQueueWaitIdle( VkQueue queue ) const VULKAN_HPP_NOEXCEPT - { - return ::vkQueueWaitIdle( queue ); - } - - VkResult vkRegisterDeviceEventEXT( VkDevice device, const VkDeviceEventInfoEXT* pDeviceEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence ) const VULKAN_HPP_NOEXCEPT - { - return ::vkRegisterDeviceEventEXT( device, pDeviceEventInfo, pAllocator, pFence ); - } - - VkResult vkRegisterDisplayEventEXT( VkDevice device, VkDisplayKHR display, const VkDisplayEventInfoEXT* pDisplayEventInfo, const VkAllocationCallbacks* pAllocator, VkFence* pFence ) const VULKAN_HPP_NOEXCEPT - { - return ::vkRegisterDisplayEventEXT( device, display, pDisplayEventInfo, pAllocator, pFence ); - } - - VkResult vkReleaseDisplayEXT( VkPhysicalDevice physicalDevice, VkDisplayKHR display ) const VULKAN_HPP_NOEXCEPT - { - return ::vkReleaseDisplayEXT( physicalDevice, display ); - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - VkResult vkReleaseFullScreenExclusiveModeEXT( VkDevice device, VkSwapchainKHR swapchain ) const VULKAN_HPP_NOEXCEPT - { - return ::vkReleaseFullScreenExclusiveModeEXT( device, swapchain ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - VkResult vkReleasePerformanceConfigurationINTEL( VkDevice device, VkPerformanceConfigurationINTEL configuration ) const VULKAN_HPP_NOEXCEPT - { - return ::vkReleasePerformanceConfigurationINTEL( device, configuration ); - } - - void vkReleaseProfilingLockKHR( VkDevice device ) const VULKAN_HPP_NOEXCEPT - { - return ::vkReleaseProfilingLockKHR( device ); - } - - VkResult vkResetCommandBuffer( VkCommandBuffer commandBuffer, VkCommandBufferResetFlags flags ) const VULKAN_HPP_NOEXCEPT - { - return ::vkResetCommandBuffer( commandBuffer, flags ); - } - - VkResult vkResetCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT - { - return ::vkResetCommandPool( device, commandPool, flags ); - } - - VkResult vkResetDescriptorPool( VkDevice device, VkDescriptorPool descriptorPool, VkDescriptorPoolResetFlags flags ) const VULKAN_HPP_NOEXCEPT - { - return ::vkResetDescriptorPool( device, descriptorPool, flags ); - } - - VkResult vkResetEvent( VkDevice device, VkEvent event ) const VULKAN_HPP_NOEXCEPT - { - return ::vkResetEvent( device, event ); - } - - VkResult vkResetFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences ) const VULKAN_HPP_NOEXCEPT - { - return ::vkResetFences( device, fenceCount, pFences ); - } - - void vkResetQueryPool( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT - { - return ::vkResetQueryPool( device, queryPool, firstQuery, queryCount ); - } - - void vkResetQueryPoolEXT( VkDevice device, VkQueryPool queryPool, uint32_t firstQuery, uint32_t queryCount ) const VULKAN_HPP_NOEXCEPT - { - return ::vkResetQueryPoolEXT( device, queryPool, firstQuery, queryCount ); - } - - VkResult vkSetDebugUtilsObjectNameEXT( VkDevice device, const VkDebugUtilsObjectNameInfoEXT* pNameInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkSetDebugUtilsObjectNameEXT( device, pNameInfo ); - } - - VkResult vkSetDebugUtilsObjectTagEXT( VkDevice device, const VkDebugUtilsObjectTagInfoEXT* pTagInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkSetDebugUtilsObjectTagEXT( device, pTagInfo ); - } - - VkResult vkSetEvent( VkDevice device, VkEvent event ) const VULKAN_HPP_NOEXCEPT - { - return ::vkSetEvent( device, event ); - } - - void vkSetHdrMetadataEXT( VkDevice device, uint32_t swapchainCount, const VkSwapchainKHR* pSwapchains, const VkHdrMetadataEXT* pMetadata ) const VULKAN_HPP_NOEXCEPT - { - return ::vkSetHdrMetadataEXT( device, swapchainCount, pSwapchains, pMetadata ); - } - - void vkSetLocalDimmingAMD( VkDevice device, VkSwapchainKHR swapChain, VkBool32 localDimmingEnable ) const VULKAN_HPP_NOEXCEPT - { - return ::vkSetLocalDimmingAMD( device, swapChain, localDimmingEnable ); - } - - VkResult vkSetPrivateDataEXT( VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t data ) const VULKAN_HPP_NOEXCEPT - { - return ::vkSetPrivateDataEXT( device, objectType, objectHandle, privateDataSlot, data ); - } - - VkResult vkSignalSemaphore( VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkSignalSemaphore( device, pSignalInfo ); - } - - VkResult vkSignalSemaphoreKHR( VkDevice device, const VkSemaphoreSignalInfo* pSignalInfo ) const VULKAN_HPP_NOEXCEPT - { - return ::vkSignalSemaphoreKHR( device, pSignalInfo ); - } - - void vkSubmitDebugUtilsMessageEXT( VkInstance instance, VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VkDebugUtilsMessageTypeFlagsEXT messageTypes, const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkSubmitDebugUtilsMessageEXT( instance, messageSeverity, messageTypes, pCallbackData ); - } - - void vkTrimCommandPool( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT - { - return ::vkTrimCommandPool( device, commandPool, flags ); - } - - void vkTrimCommandPoolKHR( VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags ) const VULKAN_HPP_NOEXCEPT - { - return ::vkTrimCommandPoolKHR( device, commandPool, flags ); - } - - void vkUninitializePerformanceApiINTEL( VkDevice device ) const VULKAN_HPP_NOEXCEPT - { - return ::vkUninitializePerformanceApiINTEL( device ); - } - - void vkUnmapMemory( VkDevice device, VkDeviceMemory memory ) const VULKAN_HPP_NOEXCEPT - { - return ::vkUnmapMemory( device, memory ); - } - - void vkUpdateDescriptorSetWithTemplate( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkUpdateDescriptorSetWithTemplate( device, descriptorSet, descriptorUpdateTemplate, pData ); - } - - void vkUpdateDescriptorSetWithTemplateKHR( VkDevice device, VkDescriptorSet descriptorSet, VkDescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData ) const VULKAN_HPP_NOEXCEPT - { - return ::vkUpdateDescriptorSetWithTemplateKHR( device, descriptorSet, descriptorUpdateTemplate, pData ); - } - - void vkUpdateDescriptorSets( VkDevice device, uint32_t descriptorWriteCount, const VkWriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VkCopyDescriptorSet* pDescriptorCopies ) const VULKAN_HPP_NOEXCEPT - { - return ::vkUpdateDescriptorSets( device, descriptorWriteCount, pDescriptorWrites, descriptorCopyCount, pDescriptorCopies ); - } - - VkResult vkWaitForFences( VkDevice device, uint32_t fenceCount, const VkFence* pFences, VkBool32 waitAll, uint64_t timeout ) const VULKAN_HPP_NOEXCEPT - { - return ::vkWaitForFences( device, fenceCount, pFences, waitAll, timeout ); - } - - VkResult vkWaitSemaphores( VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout ) const VULKAN_HPP_NOEXCEPT - { - return ::vkWaitSemaphores( device, pWaitInfo, timeout ); - } - - VkResult vkWaitSemaphoresKHR( VkDevice device, const VkSemaphoreWaitInfo* pWaitInfo, uint64_t timeout ) const VULKAN_HPP_NOEXCEPT - { - return ::vkWaitSemaphoresKHR( device, pWaitInfo, timeout ); - } - - VkResult vkWriteAccelerationStructuresPropertiesKHR( VkDevice device, uint32_t accelerationStructureCount, const VkAccelerationStructureKHR* pAccelerationStructures, VkQueryType queryType, size_t dataSize, void* pData, size_t stride ) const VULKAN_HPP_NOEXCEPT - { - return ::vkWriteAccelerationStructuresPropertiesKHR( device, accelerationStructureCount, pAccelerationStructures, queryType, dataSize, pData, stride ); - } - }; -#endif - - class DispatchLoaderDynamic; -#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_DEFAULT_DISPATCHER) -# if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 -# define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::defaultDispatchLoaderDynamic -# define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE namespace VULKAN_HPP_NAMESPACE { VULKAN_HPP_STORAGE_API DispatchLoaderDynamic defaultDispatchLoaderDynamic; } - extern VULKAN_HPP_STORAGE_API DispatchLoaderDynamic defaultDispatchLoaderDynamic; -# else -# define VULKAN_HPP_DEFAULT_DISPATCHER ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic() -# define VULKAN_HPP_DEFAULT_DISPATCH_LOADER_DYNAMIC_STORAGE -# endif -#endif - -#if !defined(VULKAN_HPP_DEFAULT_DISPATCHER_TYPE) -# if VULKAN_HPP_DISPATCH_LOADER_DYNAMIC == 1 - #define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderDynamic -# else -# define VULKAN_HPP_DEFAULT_DISPATCHER_TYPE ::VULKAN_HPP_NAMESPACE::DispatchLoaderStatic -# endif -#endif - -#if defined( VULKAN_HPP_NO_DEFAULT_DISPATCHER ) -# define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT -# define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT -# define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT -#else -# define VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT = {} -# define VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT = nullptr -# define VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT = VULKAN_HPP_DEFAULT_DISPATCHER -#endif - - struct AllocationCallbacks; - - template - class ObjectDestroy - { - public: - ObjectDestroy() = default; - - ObjectDestroy( OwnerType owner, - Optional allocationCallbacks - VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, - Dispatch const & dispatch = VULKAN_HPP_DEFAULT_DISPATCHER ) 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; } - - 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 ) VULKAN_HPP_NOEXCEPT - : m_allocationCallbacks( allocationCallbacks ) - , m_dispatch( &dispatch ) - {} - - Optional getAllocator() const VULKAN_HPP_NOEXCEPT { return m_allocationCallbacks; } - - 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 ObjectFree - { - public: - ObjectFree() = default; - - ObjectFree( OwnerType owner, - Optional allocationCallbacks VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, - Dispatch const & dispatch = VULKAN_HPP_DEFAULT_DISPATCHER ) 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; - } - - 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 ) VULKAN_HPP_NOEXCEPT - : m_owner( owner ) - , m_dispatch( &dispatch ) - {} - - OwnerType getOwner() const VULKAN_HPP_NOEXCEPT - { - return m_owner; - } - - 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 ) 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; } - - 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; - }; - - using Bool32 = uint32_t; - using DeviceAddress = uint64_t; - using DeviceSize = uint64_t; - using SampleMask = uint32_t; - - template - struct CppType - {}; - - template - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = false; - }; - - VULKAN_HPP_INLINE std::string toHexString( uint32_t value ) - { - std::stringstream stream; - stream << std::hex << value; - return stream.str(); - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class AccelerationStructureCompatibilityKHR - { - eCompatible = VK_ACCELERATION_STRUCTURE_COMPATIBILITY_COMPATIBLE_KHR, - eIncompatible = VK_ACCELERATION_STRUCTURE_COMPATIBILITY_INCOMPATIBLE_KHR}; - - VULKAN_HPP_INLINE std::string to_string( AccelerationStructureCompatibilityKHR value ) - { - switch ( value ) - { - case AccelerationStructureCompatibilityKHR::eCompatible : return "Compatible"; - case AccelerationStructureCompatibilityKHR::eIncompatible : return "Incompatible"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class AccelerationStructureCreateFlagBitsKHR : VkAccelerationStructureCreateFlagsKHR - { - eDeviceAddressCaptureReplay = VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR}; - - VULKAN_HPP_INLINE std::string to_string( AccelerationStructureCreateFlagBitsKHR value ) - { - switch ( value ) - { - case AccelerationStructureCreateFlagBitsKHR::eDeviceAddressCaptureReplay : return "DeviceAddressCaptureReplay"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class AccelerationStructureTypeKHR - { - eTopLevel = VK_ACCELERATION_STRUCTURE_TYPE_TOP_LEVEL_KHR, - eBottomLevel = VK_ACCELERATION_STRUCTURE_TYPE_BOTTOM_LEVEL_KHR, - eGeneric = VK_ACCELERATION_STRUCTURE_TYPE_GENERIC_KHR}; - using AccelerationStructureTypeNV = AccelerationStructureTypeKHR; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - 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, - eAccelerationStructureWriteKHR = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, - eShadingRateImageReadNV = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV, - eFragmentDensityMapReadEXT = VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, - eCommandPreprocessReadNV = VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV, - eCommandPreprocessWriteNV = VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV, - eNoneKHR = VK_ACCESS_NONE_KHR, - eAccelerationStructureReadNV = VK_ACCESS_ACCELERATION_STRUCTURE_READ_BIT_NV, - eAccelerationStructureWriteNV = VK_ACCESS_ACCELERATION_STRUCTURE_WRITE_BIT_NV, - eFragmentShadingRateAttachmentReadKHR = VK_ACCESS_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR}; - - VULKAN_HPP_INLINE 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::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::eShadingRateImageReadNV : return "ShadingRateImageReadNV"; - case AccessFlagBits::eFragmentDensityMapReadEXT : return "FragmentDensityMapReadEXT"; - case AccessFlagBits::eCommandPreprocessReadNV : return "CommandPreprocessReadNV"; - case AccessFlagBits::eCommandPreprocessWriteNV : return "CommandPreprocessWriteNV"; - case AccessFlagBits::eNoneKHR : return "NoneKHR"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class AccessFlagBits2KHR : VkAccessFlags2KHR - { - e2None = VK_ACCESS_2_NONE_KHR, - e2IndirectCommandRead = VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR, - e2IndexRead = VK_ACCESS_2_INDEX_READ_BIT_KHR, - e2VertexAttributeRead = VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR, - e2UniformRead = VK_ACCESS_2_UNIFORM_READ_BIT_KHR, - e2InputAttachmentRead = VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR, - e2ShaderRead = VK_ACCESS_2_SHADER_READ_BIT_KHR, - e2ShaderWrite = VK_ACCESS_2_SHADER_WRITE_BIT_KHR, - e2ColorAttachmentRead = VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR, - e2ColorAttachmentWrite = VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR, - e2DepthStencilAttachmentRead = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR, - e2DepthStencilAttachmentWrite = VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR, - e2TransferRead = VK_ACCESS_2_TRANSFER_READ_BIT_KHR, - e2TransferWrite = VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR, - e2HostRead = VK_ACCESS_2_HOST_READ_BIT_KHR, - e2HostWrite = VK_ACCESS_2_HOST_WRITE_BIT_KHR, - e2MemoryRead = VK_ACCESS_2_MEMORY_READ_BIT_KHR, - e2MemoryWrite = VK_ACCESS_2_MEMORY_WRITE_BIT_KHR, - e2ShaderSampledRead = VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR, - e2ShaderStorageRead = VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR, - e2ShaderStorageWrite = VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR, - e2TransformFeedbackWriteExt = VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT, - e2TransformFeedbackCounterReadExt = VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT, - e2TransformFeedbackCounterWriteExt = VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT, - e2ConditionalRenderingReadExt = VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT, - e2CommandPreprocessReadNv = VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV, - e2CommandPreprocessWriteNv = VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV, - e2FragmentShadingRateAttachmentRead = VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR, - e2AccelerationStructureRead = VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR, - e2AccelerationStructureWrite = VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR, - e2FragmentDensityMapReadExt = VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT, - e2ColorAttachmentReadNoncoherentExt = VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT, - e2AccelerationStructureReadNv = VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV, - e2AccelerationStructureWriteNv = VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV, - e2ShadingRateImageReadNv = VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV}; - - VULKAN_HPP_INLINE std::string to_string( AccessFlagBits2KHR value ) - { - switch ( value ) - { - case AccessFlagBits2KHR::e2None : return "2None"; - case AccessFlagBits2KHR::e2IndirectCommandRead : return "2IndirectCommandRead"; - case AccessFlagBits2KHR::e2IndexRead : return "2IndexRead"; - case AccessFlagBits2KHR::e2VertexAttributeRead : return "2VertexAttributeRead"; - case AccessFlagBits2KHR::e2UniformRead : return "2UniformRead"; - case AccessFlagBits2KHR::e2InputAttachmentRead : return "2InputAttachmentRead"; - case AccessFlagBits2KHR::e2ShaderRead : return "2ShaderRead"; - case AccessFlagBits2KHR::e2ShaderWrite : return "2ShaderWrite"; - case AccessFlagBits2KHR::e2ColorAttachmentRead : return "2ColorAttachmentRead"; - case AccessFlagBits2KHR::e2ColorAttachmentWrite : return "2ColorAttachmentWrite"; - case AccessFlagBits2KHR::e2DepthStencilAttachmentRead : return "2DepthStencilAttachmentRead"; - case AccessFlagBits2KHR::e2DepthStencilAttachmentWrite : return "2DepthStencilAttachmentWrite"; - case AccessFlagBits2KHR::e2TransferRead : return "2TransferRead"; - case AccessFlagBits2KHR::e2TransferWrite : return "2TransferWrite"; - case AccessFlagBits2KHR::e2HostRead : return "2HostRead"; - case AccessFlagBits2KHR::e2HostWrite : return "2HostWrite"; - case AccessFlagBits2KHR::e2MemoryRead : return "2MemoryRead"; - case AccessFlagBits2KHR::e2MemoryWrite : return "2MemoryWrite"; - case AccessFlagBits2KHR::e2ShaderSampledRead : return "2ShaderSampledRead"; - case AccessFlagBits2KHR::e2ShaderStorageRead : return "2ShaderStorageRead"; - case AccessFlagBits2KHR::e2ShaderStorageWrite : return "2ShaderStorageWrite"; - case AccessFlagBits2KHR::e2TransformFeedbackWriteExt : return "2TransformFeedbackWriteExt"; - case AccessFlagBits2KHR::e2TransformFeedbackCounterReadExt : return "2TransformFeedbackCounterReadExt"; - case AccessFlagBits2KHR::e2TransformFeedbackCounterWriteExt : return "2TransformFeedbackCounterWriteExt"; - case AccessFlagBits2KHR::e2ConditionalRenderingReadExt : return "2ConditionalRenderingReadExt"; - case AccessFlagBits2KHR::e2CommandPreprocessReadNv : return "2CommandPreprocessReadNv"; - case AccessFlagBits2KHR::e2CommandPreprocessWriteNv : return "2CommandPreprocessWriteNv"; - case AccessFlagBits2KHR::e2FragmentShadingRateAttachmentRead : return "2FragmentShadingRateAttachmentRead"; - case AccessFlagBits2KHR::e2AccelerationStructureRead : return "2AccelerationStructureRead"; - case AccessFlagBits2KHR::e2AccelerationStructureWrite : return "2AccelerationStructureWrite"; - case AccessFlagBits2KHR::e2FragmentDensityMapReadExt : return "2FragmentDensityMapReadExt"; - case AccessFlagBits2KHR::e2ColorAttachmentReadNoncoherentExt : return "2ColorAttachmentReadNoncoherentExt"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class AcquireProfilingLockFlagBitsKHR : VkAcquireProfilingLockFlagsKHR - {}; - - VULKAN_HPP_INLINE std::string to_string( AcquireProfilingLockFlagBitsKHR ) - { - return "(void)"; - } - - enum class AttachmentDescriptionFlagBits : VkAttachmentDescriptionFlags - { - eMayAlias = VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT}; - - VULKAN_HPP_INLINE std::string to_string( AttachmentDescriptionFlagBits value ) - { - switch ( value ) - { - case AttachmentDescriptionFlagBits::eMayAlias : return "MayAlias"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class AttachmentLoadOp - { - eLoad = VK_ATTACHMENT_LOAD_OP_LOAD, - eClear = VK_ATTACHMENT_LOAD_OP_CLEAR, - eDontCare = VK_ATTACHMENT_LOAD_OP_DONT_CARE}; - - VULKAN_HPP_INLINE std::string to_string( AttachmentLoadOp value ) - { - switch ( value ) - { - case AttachmentLoadOp::eLoad : return "Load"; - case AttachmentLoadOp::eClear : return "Clear"; - case AttachmentLoadOp::eDontCare : return "DontCare"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class AttachmentStoreOp - { - eStore = VK_ATTACHMENT_STORE_OP_STORE, - eDontCare = VK_ATTACHMENT_STORE_OP_DONT_CARE, - eNoneQCOM = VK_ATTACHMENT_STORE_OP_NONE_QCOM}; - - VULKAN_HPP_INLINE std::string to_string( AttachmentStoreOp value ) - { - switch ( value ) - { - case AttachmentStoreOp::eStore : return "Store"; - case AttachmentStoreOp::eDontCare : return "DontCare"; - case AttachmentStoreOp::eNoneQCOM : return "NoneQCOM"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class BlendOverlapEXT - { - eUncorrelated = VK_BLEND_OVERLAP_UNCORRELATED_EXT, - eDisjoint = VK_BLEND_OVERLAP_DISJOINT_EXT, - eConjoint = VK_BLEND_OVERLAP_CONJOINT_EXT}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - 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, - 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, - eShaderDeviceAddressEXT = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_EXT, - eShaderDeviceAddressKHR = VK_BUFFER_USAGE_SHADER_DEVICE_ADDRESS_BIT_KHR}; - - VULKAN_HPP_INLINE 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::eTransformFeedbackBufferEXT : return "TransformFeedbackBufferEXT"; - case BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT : return "TransformFeedbackCounterBufferEXT"; - case BufferUsageFlagBits::eConditionalRenderingEXT : return "ConditionalRenderingEXT"; - case BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR : return "AccelerationStructureBuildInputReadOnlyKHR"; - case BufferUsageFlagBits::eAccelerationStructureStorageKHR : return "AccelerationStructureStorageKHR"; - case BufferUsageFlagBits::eShaderBindingTableKHR : return "ShaderBindingTableKHR"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class BuildAccelerationStructureFlagBitsKHR : VkBuildAccelerationStructureFlagsKHR - { - eAllowUpdate = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_UPDATE_BIT_KHR, - eAllowCompaction = VK_BUILD_ACCELERATION_STRUCTURE_ALLOW_COMPACTION_BIT_KHR, - ePreferFastTrace = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_TRACE_BIT_KHR, - ePreferFastBuild = VK_BUILD_ACCELERATION_STRUCTURE_PREFER_FAST_BUILD_BIT_KHR, - eLowMemory = VK_BUILD_ACCELERATION_STRUCTURE_LOW_MEMORY_BIT_KHR}; - using BuildAccelerationStructureFlagBitsNV = BuildAccelerationStructureFlagBitsKHR; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class BuildAccelerationStructureModeKHR - { - eBuild = VK_BUILD_ACCELERATION_STRUCTURE_MODE_BUILD_KHR, - eUpdate = VK_BUILD_ACCELERATION_STRUCTURE_MODE_UPDATE_KHR}; - - VULKAN_HPP_INLINE std::string to_string( BuildAccelerationStructureModeKHR value ) - { - switch ( value ) - { - case BuildAccelerationStructureModeKHR::eBuild : return "Build"; - case BuildAccelerationStructureModeKHR::eUpdate : return "Update"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ChromaLocation - { - eCositedEven = VK_CHROMA_LOCATION_COSITED_EVEN, - eMidpoint = VK_CHROMA_LOCATION_MIDPOINT}; - using ChromaLocationKHR = ChromaLocation; - - VULKAN_HPP_INLINE std::string to_string( ChromaLocation value ) - { - switch ( value ) - { - case ChromaLocation::eCositedEven : return "CositedEven"; - case ChromaLocation::eMidpoint : return "Midpoint"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ColorSpaceKHR - { - eSrgbNonlinear = VK_COLOR_SPACE_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, - 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 = 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, - eVkColorspaceSrgbNonlinear = VK_COLORSPACE_SRGB_NONLINEAR_KHR, - eDciP3LinearEXT = VK_COLOR_SPACE_DCI_P3_LINEAR_EXT}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class CommandBufferLevel - { - ePrimary = VK_COMMAND_BUFFER_LEVEL_PRIMARY, - eSecondary = VK_COMMAND_BUFFER_LEVEL_SECONDARY}; - - VULKAN_HPP_INLINE std::string to_string( CommandBufferLevel value ) - { - switch ( value ) - { - case CommandBufferLevel::ePrimary : return "Primary"; - case CommandBufferLevel::eSecondary : return "Secondary"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class CommandBufferResetFlagBits : VkCommandBufferResetFlags - { - eReleaseResources = VK_COMMAND_BUFFER_RESET_RELEASE_RESOURCES_BIT}; - - VULKAN_HPP_INLINE std::string to_string( CommandBufferResetFlagBits value ) - { - switch ( value ) - { - case CommandBufferResetFlagBits::eReleaseResources : return "ReleaseResources"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class CommandPoolResetFlagBits : VkCommandPoolResetFlags - { - eReleaseResources = VK_COMMAND_POOL_RESET_RELEASE_RESOURCES_BIT}; - - VULKAN_HPP_INLINE std::string to_string( CommandPoolResetFlagBits value ) - { - switch ( value ) - { - case CommandPoolResetFlagBits::eReleaseResources : return "ReleaseResources"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ComponentTypeNV - { - eFloat16 = VK_COMPONENT_TYPE_FLOAT16_NV, - eFloat32 = VK_COMPONENT_TYPE_FLOAT32_NV, - eFloat64 = VK_COMPONENT_TYPE_FLOAT64_NV, - eSint8 = VK_COMPONENT_TYPE_SINT8_NV, - eSint16 = VK_COMPONENT_TYPE_SINT16_NV, - eSint32 = VK_COMPONENT_TYPE_SINT32_NV, - eSint64 = VK_COMPONENT_TYPE_SINT64_NV, - eUint8 = VK_COMPONENT_TYPE_UINT8_NV, - eUint16 = VK_COMPONENT_TYPE_UINT16_NV, - eUint32 = VK_COMPONENT_TYPE_UINT32_NV, - eUint64 = VK_COMPONENT_TYPE_UINT64_NV}; - - VULKAN_HPP_INLINE std::string to_string( ComponentTypeNV value ) - { - switch ( value ) - { - case ComponentTypeNV::eFloat16 : return "Float16"; - case ComponentTypeNV::eFloat32 : return "Float32"; - case ComponentTypeNV::eFloat64 : return "Float64"; - case ComponentTypeNV::eSint8 : return "Sint8"; - case ComponentTypeNV::eSint16 : return "Sint16"; - case ComponentTypeNV::eSint32 : return "Sint32"; - case ComponentTypeNV::eSint64 : return "Sint64"; - case ComponentTypeNV::eUint8 : return "Uint8"; - case ComponentTypeNV::eUint16 : return "Uint16"; - case ComponentTypeNV::eUint32 : return "Uint32"; - case ComponentTypeNV::eUint64 : return "Uint64"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ConditionalRenderingFlagBitsEXT : VkConditionalRenderingFlagsEXT - { - eInverted = VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( ConditionalRenderingFlagBitsEXT value ) - { - switch ( value ) - { - case ConditionalRenderingFlagBitsEXT::eInverted : return "Inverted"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ConservativeRasterizationModeEXT - { - eDisabled = VK_CONSERVATIVE_RASTERIZATION_MODE_DISABLED_EXT, - eOverestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_OVERESTIMATE_EXT, - eUnderestimate = VK_CONSERVATIVE_RASTERIZATION_MODE_UNDERESTIMATE_EXT}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class CopyAccelerationStructureModeKHR - { - eClone = VK_COPY_ACCELERATION_STRUCTURE_MODE_CLONE_KHR, - eCompact = VK_COPY_ACCELERATION_STRUCTURE_MODE_COMPACT_KHR, - eSerialize = VK_COPY_ACCELERATION_STRUCTURE_MODE_SERIALIZE_KHR, - eDeserialize = VK_COPY_ACCELERATION_STRUCTURE_MODE_DESERIALIZE_KHR}; - using CopyAccelerationStructureModeNV = CopyAccelerationStructureModeKHR; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class CoverageReductionModeNV - { - eMerge = VK_COVERAGE_REDUCTION_MODE_MERGE_NV, - eTruncate = VK_COVERAGE_REDUCTION_MODE_TRUNCATE_NV}; - - VULKAN_HPP_INLINE std::string to_string( CoverageReductionModeNV value ) - { - switch ( value ) - { - case CoverageReductionModeNV::eMerge : return "Merge"; - case CoverageReductionModeNV::eTruncate : return "Truncate"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - 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, - eSamplerYcbcrConversion = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_EXT, - eDescriptorUpdateTemplate = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_EXT, - eAccelerationStructureKHR = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR_EXT, - eAccelerationStructureNV = VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT, - eDebugReport = VK_DEBUG_REPORT_OBJECT_TYPE_DEBUG_REPORT_EXT, - eDescriptorUpdateTemplateKHR = VK_DEBUG_REPORT_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR_EXT, - eSamplerYcbcrConversionKHR = VK_DEBUG_REPORT_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR_EXT, - eValidationCache = VK_DEBUG_REPORT_OBJECT_TYPE_VALIDATION_CACHE_EXT}; - - VULKAN_HPP_INLINE 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::eAccelerationStructureKHR : return "AccelerationStructureKHR"; - case DebugReportObjectTypeEXT::eAccelerationStructureNV : return "AccelerationStructureNV"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageTypeFlagBitsEXT value ) - { - switch ( value ) - { - case DebugUtilsMessageTypeFlagBitsEXT::eGeneral : return "General"; - case DebugUtilsMessageTypeFlagBitsEXT::eValidation : return "Validation"; - case DebugUtilsMessageTypeFlagBitsEXT::ePerformance : return "Performance"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DependencyFlagBits : VkDependencyFlags - { - eByRegion = VK_DEPENDENCY_BY_REGION_BIT, - eDeviceGroup = VK_DEPENDENCY_DEVICE_GROUP_BIT, - eViewLocal = VK_DEPENDENCY_VIEW_LOCAL_BIT, - eDeviceGroupKHR = VK_DEPENDENCY_DEVICE_GROUP_BIT_KHR, - eViewLocalKHR = VK_DEPENDENCY_VIEW_LOCAL_BIT_KHR}; - - VULKAN_HPP_INLINE std::string to_string( DependencyFlagBits value ) - { - switch ( value ) - { - case DependencyFlagBits::eByRegion : return "ByRegion"; - case DependencyFlagBits::eDeviceGroup : return "DeviceGroup"; - case DependencyFlagBits::eViewLocal : return "ViewLocal"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DescriptorBindingFlagBits : VkDescriptorBindingFlags - { - eUpdateAfterBind = VK_DESCRIPTOR_BINDING_UPDATE_AFTER_BIND_BIT, - eUpdateUnusedWhilePending = VK_DESCRIPTOR_BINDING_UPDATE_UNUSED_WHILE_PENDING_BIT, - ePartiallyBound = VK_DESCRIPTOR_BINDING_PARTIALLY_BOUND_BIT, - eVariableDescriptorCount = VK_DESCRIPTOR_BINDING_VARIABLE_DESCRIPTOR_COUNT_BIT}; - using DescriptorBindingFlagBitsEXT = DescriptorBindingFlagBits; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DescriptorPoolCreateFlagBits : VkDescriptorPoolCreateFlags - { - eFreeDescriptorSet = VK_DESCRIPTOR_POOL_CREATE_FREE_DESCRIPTOR_SET_BIT, - eUpdateAfterBind = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, - eHostOnlyVALVE = VK_DESCRIPTOR_POOL_CREATE_HOST_ONLY_BIT_VALVE, - eUpdateAfterBindEXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( DescriptorPoolCreateFlagBits value ) - { - switch ( value ) - { - case DescriptorPoolCreateFlagBits::eFreeDescriptorSet : return "FreeDescriptorSet"; - case DescriptorPoolCreateFlagBits::eUpdateAfterBind : return "UpdateAfterBind"; - case DescriptorPoolCreateFlagBits::eHostOnlyVALVE : return "HostOnlyVALVE"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DescriptorSetLayoutCreateFlagBits : VkDescriptorSetLayoutCreateFlags - { - eUpdateAfterBindPool = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT, - ePushDescriptorKHR = VK_DESCRIPTOR_SET_LAYOUT_CREATE_PUSH_DESCRIPTOR_BIT_KHR, - eHostOnlyPoolVALVE = VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE, - eUpdateAfterBindPoolEXT = VK_DESCRIPTOR_SET_LAYOUT_CREATE_UPDATE_AFTER_BIND_POOL_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( DescriptorSetLayoutCreateFlagBits value ) - { - switch ( value ) - { - case DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPool : return "UpdateAfterBindPool"; - case DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR : return "PushDescriptorKHR"; - case DescriptorSetLayoutCreateFlagBits::eHostOnlyPoolVALVE : return "HostOnlyPoolVALVE"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - eInlineUniformBlockEXT = VK_DESCRIPTOR_TYPE_INLINE_UNIFORM_BLOCK_EXT, - eAccelerationStructureKHR = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR, - eAccelerationStructureNV = VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV, - eMutableVALVE = VK_DESCRIPTOR_TYPE_MUTABLE_VALVE}; - - VULKAN_HPP_INLINE 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::eInlineUniformBlockEXT : return "InlineUniformBlockEXT"; - case DescriptorType::eAccelerationStructureKHR : return "AccelerationStructureKHR"; - case DescriptorType::eAccelerationStructureNV : return "AccelerationStructureNV"; - case DescriptorType::eMutableVALVE : return "MutableVALVE"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DescriptorUpdateTemplateType - { - eDescriptorSet = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - ePushDescriptorsKHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR}; - using DescriptorUpdateTemplateTypeKHR = DescriptorUpdateTemplateType; - - VULKAN_HPP_INLINE std::string to_string( DescriptorUpdateTemplateType value ) - { - switch ( value ) - { - case DescriptorUpdateTemplateType::eDescriptorSet : return "DescriptorSet"; - case DescriptorUpdateTemplateType::ePushDescriptorsKHR : return "PushDescriptorsKHR"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DeviceCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( DeviceCreateFlagBits ) - { - return "(void)"; - } - - 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}; - - VULKAN_HPP_INLINE std::string to_string( DeviceDiagnosticsConfigFlagBitsNV value ) - { - switch ( value ) - { - case DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderDebugInfo : return "EnableShaderDebugInfo"; - case DeviceDiagnosticsConfigFlagBitsNV::eEnableResourceTracking : return "EnableResourceTracking"; - case DeviceDiagnosticsConfigFlagBitsNV::eEnableAutomaticCheckpoints : return "EnableAutomaticCheckpoints"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DeviceEventTypeEXT - { - eDisplayHotplug = VK_DEVICE_EVENT_TYPE_DISPLAY_HOTPLUG_EXT}; - - VULKAN_HPP_INLINE std::string to_string( DeviceEventTypeEXT value ) - { - switch ( value ) - { - case DeviceEventTypeEXT::eDisplayHotplug : return "DisplayHotplug"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DeviceQueueCreateFlagBits : VkDeviceQueueCreateFlags - { - eProtected = VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT}; - - VULKAN_HPP_INLINE std::string to_string( DeviceQueueCreateFlagBits value ) - { - switch ( value ) - { - case DeviceQueueCreateFlagBits::eProtected : return "Protected"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DiscardRectangleModeEXT - { - eInclusive = VK_DISCARD_RECTANGLE_MODE_INCLUSIVE_EXT, - eExclusive = VK_DISCARD_RECTANGLE_MODE_EXCLUSIVE_EXT}; - - VULKAN_HPP_INLINE std::string to_string( DiscardRectangleModeEXT value ) - { - switch ( value ) - { - case DiscardRectangleModeEXT::eInclusive : return "Inclusive"; - case DiscardRectangleModeEXT::eExclusive : return "Exclusive"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DisplayEventTypeEXT - { - eFirstPixelOut = VK_DISPLAY_EVENT_TYPE_FIRST_PIXEL_OUT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( DisplayEventTypeEXT value ) - { - switch ( value ) - { - case DisplayEventTypeEXT::eFirstPixelOut : return "FirstPixelOut"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DisplayPowerStateEXT - { - eOff = VK_DISPLAY_POWER_STATE_OFF_EXT, - eSuspend = VK_DISPLAY_POWER_STATE_SUSPEND_EXT, - eOn = VK_DISPLAY_POWER_STATE_ON_EXT}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class DriverId - { - eAmdProprietary = VK_DRIVER_ID_AMD_PROPRIETARY, - eAmdOpenSource = VK_DRIVER_ID_AMD_OPEN_SOURCE, - eMesaRadv = VK_DRIVER_ID_MESA_RADV, - eNvidiaProprietary = VK_DRIVER_ID_NVIDIA_PROPRIETARY, - eIntelProprietaryWindows = VK_DRIVER_ID_INTEL_PROPRIETARY_WINDOWS, - eIntelOpenSourceMESA = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA, - eImaginationProprietary = VK_DRIVER_ID_IMAGINATION_PROPRIETARY, - eQualcommProprietary = VK_DRIVER_ID_QUALCOMM_PROPRIETARY, - eArmProprietary = VK_DRIVER_ID_ARM_PROPRIETARY, - eGoogleSwiftshader = VK_DRIVER_ID_GOOGLE_SWIFTSHADER, - eGgpProprietary = VK_DRIVER_ID_GGP_PROPRIETARY, - eBroadcomProprietary = VK_DRIVER_ID_BROADCOM_PROPRIETARY, - eMesaLlvmpipe = VK_DRIVER_ID_MESA_LLVMPIPE, - eMoltenvk = VK_DRIVER_ID_MOLTENVK, - eIntelOpenSourceMesa = VK_DRIVER_ID_INTEL_OPEN_SOURCE_MESA_KHR}; - using DriverIdKHR = DriverId; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - eViewportWScalingNV = VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV, - eDiscardRectangleEXT = VK_DYNAMIC_STATE_DISCARD_RECTANGLE_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, - eExclusiveScissorNV = VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV, - eFragmentShadingRateKHR = VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR, - eLineStippleEXT = VK_DYNAMIC_STATE_LINE_STIPPLE_EXT, - eCullModeEXT = VK_DYNAMIC_STATE_CULL_MODE_EXT, - eFrontFaceEXT = VK_DYNAMIC_STATE_FRONT_FACE_EXT, - ePrimitiveTopologyEXT = VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT, - eViewportWithCountEXT = VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT, - eScissorWithCountEXT = VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT, - eVertexInputBindingStrideEXT = VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT, - eDepthTestEnableEXT = VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT, - eDepthWriteEnableEXT = VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT, - eDepthCompareOpEXT = VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT, - eDepthBoundsTestEnableEXT = VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT, - eStencilTestEnableEXT = VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT, - eStencilOpEXT = VK_DYNAMIC_STATE_STENCIL_OP_EXT}; - - VULKAN_HPP_INLINE 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::eViewportWScalingNV : return "ViewportWScalingNV"; - case DynamicState::eDiscardRectangleEXT : return "DiscardRectangleEXT"; - case DynamicState::eSampleLocationsEXT : return "SampleLocationsEXT"; - case DynamicState::eRayTracingPipelineStackSizeKHR : return "RayTracingPipelineStackSizeKHR"; - case DynamicState::eViewportShadingRatePaletteNV : return "ViewportShadingRatePaletteNV"; - case DynamicState::eViewportCoarseSampleOrderNV : return "ViewportCoarseSampleOrderNV"; - case DynamicState::eExclusiveScissorNV : return "ExclusiveScissorNV"; - case DynamicState::eFragmentShadingRateKHR : return "FragmentShadingRateKHR"; - case DynamicState::eLineStippleEXT : return "LineStippleEXT"; - case DynamicState::eCullModeEXT : return "CullModeEXT"; - case DynamicState::eFrontFaceEXT : return "FrontFaceEXT"; - case DynamicState::ePrimitiveTopologyEXT : return "PrimitiveTopologyEXT"; - case DynamicState::eViewportWithCountEXT : return "ViewportWithCountEXT"; - case DynamicState::eScissorWithCountEXT : return "ScissorWithCountEXT"; - case DynamicState::eVertexInputBindingStrideEXT : return "VertexInputBindingStrideEXT"; - case DynamicState::eDepthTestEnableEXT : return "DepthTestEnableEXT"; - case DynamicState::eDepthWriteEnableEXT : return "DepthWriteEnableEXT"; - case DynamicState::eDepthCompareOpEXT : return "DepthCompareOpEXT"; - case DynamicState::eDepthBoundsTestEnableEXT : return "DepthBoundsTestEnableEXT"; - case DynamicState::eStencilTestEnableEXT : return "StencilTestEnableEXT"; - case DynamicState::eStencilOpEXT : return "StencilOpEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class EventCreateFlagBits : VkEventCreateFlags - { - eDeviceOnlyKHR = VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR}; - - VULKAN_HPP_INLINE std::string to_string( EventCreateFlagBits value ) - { - switch ( value ) - { - case EventCreateFlagBits::eDeviceOnlyKHR : return "DeviceOnlyKHR"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ExternalFenceFeatureFlagBits : VkExternalFenceFeatureFlags - { - eExportable = VK_EXTERNAL_FENCE_FEATURE_EXPORTABLE_BIT, - eImportable = VK_EXTERNAL_FENCE_FEATURE_IMPORTABLE_BIT}; - using ExternalFenceFeatureFlagBitsKHR = ExternalFenceFeatureFlagBits; - - VULKAN_HPP_INLINE std::string to_string( ExternalFenceFeatureFlagBits value ) - { - switch ( value ) - { - case ExternalFenceFeatureFlagBits::eExportable : return "Exportable"; - case ExternalFenceFeatureFlagBits::eImportable : return "Importable"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ExternalFenceHandleTypeFlagBits : VkExternalFenceHandleTypeFlags - { - eOpaqueFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_FD_BIT, - eOpaqueWin32 = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_BIT, - eOpaqueWin32Kmt = VK_EXTERNAL_FENCE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, - eSyncFd = VK_EXTERNAL_FENCE_HANDLE_TYPE_SYNC_FD_BIT}; - using ExternalFenceHandleTypeFlagBitsKHR = ExternalFenceHandleTypeFlagBits; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ExternalMemoryFeatureFlagBits : VkExternalMemoryFeatureFlags - { - eDedicatedOnly = VK_EXTERNAL_MEMORY_FEATURE_DEDICATED_ONLY_BIT, - eExportable = VK_EXTERNAL_MEMORY_FEATURE_EXPORTABLE_BIT, - eImportable = VK_EXTERNAL_MEMORY_FEATURE_IMPORTABLE_BIT}; - using ExternalMemoryFeatureFlagBitsKHR = ExternalMemoryFeatureFlagBits; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ExternalMemoryHandleTypeFlagBits : VkExternalMemoryHandleTypeFlags - { - eOpaqueFd = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_FD_BIT, - eOpaqueWin32 = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_BIT, - eOpaqueWin32Kmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, - eD3D11Texture = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_BIT, - eD3D11TextureKmt = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D11_TEXTURE_KMT_BIT, - eD3D12Heap = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_HEAP_BIT, - eD3D12Resource = VK_EXTERNAL_MEMORY_HANDLE_TYPE_D3D12_RESOURCE_BIT, - eDmaBufEXT = VK_EXTERNAL_MEMORY_HANDLE_TYPE_DMA_BUF_BIT_EXT, -#ifdef 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}; - using ExternalMemoryHandleTypeFlagBitsKHR = ExternalMemoryHandleTypeFlagBits; - - VULKAN_HPP_INLINE 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"; -#ifdef 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ExternalSemaphoreFeatureFlagBits : VkExternalSemaphoreFeatureFlags - { - eExportable = VK_EXTERNAL_SEMAPHORE_FEATURE_EXPORTABLE_BIT, - eImportable = VK_EXTERNAL_SEMAPHORE_FEATURE_IMPORTABLE_BIT}; - using ExternalSemaphoreFeatureFlagBitsKHR = ExternalSemaphoreFeatureFlagBits; - - VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreFeatureFlagBits value ) - { - switch ( value ) - { - case ExternalSemaphoreFeatureFlagBits::eExportable : return "Exportable"; - case ExternalSemaphoreFeatureFlagBits::eImportable : return "Importable"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ExternalSemaphoreHandleTypeFlagBits : VkExternalSemaphoreHandleTypeFlags - { - eOpaqueFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_FD_BIT, - eOpaqueWin32 = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_BIT, - eOpaqueWin32Kmt = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_OPAQUE_WIN32_KMT_BIT, - eD3D12Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D12_FENCE_BIT, - eSyncFd = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_SYNC_FD_BIT, - eD3D11Fence = VK_EXTERNAL_SEMAPHORE_HANDLE_TYPE_D3D11_FENCE_BIT}; - using ExternalSemaphoreHandleTypeFlagBitsKHR = ExternalSemaphoreHandleTypeFlagBits; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class FenceCreateFlagBits : VkFenceCreateFlags - { - eSignaled = VK_FENCE_CREATE_SIGNALED_BIT}; - - VULKAN_HPP_INLINE std::string to_string( FenceCreateFlagBits value ) - { - switch ( value ) - { - case FenceCreateFlagBits::eSignaled : return "Signaled"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class FenceImportFlagBits : VkFenceImportFlags - { - eTemporary = VK_FENCE_IMPORT_TEMPORARY_BIT}; - using FenceImportFlagBitsKHR = FenceImportFlagBits; - - VULKAN_HPP_INLINE std::string to_string( FenceImportFlagBits value ) - { - switch ( value ) - { - case FenceImportFlagBits::eTemporary : return "Temporary"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class Filter - { - eNearest = VK_FILTER_NEAREST, - eLinear = VK_FILTER_LINEAR, - eCubicIMG = VK_FILTER_CUBIC_IMG, - eCubicEXT = VK_FILTER_CUBIC_EXT}; - - VULKAN_HPP_INLINE std::string to_string( Filter value ) - { - switch ( value ) - { - case Filter::eNearest : return "Nearest"; - case Filter::eLinear : return "Linear"; - case Filter::eCubicIMG : return "CubicIMG"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - eB8G8R8G8422Unorm = VK_FORMAT_B8G8R8G8_422_UNORM, - eG8B8R83Plane420Unorm = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, - eG8B8R82Plane420Unorm = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM, - eG8B8R83Plane422Unorm = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, - eG8B8R82Plane422Unorm = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM, - eG8B8R83Plane444Unorm = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, - eR10X6UnormPack16 = VK_FORMAT_R10X6_UNORM_PACK16, - eR10X6G10X6Unorm2Pack16 = VK_FORMAT_R10X6G10X6_UNORM_2PACK16, - eR10X6G10X6B10X6A10X6Unorm4Pack16 = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16, - eG10X6B10X6G10X6R10X6422Unorm4Pack16 = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16, - eB10X6G10X6R10X6G10X6422Unorm4Pack16 = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16, - eG10X6B10X6R10X63Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, - eG10X6B10X6R10X62Plane420Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16, - eG10X6B10X6R10X63Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, - eG10X6B10X6R10X62Plane422Unorm3Pack16 = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16, - eG10X6B10X6R10X63Plane444Unorm3Pack16 = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, - eR12X4UnormPack16 = VK_FORMAT_R12X4_UNORM_PACK16, - eR12X4G12X4Unorm2Pack16 = VK_FORMAT_R12X4G12X4_UNORM_2PACK16, - eR12X4G12X4B12X4A12X4Unorm4Pack16 = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16, - eG12X4B12X4G12X4R12X4422Unorm4Pack16 = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, - eB12X4G12X4R12X4G12X4422Unorm4Pack16 = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16, - eG12X4B12X4R12X43Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16, - eG12X4B12X4R12X42Plane420Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16, - eG12X4B12X4R12X43Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, - eG12X4B12X4R12X42Plane422Unorm3Pack16 = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16, - eG12X4B12X4R12X43Plane444Unorm3Pack16 = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, - eG16B16G16R16422Unorm = VK_FORMAT_G16B16G16R16_422_UNORM, - eB16G16R16G16422Unorm = VK_FORMAT_B16G16R16G16_422_UNORM, - eG16B16R163Plane420Unorm = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, - eG16B16R162Plane420Unorm = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM, - eG16B16R163Plane422Unorm = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, - eG16B16R162Plane422Unorm = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM, - eG16B16R163Plane444Unorm = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, - 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, - eAstc4x4SfloatBlockEXT = VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT, - eAstc5x4SfloatBlockEXT = VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT, - eAstc5x5SfloatBlockEXT = VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT, - eAstc6x5SfloatBlockEXT = VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT, - eAstc6x6SfloatBlockEXT = VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT, - eAstc8x5SfloatBlockEXT = VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT, - eAstc8x6SfloatBlockEXT = VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT, - eAstc8x8SfloatBlockEXT = VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT, - eAstc10x5SfloatBlockEXT = VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT, - eAstc10x6SfloatBlockEXT = VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT, - eAstc10x8SfloatBlockEXT = VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT, - eAstc10x10SfloatBlockEXT = VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT, - eAstc12x10SfloatBlockEXT = VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT, - eAstc12x12SfloatBlockEXT = VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT, - eA4R4G4B4UnormPack16EXT = VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT, - eA4B4G4R4UnormPack16EXT = VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT, - eB10X6G10X6R10X6G10X6422Unorm4Pack16KHR = VK_FORMAT_B10X6G10X6R10X6G10X6_422_UNORM_4PACK16_KHR, - eB12X4G12X4R12X4G12X4422Unorm4Pack16KHR = VK_FORMAT_B12X4G12X4R12X4G12X4_422_UNORM_4PACK16_KHR, - eB16G16R16G16422UnormKHR = VK_FORMAT_B16G16R16G16_422_UNORM_KHR, - eB8G8R8G8422UnormKHR = VK_FORMAT_B8G8R8G8_422_UNORM_KHR, - eG10X6B10X6G10X6R10X6422Unorm4Pack16KHR = VK_FORMAT_G10X6B10X6G10X6R10X6_422_UNORM_4PACK16_KHR, - eG10X6B10X6R10X62Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_420_UNORM_3PACK16_KHR, - eG10X6B10X6R10X62Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6R10X6_2PLANE_422_UNORM_3PACK16_KHR, - eG10X6B10X6R10X63Plane420Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16_KHR, - eG10X6B10X6R10X63Plane422Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16_KHR, - eG10X6B10X6R10X63Plane444Unorm3Pack16KHR = VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16_KHR, - eG12X4B12X4G12X4R12X4422Unorm4Pack16KHR = VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16_KHR, - eG12X4B12X4R12X42Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_420_UNORM_3PACK16_KHR, - eG12X4B12X4R12X42Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4R12X4_2PLANE_422_UNORM_3PACK16_KHR, - eG12X4B12X4R12X43Plane420Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_420_UNORM_3PACK16_KHR, - eG12X4B12X4R12X43Plane422Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16_KHR, - eG12X4B12X4R12X43Plane444Unorm3Pack16KHR = VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16_KHR, - eG16B16G16R16422UnormKHR = VK_FORMAT_G16B16G16R16_422_UNORM_KHR, - eG16B16R162Plane420UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_420_UNORM_KHR, - eG16B16R162Plane422UnormKHR = VK_FORMAT_G16_B16R16_2PLANE_422_UNORM_KHR, - eG16B16R163Plane420UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM_KHR, - eG16B16R163Plane422UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM_KHR, - eG16B16R163Plane444UnormKHR = VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM_KHR, - eG8B8G8R8422UnormKHR = VK_FORMAT_G8B8G8R8_422_UNORM_KHR, - eG8B8R82Plane420UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_420_UNORM_KHR, - eG8B8R82Plane422UnormKHR = VK_FORMAT_G8_B8R8_2PLANE_422_UNORM_KHR, - eG8B8R83Plane420UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM_KHR, - eG8B8R83Plane422UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM_KHR, - eG8B8R83Plane444UnormKHR = VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM_KHR, - eR10X6G10X6B10X6A10X6Unorm4Pack16KHR = VK_FORMAT_R10X6G10X6B10X6A10X6_UNORM_4PACK16_KHR, - eR10X6G10X6Unorm2Pack16KHR = VK_FORMAT_R10X6G10X6_UNORM_2PACK16_KHR, - eR10X6UnormPack16KHR = VK_FORMAT_R10X6_UNORM_PACK16_KHR, - eR12X4G12X4B12X4A12X4Unorm4Pack16KHR = VK_FORMAT_R12X4G12X4B12X4A12X4_UNORM_4PACK16_KHR, - eR12X4G12X4Unorm2Pack16KHR = VK_FORMAT_R12X4G12X4_UNORM_2PACK16_KHR, - eR12X4UnormPack16KHR = VK_FORMAT_R12X4_UNORM_PACK16_KHR}; - - VULKAN_HPP_INLINE 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::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::eAstc4x4SfloatBlockEXT : return "Astc4x4SfloatBlockEXT"; - case Format::eAstc5x4SfloatBlockEXT : return "Astc5x4SfloatBlockEXT"; - case Format::eAstc5x5SfloatBlockEXT : return "Astc5x5SfloatBlockEXT"; - case Format::eAstc6x5SfloatBlockEXT : return "Astc6x5SfloatBlockEXT"; - case Format::eAstc6x6SfloatBlockEXT : return "Astc6x6SfloatBlockEXT"; - case Format::eAstc8x5SfloatBlockEXT : return "Astc8x5SfloatBlockEXT"; - case Format::eAstc8x6SfloatBlockEXT : return "Astc8x6SfloatBlockEXT"; - case Format::eAstc8x8SfloatBlockEXT : return "Astc8x8SfloatBlockEXT"; - case Format::eAstc10x5SfloatBlockEXT : return "Astc10x5SfloatBlockEXT"; - case Format::eAstc10x6SfloatBlockEXT : return "Astc10x6SfloatBlockEXT"; - case Format::eAstc10x8SfloatBlockEXT : return "Astc10x8SfloatBlockEXT"; - case Format::eAstc10x10SfloatBlockEXT : return "Astc10x10SfloatBlockEXT"; - case Format::eAstc12x10SfloatBlockEXT : return "Astc12x10SfloatBlockEXT"; - case Format::eAstc12x12SfloatBlockEXT : return "Astc12x12SfloatBlockEXT"; - case Format::eA4R4G4B4UnormPack16EXT : return "A4R4G4B4UnormPack16EXT"; - case Format::eA4B4G4R4UnormPack16EXT : return "A4B4G4R4UnormPack16EXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - eTransferDst = VK_FORMAT_FEATURE_TRANSFER_DST_BIT, - eMidpointChromaSamples = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT, - eSampledImageYcbcrConversionLinearFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT, - eSampledImageYcbcrConversionSeparateReconstructionFilter = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT, - eSampledImageYcbcrConversionChromaReconstructionExplicit = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT, - eSampledImageYcbcrConversionChromaReconstructionExplicitForceable = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT, - eDisjoint = VK_FORMAT_FEATURE_DISJOINT_BIT, - eCositedChromaSamples = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT, - eSampledImageFilterMinmax = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT, - eSampledImageFilterCubicIMG = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG, - eAccelerationStructureVertexBufferKHR = VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR, - eFragmentDensityMapEXT = VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT, - eFragmentShadingRateAttachmentKHR = VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, - eCositedChromaSamplesKHR = VK_FORMAT_FEATURE_COSITED_CHROMA_SAMPLES_BIT_KHR, - eDisjointKHR = VK_FORMAT_FEATURE_DISJOINT_BIT_KHR, - eMidpointChromaSamplesKHR = VK_FORMAT_FEATURE_MIDPOINT_CHROMA_SAMPLES_BIT_KHR, - eSampledImageFilterCubicEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT, - eSampledImageFilterMinmaxEXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_MINMAX_BIT_EXT, - eSampledImageYcbcrConversionChromaReconstructionExplicitKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_BIT_KHR, - eSampledImageYcbcrConversionChromaReconstructionExplicitForceableKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_CHROMA_RECONSTRUCTION_EXPLICIT_FORCEABLE_BIT_KHR, - eSampledImageYcbcrConversionLinearFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_LINEAR_FILTER_BIT_KHR, - eSampledImageYcbcrConversionSeparateReconstructionFilterKHR = VK_FORMAT_FEATURE_SAMPLED_IMAGE_YCBCR_CONVERSION_SEPARATE_RECONSTRUCTION_FILTER_BIT_KHR, - eTransferDstKHR = VK_FORMAT_FEATURE_TRANSFER_DST_BIT_KHR, - eTransferSrcKHR = VK_FORMAT_FEATURE_TRANSFER_SRC_BIT_KHR}; - - VULKAN_HPP_INLINE 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::eSampledImageFilterCubicIMG : return "SampledImageFilterCubicIMG"; - case FormatFeatureFlagBits::eAccelerationStructureVertexBufferKHR : return "AccelerationStructureVertexBufferKHR"; - case FormatFeatureFlagBits::eFragmentDensityMapEXT : return "FragmentDensityMapEXT"; - case FormatFeatureFlagBits::eFragmentShadingRateAttachmentKHR : return "FragmentShadingRateAttachmentKHR"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class FragmentShadingRateTypeNV - { - eFragmentSize = VK_FRAGMENT_SHADING_RATE_TYPE_FRAGMENT_SIZE_NV, - eEnums = VK_FRAGMENT_SHADING_RATE_TYPE_ENUMS_NV}; - - VULKAN_HPP_INLINE std::string to_string( FragmentShadingRateTypeNV value ) - { - switch ( value ) - { - case FragmentShadingRateTypeNV::eFragmentSize : return "FragmentSize"; - case FragmentShadingRateTypeNV::eEnums : return "Enums"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class FramebufferCreateFlagBits : VkFramebufferCreateFlags - { - eImageless = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT, - eImagelessKHR = VK_FRAMEBUFFER_CREATE_IMAGELESS_BIT_KHR}; - - VULKAN_HPP_INLINE std::string to_string( FramebufferCreateFlagBits value ) - { - switch ( value ) - { - case FramebufferCreateFlagBits::eImageless : return "Imageless"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class FrontFace - { - eCounterClockwise = VK_FRONT_FACE_COUNTER_CLOCKWISE, - eClockwise = VK_FRONT_FACE_CLOCKWISE}; - - VULKAN_HPP_INLINE std::string to_string( FrontFace value ) - { - switch ( value ) - { - case FrontFace::eCounterClockwise : return "CounterClockwise"; - case FrontFace::eClockwise : return "Clockwise"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - -#ifdef VK_USE_PLATFORM_WIN32_KHR - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - enum class GeometryFlagBitsKHR : VkGeometryFlagsKHR - { - eOpaque = VK_GEOMETRY_OPAQUE_BIT_KHR, - eNoDuplicateAnyHitInvocation = VK_GEOMETRY_NO_DUPLICATE_ANY_HIT_INVOCATION_BIT_KHR}; - using GeometryFlagBitsNV = GeometryFlagBitsKHR; - - VULKAN_HPP_INLINE std::string to_string( GeometryFlagBitsKHR value ) - { - switch ( value ) - { - case GeometryFlagBitsKHR::eOpaque : return "Opaque"; - case GeometryFlagBitsKHR::eNoDuplicateAnyHitInvocation : return "NoDuplicateAnyHitInvocation"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class GeometryInstanceFlagBitsKHR : VkGeometryInstanceFlagsKHR - { - eTriangleFacingCullDisable = VK_GEOMETRY_INSTANCE_TRIANGLE_FACING_CULL_DISABLE_BIT_KHR, - eTriangleFrontCounterclockwise = VK_GEOMETRY_INSTANCE_TRIANGLE_FRONT_COUNTERCLOCKWISE_BIT_KHR, - eForceOpaque = VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR, - eForceNoOpaque = VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR, - eTriangleCullDisable = VK_GEOMETRY_INSTANCE_TRIANGLE_CULL_DISABLE_BIT_NV}; - using GeometryInstanceFlagBitsNV = GeometryInstanceFlagBitsKHR; - - VULKAN_HPP_INLINE std::string to_string( GeometryInstanceFlagBitsKHR value ) - { - switch ( value ) - { - case GeometryInstanceFlagBitsKHR::eTriangleFacingCullDisable : return "TriangleFacingCullDisable"; - case GeometryInstanceFlagBitsKHR::eTriangleFrontCounterclockwise : return "TriangleFrontCounterclockwise"; - case GeometryInstanceFlagBitsKHR::eForceOpaque : return "ForceOpaque"; - case GeometryInstanceFlagBitsKHR::eForceNoOpaque : return "ForceNoOpaque"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class GeometryTypeKHR - { - eTriangles = VK_GEOMETRY_TYPE_TRIANGLES_KHR, - eAabbs = VK_GEOMETRY_TYPE_AABBS_KHR, - eInstances = VK_GEOMETRY_TYPE_INSTANCES_KHR}; - using GeometryTypeNV = GeometryTypeKHR; - - VULKAN_HPP_INLINE std::string to_string( GeometryTypeKHR value ) - { - switch ( value ) - { - case GeometryTypeKHR::eTriangles : return "Triangles"; - case GeometryTypeKHR::eAabbs : return "Aabbs"; - case GeometryTypeKHR::eInstances : return "Instances"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - ePlane1 = VK_IMAGE_ASPECT_PLANE_1_BIT, - ePlane2 = VK_IMAGE_ASPECT_PLANE_2_BIT, - 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, - ePlane0KHR = VK_IMAGE_ASPECT_PLANE_0_BIT_KHR, - ePlane1KHR = VK_IMAGE_ASPECT_PLANE_1_BIT_KHR, - ePlane2KHR = VK_IMAGE_ASPECT_PLANE_2_BIT_KHR}; - - VULKAN_HPP_INLINE 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::eMemoryPlane0EXT : return "MemoryPlane0EXT"; - case ImageAspectFlagBits::eMemoryPlane1EXT : return "MemoryPlane1EXT"; - case ImageAspectFlagBits::eMemoryPlane2EXT : return "MemoryPlane2EXT"; - case ImageAspectFlagBits::eMemoryPlane3EXT : return "MemoryPlane3EXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - eSplitInstanceBindRegions = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT, - e2DArrayCompatible = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT, - eBlockTexelViewCompatible = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT, - eExtendedUsage = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT, - eProtected = VK_IMAGE_CREATE_PROTECTED_BIT, - eDisjoint = VK_IMAGE_CREATE_DISJOINT_BIT, - eCornerSampledNV = VK_IMAGE_CREATE_CORNER_SAMPLED_BIT_NV, - eSampleLocationsCompatibleDepthEXT = VK_IMAGE_CREATE_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT, - eSubsampledEXT = VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT, - e2DArrayCompatibleKHR = VK_IMAGE_CREATE_2D_ARRAY_COMPATIBLE_BIT_KHR, - eAliasKHR = VK_IMAGE_CREATE_ALIAS_BIT_KHR, - eBlockTexelViewCompatibleKHR = VK_IMAGE_CREATE_BLOCK_TEXEL_VIEW_COMPATIBLE_BIT_KHR, - eDisjointKHR = VK_IMAGE_CREATE_DISJOINT_BIT_KHR, - eExtendedUsageKHR = VK_IMAGE_CREATE_EXTENDED_USAGE_BIT_KHR, - eSplitInstanceBindRegionsKHR = VK_IMAGE_CREATE_SPLIT_INSTANCE_BIND_REGIONS_BIT_KHR}; - - VULKAN_HPP_INLINE 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::eSampleLocationsCompatibleDepthEXT : return "SampleLocationsCompatibleDepthEXT"; - case ImageCreateFlagBits::eSubsampledEXT : return "SubsampledEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - eDepthAttachmentStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, - eDepthAttachmentOptimal = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL, - eDepthReadOnlyOptimal = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL, - eStencilAttachmentOptimal = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL, - eStencilReadOnlyOptimal = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL, - ePresentSrcKHR = VK_IMAGE_LAYOUT_PRESENT_SRC_KHR, - eSharedPresentKHR = VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR, - eShadingRateOptimalNV = VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV, - eFragmentDensityMapOptimalEXT = VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT, - eReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR, - eAttachmentOptimalKHR = VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR, - eDepthAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_OPTIMAL_KHR, - eDepthAttachmentStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL_KHR, - eDepthReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_OPTIMAL_KHR, - eDepthReadOnlyStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL_KHR, - eFragmentShadingRateAttachmentOptimalKHR = VK_IMAGE_LAYOUT_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR, - eStencilAttachmentOptimalKHR = VK_IMAGE_LAYOUT_STENCIL_ATTACHMENT_OPTIMAL_KHR, - eStencilReadOnlyOptimalKHR = VK_IMAGE_LAYOUT_STENCIL_READ_ONLY_OPTIMAL_KHR}; - - VULKAN_HPP_INLINE 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::ePresentSrcKHR : return "PresentSrcKHR"; - case ImageLayout::eSharedPresentKHR : return "SharedPresentKHR"; - case ImageLayout::eShadingRateOptimalNV : return "ShadingRateOptimalNV"; - case ImageLayout::eFragmentDensityMapOptimalEXT : return "FragmentDensityMapOptimalEXT"; - case ImageLayout::eReadOnlyOptimalKHR : return "ReadOnlyOptimalKHR"; - case ImageLayout::eAttachmentOptimalKHR : return "AttachmentOptimalKHR"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ImageTiling - { - eOptimal = VK_IMAGE_TILING_OPTIMAL, - eLinear = VK_IMAGE_TILING_LINEAR, - eDrmFormatModifierEXT = VK_IMAGE_TILING_DRM_FORMAT_MODIFIER_EXT}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ImageType - { - e1D = VK_IMAGE_TYPE_1D, - e2D = VK_IMAGE_TYPE_2D, - e3D = VK_IMAGE_TYPE_3D}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - eShadingRateImageNV = VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, - eFragmentDensityMapEXT = VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT, - eFragmentShadingRateAttachmentKHR = VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR}; - - VULKAN_HPP_INLINE 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::eShadingRateImageNV : return "ShadingRateImageNV"; - case ImageUsageFlagBits::eFragmentDensityMapEXT : return "FragmentDensityMapEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ImageViewCreateFlagBits : VkImageViewCreateFlags - { - eFragmentDensityMapDynamicEXT = VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT, - eFragmentDensityMapDeferredEXT = VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DEFERRED_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( ImageViewCreateFlagBits value ) - { - switch ( value ) - { - case ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT : return "FragmentDensityMapDynamicEXT"; - case ImageViewCreateFlagBits::eFragmentDensityMapDeferredEXT : return "FragmentDensityMapDeferredEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class IndexType - { - eUint16 = VK_INDEX_TYPE_UINT16, - eUint32 = VK_INDEX_TYPE_UINT32, - eNoneKHR = VK_INDEX_TYPE_NONE_KHR, - eUint8EXT = VK_INDEX_TYPE_UINT8_EXT, - eNoneNV = VK_INDEX_TYPE_NONE_NV}; - - VULKAN_HPP_INLINE std::string to_string( IndexType value ) - { - switch ( value ) - { - case IndexType::eUint16 : return "Uint16"; - case IndexType::eUint32 : return "Uint32"; - case IndexType::eNoneKHR : return "NoneKHR"; - case IndexType::eUint8EXT : return "Uint8EXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class IndirectStateFlagBitsNV : VkIndirectStateFlagsNV - { - eFlagFrontface = VK_INDIRECT_STATE_FLAG_FRONTFACE_BIT_NV}; - - VULKAN_HPP_INLINE std::string to_string( IndirectStateFlagBitsNV value ) - { - switch ( value ) - { - case IndirectStateFlagBitsNV::eFlagFrontface : return "FlagFrontface"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class InstanceCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( InstanceCreateFlagBits ) - { - return "(void)"; - } - - enum class InternalAllocationType - { - eExecutable = VK_INTERNAL_ALLOCATION_TYPE_EXECUTABLE}; - - VULKAN_HPP_INLINE std::string to_string( InternalAllocationType value ) - { - switch ( value ) - { - case InternalAllocationType::eExecutable : return "Executable"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class LineRasterizationModeEXT - { - eDefault = VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT, - eRectangular = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT, - eBresenham = VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT, - eRectangularSmooth = VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT}; - - VULKAN_HPP_INLINE std::string to_string( LineRasterizationModeEXT value ) - { - switch ( value ) - { - case LineRasterizationModeEXT::eDefault : return "Default"; - case LineRasterizationModeEXT::eRectangular : return "Rectangular"; - case LineRasterizationModeEXT::eBresenham : return "Bresenham"; - case LineRasterizationModeEXT::eRectangularSmooth : return "RectangularSmooth"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class MemoryAllocateFlagBits : VkMemoryAllocateFlags - { - eDeviceMask = VK_MEMORY_ALLOCATE_DEVICE_MASK_BIT, - eDeviceAddress = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_BIT, - eDeviceAddressCaptureReplay = VK_MEMORY_ALLOCATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT}; - using MemoryAllocateFlagBitsKHR = MemoryAllocateFlagBits; - - VULKAN_HPP_INLINE std::string to_string( MemoryAllocateFlagBits value ) - { - switch ( value ) - { - case MemoryAllocateFlagBits::eDeviceMask : return "DeviceMask"; - case MemoryAllocateFlagBits::eDeviceAddress : return "DeviceAddress"; - case MemoryAllocateFlagBits::eDeviceAddressCaptureReplay : return "DeviceAddressCaptureReplay"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE std::string to_string( MemoryHeapFlagBits value ) - { - switch ( value ) - { - case MemoryHeapFlagBits::eDeviceLocal : return "DeviceLocal"; - case MemoryHeapFlagBits::eMultiInstance : return "MultiInstance"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class MemoryOverallocationBehaviorAMD - { - eDefault = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DEFAULT_AMD, - eAllowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_ALLOWED_AMD, - eDisallowed = VK_MEMORY_OVERALLOCATION_BEHAVIOR_DISALLOWED_AMD}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - eSamplerYcbcrConversion = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, - eDescriptorUpdateTemplate = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, - 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, - 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, - ePrivateDataSlotEXT = VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT, - eDescriptorUpdateTemplateKHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR, - eSamplerYcbcrConversionKHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR}; - - VULKAN_HPP_INLINE 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::eSamplerYcbcrConversion : return "SamplerYcbcrConversion"; - case ObjectType::eDescriptorUpdateTemplate : return "DescriptorUpdateTemplate"; - 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::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"; - case ObjectType::ePrivateDataSlotEXT : return "PrivateDataSlotEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - template - struct cpp_type - {}; - - enum class PeerMemoryFeatureFlagBits : VkPeerMemoryFeatureFlags - { - eCopySrc = VK_PEER_MEMORY_FEATURE_COPY_SRC_BIT, - eCopyDst = VK_PEER_MEMORY_FEATURE_COPY_DST_BIT, - eGenericSrc = VK_PEER_MEMORY_FEATURE_GENERIC_SRC_BIT, - eGenericDst = VK_PEER_MEMORY_FEATURE_GENERIC_DST_BIT}; - using PeerMemoryFeatureFlagBitsKHR = PeerMemoryFeatureFlagBits; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PerformanceConfigurationTypeINTEL - { - eCommandQueueMetricsDiscoveryActivated = VK_PERFORMANCE_CONFIGURATION_TYPE_COMMAND_QUEUE_METRICS_DISCOVERY_ACTIVATED_INTEL}; - - VULKAN_HPP_INLINE std::string to_string( PerformanceConfigurationTypeINTEL value ) - { - switch ( value ) - { - case PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated : return "CommandQueueMetricsDiscoveryActivated"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PerformanceCounterDescriptionFlagBitsKHR : VkPerformanceCounterDescriptionFlagsKHR - { - ePerformanceImpacting = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, - eConcurrentlyImpacted = VK_PERFORMANCE_COUNTER_DESCRIPTION_CONCURRENTLY_IMPACTED_BIT_KHR}; - - VULKAN_HPP_INLINE std::string to_string( PerformanceCounterDescriptionFlagBitsKHR value ) - { - switch ( value ) - { - case PerformanceCounterDescriptionFlagBitsKHR::ePerformanceImpacting : return "PerformanceImpacting"; - case PerformanceCounterDescriptionFlagBitsKHR::eConcurrentlyImpacted : return "ConcurrentlyImpacted"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PerformanceCounterScopeKHR - { - eCommandBuffer = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, - eRenderPass = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, - eCommand = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_KHR, - eVkQueryScopeCommandBuffer = VK_QUERY_SCOPE_COMMAND_BUFFER_KHR, - eVkQueryScopeCommand = VK_QUERY_SCOPE_COMMAND_KHR, - eVkQueryScopeRenderPass = VK_QUERY_SCOPE_RENDER_PASS_KHR}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PerformanceOverrideTypeINTEL - { - eNullHardware = VK_PERFORMANCE_OVERRIDE_TYPE_NULL_HARDWARE_INTEL, - eFlushGpuCaches = VK_PERFORMANCE_OVERRIDE_TYPE_FLUSH_GPU_CACHES_INTEL}; - - VULKAN_HPP_INLINE std::string to_string( PerformanceOverrideTypeINTEL value ) - { - switch ( value ) - { - case PerformanceOverrideTypeINTEL::eNullHardware : return "NullHardware"; - case PerformanceOverrideTypeINTEL::eFlushGpuCaches : return "FlushGpuCaches"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PerformanceParameterTypeINTEL - { - eHwCountersSupported = VK_PERFORMANCE_PARAMETER_TYPE_HW_COUNTERS_SUPPORTED_INTEL, - eStreamMarkerValidBits = VK_PERFORMANCE_PARAMETER_TYPE_STREAM_MARKER_VALID_BITS_INTEL}; - - VULKAN_HPP_INLINE std::string to_string( PerformanceParameterTypeINTEL value ) - { - switch ( value ) - { - case PerformanceParameterTypeINTEL::eHwCountersSupported : return "HwCountersSupported"; - case PerformanceParameterTypeINTEL::eStreamMarkerValidBits : return "StreamMarkerValidBits"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PipelineBindPoint - { - eGraphics = VK_PIPELINE_BIND_POINT_GRAPHICS, - eCompute = VK_PIPELINE_BIND_POINT_COMPUTE, - eRayTracingKHR = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, - eRayTracingNV = VK_PIPELINE_BIND_POINT_RAY_TRACING_NV}; - - VULKAN_HPP_INLINE std::string to_string( PipelineBindPoint value ) - { - switch ( value ) - { - case PipelineBindPoint::eGraphics : return "Graphics"; - case PipelineBindPoint::eCompute : return "Compute"; - case PipelineBindPoint::eRayTracingKHR : return "RayTracingKHR"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PipelineCacheCreateFlagBits : VkPipelineCacheCreateFlags - { - eExternallySynchronizedEXT = VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCacheCreateFlagBits value ) - { - switch ( value ) - { - case PipelineCacheCreateFlagBits::eExternallySynchronizedEXT : return "ExternallySynchronizedEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PipelineCacheHeaderVersion - { - eOne = VK_PIPELINE_CACHE_HEADER_VERSION_ONE}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCacheHeaderVersion value ) - { - switch ( value ) - { - case PipelineCacheHeaderVersion::eOne : return "One"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PipelineCompilerControlFlagBitsAMD : VkPipelineCompilerControlFlagsAMD - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCompilerControlFlagBitsAMD ) - { - return "(void)"; - } - - enum class PipelineCreateFlagBits : VkPipelineCreateFlags - { - eDisableOptimization = VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT, - eAllowDerivatives = VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT, - eDerivative = VK_PIPELINE_CREATE_DERIVATIVE_BIT, - eViewIndexFromDeviceIndex = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT, - eDispatchBase = VK_PIPELINE_CREATE_DISPATCH_BASE_BIT, - 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, - 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, - eFailOnPipelineCompileRequiredEXT = VK_PIPELINE_CREATE_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT, - eEarlyReturnOnFailureEXT = VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT, - eDispatchBaseKHR = VK_PIPELINE_CREATE_DISPATCH_BASE_KHR, - eViewIndexFromDeviceIndexKHR = VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT_KHR}; - - VULKAN_HPP_INLINE 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::eViewIndexFromDeviceIndex : return "ViewIndexFromDeviceIndex"; - case PipelineCreateFlagBits::eDispatchBase : return "DispatchBase"; - 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::eCaptureStatisticsKHR : return "CaptureStatisticsKHR"; - case PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR : return "CaptureInternalRepresentationsKHR"; - case PipelineCreateFlagBits::eIndirectBindableNV : return "IndirectBindableNV"; - case PipelineCreateFlagBits::eLibraryKHR : return "LibraryKHR"; - case PipelineCreateFlagBits::eFailOnPipelineCompileRequiredEXT : return "FailOnPipelineCompileRequiredEXT"; - case PipelineCreateFlagBits::eEarlyReturnOnFailureEXT : return "EarlyReturnOnFailureEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PipelineCreationFeedbackFlagBitsEXT : VkPipelineCreationFeedbackFlagsEXT - { - eValid = VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT, - eApplicationPipelineCacheHit = VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT, - eBasePipelineAcceleration = VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCreationFeedbackFlagBitsEXT value ) - { - switch ( value ) - { - case PipelineCreationFeedbackFlagBitsEXT::eValid : return "Valid"; - case PipelineCreationFeedbackFlagBitsEXT::eApplicationPipelineCacheHit : return "ApplicationPipelineCacheHit"; - case PipelineCreationFeedbackFlagBitsEXT::eBasePipelineAcceleration : return "BasePipelineAcceleration"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PipelineShaderStageCreateFlagBits : VkPipelineShaderStageCreateFlags - { - eAllowVaryingSubgroupSizeEXT = VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT, - eRequireFullSubgroupsEXT = VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( PipelineShaderStageCreateFlagBits value ) - { - switch ( value ) - { - case PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSizeEXT : return "AllowVaryingSubgroupSizeEXT"; - case PipelineShaderStageCreateFlagBits::eRequireFullSubgroupsEXT : return "RequireFullSubgroupsEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - 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, - eRayTracingShaderKHR = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_KHR, - eShadingRateImageNV = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV, - eTaskShaderNV = VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV, - eMeshShaderNV = VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV, - eFragmentDensityProcessEXT = VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT, - eCommandPreprocessNV = VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV, - eNoneKHR = VK_PIPELINE_STAGE_NONE_KHR, - eAccelerationStructureBuildNV = VK_PIPELINE_STAGE_ACCELERATION_STRUCTURE_BUILD_BIT_NV, - eFragmentShadingRateAttachmentKHR = VK_PIPELINE_STAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, - eRayTracingShaderNV = VK_PIPELINE_STAGE_RAY_TRACING_SHADER_BIT_NV}; - - VULKAN_HPP_INLINE 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::eTransformFeedbackEXT : return "TransformFeedbackEXT"; - case PipelineStageFlagBits::eConditionalRenderingEXT : return "ConditionalRenderingEXT"; - case PipelineStageFlagBits::eAccelerationStructureBuildKHR : return "AccelerationStructureBuildKHR"; - case PipelineStageFlagBits::eRayTracingShaderKHR : return "RayTracingShaderKHR"; - case PipelineStageFlagBits::eShadingRateImageNV : return "ShadingRateImageNV"; - case PipelineStageFlagBits::eTaskShaderNV : return "TaskShaderNV"; - case PipelineStageFlagBits::eMeshShaderNV : return "MeshShaderNV"; - case PipelineStageFlagBits::eFragmentDensityProcessEXT : return "FragmentDensityProcessEXT"; - case PipelineStageFlagBits::eCommandPreprocessNV : return "CommandPreprocessNV"; - case PipelineStageFlagBits::eNoneKHR : return "NoneKHR"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PipelineStageFlagBits2KHR : VkPipelineStageFlags2KHR - { - e2None = VK_PIPELINE_STAGE_2_NONE_KHR, - e2TopOfPipe = VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR, - e2DrawIndirect = VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR, - e2VertexInput = VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR, - e2VertexShader = VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR, - e2TessellationControlShader = VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR, - e2TessellationEvaluationShader = VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR, - e2GeometryShader = VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR, - e2FragmentShader = VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR, - e2EarlyFragmentTests = VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR, - e2LateFragmentTests = VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR, - e2ColorAttachmentOutput = VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR, - e2ComputeShader = VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR, - e2AllTransfer = VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR, - e2BottomOfPipe = VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR, - e2Host = VK_PIPELINE_STAGE_2_HOST_BIT_KHR, - e2AllGraphics = VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR, - e2AllCommands = VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR, - e2Copy = VK_PIPELINE_STAGE_2_COPY_BIT_KHR, - e2Resolve = VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR, - e2Blit = VK_PIPELINE_STAGE_2_BLIT_BIT_KHR, - e2Clear = VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR, - e2IndexInput = VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR, - e2VertexAttributeInput = VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR, - e2PreRasterizationShaders = VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR, - e2TransformFeedbackExt = VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT, - e2ConditionalRenderingExt = VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT, - e2CommandPreprocessNv = VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV, - e2FragmentShadingRateAttachment = VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR, - e2AccelerationStructureBuild = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR, - e2RayTracingShader = VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR, - e2FragmentDensityProcessExt = VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT, - e2TaskShaderNv = VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV, - e2MeshShaderNv = VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV, - e2AccelerationStructureBuildNv = VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV, - e2RayTracingShaderNv = VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV, - e2ShadingRateImageNv = VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV, - e2Transfer = VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR}; - - VULKAN_HPP_INLINE std::string to_string( PipelineStageFlagBits2KHR value ) - { - switch ( value ) - { - case PipelineStageFlagBits2KHR::e2None : return "2None"; - case PipelineStageFlagBits2KHR::e2TopOfPipe : return "2TopOfPipe"; - case PipelineStageFlagBits2KHR::e2DrawIndirect : return "2DrawIndirect"; - case PipelineStageFlagBits2KHR::e2VertexInput : return "2VertexInput"; - case PipelineStageFlagBits2KHR::e2VertexShader : return "2VertexShader"; - case PipelineStageFlagBits2KHR::e2TessellationControlShader : return "2TessellationControlShader"; - case PipelineStageFlagBits2KHR::e2TessellationEvaluationShader : return "2TessellationEvaluationShader"; - case PipelineStageFlagBits2KHR::e2GeometryShader : return "2GeometryShader"; - case PipelineStageFlagBits2KHR::e2FragmentShader : return "2FragmentShader"; - case PipelineStageFlagBits2KHR::e2EarlyFragmentTests : return "2EarlyFragmentTests"; - case PipelineStageFlagBits2KHR::e2LateFragmentTests : return "2LateFragmentTests"; - case PipelineStageFlagBits2KHR::e2ColorAttachmentOutput : return "2ColorAttachmentOutput"; - case PipelineStageFlagBits2KHR::e2ComputeShader : return "2ComputeShader"; - case PipelineStageFlagBits2KHR::e2AllTransfer : return "2AllTransfer"; - case PipelineStageFlagBits2KHR::e2BottomOfPipe : return "2BottomOfPipe"; - case PipelineStageFlagBits2KHR::e2Host : return "2Host"; - case PipelineStageFlagBits2KHR::e2AllGraphics : return "2AllGraphics"; - case PipelineStageFlagBits2KHR::e2AllCommands : return "2AllCommands"; - case PipelineStageFlagBits2KHR::e2Copy : return "2Copy"; - case PipelineStageFlagBits2KHR::e2Resolve : return "2Resolve"; - case PipelineStageFlagBits2KHR::e2Blit : return "2Blit"; - case PipelineStageFlagBits2KHR::e2Clear : return "2Clear"; - case PipelineStageFlagBits2KHR::e2IndexInput : return "2IndexInput"; - case PipelineStageFlagBits2KHR::e2VertexAttributeInput : return "2VertexAttributeInput"; - case PipelineStageFlagBits2KHR::e2PreRasterizationShaders : return "2PreRasterizationShaders"; - case PipelineStageFlagBits2KHR::e2TransformFeedbackExt : return "2TransformFeedbackExt"; - case PipelineStageFlagBits2KHR::e2ConditionalRenderingExt : return "2ConditionalRenderingExt"; - case PipelineStageFlagBits2KHR::e2CommandPreprocessNv : return "2CommandPreprocessNv"; - case PipelineStageFlagBits2KHR::e2FragmentShadingRateAttachment : return "2FragmentShadingRateAttachment"; - case PipelineStageFlagBits2KHR::e2AccelerationStructureBuild : return "2AccelerationStructureBuild"; - case PipelineStageFlagBits2KHR::e2RayTracingShader : return "2RayTracingShader"; - case PipelineStageFlagBits2KHR::e2FragmentDensityProcessExt : return "2FragmentDensityProcessExt"; - case PipelineStageFlagBits2KHR::e2TaskShaderNv : return "2TaskShaderNv"; - case PipelineStageFlagBits2KHR::e2MeshShaderNv : return "2MeshShaderNv"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PointClippingBehavior - { - eAllClipPlanes = VK_POINT_CLIPPING_BEHAVIOR_ALL_CLIP_PLANES, - eUserClipPlanesOnly = VK_POINT_CLIPPING_BEHAVIOR_USER_CLIP_PLANES_ONLY}; - using PointClippingBehaviorKHR = PointClippingBehavior; - - VULKAN_HPP_INLINE std::string to_string( PointClippingBehavior value ) - { - switch ( value ) - { - case PointClippingBehavior::eAllClipPlanes : return "AllClipPlanes"; - case PointClippingBehavior::eUserClipPlanesOnly : return "UserClipPlanesOnly"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class PrivateDataSlotCreateFlagBitsEXT : VkPrivateDataSlotCreateFlagsEXT - {}; - - VULKAN_HPP_INLINE std::string to_string( PrivateDataSlotCreateFlagBitsEXT ) - { - return "(void)"; - } - - enum class QueryControlFlagBits : VkQueryControlFlags - { - ePrecise = VK_QUERY_CONTROL_PRECISE_BIT}; - - VULKAN_HPP_INLINE std::string to_string( QueryControlFlagBits value ) - { - switch ( value ) - { - case QueryControlFlagBits::ePrecise : return "Precise"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class QueryPoolCreateFlagBits - {}; - - VULKAN_HPP_INLINE std::string to_string( QueryPoolCreateFlagBits ) - { - return "(void)"; - } - - enum class QueryPoolSamplingModeINTEL - { - eManual = VK_QUERY_POOL_SAMPLING_MODE_MANUAL_INTEL}; - - VULKAN_HPP_INLINE std::string to_string( QueryPoolSamplingModeINTEL value ) - { - switch ( value ) - { - case QueryPoolSamplingModeINTEL::eManual : return "Manual"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class QueryType - { - eOcclusion = VK_QUERY_TYPE_OCCLUSION, - ePipelineStatistics = VK_QUERY_TYPE_PIPELINE_STATISTICS, - eTimestamp = VK_QUERY_TYPE_TIMESTAMP, - 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}; - - VULKAN_HPP_INLINE 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::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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class QueueGlobalPriorityEXT - { - eLow = VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT, - eMedium = VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT, - eHigh = VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT, - eRealtime = VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT}; - - VULKAN_HPP_INLINE std::string to_string( QueueGlobalPriorityEXT value ) - { - switch ( value ) - { - case QueueGlobalPriorityEXT::eLow : return "Low"; - case QueueGlobalPriorityEXT::eMedium : return "Medium"; - case QueueGlobalPriorityEXT::eHigh : return "High"; - case QueueGlobalPriorityEXT::eRealtime : return "Realtime"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class RasterizationOrderAMD - { - eStrict = VK_RASTERIZATION_ORDER_STRICT_AMD, - eRelaxed = VK_RASTERIZATION_ORDER_RELAXED_AMD}; - - VULKAN_HPP_INLINE std::string to_string( RasterizationOrderAMD value ) - { - switch ( value ) - { - case RasterizationOrderAMD::eStrict : return "Strict"; - case RasterizationOrderAMD::eRelaxed : return "Relaxed"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class RayTracingShaderGroupTypeKHR - { - eGeneral = VK_RAY_TRACING_SHADER_GROUP_TYPE_GENERAL_KHR, - eTrianglesHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_TRIANGLES_HIT_GROUP_KHR, - eProceduralHitGroup = VK_RAY_TRACING_SHADER_GROUP_TYPE_PROCEDURAL_HIT_GROUP_KHR}; - using RayTracingShaderGroupTypeNV = RayTracingShaderGroupTypeKHR; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class RenderPassCreateFlagBits : VkRenderPassCreateFlags - { - eTransformQCOM = VK_RENDER_PASS_CREATE_TRANSFORM_BIT_QCOM}; - - VULKAN_HPP_INLINE std::string to_string( RenderPassCreateFlagBits value ) - { - switch ( value ) - { - case RenderPassCreateFlagBits::eTransformQCOM : return "TransformQCOM"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ResolveModeFlagBits : VkResolveModeFlags - { - eNone = VK_RESOLVE_MODE_NONE, - eSampleZero = VK_RESOLVE_MODE_SAMPLE_ZERO_BIT, - eAverage = VK_RESOLVE_MODE_AVERAGE_BIT, - eMin = VK_RESOLVE_MODE_MIN_BIT, - eMax = VK_RESOLVE_MODE_MAX_BIT}; - using ResolveModeFlagBitsKHR = ResolveModeFlagBits; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - eErrorOutOfPoolMemory = VK_ERROR_OUT_OF_POOL_MEMORY, - eErrorInvalidExternalHandle = VK_ERROR_INVALID_EXTERNAL_HANDLE, - eErrorFragmentation = VK_ERROR_FRAGMENTATION, - eErrorInvalidOpaqueCaptureAddress = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, - 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, - eErrorValidationFailedEXT = VK_ERROR_VALIDATION_FAILED_EXT, - eErrorInvalidShaderNV = VK_ERROR_INVALID_SHADER_NV, - eErrorInvalidDrmFormatModifierPlaneLayoutEXT = VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT, - eErrorNotPermittedEXT = VK_ERROR_NOT_PERMITTED_EXT, -#ifdef 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, - ePipelineCompileRequiredEXT = VK_PIPELINE_COMPILE_REQUIRED_EXT, - eErrorFragmentationEXT = VK_ERROR_FRAGMENTATION_EXT, - eErrorInvalidDeviceAddressEXT = VK_ERROR_INVALID_DEVICE_ADDRESS_EXT, - eErrorInvalidExternalHandleKHR = VK_ERROR_INVALID_EXTERNAL_HANDLE_KHR, - eErrorInvalidOpaqueCaptureAddressKHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR, - eErrorOutOfPoolMemoryKHR = VK_ERROR_OUT_OF_POOL_MEMORY_KHR, - eErrorPipelineCompileRequiredEXT = VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT}; - - VULKAN_HPP_INLINE 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::eErrorOutOfPoolMemory : return "ErrorOutOfPoolMemory"; - case Result::eErrorInvalidExternalHandle : return "ErrorInvalidExternalHandle"; - case Result::eErrorFragmentation : return "ErrorFragmentation"; - case Result::eErrorInvalidOpaqueCaptureAddress : return "ErrorInvalidOpaqueCaptureAddress"; - 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::eErrorValidationFailedEXT : return "ErrorValidationFailedEXT"; - case Result::eErrorInvalidShaderNV : return "ErrorInvalidShaderNV"; - case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT : return "ErrorInvalidDrmFormatModifierPlaneLayoutEXT"; - case Result::eErrorNotPermittedEXT : return "ErrorNotPermittedEXT"; -#ifdef 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::ePipelineCompileRequiredEXT : return "PipelineCompileRequiredEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SamplerCreateFlagBits : VkSamplerCreateFlags - { - eSubsampledEXT = VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT, - eSubsampledCoarseReconstructionEXT = VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( SamplerCreateFlagBits value ) - { - switch ( value ) - { - case SamplerCreateFlagBits::eSubsampledEXT : return "SubsampledEXT"; - case SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT : return "SubsampledCoarseReconstructionEXT"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SamplerMipmapMode - { - eNearest = VK_SAMPLER_MIPMAP_MODE_NEAREST, - eLinear = VK_SAMPLER_MIPMAP_MODE_LINEAR}; - - VULKAN_HPP_INLINE std::string to_string( SamplerMipmapMode value ) - { - switch ( value ) - { - case SamplerMipmapMode::eNearest : return "Nearest"; - case SamplerMipmapMode::eLinear : return "Linear"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SamplerReductionMode - { - eWeightedAverage = VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE, - eMin = VK_SAMPLER_REDUCTION_MODE_MIN, - eMax = VK_SAMPLER_REDUCTION_MODE_MAX}; - using SamplerReductionModeEXT = SamplerReductionMode; - - VULKAN_HPP_INLINE std::string to_string( SamplerReductionMode value ) - { - switch ( value ) - { - case SamplerReductionMode::eWeightedAverage : return "WeightedAverage"; - case SamplerReductionMode::eMin : return "Min"; - case SamplerReductionMode::eMax : return "Max"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SamplerYcbcrModelConversion - { - eRgbIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_RGB_IDENTITY, - eYcbcrIdentity = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_IDENTITY, - eYcbcr709 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_709, - eYcbcr601 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_601, - eYcbcr2020 = VK_SAMPLER_YCBCR_MODEL_CONVERSION_YCBCR_2020}; - using SamplerYcbcrModelConversionKHR = SamplerYcbcrModelConversion; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SamplerYcbcrRange - { - eItuFull = VK_SAMPLER_YCBCR_RANGE_ITU_FULL, - eItuNarrow = VK_SAMPLER_YCBCR_RANGE_ITU_NARROW}; - using SamplerYcbcrRangeKHR = SamplerYcbcrRange; - - VULKAN_HPP_INLINE std::string to_string( SamplerYcbcrRange value ) - { - switch ( value ) - { - case SamplerYcbcrRange::eItuFull : return "ItuFull"; - case SamplerYcbcrRange::eItuNarrow : return "ItuNarrow"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ScopeNV - { - eDevice = VK_SCOPE_DEVICE_NV, - eWorkgroup = VK_SCOPE_WORKGROUP_NV, - eSubgroup = VK_SCOPE_SUBGROUP_NV, - eQueueFamily = VK_SCOPE_QUEUE_FAMILY_NV}; - - VULKAN_HPP_INLINE std::string to_string( ScopeNV value ) - { - switch ( value ) - { - case ScopeNV::eDevice : return "Device"; - case ScopeNV::eWorkgroup : return "Workgroup"; - case ScopeNV::eSubgroup : return "Subgroup"; - case ScopeNV::eQueueFamily : return "QueueFamily"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SemaphoreImportFlagBits : VkSemaphoreImportFlags - { - eTemporary = VK_SEMAPHORE_IMPORT_TEMPORARY_BIT}; - using SemaphoreImportFlagBitsKHR = SemaphoreImportFlagBits; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreImportFlagBits value ) - { - switch ( value ) - { - case SemaphoreImportFlagBits::eTemporary : return "Temporary"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SemaphoreType - { - eBinary = VK_SEMAPHORE_TYPE_BINARY, - eTimeline = VK_SEMAPHORE_TYPE_TIMELINE}; - using SemaphoreTypeKHR = SemaphoreType; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreType value ) - { - switch ( value ) - { - case SemaphoreType::eBinary : return "Binary"; - case SemaphoreType::eTimeline : return "Timeline"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SemaphoreWaitFlagBits : VkSemaphoreWaitFlags - { - eAny = VK_SEMAPHORE_WAIT_ANY_BIT}; - using SemaphoreWaitFlagBitsKHR = SemaphoreWaitFlagBits; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreWaitFlagBits value ) - { - switch ( value ) - { - case SemaphoreWaitFlagBits::eAny : return "Any"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ShaderCorePropertiesFlagBitsAMD : VkShaderCorePropertiesFlagsAMD - {}; - - VULKAN_HPP_INLINE std::string to_string( ShaderCorePropertiesFlagBitsAMD ) - { - return "(void)"; - } - - enum class ShaderFloatControlsIndependence - { - e32BitOnly = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_32_BIT_ONLY, - eAll = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_ALL, - eNone = VK_SHADER_FLOAT_CONTROLS_INDEPENDENCE_NONE}; - using ShaderFloatControlsIndependenceKHR = ShaderFloatControlsIndependence; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ShaderInfoTypeAMD - { - eStatistics = VK_SHADER_INFO_TYPE_STATISTICS_AMD, - eBinary = VK_SHADER_INFO_TYPE_BINARY_AMD, - eDisassembly = VK_SHADER_INFO_TYPE_DISASSEMBLY_AMD}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ShaderModuleCreateFlagBits : VkShaderModuleCreateFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( ShaderModuleCreateFlagBits ) - { - return "(void)"; - } - - 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, - eAnyHitKHR = VK_SHADER_STAGE_ANY_HIT_BIT_KHR, - eClosestHitKHR = VK_SHADER_STAGE_CLOSEST_HIT_BIT_KHR, - eMissKHR = VK_SHADER_STAGE_MISS_BIT_KHR, - eIntersectionKHR = VK_SHADER_STAGE_INTERSECTION_BIT_KHR, - eCallableKHR = VK_SHADER_STAGE_CALLABLE_BIT_KHR, - eTaskNV = VK_SHADER_STAGE_TASK_BIT_NV, - eMeshNV = VK_SHADER_STAGE_MESH_BIT_NV, - eAnyHitNV = VK_SHADER_STAGE_ANY_HIT_BIT_NV, - eCallableNV = VK_SHADER_STAGE_CALLABLE_BIT_NV, - eClosestHitNV = VK_SHADER_STAGE_CLOSEST_HIT_BIT_NV, - eIntersectionNV = VK_SHADER_STAGE_INTERSECTION_BIT_NV, - eMissNV = VK_SHADER_STAGE_MISS_BIT_NV, - eRaygenNV = VK_SHADER_STAGE_RAYGEN_BIT_NV}; - - VULKAN_HPP_INLINE 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::eTaskNV : return "TaskNV"; - case ShaderStageFlagBits::eMeshNV : return "MeshNV"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SharingMode - { - eExclusive = VK_SHARING_MODE_EXCLUSIVE, - eConcurrent = VK_SHARING_MODE_CONCURRENT}; - - VULKAN_HPP_INLINE std::string to_string( SharingMode value ) - { - switch ( value ) - { - case SharingMode::eExclusive : return "Exclusive"; - case SharingMode::eConcurrent : return "Concurrent"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SparseMemoryBindFlagBits : VkSparseMemoryBindFlags - { - eMetadata = VK_SPARSE_MEMORY_BIND_METADATA_BIT}; - - VULKAN_HPP_INLINE std::string to_string( SparseMemoryBindFlagBits value ) - { - switch ( value ) - { - case SparseMemoryBindFlagBits::eMetadata : return "Metadata"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - ePhysicalDeviceSubgroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES, - eBindBufferMemoryInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO, - eBindImageMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO, - ePhysicalDevice16BitStorageFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES, - eMemoryDedicatedRequirements = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS, - eMemoryDedicatedAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO, - eMemoryAllocateFlagsInfo = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO, - eDeviceGroupRenderPassBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO, - eDeviceGroupCommandBufferBeginInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO, - eDeviceGroupSubmitInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO, - eDeviceGroupBindSparseInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO, - eBindBufferMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO, - eBindImageMemoryDeviceGroupInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO, - ePhysicalDeviceGroupProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES, - eDeviceGroupDeviceCreateInfo = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO, - eBufferMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2, - eImageMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2, - eImageSparseMemoryRequirementsInfo2 = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2, - eMemoryRequirements2 = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2, - eSparseImageMemoryRequirements2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2, - ePhysicalDeviceFeatures2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2, - ePhysicalDeviceProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2, - eFormatProperties2 = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2, - eImageFormatProperties2 = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2, - ePhysicalDeviceImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2, - eQueueFamilyProperties2 = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2, - ePhysicalDeviceMemoryProperties2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2, - eSparseImageFormatProperties2 = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2, - ePhysicalDeviceSparseImageFormatInfo2 = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2, - ePhysicalDevicePointClippingProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES, - eRenderPassInputAttachmentAspectCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO, - eImageViewUsageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO, - ePipelineTessellationDomainOriginStateCreateInfo = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO, - eRenderPassMultiviewCreateInfo = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO, - ePhysicalDeviceMultiviewFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES, - ePhysicalDeviceMultiviewProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES, - ePhysicalDeviceVariablePointersFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES, - 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, - eSamplerYcbcrConversionCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO, - eSamplerYcbcrConversionInfo = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO, - eBindImagePlaneMemoryInfo = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO, - eImagePlaneMemoryRequirementsInfo = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO, - ePhysicalDeviceSamplerYcbcrConversionFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES, - eSamplerYcbcrConversionImageFormatProperties = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES, - eDescriptorUpdateTemplateCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO, - ePhysicalDeviceExternalImageFormatInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO, - eExternalImageFormatProperties = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES, - ePhysicalDeviceExternalBufferInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO, - eExternalBufferProperties = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES, - ePhysicalDeviceIdProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES, - eExternalMemoryBufferCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO, - eExternalMemoryImageCreateInfo = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO, - eExportMemoryAllocateInfo = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO, - ePhysicalDeviceExternalFenceInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO, - eExternalFenceProperties = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES, - eExportFenceCreateInfo = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO, - eExportSemaphoreCreateInfo = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO, - ePhysicalDeviceExternalSemaphoreInfo = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO, - eExternalSemaphoreProperties = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES, - ePhysicalDeviceMaintenance3Properties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES, - eDescriptorSetLayoutSupport = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT, - ePhysicalDeviceShaderDrawParametersFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES, - 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, - eAttachmentDescription2 = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2, - eAttachmentReference2 = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2, - eSubpassDescription2 = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2, - eSubpassDependency2 = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2, - eRenderPassCreateInfo2 = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2, - eSubpassBeginInfo = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO, - eSubpassEndInfo = VK_STRUCTURE_TYPE_SUBPASS_END_INFO, - ePhysicalDevice8BitStorageFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES, - ePhysicalDeviceDriverProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES, - ePhysicalDeviceShaderAtomicInt64Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES, - ePhysicalDeviceShaderFloat16Int8Features = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES, - ePhysicalDeviceFloatControlsProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES, - eDescriptorSetLayoutBindingFlagsCreateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO, - ePhysicalDeviceDescriptorIndexingFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES, - ePhysicalDeviceDescriptorIndexingProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES, - eDescriptorSetVariableDescriptorCountAllocateInfo = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO, - eDescriptorSetVariableDescriptorCountLayoutSupport = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT, - ePhysicalDeviceDepthStencilResolveProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES, - eSubpassDescriptionDepthStencilResolve = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE, - ePhysicalDeviceScalarBlockLayoutFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, - eImageStencilUsageCreateInfo = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO, - ePhysicalDeviceSamplerFilterMinmaxProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES, - eSamplerReductionModeCreateInfo = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO, - ePhysicalDeviceVulkanMemoryModelFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES, - ePhysicalDeviceImagelessFramebufferFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES, - eFramebufferAttachmentsCreateInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO, - eFramebufferAttachmentImageInfo = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO, - eRenderPassAttachmentBeginInfo = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO, - ePhysicalDeviceUniformBufferStandardLayoutFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES, - ePhysicalDeviceShaderSubgroupExtendedTypesFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES, - ePhysicalDeviceSeparateDepthStencilLayoutsFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES, - eAttachmentReferenceStencilLayout = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT, - eAttachmentDescriptionStencilLayout = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT, - ePhysicalDeviceHostQueryResetFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, - ePhysicalDeviceTimelineSemaphoreFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES, - ePhysicalDeviceTimelineSemaphoreProperties = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES, - eSemaphoreTypeCreateInfo = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO, - eTimelineSemaphoreSubmitInfo = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO, - eSemaphoreWaitInfo = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO, - eSemaphoreSignalInfo = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO, - ePhysicalDeviceBufferDeviceAddressFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES, - eBufferDeviceAddressInfo = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO, - eBufferOpaqueCaptureAddressCreateInfo = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO, - eMemoryOpaqueCaptureAddressAllocateInfo = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO, - eDeviceMemoryOpaqueCaptureAddressInfo = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO, - 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, -#ifdef VK_USE_PLATFORM_XLIB_KHR - eXlibSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR, -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - eXcbSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR, -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - eWaylandSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR, -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - eAndroidSurfaceCreateInfoKHR = VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR, -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef 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, - 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, - 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, - eImageViewHandleInfoNVX = VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX, - eImageViewAddressPropertiesNVX = VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX, - eTextureLodGatherFormatPropertiesAMD = VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD, -#ifdef 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, -#ifdef VK_USE_PLATFORM_WIN32_KHR - eImportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - eExportMemoryWin32HandleInfoNV = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - eWin32KeyedMutexAcquireReleaseInfoNV = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - eValidationFlagsEXT = VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT, -#ifdef VK_USE_PLATFORM_VI_NN - eViSurfaceCreateInfoNN = VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN, -#endif /*VK_USE_PLATFORM_VI_NN*/ - ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT, - eImageViewAstcDecodeModeEXT = VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT, - ePhysicalDeviceAstcDecodeFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT, -#ifdef VK_USE_PLATFORM_WIN32_KHR - eImportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - eExportMemoryWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - eMemoryWin32HandlePropertiesKHR = VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_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, -#ifdef VK_USE_PLATFORM_WIN32_KHR - eWin32KeyedMutexAcquireReleaseInfoKHR = VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - eImportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - eExportSemaphoreWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - eD3D12FenceSubmitInfoKHR = VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_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, - ePhysicalDevicePushDescriptorPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_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, - 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, - eSharedPresentSurfaceCapabilitiesKHR = VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR, -#ifdef VK_USE_PLATFORM_WIN32_KHR - eImportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - eExportFenceWin32HandleInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_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, -#ifdef VK_USE_PLATFORM_IOS_MVK - eIosSurfaceCreateInfoMVK = VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK, -#endif /*VK_USE_PLATFORM_IOS_MVK*/ -#ifdef 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, -#ifdef VK_USE_PLATFORM_ANDROID_KHR - eAndroidHardwareBufferUsageANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID, -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - eAndroidHardwareBufferPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID, -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - eAndroidHardwareBufferFormatPropertiesANDROID = VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID, -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - eImportAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - eMemoryGetAndroidHardwareBufferInfoANDROID = VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID, -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - eExternalFormatANDROID = VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID, -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - ePhysicalDeviceInlineUniformBlockFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT, - ePhysicalDeviceInlineUniformBlockPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT, - eWriteDescriptorSetInlineUniformBlockEXT = VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT, - eDescriptorPoolInlineUniformBlockCreateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT, - 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, - eValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT, - eShaderModuleValidationCacheCreateInfoEXT = VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT, -#ifdef VK_ENABLE_BETA_EXTENSIONS - ePhysicalDevicePortabilitySubsetFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PORTABILITY_SUBSET_FEATURES_KHR, -#endif /*VK_ENABLE_BETA_EXTENSIONS*/ -#ifdef VK_ENABLE_BETA_EXTENSIONS - 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, - eDeviceQueueGlobalPriorityCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT, - 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, - eCalibratedTimestampInfoEXT = VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT, - ePhysicalDeviceShaderCorePropertiesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD, - eDeviceMemoryOverallocationCreateInfoAMD = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD, - ePhysicalDeviceVertexAttributeDivisorPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT, - ePipelineVertexInputDivisorStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT, - ePhysicalDeviceVertexAttributeDivisorFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT, -#ifdef VK_USE_PLATFORM_GGP - ePresentFrameTokenGGP = VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP, -#endif /*VK_USE_PLATFORM_GGP*/ - ePipelineCreationFeedbackCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT, - ePhysicalDeviceComputeShaderDerivativesFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV, - ePhysicalDeviceMeshShaderFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV, - ePhysicalDeviceMeshShaderPropertiesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV, - ePhysicalDeviceFragmentShaderBarycentricFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_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, - ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL, - eQueryPoolPerformanceQueryCreateInfoINTEL = VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_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, -#ifdef VK_USE_PLATFORM_FUCHSIA - eImagepipeSurfaceCreateInfoFUCHSIA = VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA, -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - ePhysicalDeviceShaderTerminateInvocationFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR, -#ifdef 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, - ePhysicalDeviceSubgroupSizeControlPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT, - ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT, - ePhysicalDeviceSubgroupSizeControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_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, - ePhysicalDeviceShaderCoreProperties2AMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD, - ePhysicalDeviceCoherentMemoryFeaturesAMD = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD, - ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT, - 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, - eBufferDeviceAddressCreateInfoEXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT, - ePhysicalDeviceToolPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT, - eValidationFeaturesEXT = VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT, - 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, -#ifdef VK_USE_PLATFORM_WIN32_KHR - eSurfaceFullScreenExclusiveInfoEXT = VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - eSurfaceCapabilitiesFullScreenExclusiveEXT = VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT, -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - 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, - ePhysicalDeviceLineRasterizationFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT, - ePipelineRasterizationLineStateCreateInfoEXT = VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT, - ePhysicalDeviceLineRasterizationPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT, - ePhysicalDeviceShaderAtomicFloatFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT, - ePhysicalDeviceIndexTypeUint8FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_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, - 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, - ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_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, - ePhysicalDeviceTexelBufferAlignmentFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT, - ePhysicalDeviceTexelBufferAlignmentPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT, - eCommandBufferInheritanceRenderPassTransformInfoQCOM = VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM, - eRenderPassTransformBeginInfoQCOM = VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM, - 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, - ePhysicalDeviceRobustness2FeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT, - ePhysicalDeviceRobustness2PropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_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, - ePipelineLibraryCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR, - ePhysicalDevicePrivateDataFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT, - eDevicePrivateDataCreateInfoEXT = VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT, - ePrivateDataSlotCreateInfoEXT = VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT, - ePhysicalDevicePipelineCreationCacheControlFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT, - ePhysicalDeviceDiagnosticsConfigFeaturesNV = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV, - eDeviceDiagnosticsConfigCreateInfoNV = VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV, - eMemoryBarrier2KHR = VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR, - eBufferMemoryBarrier2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR, - eImageMemoryBarrier2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR, - eDependencyInfoKHR = VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR, - eSubmitInfo2KHR = VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR, - eSemaphoreSubmitInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR, - eCommandBufferSubmitInfoKHR = VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR, - ePhysicalDeviceSynchronization2FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR, - eQueueFamilyCheckpointProperties2Nv = VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV, - eCheckpointData2Nv = VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV, - ePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_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, - 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, - ePhysicalDeviceImageRobustnessFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT, - ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR, - eCopyBufferInfo2KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR, - eCopyImageInfo2KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR, - eCopyBufferToImageInfo2KHR = VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR, - eCopyImageToBufferInfo2KHR = VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR, - eBlitImageInfo2KHR = VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR, - eResolveImageInfo2KHR = VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR, - eBufferCopy2KHR = VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR, - eImageCopy2KHR = VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR, - eImageBlit2KHR = VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR, - eBufferImageCopy2KHR = VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR, - eImageResolve2KHR = VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR, - ePhysicalDevice4444FormatsFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT, -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - eDirectfbSurfaceCreateInfoEXT = VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT, -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE, - eMutableDescriptorTypeCreateInfoVALVE = VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE, -#ifdef VK_USE_PLATFORM_SCREEN_QNX - eScreenSurfaceCreateInfoQNX = VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX, -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - eAttachmentDescription2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2_KHR, - eAttachmentDescriptionStencilLayoutKHR = VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT_KHR, - eAttachmentReference2KHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2_KHR, - eAttachmentReferenceStencilLayoutKHR = VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT_KHR, - eBindBufferMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO_KHR, - eBindBufferMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO_KHR, - eBindImageMemoryDeviceGroupInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO_KHR, - eBindImageMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO_KHR, - eBindImagePlaneMemoryInfoKHR = VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO_KHR, - eBufferDeviceAddressInfoEXT = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_EXT, - eBufferDeviceAddressInfoKHR = VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO_KHR, - eBufferMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2_KHR, - eBufferOpaqueCaptureAddressCreateInfoKHR = VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO_KHR, - eDebugReportCreateInfoEXT = VK_STRUCTURE_TYPE_DEBUG_REPORT_CREATE_INFO_EXT, - eDescriptorSetLayoutBindingFlagsCreateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO_EXT, - eDescriptorSetLayoutSupportKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT_KHR, - eDescriptorSetVariableDescriptorCountAllocateInfoEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO_EXT, - eDescriptorSetVariableDescriptorCountLayoutSupportEXT = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT_EXT, - eDescriptorUpdateTemplateCreateInfoKHR = VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO_KHR, - eDeviceGroupBindSparseInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO_KHR, - eDeviceGroupCommandBufferBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO_KHR, - eDeviceGroupDeviceCreateInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO_KHR, - eDeviceGroupRenderPassBeginInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO_KHR, - eDeviceGroupSubmitInfoKHR = VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO_KHR, - eDeviceMemoryOpaqueCaptureAddressInfoKHR = VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO_KHR, - eExportFenceCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO_KHR, - eExportMemoryAllocateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_KHR, - eExportSemaphoreCreateInfoKHR = VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO_KHR, - eExternalBufferPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES_KHR, - eExternalFencePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES_KHR, - eExternalImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES_KHR, - eExternalMemoryBufferCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO_KHR, - eExternalMemoryImageCreateInfoKHR = VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_KHR, - eExternalSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES_KHR, - eFormatProperties2KHR = VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2_KHR, - eFramebufferAttachmentsCreateInfoKHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO_KHR, - eFramebufferAttachmentImageInfoKHR = VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO_KHR, - eImageFormatListCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO_KHR, - eImageFormatProperties2KHR = VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2_KHR, - eImageMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2_KHR, - eImagePlaneMemoryRequirementsInfoKHR = VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO_KHR, - eImageSparseMemoryRequirementsInfo2KHR = VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2_KHR, - eImageStencilUsageCreateInfoEXT = VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO_EXT, - eImageViewUsageCreateInfoKHR = VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO_KHR, - eMemoryAllocateFlagsInfoKHR = VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO_KHR, - eMemoryDedicatedAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO_KHR, - eMemoryDedicatedRequirementsKHR = VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS_KHR, - eMemoryOpaqueCaptureAddressAllocateInfoKHR = VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO_KHR, - eMemoryRequirements2KHR = VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2_KHR, - ePhysicalDevice16BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES_KHR, - ePhysicalDevice8BitStorageFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES_KHR, - ePhysicalDeviceBufferAddressFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_ADDRESS_FEATURES_EXT, - ePhysicalDeviceBufferDeviceAddressFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_KHR, - ePhysicalDeviceDepthStencilResolvePropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES_KHR, - ePhysicalDeviceDescriptorIndexingFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES_EXT, - ePhysicalDeviceDescriptorIndexingPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES_EXT, - ePhysicalDeviceDriverPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES_KHR, - ePhysicalDeviceExternalBufferInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO_KHR, - ePhysicalDeviceExternalFenceInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO_KHR, - ePhysicalDeviceExternalImageFormatInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO_KHR, - ePhysicalDeviceExternalSemaphoreInfoKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO_KHR, - ePhysicalDeviceFeatures2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2_KHR, - ePhysicalDeviceFloat16Int8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT16_INT8_FEATURES_KHR, - ePhysicalDeviceFloatControlsPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES_KHR, - ePhysicalDeviceGroupPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES_KHR, - ePhysicalDeviceHostQueryResetFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES_EXT, - ePhysicalDeviceIdPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES_KHR, - ePhysicalDeviceImagelessFramebufferFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES_KHR, - ePhysicalDeviceImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2_KHR, - ePhysicalDeviceMaintenance3PropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES_KHR, - ePhysicalDeviceMemoryProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2_KHR, - ePhysicalDeviceMultiviewFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES_KHR, - ePhysicalDeviceMultiviewPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES_KHR, - ePhysicalDevicePointClippingPropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES_KHR, - ePhysicalDeviceProperties2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2_KHR, - ePhysicalDeviceSamplerFilterMinmaxPropertiesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES_EXT, - ePhysicalDeviceSamplerYcbcrConversionFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES_KHR, - ePhysicalDeviceScalarBlockLayoutFeaturesEXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES_EXT, - ePhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES_KHR, - ePhysicalDeviceShaderAtomicInt64FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES_KHR, - ePhysicalDeviceShaderDrawParameterFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETER_FEATURES, - ePhysicalDeviceShaderFloat16Int8FeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES_KHR, - ePhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES_KHR, - ePhysicalDeviceSparseImageFormatInfo2KHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2_KHR, - ePhysicalDeviceTimelineSemaphoreFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES_KHR, - ePhysicalDeviceTimelineSemaphorePropertiesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES_KHR, - ePhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES_KHR, - ePhysicalDeviceVariablePointersFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES_KHR, - ePhysicalDeviceVariablePointerFeatures = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES, - ePhysicalDeviceVariablePointerFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTER_FEATURES_KHR, - ePhysicalDeviceVulkanMemoryModelFeaturesKHR = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES_KHR, - ePipelineTessellationDomainOriginStateCreateInfoKHR = VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO_KHR, - eQueryPoolCreateInfoINTEL = VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO_INTEL, - eQueueFamilyProperties2KHR = VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2_KHR, - eRenderPassAttachmentBeginInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO_KHR, - eRenderPassCreateInfo2KHR = VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2_KHR, - eRenderPassInputAttachmentAspectCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO_KHR, - eRenderPassMultiviewCreateInfoKHR = VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO_KHR, - eSamplerReductionModeCreateInfoEXT = VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO_EXT, - eSamplerYcbcrConversionCreateInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO_KHR, - eSamplerYcbcrConversionImageFormatPropertiesKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES_KHR, - eSamplerYcbcrConversionInfoKHR = VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO_KHR, - eSemaphoreSignalInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO_KHR, - eSemaphoreTypeCreateInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO_KHR, - eSemaphoreWaitInfoKHR = VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO_KHR, - eSparseImageFormatProperties2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2_KHR, - eSparseImageMemoryRequirements2KHR = VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2_KHR, - eSubpassBeginInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO_KHR, - eSubpassDependency2KHR = VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2_KHR, - eSubpassDescription2KHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2_KHR, - eSubpassDescriptionDepthStencilResolveKHR = VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE_KHR, - eSubpassEndInfoKHR = VK_STRUCTURE_TYPE_SUBPASS_END_INFO_KHR, - eTimelineSemaphoreSubmitInfoKHR = VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO_KHR}; - - VULKAN_HPP_INLINE 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::ePhysicalDeviceSubgroupProperties : return "PhysicalDeviceSubgroupProperties"; - case StructureType::eBindBufferMemoryInfo : return "BindBufferMemoryInfo"; - case StructureType::eBindImageMemoryInfo : return "BindImageMemoryInfo"; - case StructureType::ePhysicalDevice16BitStorageFeatures : return "PhysicalDevice16BitStorageFeatures"; - case StructureType::eMemoryDedicatedRequirements : return "MemoryDedicatedRequirements"; - case StructureType::eMemoryDedicatedAllocateInfo : return "MemoryDedicatedAllocateInfo"; - case StructureType::eMemoryAllocateFlagsInfo : return "MemoryAllocateFlagsInfo"; - case StructureType::eDeviceGroupRenderPassBeginInfo : return "DeviceGroupRenderPassBeginInfo"; - 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::ePhysicalDevicePointClippingProperties : return "PhysicalDevicePointClippingProperties"; - case StructureType::eRenderPassInputAttachmentAspectCreateInfo : return "RenderPassInputAttachmentAspectCreateInfo"; - case StructureType::eImageViewUsageCreateInfo : return "ImageViewUsageCreateInfo"; - case StructureType::ePipelineTessellationDomainOriginStateCreateInfo : return "PipelineTessellationDomainOriginStateCreateInfo"; - case StructureType::eRenderPassMultiviewCreateInfo : return "RenderPassMultiviewCreateInfo"; - case StructureType::ePhysicalDeviceMultiviewFeatures : return "PhysicalDeviceMultiviewFeatures"; - case StructureType::ePhysicalDeviceMultiviewProperties : return "PhysicalDeviceMultiviewProperties"; - case StructureType::ePhysicalDeviceVariablePointersFeatures : return "PhysicalDeviceVariablePointersFeatures"; - case StructureType::eProtectedSubmitInfo : return "ProtectedSubmitInfo"; - case StructureType::ePhysicalDeviceProtectedMemoryFeatures : return "PhysicalDeviceProtectedMemoryFeatures"; - case StructureType::ePhysicalDeviceProtectedMemoryProperties : return "PhysicalDeviceProtectedMemoryProperties"; - case StructureType::eDeviceQueueInfo2 : return "DeviceQueueInfo2"; - 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::eDescriptorUpdateTemplateCreateInfo : return "DescriptorUpdateTemplateCreateInfo"; - 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::ePhysicalDeviceMaintenance3Properties : return "PhysicalDeviceMaintenance3Properties"; - case StructureType::eDescriptorSetLayoutSupport : return "DescriptorSetLayoutSupport"; - case StructureType::ePhysicalDeviceShaderDrawParametersFeatures : return "PhysicalDeviceShaderDrawParametersFeatures"; - 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::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::ePhysicalDevice8BitStorageFeatures : return "PhysicalDevice8BitStorageFeatures"; - case StructureType::ePhysicalDeviceDriverProperties : return "PhysicalDeviceDriverProperties"; - 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::ePhysicalDeviceDepthStencilResolveProperties : return "PhysicalDeviceDepthStencilResolveProperties"; - case StructureType::eSubpassDescriptionDepthStencilResolve : return "SubpassDescriptionDepthStencilResolve"; - case StructureType::ePhysicalDeviceScalarBlockLayoutFeatures : return "PhysicalDeviceScalarBlockLayoutFeatures"; - case StructureType::eImageStencilUsageCreateInfo : return "ImageStencilUsageCreateInfo"; - case StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties : return "PhysicalDeviceSamplerFilterMinmaxProperties"; - case StructureType::eSamplerReductionModeCreateInfo : return "SamplerReductionModeCreateInfo"; - case StructureType::ePhysicalDeviceVulkanMemoryModelFeatures : return "PhysicalDeviceVulkanMemoryModelFeatures"; - case StructureType::ePhysicalDeviceImagelessFramebufferFeatures : return "PhysicalDeviceImagelessFramebufferFeatures"; - case StructureType::eFramebufferAttachmentsCreateInfo : return "FramebufferAttachmentsCreateInfo"; - case StructureType::eFramebufferAttachmentImageInfo : return "FramebufferAttachmentImageInfo"; - case StructureType::eRenderPassAttachmentBeginInfo : return "RenderPassAttachmentBeginInfo"; - case StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures : return "PhysicalDeviceUniformBufferStandardLayoutFeatures"; - case StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures : return "PhysicalDeviceShaderSubgroupExtendedTypesFeatures"; - case StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures : return "PhysicalDeviceSeparateDepthStencilLayoutsFeatures"; - case StructureType::eAttachmentReferenceStencilLayout : return "AttachmentReferenceStencilLayout"; - case StructureType::eAttachmentDescriptionStencilLayout : return "AttachmentDescriptionStencilLayout"; - 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::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"; -#ifdef VK_USE_PLATFORM_XLIB_KHR - case StructureType::eXlibSurfaceCreateInfoKHR : return "XlibSurfaceCreateInfoKHR"; -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - case StructureType::eXcbSurfaceCreateInfoKHR : return "XcbSurfaceCreateInfoKHR"; -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - case StructureType::eWaylandSurfaceCreateInfoKHR : return "WaylandSurfaceCreateInfoKHR"; -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - case StructureType::eAndroidSurfaceCreateInfoKHR : return "AndroidSurfaceCreateInfoKHR"; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef 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::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::eImageViewHandleInfoNVX : return "ImageViewHandleInfoNVX"; - case StructureType::eImageViewAddressPropertiesNVX : return "ImageViewAddressPropertiesNVX"; - case StructureType::eTextureLodGatherFormatPropertiesAMD : return "TextureLodGatherFormatPropertiesAMD"; -#ifdef 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"; -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eImportMemoryWin32HandleInfoNV : return "ImportMemoryWin32HandleInfoNV"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eExportMemoryWin32HandleInfoNV : return "ExportMemoryWin32HandleInfoNV"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eWin32KeyedMutexAcquireReleaseInfoNV : return "Win32KeyedMutexAcquireReleaseInfoNV"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - case StructureType::eValidationFlagsEXT : return "ValidationFlagsEXT"; -#ifdef VK_USE_PLATFORM_VI_NN - case StructureType::eViSurfaceCreateInfoNN : return "ViSurfaceCreateInfoNN"; -#endif /*VK_USE_PLATFORM_VI_NN*/ - case StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT : return "PhysicalDeviceTextureCompressionAstcHdrFeaturesEXT"; - case StructureType::eImageViewAstcDecodeModeEXT : return "ImageViewAstcDecodeModeEXT"; - case StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT : return "PhysicalDeviceAstcDecodeFeaturesEXT"; -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eImportMemoryWin32HandleInfoKHR : return "ImportMemoryWin32HandleInfoKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eExportMemoryWin32HandleInfoKHR : return "ExportMemoryWin32HandleInfoKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eMemoryWin32HandlePropertiesKHR : return "MemoryWin32HandlePropertiesKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - 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"; -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR : return "Win32KeyedMutexAcquireReleaseInfoKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eImportSemaphoreWin32HandleInfoKHR : return "ImportSemaphoreWin32HandleInfoKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eExportSemaphoreWin32HandleInfoKHR : return "ExportSemaphoreWin32HandleInfoKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eD3D12FenceSubmitInfoKHR : return "D3D12FenceSubmitInfoKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eSemaphoreGetWin32HandleInfoKHR : return "SemaphoreGetWin32HandleInfoKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - case StructureType::eImportSemaphoreFdInfoKHR : return "ImportSemaphoreFdInfoKHR"; - case StructureType::eSemaphoreGetFdInfoKHR : return "SemaphoreGetFdInfoKHR"; - case StructureType::ePhysicalDevicePushDescriptorPropertiesKHR : return "PhysicalDevicePushDescriptorPropertiesKHR"; - 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::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::eSharedPresentSurfaceCapabilitiesKHR : return "SharedPresentSurfaceCapabilitiesKHR"; -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eImportFenceWin32HandleInfoKHR : return "ImportFenceWin32HandleInfoKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eExportFenceWin32HandleInfoKHR : return "ExportFenceWin32HandleInfoKHR"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - 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"; -#ifdef VK_USE_PLATFORM_IOS_MVK - case StructureType::eIosSurfaceCreateInfoMVK : return "IosSurfaceCreateInfoMVK"; -#endif /*VK_USE_PLATFORM_IOS_MVK*/ -#ifdef 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"; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - case StructureType::eAndroidHardwareBufferUsageANDROID : return "AndroidHardwareBufferUsageANDROID"; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - case StructureType::eAndroidHardwareBufferPropertiesANDROID : return "AndroidHardwareBufferPropertiesANDROID"; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - case StructureType::eAndroidHardwareBufferFormatPropertiesANDROID : return "AndroidHardwareBufferFormatPropertiesANDROID"; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - case StructureType::eImportAndroidHardwareBufferInfoANDROID : return "ImportAndroidHardwareBufferInfoANDROID"; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - case StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID : return "MemoryGetAndroidHardwareBufferInfoANDROID"; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - case StructureType::eExternalFormatANDROID : return "ExternalFormatANDROID"; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - case StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT : return "PhysicalDeviceInlineUniformBlockFeaturesEXT"; - case StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT : return "PhysicalDeviceInlineUniformBlockPropertiesEXT"; - case StructureType::eWriteDescriptorSetInlineUniformBlockEXT : return "WriteDescriptorSetInlineUniformBlockEXT"; - case StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT : return "DescriptorPoolInlineUniformBlockCreateInfoEXT"; - 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::eValidationCacheCreateInfoEXT : return "ValidationCacheCreateInfoEXT"; - case StructureType::eShaderModuleValidationCacheCreateInfoEXT : return "ShaderModuleValidationCacheCreateInfoEXT"; -#ifdef VK_ENABLE_BETA_EXTENSIONS - case StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR : return "PhysicalDevicePortabilitySubsetFeaturesKHR"; -#endif /*VK_ENABLE_BETA_EXTENSIONS*/ -#ifdef VK_ENABLE_BETA_EXTENSIONS - 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::eDeviceQueueGlobalPriorityCreateInfoEXT : return "DeviceQueueGlobalPriorityCreateInfoEXT"; - 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::eCalibratedTimestampInfoEXT : return "CalibratedTimestampInfoEXT"; - case StructureType::ePhysicalDeviceShaderCorePropertiesAMD : return "PhysicalDeviceShaderCorePropertiesAMD"; - case StructureType::eDeviceMemoryOverallocationCreateInfoAMD : return "DeviceMemoryOverallocationCreateInfoAMD"; - case StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT : return "PhysicalDeviceVertexAttributeDivisorPropertiesEXT"; - case StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT : return "PipelineVertexInputDivisorStateCreateInfoEXT"; - case StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT : return "PhysicalDeviceVertexAttributeDivisorFeaturesEXT"; -#ifdef VK_USE_PLATFORM_GGP - case StructureType::ePresentFrameTokenGGP : return "PresentFrameTokenGGP"; -#endif /*VK_USE_PLATFORM_GGP*/ - case StructureType::ePipelineCreationFeedbackCreateInfoEXT : return "PipelineCreationFeedbackCreateInfoEXT"; - case StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV : return "PhysicalDeviceComputeShaderDerivativesFeaturesNV"; - case StructureType::ePhysicalDeviceMeshShaderFeaturesNV : return "PhysicalDeviceMeshShaderFeaturesNV"; - case StructureType::ePhysicalDeviceMeshShaderPropertiesNV : return "PhysicalDeviceMeshShaderPropertiesNV"; - case StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV : return "PhysicalDeviceFragmentShaderBarycentricFeaturesNV"; - 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::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"; -#ifdef VK_USE_PLATFORM_FUCHSIA - case StructureType::eImagepipeSurfaceCreateInfoFUCHSIA : return "ImagepipeSurfaceCreateInfoFUCHSIA"; -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - case StructureType::ePhysicalDeviceShaderTerminateInvocationFeaturesKHR : return "PhysicalDeviceShaderTerminateInvocationFeaturesKHR"; -#ifdef 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::ePhysicalDeviceSubgroupSizeControlPropertiesEXT : return "PhysicalDeviceSubgroupSizeControlPropertiesEXT"; - case StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT : return "PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT"; - case StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT : return "PhysicalDeviceSubgroupSizeControlFeaturesEXT"; - 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::ePhysicalDeviceShaderCoreProperties2AMD : return "PhysicalDeviceShaderCoreProperties2AMD"; - case StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD : return "PhysicalDeviceCoherentMemoryFeaturesAMD"; - case StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT : return "PhysicalDeviceShaderImageAtomicInt64FeaturesEXT"; - 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::ePhysicalDeviceToolPropertiesEXT : return "PhysicalDeviceToolPropertiesEXT"; - case StructureType::eValidationFeaturesEXT : return "ValidationFeaturesEXT"; - 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"; -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eSurfaceFullScreenExclusiveInfoEXT : return "SurfaceFullScreenExclusiveInfoEXT"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT : return "SurfaceCapabilitiesFullScreenExclusiveEXT"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - case StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT : return "SurfaceFullScreenExclusiveWin32InfoEXT"; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - case StructureType::eHeadlessSurfaceCreateInfoEXT : return "HeadlessSurfaceCreateInfoEXT"; - case StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT : return "PhysicalDeviceLineRasterizationFeaturesEXT"; - case StructureType::ePipelineRasterizationLineStateCreateInfoEXT : return "PipelineRasterizationLineStateCreateInfoEXT"; - case StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT : return "PhysicalDeviceLineRasterizationPropertiesEXT"; - case StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT : return "PhysicalDeviceShaderAtomicFloatFeaturesEXT"; - case StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT : return "PhysicalDeviceIndexTypeUint8FeaturesEXT"; - 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::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT : return "PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT"; - 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::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT : return "PhysicalDeviceTexelBufferAlignmentFeaturesEXT"; - case StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT : return "PhysicalDeviceTexelBufferAlignmentPropertiesEXT"; - case StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM : return "CommandBufferInheritanceRenderPassTransformInfoQCOM"; - case StructureType::eRenderPassTransformBeginInfoQCOM : return "RenderPassTransformBeginInfoQCOM"; - case StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT : return "PhysicalDeviceDeviceMemoryReportFeaturesEXT"; - case StructureType::eDeviceDeviceMemoryReportCreateInfoEXT : return "DeviceDeviceMemoryReportCreateInfoEXT"; - case StructureType::eDeviceMemoryReportCallbackDataEXT : return "DeviceMemoryReportCallbackDataEXT"; - case StructureType::ePhysicalDeviceRobustness2FeaturesEXT : return "PhysicalDeviceRobustness2FeaturesEXT"; - case StructureType::ePhysicalDeviceRobustness2PropertiesEXT : return "PhysicalDeviceRobustness2PropertiesEXT"; - case StructureType::eSamplerCustomBorderColorCreateInfoEXT : return "SamplerCustomBorderColorCreateInfoEXT"; - case StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT : return "PhysicalDeviceCustomBorderColorPropertiesEXT"; - case StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT : return "PhysicalDeviceCustomBorderColorFeaturesEXT"; - case StructureType::ePipelineLibraryCreateInfoKHR : return "PipelineLibraryCreateInfoKHR"; - case StructureType::ePhysicalDevicePrivateDataFeaturesEXT : return "PhysicalDevicePrivateDataFeaturesEXT"; - case StructureType::eDevicePrivateDataCreateInfoEXT : return "DevicePrivateDataCreateInfoEXT"; - case StructureType::ePrivateDataSlotCreateInfoEXT : return "PrivateDataSlotCreateInfoEXT"; - case StructureType::ePhysicalDevicePipelineCreationCacheControlFeaturesEXT : return "PhysicalDevicePipelineCreationCacheControlFeaturesEXT"; - case StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV : return "PhysicalDeviceDiagnosticsConfigFeaturesNV"; - case StructureType::eDeviceDiagnosticsConfigCreateInfoNV : return "DeviceDiagnosticsConfigCreateInfoNV"; - case StructureType::eMemoryBarrier2KHR : return "MemoryBarrier2KHR"; - case StructureType::eBufferMemoryBarrier2KHR : return "BufferMemoryBarrier2KHR"; - case StructureType::eImageMemoryBarrier2KHR : return "ImageMemoryBarrier2KHR"; - case StructureType::eDependencyInfoKHR : return "DependencyInfoKHR"; - case StructureType::eSubmitInfo2KHR : return "SubmitInfo2KHR"; - case StructureType::eSemaphoreSubmitInfoKHR : return "SemaphoreSubmitInfoKHR"; - case StructureType::eCommandBufferSubmitInfoKHR : return "CommandBufferSubmitInfoKHR"; - case StructureType::ePhysicalDeviceSynchronization2FeaturesKHR : return "PhysicalDeviceSynchronization2FeaturesKHR"; - case StructureType::eQueueFamilyCheckpointProperties2Nv : return "QueueFamilyCheckpointProperties2Nv"; - case StructureType::eCheckpointData2Nv : return "CheckpointData2Nv"; - case StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR : return "PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR"; - case StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV : return "PhysicalDeviceFragmentShadingRateEnumsPropertiesNV"; - case StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV : return "PhysicalDeviceFragmentShadingRateEnumsFeaturesNV"; - case StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV : return "PipelineFragmentShadingRateEnumStateCreateInfoNV"; - case StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT : return "PhysicalDeviceFragmentDensityMap2FeaturesEXT"; - case StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT : return "PhysicalDeviceFragmentDensityMap2PropertiesEXT"; - case StructureType::eCopyCommandTransformInfoQCOM : return "CopyCommandTransformInfoQCOM"; - case StructureType::ePhysicalDeviceImageRobustnessFeaturesEXT : return "PhysicalDeviceImageRobustnessFeaturesEXT"; - case StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR : return "PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR"; - case StructureType::eCopyBufferInfo2KHR : return "CopyBufferInfo2KHR"; - case StructureType::eCopyImageInfo2KHR : return "CopyImageInfo2KHR"; - case StructureType::eCopyBufferToImageInfo2KHR : return "CopyBufferToImageInfo2KHR"; - case StructureType::eCopyImageToBufferInfo2KHR : return "CopyImageToBufferInfo2KHR"; - case StructureType::eBlitImageInfo2KHR : return "BlitImageInfo2KHR"; - case StructureType::eResolveImageInfo2KHR : return "ResolveImageInfo2KHR"; - case StructureType::eBufferCopy2KHR : return "BufferCopy2KHR"; - case StructureType::eImageCopy2KHR : return "ImageCopy2KHR"; - case StructureType::eImageBlit2KHR : return "ImageBlit2KHR"; - case StructureType::eBufferImageCopy2KHR : return "BufferImageCopy2KHR"; - case StructureType::eImageResolve2KHR : return "ImageResolve2KHR"; - case StructureType::ePhysicalDevice4444FormatsFeaturesEXT : return "PhysicalDevice4444FormatsFeaturesEXT"; -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - case StructureType::eDirectfbSurfaceCreateInfoEXT : return "DirectfbSurfaceCreateInfoEXT"; -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - case StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE : return "PhysicalDeviceMutableDescriptorTypeFeaturesVALVE"; - case StructureType::eMutableDescriptorTypeCreateInfoVALVE : return "MutableDescriptorTypeCreateInfoVALVE"; -#ifdef VK_USE_PLATFORM_SCREEN_QNX - case StructureType::eScreenSurfaceCreateInfoQNX : return "ScreenSurfaceCreateInfoQNX"; -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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, - ePartitionedNV = VK_SUBGROUP_FEATURE_PARTITIONED_BIT_NV}; - - VULKAN_HPP_INLINE 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::ePartitionedNV : return "PartitionedNV"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SubmitFlagBitsKHR : VkSubmitFlagsKHR - { - eProtected = VK_SUBMIT_PROTECTED_BIT_KHR}; - - VULKAN_HPP_INLINE std::string to_string( SubmitFlagBitsKHR value ) - { - switch ( value ) - { - case SubmitFlagBitsKHR::eProtected : return "Protected"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SubpassContents - { - eInline = VK_SUBPASS_CONTENTS_INLINE, - eSecondaryCommandBuffers = VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS}; - - VULKAN_HPP_INLINE std::string to_string( SubpassContents value ) - { - switch ( value ) - { - case SubpassContents::eInline : return "Inline"; - case SubpassContents::eSecondaryCommandBuffers : return "SecondaryCommandBuffers"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SubpassDescriptionFlagBits : VkSubpassDescriptionFlags - { - ePerViewAttributesNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_ATTRIBUTES_BIT_NVX, - ePerViewPositionXOnlyNVX = VK_SUBPASS_DESCRIPTION_PER_VIEW_POSITION_X_ONLY_BIT_NVX, - eFragmentRegionQCOM = VK_SUBPASS_DESCRIPTION_FRAGMENT_REGION_BIT_QCOM, - eShaderResolveQCOM = VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM}; - - VULKAN_HPP_INLINE std::string to_string( SubpassDescriptionFlagBits value ) - { - switch ( value ) - { - case SubpassDescriptionFlagBits::ePerViewAttributesNVX : return "PerViewAttributesNVX"; - case SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX : return "PerViewPositionXOnlyNVX"; - case SubpassDescriptionFlagBits::eFragmentRegionQCOM : return "FragmentRegionQCOM"; - case SubpassDescriptionFlagBits::eShaderResolveQCOM : return "ShaderResolveQCOM"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class SurfaceCounterFlagBitsEXT : VkSurfaceCounterFlagsEXT - { - eVblank = VK_SURFACE_COUNTER_VBLANK_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( SurfaceCounterFlagBitsEXT value ) - { - switch ( value ) - { - case SurfaceCounterFlagBitsEXT::eVblank : return "Vblank"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE std::string to_string( SwapchainCreateFlagBitsKHR value ) - { - switch ( value ) - { - case SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions : return "SplitInstanceBindRegions"; - case SwapchainCreateFlagBitsKHR::eProtected : return "Protected"; - case SwapchainCreateFlagBitsKHR::eMutableFormat : return "MutableFormat"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class TessellationDomainOrigin - { - eUpperLeft = VK_TESSELLATION_DOMAIN_ORIGIN_UPPER_LEFT, - eLowerLeft = VK_TESSELLATION_DOMAIN_ORIGIN_LOWER_LEFT}; - using TessellationDomainOriginKHR = TessellationDomainOrigin; - - VULKAN_HPP_INLINE std::string to_string( TessellationDomainOrigin value ) - { - switch ( value ) - { - case TessellationDomainOrigin::eUpperLeft : return "UpperLeft"; - case TessellationDomainOrigin::eLowerLeft : return "LowerLeft"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class TimeDomainEXT - { - eDevice = VK_TIME_DOMAIN_DEVICE_EXT, - eClockMonotonic = VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT, - eClockMonotonicRaw = VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT, - eQueryPerformanceCounter = VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT}; - - VULKAN_HPP_INLINE std::string to_string( TimeDomainEXT value ) - { - switch ( value ) - { - case TimeDomainEXT::eDevice : return "Device"; - case TimeDomainEXT::eClockMonotonic : return "ClockMonotonic"; - case TimeDomainEXT::eClockMonotonicRaw : return "ClockMonotonicRaw"; - case TimeDomainEXT::eQueryPerformanceCounter : return "QueryPerformanceCounter"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ToolPurposeFlagBitsEXT : VkToolPurposeFlagsEXT - { - eValidation = VK_TOOL_PURPOSE_VALIDATION_BIT_EXT, - eProfiling = VK_TOOL_PURPOSE_PROFILING_BIT_EXT, - eTracing = VK_TOOL_PURPOSE_TRACING_BIT_EXT, - eAdditionalFeatures = VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT, - eModifyingFeatures = VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT, - eDebugReporting = VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT, - eDebugMarkers = VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT}; - - VULKAN_HPP_INLINE std::string to_string( ToolPurposeFlagBitsEXT value ) - { - switch ( value ) - { - case ToolPurposeFlagBitsEXT::eValidation : return "Validation"; - case ToolPurposeFlagBitsEXT::eProfiling : return "Profiling"; - case ToolPurposeFlagBitsEXT::eTracing : return "Tracing"; - case ToolPurposeFlagBitsEXT::eAdditionalFeatures : return "AdditionalFeatures"; - case ToolPurposeFlagBitsEXT::eModifyingFeatures : return "ModifyingFeatures"; - case ToolPurposeFlagBitsEXT::eDebugReporting : return "DebugReporting"; - case ToolPurposeFlagBitsEXT::eDebugMarkers : return "DebugMarkers"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ValidationCacheHeaderVersionEXT - { - eOne = VK_VALIDATION_CACHE_HEADER_VERSION_ONE_EXT}; - - VULKAN_HPP_INLINE std::string to_string( ValidationCacheHeaderVersionEXT value ) - { - switch ( value ) - { - case ValidationCacheHeaderVersionEXT::eOne : return "One"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class ValidationCheckEXT - { - eAll = VK_VALIDATION_CHECK_ALL_EXT, - eShaders = VK_VALIDATION_CHECK_SHADERS_EXT}; - - VULKAN_HPP_INLINE std::string to_string( ValidationCheckEXT value ) - { - switch ( value ) - { - case ValidationCheckEXT::eAll : return "All"; - case ValidationCheckEXT::eShaders : return "Shaders"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class VendorId - { - 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}; - - VULKAN_HPP_INLINE std::string to_string( VendorId value ) - { - switch ( value ) - { - 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"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - enum class VertexInputRate - { - eVertex = VK_VERTEX_INPUT_RATE_VERTEX, - eInstance = VK_VERTEX_INPUT_RATE_INSTANCE}; - - VULKAN_HPP_INLINE std::string to_string( VertexInputRate value ) - { - switch ( value ) - { - case VertexInputRate::eVertex : return "Vertex"; - case VertexInputRate::eInstance : return "Instance"; - default: return "invalid ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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}; - - VULKAN_HPP_INLINE 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 ( " + VULKAN_HPP_NAMESPACE::toHexString( static_cast( value ) ) + " )"; - } - } - - 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::eUint8EXT; - }; - - template <> - struct CppType - { - using Type = uint8_t; - }; - - - using AccelerationStructureCreateFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(AccelerationStructureCreateFlagBitsKHR::eDeviceAddressCaptureReplay) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccelerationStructureCreateFlagsKHR operator|( AccelerationStructureCreateFlagBitsKHR bit0, AccelerationStructureCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return AccelerationStructureCreateFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccelerationStructureCreateFlagsKHR operator&( AccelerationStructureCreateFlagBitsKHR bit0, AccelerationStructureCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return AccelerationStructureCreateFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccelerationStructureCreateFlagsKHR operator^( AccelerationStructureCreateFlagBitsKHR bit0, AccelerationStructureCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return AccelerationStructureCreateFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccelerationStructureCreateFlagsKHR operator~( AccelerationStructureCreateFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( AccelerationStructureCreateFlagsKHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( AccelerationStructureCreateFlagsKHR value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & AccelerationStructureCreateFlagBitsKHR::eDeviceAddressCaptureReplay ) result += "DeviceAddressCaptureReplay | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using AccessFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(AccessFlagBits::eIndirectCommandRead) | -VkFlags(AccessFlagBits::eIndexRead) | -VkFlags(AccessFlagBits::eVertexAttributeRead) | -VkFlags(AccessFlagBits::eUniformRead) | -VkFlags(AccessFlagBits::eInputAttachmentRead) | -VkFlags(AccessFlagBits::eShaderRead) | -VkFlags(AccessFlagBits::eShaderWrite) | -VkFlags(AccessFlagBits::eColorAttachmentRead) | -VkFlags(AccessFlagBits::eColorAttachmentWrite) | -VkFlags(AccessFlagBits::eDepthStencilAttachmentRead) | -VkFlags(AccessFlagBits::eDepthStencilAttachmentWrite) | -VkFlags(AccessFlagBits::eTransferRead) | -VkFlags(AccessFlagBits::eTransferWrite) | -VkFlags(AccessFlagBits::eHostRead) | -VkFlags(AccessFlagBits::eHostWrite) | -VkFlags(AccessFlagBits::eMemoryRead) | -VkFlags(AccessFlagBits::eMemoryWrite) | -VkFlags(AccessFlagBits::eTransformFeedbackWriteEXT) | -VkFlags(AccessFlagBits::eTransformFeedbackCounterReadEXT) | -VkFlags(AccessFlagBits::eTransformFeedbackCounterWriteEXT) | -VkFlags(AccessFlagBits::eConditionalRenderingReadEXT) | -VkFlags(AccessFlagBits::eColorAttachmentReadNoncoherentEXT) | -VkFlags(AccessFlagBits::eAccelerationStructureReadKHR) | -VkFlags(AccessFlagBits::eAccelerationStructureWriteKHR) | -VkFlags(AccessFlagBits::eShadingRateImageReadNV) | -VkFlags(AccessFlagBits::eFragmentDensityMapReadEXT) | -VkFlags(AccessFlagBits::eCommandPreprocessReadNV) | -VkFlags(AccessFlagBits::eCommandPreprocessWriteNV) | -VkFlags(AccessFlagBits::eNoneKHR) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags operator|( AccessFlagBits bit0, AccessFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return AccessFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags operator&( AccessFlagBits bit0, AccessFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return AccessFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags operator^( AccessFlagBits bit0, AccessFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return AccessFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags operator~( AccessFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( AccessFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( AccessFlags value ) - { - - if ( !value ) return "{}"; - 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::eShadingRateImageReadNV ) result += "ShadingRateImageReadNV | "; - if ( value & AccessFlagBits::eFragmentDensityMapReadEXT ) result += "FragmentDensityMapReadEXT | "; - if ( value & AccessFlagBits::eCommandPreprocessReadNV ) result += "CommandPreprocessReadNV | "; - if ( value & AccessFlagBits::eCommandPreprocessWriteNV ) result += "CommandPreprocessWriteNV | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using AccessFlags2KHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags64 - { - allFlags = VkFlags64(AccessFlagBits2KHR::e2None) | -VkFlags64(AccessFlagBits2KHR::e2IndirectCommandRead) | -VkFlags64(AccessFlagBits2KHR::e2IndexRead) | -VkFlags64(AccessFlagBits2KHR::e2VertexAttributeRead) | -VkFlags64(AccessFlagBits2KHR::e2UniformRead) | -VkFlags64(AccessFlagBits2KHR::e2InputAttachmentRead) | -VkFlags64(AccessFlagBits2KHR::e2ShaderRead) | -VkFlags64(AccessFlagBits2KHR::e2ShaderWrite) | -VkFlags64(AccessFlagBits2KHR::e2ColorAttachmentRead) | -VkFlags64(AccessFlagBits2KHR::e2ColorAttachmentWrite) | -VkFlags64(AccessFlagBits2KHR::e2DepthStencilAttachmentRead) | -VkFlags64(AccessFlagBits2KHR::e2DepthStencilAttachmentWrite) | -VkFlags64(AccessFlagBits2KHR::e2TransferRead) | -VkFlags64(AccessFlagBits2KHR::e2TransferWrite) | -VkFlags64(AccessFlagBits2KHR::e2HostRead) | -VkFlags64(AccessFlagBits2KHR::e2HostWrite) | -VkFlags64(AccessFlagBits2KHR::e2MemoryRead) | -VkFlags64(AccessFlagBits2KHR::e2MemoryWrite) | -VkFlags64(AccessFlagBits2KHR::e2ShaderSampledRead) | -VkFlags64(AccessFlagBits2KHR::e2ShaderStorageRead) | -VkFlags64(AccessFlagBits2KHR::e2ShaderStorageWrite) | -VkFlags64(AccessFlagBits2KHR::e2TransformFeedbackWriteExt) | -VkFlags64(AccessFlagBits2KHR::e2TransformFeedbackCounterReadExt) | -VkFlags64(AccessFlagBits2KHR::e2TransformFeedbackCounterWriteExt) | -VkFlags64(AccessFlagBits2KHR::e2ConditionalRenderingReadExt) | -VkFlags64(AccessFlagBits2KHR::e2CommandPreprocessReadNv) | -VkFlags64(AccessFlagBits2KHR::e2CommandPreprocessWriteNv) | -VkFlags64(AccessFlagBits2KHR::e2FragmentShadingRateAttachmentRead) | -VkFlags64(AccessFlagBits2KHR::e2AccelerationStructureRead) | -VkFlags64(AccessFlagBits2KHR::e2AccelerationStructureWrite) | -VkFlags64(AccessFlagBits2KHR::e2FragmentDensityMapReadExt) | -VkFlags64(AccessFlagBits2KHR::e2ColorAttachmentReadNoncoherentExt) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags2KHR operator|( AccessFlagBits2KHR bit0, AccessFlagBits2KHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return AccessFlags2KHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags2KHR operator&( AccessFlagBits2KHR bit0, AccessFlagBits2KHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return AccessFlags2KHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags2KHR operator^( AccessFlagBits2KHR bit0, AccessFlagBits2KHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return AccessFlags2KHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AccessFlags2KHR operator~( AccessFlagBits2KHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( AccessFlags2KHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( AccessFlags2KHR value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & AccessFlagBits2KHR::e2IndirectCommandRead ) result += "2IndirectCommandRead | "; - if ( value & AccessFlagBits2KHR::e2IndexRead ) result += "2IndexRead | "; - if ( value & AccessFlagBits2KHR::e2VertexAttributeRead ) result += "2VertexAttributeRead | "; - if ( value & AccessFlagBits2KHR::e2UniformRead ) result += "2UniformRead | "; - if ( value & AccessFlagBits2KHR::e2InputAttachmentRead ) result += "2InputAttachmentRead | "; - if ( value & AccessFlagBits2KHR::e2ShaderRead ) result += "2ShaderRead | "; - if ( value & AccessFlagBits2KHR::e2ShaderWrite ) result += "2ShaderWrite | "; - if ( value & AccessFlagBits2KHR::e2ColorAttachmentRead ) result += "2ColorAttachmentRead | "; - if ( value & AccessFlagBits2KHR::e2ColorAttachmentWrite ) result += "2ColorAttachmentWrite | "; - if ( value & AccessFlagBits2KHR::e2DepthStencilAttachmentRead ) result += "2DepthStencilAttachmentRead | "; - if ( value & AccessFlagBits2KHR::e2DepthStencilAttachmentWrite ) result += "2DepthStencilAttachmentWrite | "; - if ( value & AccessFlagBits2KHR::e2TransferRead ) result += "2TransferRead | "; - if ( value & AccessFlagBits2KHR::e2TransferWrite ) result += "2TransferWrite | "; - if ( value & AccessFlagBits2KHR::e2HostRead ) result += "2HostRead | "; - if ( value & AccessFlagBits2KHR::e2HostWrite ) result += "2HostWrite | "; - if ( value & AccessFlagBits2KHR::e2MemoryRead ) result += "2MemoryRead | "; - if ( value & AccessFlagBits2KHR::e2MemoryWrite ) result += "2MemoryWrite | "; - if ( value & AccessFlagBits2KHR::e2ShaderSampledRead ) result += "2ShaderSampledRead | "; - if ( value & AccessFlagBits2KHR::e2ShaderStorageRead ) result += "2ShaderStorageRead | "; - if ( value & AccessFlagBits2KHR::e2ShaderStorageWrite ) result += "2ShaderStorageWrite | "; - if ( value & AccessFlagBits2KHR::e2TransformFeedbackWriteExt ) result += "2TransformFeedbackWriteExt | "; - if ( value & AccessFlagBits2KHR::e2TransformFeedbackCounterReadExt ) result += "2TransformFeedbackCounterReadExt | "; - if ( value & AccessFlagBits2KHR::e2TransformFeedbackCounterWriteExt ) result += "2TransformFeedbackCounterWriteExt | "; - if ( value & AccessFlagBits2KHR::e2ConditionalRenderingReadExt ) result += "2ConditionalRenderingReadExt | "; - if ( value & AccessFlagBits2KHR::e2CommandPreprocessReadNv ) result += "2CommandPreprocessReadNv | "; - if ( value & AccessFlagBits2KHR::e2CommandPreprocessWriteNv ) result += "2CommandPreprocessWriteNv | "; - if ( value & AccessFlagBits2KHR::e2FragmentShadingRateAttachmentRead ) result += "2FragmentShadingRateAttachmentRead | "; - if ( value & AccessFlagBits2KHR::e2AccelerationStructureRead ) result += "2AccelerationStructureRead | "; - if ( value & AccessFlagBits2KHR::e2AccelerationStructureWrite ) result += "2AccelerationStructureWrite | "; - if ( value & AccessFlagBits2KHR::e2FragmentDensityMapReadExt ) result += "2FragmentDensityMapReadExt | "; - if ( value & AccessFlagBits2KHR::e2ColorAttachmentReadNoncoherentExt ) result += "2ColorAttachmentReadNoncoherentExt | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using AcquireProfilingLockFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( AcquireProfilingLockFlagsKHR ) - { - - return "{}"; - } - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - enum class AndroidSurfaceCreateFlagBitsKHR : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( AndroidSurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } - - using AndroidSurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( AndroidSurfaceCreateFlagsKHR ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - - using AttachmentDescriptionFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(AttachmentDescriptionFlagBits::eMayAlias) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AttachmentDescriptionFlags operator|( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return AttachmentDescriptionFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AttachmentDescriptionFlags operator&( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return AttachmentDescriptionFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AttachmentDescriptionFlags operator^( AttachmentDescriptionFlagBits bit0, AttachmentDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return AttachmentDescriptionFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR AttachmentDescriptionFlags operator~( AttachmentDescriptionFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( AttachmentDescriptionFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( AttachmentDescriptionFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & AttachmentDescriptionFlagBits::eMayAlias ) result += "MayAlias | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using BufferCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(BufferCreateFlagBits::eSparseBinding) | -VkFlags(BufferCreateFlagBits::eSparseResidency) | -VkFlags(BufferCreateFlagBits::eSparseAliased) | -VkFlags(BufferCreateFlagBits::eProtected) | -VkFlags(BufferCreateFlagBits::eDeviceAddressCaptureReplay) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferCreateFlags operator|( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return BufferCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferCreateFlags operator&( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return BufferCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferCreateFlags operator^( BufferCreateFlagBits bit0, BufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return BufferCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferCreateFlags operator~( BufferCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( BufferCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( BufferCreateFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using BufferUsageFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(BufferUsageFlagBits::eTransferSrc) | -VkFlags(BufferUsageFlagBits::eTransferDst) | -VkFlags(BufferUsageFlagBits::eUniformTexelBuffer) | -VkFlags(BufferUsageFlagBits::eStorageTexelBuffer) | -VkFlags(BufferUsageFlagBits::eUniformBuffer) | -VkFlags(BufferUsageFlagBits::eStorageBuffer) | -VkFlags(BufferUsageFlagBits::eIndexBuffer) | -VkFlags(BufferUsageFlagBits::eVertexBuffer) | -VkFlags(BufferUsageFlagBits::eIndirectBuffer) | -VkFlags(BufferUsageFlagBits::eShaderDeviceAddress) | -VkFlags(BufferUsageFlagBits::eTransformFeedbackBufferEXT) | -VkFlags(BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT) | -VkFlags(BufferUsageFlagBits::eConditionalRenderingEXT) | -VkFlags(BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR) | -VkFlags(BufferUsageFlagBits::eAccelerationStructureStorageKHR) | -VkFlags(BufferUsageFlagBits::eShaderBindingTableKHR) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferUsageFlags operator|( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return BufferUsageFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferUsageFlags operator&( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return BufferUsageFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferUsageFlags operator^( BufferUsageFlagBits bit0, BufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return BufferUsageFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BufferUsageFlags operator~( BufferUsageFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( BufferUsageFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( BufferUsageFlags value ) - { - - if ( !value ) return "{}"; - 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::eTransformFeedbackBufferEXT ) result += "TransformFeedbackBufferEXT | "; - if ( value & BufferUsageFlagBits::eTransformFeedbackCounterBufferEXT ) result += "TransformFeedbackCounterBufferEXT | "; - if ( value & BufferUsageFlagBits::eConditionalRenderingEXT ) result += "ConditionalRenderingEXT | "; - if ( value & BufferUsageFlagBits::eAccelerationStructureBuildInputReadOnlyKHR ) result += "AccelerationStructureBuildInputReadOnlyKHR | "; - if ( value & BufferUsageFlagBits::eAccelerationStructureStorageKHR ) result += "AccelerationStructureStorageKHR | "; - if ( value & BufferUsageFlagBits::eShaderBindingTableKHR ) result += "ShaderBindingTableKHR | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class BufferViewCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( BufferViewCreateFlagBits ) - { - return "(void)"; - } - - using BufferViewCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( BufferViewCreateFlags ) - { - - return "{}"; - } - - - using BuildAccelerationStructureFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(BuildAccelerationStructureFlagBitsKHR::eAllowUpdate) | -VkFlags(BuildAccelerationStructureFlagBitsKHR::eAllowCompaction) | -VkFlags(BuildAccelerationStructureFlagBitsKHR::ePreferFastTrace) | -VkFlags(BuildAccelerationStructureFlagBitsKHR::ePreferFastBuild) | -VkFlags(BuildAccelerationStructureFlagBitsKHR::eLowMemory) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BuildAccelerationStructureFlagsKHR operator|( BuildAccelerationStructureFlagBitsKHR bit0, BuildAccelerationStructureFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return BuildAccelerationStructureFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BuildAccelerationStructureFlagsKHR operator&( BuildAccelerationStructureFlagBitsKHR bit0, BuildAccelerationStructureFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return BuildAccelerationStructureFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BuildAccelerationStructureFlagsKHR operator^( BuildAccelerationStructureFlagBitsKHR bit0, BuildAccelerationStructureFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return BuildAccelerationStructureFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR BuildAccelerationStructureFlagsKHR operator~( BuildAccelerationStructureFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( BuildAccelerationStructureFlagsKHR( bits ) ); - } - - using BuildAccelerationStructureFlagsNV = BuildAccelerationStructureFlagsKHR; - - VULKAN_HPP_INLINE std::string to_string( BuildAccelerationStructureFlagsKHR value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ColorComponentFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ColorComponentFlagBits::eR) | -VkFlags(ColorComponentFlagBits::eG) | -VkFlags(ColorComponentFlagBits::eB) | -VkFlags(ColorComponentFlagBits::eA) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ColorComponentFlags operator|( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ColorComponentFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ColorComponentFlags operator&( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ColorComponentFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ColorComponentFlags operator^( ColorComponentFlagBits bit0, ColorComponentFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ColorComponentFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ColorComponentFlags operator~( ColorComponentFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ColorComponentFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ColorComponentFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using CommandBufferResetFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(CommandBufferResetFlagBits::eReleaseResources) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferResetFlags operator|( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandBufferResetFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferResetFlags operator&( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandBufferResetFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferResetFlags operator^( CommandBufferResetFlagBits bit0, CommandBufferResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandBufferResetFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferResetFlags operator~( CommandBufferResetFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( CommandBufferResetFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( CommandBufferResetFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & CommandBufferResetFlagBits::eReleaseResources ) result += "ReleaseResources | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using CommandBufferUsageFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(CommandBufferUsageFlagBits::eOneTimeSubmit) | -VkFlags(CommandBufferUsageFlagBits::eRenderPassContinue) | -VkFlags(CommandBufferUsageFlagBits::eSimultaneousUse) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferUsageFlags operator|( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandBufferUsageFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferUsageFlags operator&( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandBufferUsageFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferUsageFlags operator^( CommandBufferUsageFlagBits bit0, CommandBufferUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandBufferUsageFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandBufferUsageFlags operator~( CommandBufferUsageFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( CommandBufferUsageFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( CommandBufferUsageFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & CommandBufferUsageFlagBits::eOneTimeSubmit ) result += "OneTimeSubmit | "; - if ( value & CommandBufferUsageFlagBits::eRenderPassContinue ) result += "RenderPassContinue | "; - if ( value & CommandBufferUsageFlagBits::eSimultaneousUse ) result += "SimultaneousUse | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using CommandPoolCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(CommandPoolCreateFlagBits::eTransient) | -VkFlags(CommandPoolCreateFlagBits::eResetCommandBuffer) | -VkFlags(CommandPoolCreateFlagBits::eProtected) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolCreateFlags operator|( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandPoolCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolCreateFlags operator&( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandPoolCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolCreateFlags operator^( CommandPoolCreateFlagBits bit0, CommandPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandPoolCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolCreateFlags operator~( CommandPoolCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( CommandPoolCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( CommandPoolCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & CommandPoolCreateFlagBits::eTransient ) result += "Transient | "; - if ( value & CommandPoolCreateFlagBits::eResetCommandBuffer ) result += "ResetCommandBuffer | "; - if ( value & CommandPoolCreateFlagBits::eProtected ) result += "Protected | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using CommandPoolResetFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(CommandPoolResetFlagBits::eReleaseResources) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolResetFlags operator|( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandPoolResetFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolResetFlags operator&( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandPoolResetFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolResetFlags operator^( CommandPoolResetFlagBits bit0, CommandPoolResetFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CommandPoolResetFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CommandPoolResetFlags operator~( CommandPoolResetFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( CommandPoolResetFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( CommandPoolResetFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & CommandPoolResetFlagBits::eReleaseResources ) result += "ReleaseResources | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class CommandPoolTrimFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( CommandPoolTrimFlagBits ) - { - return "(void)"; - } - - using CommandPoolTrimFlags = Flags; - - using CommandPoolTrimFlagsKHR = CommandPoolTrimFlags; - - VULKAN_HPP_INLINE std::string to_string( CommandPoolTrimFlags ) - { - - return "{}"; - } - - - using CompositeAlphaFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(CompositeAlphaFlagBitsKHR::eOpaque) | -VkFlags(CompositeAlphaFlagBitsKHR::ePreMultiplied) | -VkFlags(CompositeAlphaFlagBitsKHR::ePostMultiplied) | -VkFlags(CompositeAlphaFlagBitsKHR::eInherit) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CompositeAlphaFlagsKHR operator|( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return CompositeAlphaFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CompositeAlphaFlagsKHR operator&( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return CompositeAlphaFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CompositeAlphaFlagsKHR operator^( CompositeAlphaFlagBitsKHR bit0, CompositeAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return CompositeAlphaFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CompositeAlphaFlagsKHR operator~( CompositeAlphaFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( CompositeAlphaFlagsKHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( CompositeAlphaFlagsKHR value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ConditionalRenderingFlagsEXT = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ConditionalRenderingFlagBitsEXT::eInverted) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ConditionalRenderingFlagsEXT operator|( ConditionalRenderingFlagBitsEXT bit0, ConditionalRenderingFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return ConditionalRenderingFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ConditionalRenderingFlagsEXT operator&( ConditionalRenderingFlagBitsEXT bit0, ConditionalRenderingFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return ConditionalRenderingFlagsEXT( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ConditionalRenderingFlagsEXT operator^( ConditionalRenderingFlagBitsEXT bit0, ConditionalRenderingFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return ConditionalRenderingFlagsEXT( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ConditionalRenderingFlagsEXT operator~( ConditionalRenderingFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ConditionalRenderingFlagsEXT( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ConditionalRenderingFlagsEXT value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & ConditionalRenderingFlagBitsEXT::eInverted ) result += "Inverted | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using CullModeFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(CullModeFlagBits::eNone) | -VkFlags(CullModeFlagBits::eFront) | -VkFlags(CullModeFlagBits::eBack) | -VkFlags(CullModeFlagBits::eFrontAndBack) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CullModeFlags operator|( CullModeFlagBits bit0, CullModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CullModeFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CullModeFlags operator&( CullModeFlagBits bit0, CullModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CullModeFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CullModeFlags operator^( CullModeFlagBits bit0, CullModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return CullModeFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR CullModeFlags operator~( CullModeFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( CullModeFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( CullModeFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & CullModeFlagBits::eFront ) result += "Front | "; - if ( value & CullModeFlagBits::eBack ) result += "Back | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using DebugReportFlagsEXT = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DebugReportFlagBitsEXT::eInformation) | -VkFlags(DebugReportFlagBitsEXT::eWarning) | -VkFlags(DebugReportFlagBitsEXT::ePerformanceWarning) | -VkFlags(DebugReportFlagBitsEXT::eError) | -VkFlags(DebugReportFlagBitsEXT::eDebug) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugReportFlagsEXT operator|( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return DebugReportFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugReportFlagsEXT operator&( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return DebugReportFlagsEXT( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugReportFlagsEXT operator^( DebugReportFlagBitsEXT bit0, DebugReportFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return DebugReportFlagsEXT( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugReportFlagsEXT operator~( DebugReportFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DebugReportFlagsEXT( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DebugReportFlagsEXT value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using DebugUtilsMessageSeverityFlagsEXT = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eVerbose) | -VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eInfo) | -VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eWarning) | -VkFlags(DebugUtilsMessageSeverityFlagBitsEXT::eError) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageSeverityFlagsEXT operator|( DebugUtilsMessageSeverityFlagBitsEXT bit0, DebugUtilsMessageSeverityFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return DebugUtilsMessageSeverityFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageSeverityFlagsEXT operator&( DebugUtilsMessageSeverityFlagBitsEXT bit0, DebugUtilsMessageSeverityFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return DebugUtilsMessageSeverityFlagsEXT( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageSeverityFlagsEXT operator^( DebugUtilsMessageSeverityFlagBitsEXT bit0, DebugUtilsMessageSeverityFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return DebugUtilsMessageSeverityFlagsEXT( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageSeverityFlagsEXT operator~( DebugUtilsMessageSeverityFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DebugUtilsMessageSeverityFlagsEXT( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageSeverityFlagsEXT value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using DebugUtilsMessageTypeFlagsEXT = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DebugUtilsMessageTypeFlagBitsEXT::eGeneral) | -VkFlags(DebugUtilsMessageTypeFlagBitsEXT::eValidation) | -VkFlags(DebugUtilsMessageTypeFlagBitsEXT::ePerformance) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageTypeFlagsEXT operator|( DebugUtilsMessageTypeFlagBitsEXT bit0, DebugUtilsMessageTypeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return DebugUtilsMessageTypeFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageTypeFlagsEXT operator&( DebugUtilsMessageTypeFlagBitsEXT bit0, DebugUtilsMessageTypeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return DebugUtilsMessageTypeFlagsEXT( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageTypeFlagsEXT operator^( DebugUtilsMessageTypeFlagBitsEXT bit0, DebugUtilsMessageTypeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return DebugUtilsMessageTypeFlagsEXT( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DebugUtilsMessageTypeFlagsEXT operator~( DebugUtilsMessageTypeFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DebugUtilsMessageTypeFlagsEXT( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessageTypeFlagsEXT value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & DebugUtilsMessageTypeFlagBitsEXT::eGeneral ) result += "General | "; - if ( value & DebugUtilsMessageTypeFlagBitsEXT::eValidation ) result += "Validation | "; - if ( value & DebugUtilsMessageTypeFlagBitsEXT::ePerformance ) result += "Performance | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class DebugUtilsMessengerCallbackDataFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCallbackDataFlagBitsEXT ) - { - return "(void)"; - } - - using DebugUtilsMessengerCallbackDataFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCallbackDataFlagsEXT ) - { - - return "{}"; - } - - enum class DebugUtilsMessengerCreateFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCreateFlagBitsEXT ) - { - return "(void)"; - } - - using DebugUtilsMessengerCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( DebugUtilsMessengerCreateFlagsEXT ) - { - - return "{}"; - } - - - using DependencyFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DependencyFlagBits::eByRegion) | -VkFlags(DependencyFlagBits::eDeviceGroup) | -VkFlags(DependencyFlagBits::eViewLocal) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DependencyFlags operator|( DependencyFlagBits bit0, DependencyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DependencyFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DependencyFlags operator&( DependencyFlagBits bit0, DependencyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DependencyFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DependencyFlags operator^( DependencyFlagBits bit0, DependencyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DependencyFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DependencyFlags operator~( DependencyFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DependencyFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DependencyFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & DependencyFlagBits::eByRegion ) result += "ByRegion | "; - if ( value & DependencyFlagBits::eDeviceGroup ) result += "DeviceGroup | "; - if ( value & DependencyFlagBits::eViewLocal ) result += "ViewLocal | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using DescriptorBindingFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DescriptorBindingFlagBits::eUpdateAfterBind) | -VkFlags(DescriptorBindingFlagBits::eUpdateUnusedWhilePending) | -VkFlags(DescriptorBindingFlagBits::ePartiallyBound) | -VkFlags(DescriptorBindingFlagBits::eVariableDescriptorCount) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorBindingFlags operator|( DescriptorBindingFlagBits bit0, DescriptorBindingFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DescriptorBindingFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorBindingFlags operator&( DescriptorBindingFlagBits bit0, DescriptorBindingFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DescriptorBindingFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorBindingFlags operator^( DescriptorBindingFlagBits bit0, DescriptorBindingFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DescriptorBindingFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorBindingFlags operator~( DescriptorBindingFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DescriptorBindingFlags( bits ) ); - } - - using DescriptorBindingFlagsEXT = DescriptorBindingFlags; - - VULKAN_HPP_INLINE std::string to_string( DescriptorBindingFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using DescriptorPoolCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DescriptorPoolCreateFlagBits::eFreeDescriptorSet) | -VkFlags(DescriptorPoolCreateFlagBits::eUpdateAfterBind) | -VkFlags(DescriptorPoolCreateFlagBits::eHostOnlyVALVE) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorPoolCreateFlags operator|( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DescriptorPoolCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorPoolCreateFlags operator&( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DescriptorPoolCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorPoolCreateFlags operator^( DescriptorPoolCreateFlagBits bit0, DescriptorPoolCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DescriptorPoolCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorPoolCreateFlags operator~( DescriptorPoolCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DescriptorPoolCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DescriptorPoolCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & DescriptorPoolCreateFlagBits::eFreeDescriptorSet ) result += "FreeDescriptorSet | "; - if ( value & DescriptorPoolCreateFlagBits::eUpdateAfterBind ) result += "UpdateAfterBind | "; - if ( value & DescriptorPoolCreateFlagBits::eHostOnlyVALVE ) result += "HostOnlyVALVE | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class DescriptorPoolResetFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( DescriptorPoolResetFlagBits ) - { - return "(void)"; - } - - using DescriptorPoolResetFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( DescriptorPoolResetFlags ) - { - - return "{}"; - } - - - using DescriptorSetLayoutCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPool) | -VkFlags(DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR) | -VkFlags(DescriptorSetLayoutCreateFlagBits::eHostOnlyPoolVALVE) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateFlags operator|( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DescriptorSetLayoutCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateFlags operator&( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DescriptorSetLayoutCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateFlags operator^( DescriptorSetLayoutCreateFlagBits bit0, DescriptorSetLayoutCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DescriptorSetLayoutCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateFlags operator~( DescriptorSetLayoutCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DescriptorSetLayoutCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DescriptorSetLayoutCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & DescriptorSetLayoutCreateFlagBits::eUpdateAfterBindPool ) result += "UpdateAfterBindPool | "; - if ( value & DescriptorSetLayoutCreateFlagBits::ePushDescriptorKHR ) result += "PushDescriptorKHR | "; - if ( value & DescriptorSetLayoutCreateFlagBits::eHostOnlyPoolVALVE ) result += "HostOnlyPoolVALVE | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class DescriptorUpdateTemplateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( DescriptorUpdateTemplateCreateFlagBits ) - { - return "(void)"; - } - - using DescriptorUpdateTemplateCreateFlags = Flags; - - using DescriptorUpdateTemplateCreateFlagsKHR = DescriptorUpdateTemplateCreateFlags; - - VULKAN_HPP_INLINE std::string to_string( DescriptorUpdateTemplateCreateFlags ) - { - - return "{}"; - } - - - using DeviceCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( DeviceCreateFlags ) - { - - return "{}"; - } - - - using DeviceDiagnosticsConfigFlagsNV = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderDebugInfo) | -VkFlags(DeviceDiagnosticsConfigFlagBitsNV::eEnableResourceTracking) | -VkFlags(DeviceDiagnosticsConfigFlagBitsNV::eEnableAutomaticCheckpoints) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigFlagsNV operator|( DeviceDiagnosticsConfigFlagBitsNV bit0, DeviceDiagnosticsConfigFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return DeviceDiagnosticsConfigFlagsNV( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigFlagsNV operator&( DeviceDiagnosticsConfigFlagBitsNV bit0, DeviceDiagnosticsConfigFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return DeviceDiagnosticsConfigFlagsNV( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigFlagsNV operator^( DeviceDiagnosticsConfigFlagBitsNV bit0, DeviceDiagnosticsConfigFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return DeviceDiagnosticsConfigFlagsNV( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigFlagsNV operator~( DeviceDiagnosticsConfigFlagBitsNV bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DeviceDiagnosticsConfigFlagsNV( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DeviceDiagnosticsConfigFlagsNV value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableShaderDebugInfo ) result += "EnableShaderDebugInfo | "; - if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableResourceTracking ) result += "EnableResourceTracking | "; - if ( value & DeviceDiagnosticsConfigFlagBitsNV::eEnableAutomaticCheckpoints ) result += "EnableAutomaticCheckpoints | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using DeviceGroupPresentModeFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DeviceGroupPresentModeFlagBitsKHR::eLocal) | -VkFlags(DeviceGroupPresentModeFlagBitsKHR::eRemote) | -VkFlags(DeviceGroupPresentModeFlagBitsKHR::eSum) | -VkFlags(DeviceGroupPresentModeFlagBitsKHR::eLocalMultiDevice) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceGroupPresentModeFlagsKHR operator|( DeviceGroupPresentModeFlagBitsKHR bit0, DeviceGroupPresentModeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return DeviceGroupPresentModeFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceGroupPresentModeFlagsKHR operator&( DeviceGroupPresentModeFlagBitsKHR bit0, DeviceGroupPresentModeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return DeviceGroupPresentModeFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceGroupPresentModeFlagsKHR operator^( DeviceGroupPresentModeFlagBitsKHR bit0, DeviceGroupPresentModeFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return DeviceGroupPresentModeFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceGroupPresentModeFlagsKHR operator~( DeviceGroupPresentModeFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DeviceGroupPresentModeFlagsKHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DeviceGroupPresentModeFlagsKHR value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class DeviceMemoryReportFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( DeviceMemoryReportFlagBitsEXT ) - { - return "(void)"; - } - - using DeviceMemoryReportFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( DeviceMemoryReportFlagsEXT ) - { - - return "{}"; - } - - - using DeviceQueueCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DeviceQueueCreateFlagBits::eProtected) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceQueueCreateFlags operator|( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DeviceQueueCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceQueueCreateFlags operator&( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DeviceQueueCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceQueueCreateFlags operator^( DeviceQueueCreateFlagBits bit0, DeviceQueueCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return DeviceQueueCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DeviceQueueCreateFlags operator~( DeviceQueueCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DeviceQueueCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DeviceQueueCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & DeviceQueueCreateFlagBits::eProtected ) result += "Protected | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - enum class DirectFBSurfaceCreateFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( DirectFBSurfaceCreateFlagBitsEXT ) - { - return "(void)"; - } - - using DirectFBSurfaceCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( DirectFBSurfaceCreateFlagsEXT ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - - enum class DisplayModeCreateFlagBitsKHR : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( DisplayModeCreateFlagBitsKHR ) - { - return "(void)"; - } - - using DisplayModeCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( DisplayModeCreateFlagsKHR ) - { - - return "{}"; - } - - - using DisplayPlaneAlphaFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(DisplayPlaneAlphaFlagBitsKHR::eOpaque) | -VkFlags(DisplayPlaneAlphaFlagBitsKHR::eGlobal) | -VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixel) | -VkFlags(DisplayPlaneAlphaFlagBitsKHR::ePerPixelPremultiplied) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DisplayPlaneAlphaFlagsKHR operator|( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return DisplayPlaneAlphaFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DisplayPlaneAlphaFlagsKHR operator&( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return DisplayPlaneAlphaFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DisplayPlaneAlphaFlagsKHR operator^( DisplayPlaneAlphaFlagBitsKHR bit0, DisplayPlaneAlphaFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return DisplayPlaneAlphaFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR DisplayPlaneAlphaFlagsKHR operator~( DisplayPlaneAlphaFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( DisplayPlaneAlphaFlagsKHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( DisplayPlaneAlphaFlagsKHR value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class DisplaySurfaceCreateFlagBitsKHR : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( DisplaySurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } - - using DisplaySurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( DisplaySurfaceCreateFlagsKHR ) - { - - return "{}"; - } - - - using EventCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(EventCreateFlagBits::eDeviceOnlyKHR) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR EventCreateFlags operator|( EventCreateFlagBits bit0, EventCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return EventCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR EventCreateFlags operator&( EventCreateFlagBits bit0, EventCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return EventCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR EventCreateFlags operator^( EventCreateFlagBits bit0, EventCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return EventCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR EventCreateFlags operator~( EventCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( EventCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( EventCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & EventCreateFlagBits::eDeviceOnlyKHR ) result += "DeviceOnlyKHR | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ExternalFenceFeatureFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ExternalFenceFeatureFlagBits::eExportable) | -VkFlags(ExternalFenceFeatureFlagBits::eImportable) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceFeatureFlags operator|( ExternalFenceFeatureFlagBits bit0, ExternalFenceFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalFenceFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceFeatureFlags operator&( ExternalFenceFeatureFlagBits bit0, ExternalFenceFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalFenceFeatureFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceFeatureFlags operator^( ExternalFenceFeatureFlagBits bit0, ExternalFenceFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalFenceFeatureFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceFeatureFlags operator~( ExternalFenceFeatureFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ExternalFenceFeatureFlags( bits ) ); - } - - using ExternalFenceFeatureFlagsKHR = ExternalFenceFeatureFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalFenceFeatureFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalFenceFeatureFlagBits::eExportable ) result += "Exportable | "; - if ( value & ExternalFenceFeatureFlagBits::eImportable ) result += "Importable | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ExternalFenceHandleTypeFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueFd) | -VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueWin32) | -VkFlags(ExternalFenceHandleTypeFlagBits::eOpaqueWin32Kmt) | -VkFlags(ExternalFenceHandleTypeFlagBits::eSyncFd) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceHandleTypeFlags operator|( ExternalFenceHandleTypeFlagBits bit0, ExternalFenceHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalFenceHandleTypeFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceHandleTypeFlags operator&( ExternalFenceHandleTypeFlagBits bit0, ExternalFenceHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalFenceHandleTypeFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceHandleTypeFlags operator^( ExternalFenceHandleTypeFlagBits bit0, ExternalFenceHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalFenceHandleTypeFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalFenceHandleTypeFlags operator~( ExternalFenceHandleTypeFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ExternalFenceHandleTypeFlags( bits ) ); - } - - using ExternalFenceHandleTypeFlagsKHR = ExternalFenceHandleTypeFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalFenceHandleTypeFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ExternalMemoryFeatureFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ExternalMemoryFeatureFlagBits::eDedicatedOnly) | -VkFlags(ExternalMemoryFeatureFlagBits::eExportable) | -VkFlags(ExternalMemoryFeatureFlagBits::eImportable) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlags operator|( ExternalMemoryFeatureFlagBits bit0, ExternalMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlags operator&( ExternalMemoryFeatureFlagBits bit0, ExternalMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryFeatureFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlags operator^( ExternalMemoryFeatureFlagBits bit0, ExternalMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryFeatureFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlags operator~( ExternalMemoryFeatureFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ExternalMemoryFeatureFlags( bits ) ); - } - - using ExternalMemoryFeatureFlagsKHR = ExternalMemoryFeatureFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalMemoryFeatureFlagBits::eDedicatedOnly ) result += "DedicatedOnly | "; - if ( value & ExternalMemoryFeatureFlagBits::eExportable ) result += "Exportable | "; - if ( value & ExternalMemoryFeatureFlagBits::eImportable ) result += "Importable | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ExternalMemoryFeatureFlagsNV = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly) | -VkFlags(ExternalMemoryFeatureFlagBitsNV::eExportable) | -VkFlags(ExternalMemoryFeatureFlagBitsNV::eImportable) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlagsNV operator|( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryFeatureFlagsNV( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlagsNV operator&( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryFeatureFlagsNV( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlagsNV operator^( ExternalMemoryFeatureFlagBitsNV bit0, ExternalMemoryFeatureFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryFeatureFlagsNV( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryFeatureFlagsNV operator~( ExternalMemoryFeatureFlagBitsNV bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ExternalMemoryFeatureFlagsNV( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryFeatureFlagsNV value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalMemoryFeatureFlagBitsNV::eDedicatedOnly ) result += "DedicatedOnly | "; - if ( value & ExternalMemoryFeatureFlagBitsNV::eExportable ) result += "Exportable | "; - if ( value & ExternalMemoryFeatureFlagBitsNV::eImportable ) result += "Importable | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ExternalMemoryHandleTypeFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ExternalMemoryHandleTypeFlagBits::eOpaqueFd) | -VkFlags(ExternalMemoryHandleTypeFlagBits::eOpaqueWin32) | -VkFlags(ExternalMemoryHandleTypeFlagBits::eOpaqueWin32Kmt) | -VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D11Texture) | -VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D11TextureKmt) | -VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D12Heap) | -VkFlags(ExternalMemoryHandleTypeFlagBits::eD3D12Resource) | -VkFlags(ExternalMemoryHandleTypeFlagBits::eDmaBufEXT) | -#ifdef VK_USE_PLATFORM_ANDROID_KHR -VkFlags(ExternalMemoryHandleTypeFlagBits::eAndroidHardwareBufferANDROID) | -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -VkFlags(ExternalMemoryHandleTypeFlagBits::eHostAllocationEXT) | -VkFlags(ExternalMemoryHandleTypeFlagBits::eHostMappedForeignMemoryEXT) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlags operator|( ExternalMemoryHandleTypeFlagBits bit0, ExternalMemoryHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryHandleTypeFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlags operator&( ExternalMemoryHandleTypeFlagBits bit0, ExternalMemoryHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryHandleTypeFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlags operator^( ExternalMemoryHandleTypeFlagBits bit0, ExternalMemoryHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryHandleTypeFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlags operator~( ExternalMemoryHandleTypeFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ExternalMemoryHandleTypeFlags( bits ) ); - } - - using ExternalMemoryHandleTypeFlagsKHR = ExternalMemoryHandleTypeFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; -#ifdef 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ExternalMemoryHandleTypeFlagsNV = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32) | -VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eOpaqueWin32Kmt) | -VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11Image) | -VkFlags(ExternalMemoryHandleTypeFlagBitsNV::eD3D11ImageKmt) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlagsNV operator|( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryHandleTypeFlagsNV( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlagsNV operator&( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryHandleTypeFlagsNV( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlagsNV operator^( ExternalMemoryHandleTypeFlagBitsNV bit0, ExternalMemoryHandleTypeFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalMemoryHandleTypeFlagsNV( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalMemoryHandleTypeFlagsNV operator~( ExternalMemoryHandleTypeFlagBitsNV bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ExternalMemoryHandleTypeFlagsNV( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ExternalMemoryHandleTypeFlagsNV value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ExternalSemaphoreFeatureFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ExternalSemaphoreFeatureFlagBits::eExportable) | -VkFlags(ExternalSemaphoreFeatureFlagBits::eImportable) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreFeatureFlags operator|( ExternalSemaphoreFeatureFlagBits bit0, ExternalSemaphoreFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalSemaphoreFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreFeatureFlags operator&( ExternalSemaphoreFeatureFlagBits bit0, ExternalSemaphoreFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalSemaphoreFeatureFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreFeatureFlags operator^( ExternalSemaphoreFeatureFlagBits bit0, ExternalSemaphoreFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalSemaphoreFeatureFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreFeatureFlags operator~( ExternalSemaphoreFeatureFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ExternalSemaphoreFeatureFlags( bits ) ); - } - - using ExternalSemaphoreFeatureFlagsKHR = ExternalSemaphoreFeatureFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreFeatureFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & ExternalSemaphoreFeatureFlagBits::eExportable ) result += "Exportable | "; - if ( value & ExternalSemaphoreFeatureFlagBits::eImportable ) result += "Importable | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ExternalSemaphoreHandleTypeFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd) | -VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32) | -VkFlags(ExternalSemaphoreHandleTypeFlagBits::eOpaqueWin32Kmt) | -VkFlags(ExternalSemaphoreHandleTypeFlagBits::eD3D12Fence) | -VkFlags(ExternalSemaphoreHandleTypeFlagBits::eSyncFd) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreHandleTypeFlags operator|( ExternalSemaphoreHandleTypeFlagBits bit0, ExternalSemaphoreHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalSemaphoreHandleTypeFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreHandleTypeFlags operator&( ExternalSemaphoreHandleTypeFlagBits bit0, ExternalSemaphoreHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalSemaphoreHandleTypeFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreHandleTypeFlags operator^( ExternalSemaphoreHandleTypeFlagBits bit0, ExternalSemaphoreHandleTypeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ExternalSemaphoreHandleTypeFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ExternalSemaphoreHandleTypeFlags operator~( ExternalSemaphoreHandleTypeFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ExternalSemaphoreHandleTypeFlags( bits ) ); - } - - using ExternalSemaphoreHandleTypeFlagsKHR = ExternalSemaphoreHandleTypeFlags; - - VULKAN_HPP_INLINE std::string to_string( ExternalSemaphoreHandleTypeFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using FenceCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(FenceCreateFlagBits::eSignaled) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceCreateFlags operator|( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FenceCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceCreateFlags operator&( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FenceCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceCreateFlags operator^( FenceCreateFlagBits bit0, FenceCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FenceCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceCreateFlags operator~( FenceCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( FenceCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( FenceCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & FenceCreateFlagBits::eSignaled ) result += "Signaled | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using FenceImportFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(FenceImportFlagBits::eTemporary) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceImportFlags operator|( FenceImportFlagBits bit0, FenceImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FenceImportFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceImportFlags operator&( FenceImportFlagBits bit0, FenceImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FenceImportFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceImportFlags operator^( FenceImportFlagBits bit0, FenceImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FenceImportFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FenceImportFlags operator~( FenceImportFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( FenceImportFlags( bits ) ); - } - - using FenceImportFlagsKHR = FenceImportFlags; - - VULKAN_HPP_INLINE std::string to_string( FenceImportFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & FenceImportFlagBits::eTemporary ) result += "Temporary | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using FormatFeatureFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(FormatFeatureFlagBits::eSampledImage) | -VkFlags(FormatFeatureFlagBits::eStorageImage) | -VkFlags(FormatFeatureFlagBits::eStorageImageAtomic) | -VkFlags(FormatFeatureFlagBits::eUniformTexelBuffer) | -VkFlags(FormatFeatureFlagBits::eStorageTexelBuffer) | -VkFlags(FormatFeatureFlagBits::eStorageTexelBufferAtomic) | -VkFlags(FormatFeatureFlagBits::eVertexBuffer) | -VkFlags(FormatFeatureFlagBits::eColorAttachment) | -VkFlags(FormatFeatureFlagBits::eColorAttachmentBlend) | -VkFlags(FormatFeatureFlagBits::eDepthStencilAttachment) | -VkFlags(FormatFeatureFlagBits::eBlitSrc) | -VkFlags(FormatFeatureFlagBits::eBlitDst) | -VkFlags(FormatFeatureFlagBits::eSampledImageFilterLinear) | -VkFlags(FormatFeatureFlagBits::eTransferSrc) | -VkFlags(FormatFeatureFlagBits::eTransferDst) | -VkFlags(FormatFeatureFlagBits::eMidpointChromaSamples) | -VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionLinearFilter) | -VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionSeparateReconstructionFilter) | -VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicit) | -VkFlags(FormatFeatureFlagBits::eSampledImageYcbcrConversionChromaReconstructionExplicitForceable) | -VkFlags(FormatFeatureFlagBits::eDisjoint) | -VkFlags(FormatFeatureFlagBits::eCositedChromaSamples) | -VkFlags(FormatFeatureFlagBits::eSampledImageFilterMinmax) | -VkFlags(FormatFeatureFlagBits::eSampledImageFilterCubicIMG) | -VkFlags(FormatFeatureFlagBits::eAccelerationStructureVertexBufferKHR) | -VkFlags(FormatFeatureFlagBits::eFragmentDensityMapEXT) | -VkFlags(FormatFeatureFlagBits::eFragmentShadingRateAttachmentKHR) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags operator|( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FormatFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags operator&( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FormatFeatureFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags operator^( FormatFeatureFlagBits bit0, FormatFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FormatFeatureFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FormatFeatureFlags operator~( FormatFeatureFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( FormatFeatureFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( FormatFeatureFlags value ) - { - - if ( !value ) return "{}"; - 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::eSampledImageFilterCubicIMG ) result += "SampledImageFilterCubicIMG | "; - if ( value & FormatFeatureFlagBits::eAccelerationStructureVertexBufferKHR ) result += "AccelerationStructureVertexBufferKHR | "; - if ( value & FormatFeatureFlagBits::eFragmentDensityMapEXT ) result += "FragmentDensityMapEXT | "; - if ( value & FormatFeatureFlagBits::eFragmentShadingRateAttachmentKHR ) result += "FragmentShadingRateAttachmentKHR | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using FramebufferCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(FramebufferCreateFlagBits::eImageless) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FramebufferCreateFlags operator|( FramebufferCreateFlagBits bit0, FramebufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FramebufferCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FramebufferCreateFlags operator&( FramebufferCreateFlagBits bit0, FramebufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FramebufferCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FramebufferCreateFlags operator^( FramebufferCreateFlagBits bit0, FramebufferCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return FramebufferCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR FramebufferCreateFlags operator~( FramebufferCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( FramebufferCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( FramebufferCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & FramebufferCreateFlagBits::eImageless ) result += "Imageless | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using GeometryFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(GeometryFlagBitsKHR::eOpaque) | -VkFlags(GeometryFlagBitsKHR::eNoDuplicateAnyHitInvocation) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryFlagsKHR operator|( GeometryFlagBitsKHR bit0, GeometryFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return GeometryFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryFlagsKHR operator&( GeometryFlagBitsKHR bit0, GeometryFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return GeometryFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryFlagsKHR operator^( GeometryFlagBitsKHR bit0, GeometryFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return GeometryFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryFlagsKHR operator~( GeometryFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( GeometryFlagsKHR( bits ) ); - } - - using GeometryFlagsNV = GeometryFlagsKHR; - - VULKAN_HPP_INLINE std::string to_string( GeometryFlagsKHR value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & GeometryFlagBitsKHR::eOpaque ) result += "Opaque | "; - if ( value & GeometryFlagBitsKHR::eNoDuplicateAnyHitInvocation ) result += "NoDuplicateAnyHitInvocation | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using GeometryInstanceFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(GeometryInstanceFlagBitsKHR::eTriangleFacingCullDisable) | -VkFlags(GeometryInstanceFlagBitsKHR::eTriangleFrontCounterclockwise) | -VkFlags(GeometryInstanceFlagBitsKHR::eForceOpaque) | -VkFlags(GeometryInstanceFlagBitsKHR::eForceNoOpaque) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryInstanceFlagsKHR operator|( GeometryInstanceFlagBitsKHR bit0, GeometryInstanceFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return GeometryInstanceFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryInstanceFlagsKHR operator&( GeometryInstanceFlagBitsKHR bit0, GeometryInstanceFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return GeometryInstanceFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryInstanceFlagsKHR operator^( GeometryInstanceFlagBitsKHR bit0, GeometryInstanceFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return GeometryInstanceFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR GeometryInstanceFlagsKHR operator~( GeometryInstanceFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( GeometryInstanceFlagsKHR( bits ) ); - } - - using GeometryInstanceFlagsNV = GeometryInstanceFlagsKHR; - - VULKAN_HPP_INLINE std::string to_string( GeometryInstanceFlagsKHR value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & GeometryInstanceFlagBitsKHR::eTriangleFacingCullDisable ) result += "TriangleFacingCullDisable | "; - if ( value & GeometryInstanceFlagBitsKHR::eTriangleFrontCounterclockwise ) result += "TriangleFrontCounterclockwise | "; - if ( value & GeometryInstanceFlagBitsKHR::eForceOpaque ) result += "ForceOpaque | "; - if ( value & GeometryInstanceFlagBitsKHR::eForceNoOpaque ) result += "ForceNoOpaque | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class HeadlessSurfaceCreateFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( HeadlessSurfaceCreateFlagBitsEXT ) - { - return "(void)"; - } - - using HeadlessSurfaceCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( HeadlessSurfaceCreateFlagsEXT ) - { - - return "{}"; - } - -#ifdef VK_USE_PLATFORM_IOS_MVK - enum class IOSSurfaceCreateFlagBitsMVK : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( IOSSurfaceCreateFlagBitsMVK ) - { - return "(void)"; - } - - using IOSSurfaceCreateFlagsMVK = Flags; - - VULKAN_HPP_INLINE std::string to_string( IOSSurfaceCreateFlagsMVK ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_IOS_MVK*/ - - - using ImageAspectFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ImageAspectFlagBits::eColor) | -VkFlags(ImageAspectFlagBits::eDepth) | -VkFlags(ImageAspectFlagBits::eStencil) | -VkFlags(ImageAspectFlagBits::eMetadata) | -VkFlags(ImageAspectFlagBits::ePlane0) | -VkFlags(ImageAspectFlagBits::ePlane1) | -VkFlags(ImageAspectFlagBits::ePlane2) | -VkFlags(ImageAspectFlagBits::eMemoryPlane0EXT) | -VkFlags(ImageAspectFlagBits::eMemoryPlane1EXT) | -VkFlags(ImageAspectFlagBits::eMemoryPlane2EXT) | -VkFlags(ImageAspectFlagBits::eMemoryPlane3EXT) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageAspectFlags operator|( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageAspectFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageAspectFlags operator&( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageAspectFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageAspectFlags operator^( ImageAspectFlagBits bit0, ImageAspectFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageAspectFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageAspectFlags operator~( ImageAspectFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ImageAspectFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ImageAspectFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ImageCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ImageCreateFlagBits::eSparseBinding) | -VkFlags(ImageCreateFlagBits::eSparseResidency) | -VkFlags(ImageCreateFlagBits::eSparseAliased) | -VkFlags(ImageCreateFlagBits::eMutableFormat) | -VkFlags(ImageCreateFlagBits::eCubeCompatible) | -VkFlags(ImageCreateFlagBits::eAlias) | -VkFlags(ImageCreateFlagBits::eSplitInstanceBindRegions) | -VkFlags(ImageCreateFlagBits::e2DArrayCompatible) | -VkFlags(ImageCreateFlagBits::eBlockTexelViewCompatible) | -VkFlags(ImageCreateFlagBits::eExtendedUsage) | -VkFlags(ImageCreateFlagBits::eProtected) | -VkFlags(ImageCreateFlagBits::eDisjoint) | -VkFlags(ImageCreateFlagBits::eCornerSampledNV) | -VkFlags(ImageCreateFlagBits::eSampleLocationsCompatibleDepthEXT) | -VkFlags(ImageCreateFlagBits::eSubsampledEXT) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageCreateFlags operator|( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageCreateFlags operator&( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageCreateFlags operator^( ImageCreateFlagBits bit0, ImageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageCreateFlags operator~( ImageCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ImageCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ImageCreateFlags value ) - { - - if ( !value ) return "{}"; - 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::eSampleLocationsCompatibleDepthEXT ) result += "SampleLocationsCompatibleDepthEXT | "; - if ( value & ImageCreateFlagBits::eSubsampledEXT ) result += "SubsampledEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - -#ifdef VK_USE_PLATFORM_FUCHSIA - enum class ImagePipeSurfaceCreateFlagBitsFUCHSIA : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( ImagePipeSurfaceCreateFlagBitsFUCHSIA ) - { - return "(void)"; - } - - using ImagePipeSurfaceCreateFlagsFUCHSIA = Flags; - - VULKAN_HPP_INLINE std::string to_string( ImagePipeSurfaceCreateFlagsFUCHSIA ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - - - using ImageUsageFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ImageUsageFlagBits::eTransferSrc) | -VkFlags(ImageUsageFlagBits::eTransferDst) | -VkFlags(ImageUsageFlagBits::eSampled) | -VkFlags(ImageUsageFlagBits::eStorage) | -VkFlags(ImageUsageFlagBits::eColorAttachment) | -VkFlags(ImageUsageFlagBits::eDepthStencilAttachment) | -VkFlags(ImageUsageFlagBits::eTransientAttachment) | -VkFlags(ImageUsageFlagBits::eInputAttachment) | -VkFlags(ImageUsageFlagBits::eShadingRateImageNV) | -VkFlags(ImageUsageFlagBits::eFragmentDensityMapEXT) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageUsageFlags operator|( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageUsageFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageUsageFlags operator&( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageUsageFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageUsageFlags operator^( ImageUsageFlagBits bit0, ImageUsageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageUsageFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageUsageFlags operator~( ImageUsageFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ImageUsageFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ImageUsageFlags value ) - { - - if ( !value ) return "{}"; - 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::eShadingRateImageNV ) result += "ShadingRateImageNV | "; - if ( value & ImageUsageFlagBits::eFragmentDensityMapEXT ) result += "FragmentDensityMapEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ImageViewCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT) | -VkFlags(ImageViewCreateFlagBits::eFragmentDensityMapDeferredEXT) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageViewCreateFlags operator|( ImageViewCreateFlagBits bit0, ImageViewCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageViewCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageViewCreateFlags operator&( ImageViewCreateFlagBits bit0, ImageViewCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageViewCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageViewCreateFlags operator^( ImageViewCreateFlagBits bit0, ImageViewCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ImageViewCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ImageViewCreateFlags operator~( ImageViewCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ImageViewCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ImageViewCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & ImageViewCreateFlagBits::eFragmentDensityMapDynamicEXT ) result += "FragmentDensityMapDynamicEXT | "; - if ( value & ImageViewCreateFlagBits::eFragmentDensityMapDeferredEXT ) result += "FragmentDensityMapDeferredEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using IndirectCommandsLayoutUsageFlagsNV = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(IndirectCommandsLayoutUsageFlagBitsNV::eExplicitPreprocess) | -VkFlags(IndirectCommandsLayoutUsageFlagBitsNV::eIndexedSequences) | -VkFlags(IndirectCommandsLayoutUsageFlagBitsNV::eUnorderedSequences) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutUsageFlagsNV operator|( IndirectCommandsLayoutUsageFlagBitsNV bit0, IndirectCommandsLayoutUsageFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return IndirectCommandsLayoutUsageFlagsNV( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutUsageFlagsNV operator&( IndirectCommandsLayoutUsageFlagBitsNV bit0, IndirectCommandsLayoutUsageFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return IndirectCommandsLayoutUsageFlagsNV( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutUsageFlagsNV operator^( IndirectCommandsLayoutUsageFlagBitsNV bit0, IndirectCommandsLayoutUsageFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return IndirectCommandsLayoutUsageFlagsNV( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutUsageFlagsNV operator~( IndirectCommandsLayoutUsageFlagBitsNV bits ) VULKAN_HPP_NOEXCEPT - { - return ~( IndirectCommandsLayoutUsageFlagsNV( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( IndirectCommandsLayoutUsageFlagsNV value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & IndirectCommandsLayoutUsageFlagBitsNV::eExplicitPreprocess ) result += "ExplicitPreprocess | "; - if ( value & IndirectCommandsLayoutUsageFlagBitsNV::eIndexedSequences ) result += "IndexedSequences | "; - if ( value & IndirectCommandsLayoutUsageFlagBitsNV::eUnorderedSequences ) result += "UnorderedSequences | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using IndirectStateFlagsNV = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(IndirectStateFlagBitsNV::eFlagFrontface) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectStateFlagsNV operator|( IndirectStateFlagBitsNV bit0, IndirectStateFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return IndirectStateFlagsNV( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectStateFlagsNV operator&( IndirectStateFlagBitsNV bit0, IndirectStateFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return IndirectStateFlagsNV( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectStateFlagsNV operator^( IndirectStateFlagBitsNV bit0, IndirectStateFlagBitsNV bit1 ) VULKAN_HPP_NOEXCEPT - { - return IndirectStateFlagsNV( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR IndirectStateFlagsNV operator~( IndirectStateFlagBitsNV bits ) VULKAN_HPP_NOEXCEPT - { - return ~( IndirectStateFlagsNV( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( IndirectStateFlagsNV value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & IndirectStateFlagBitsNV::eFlagFrontface ) result += "FlagFrontface | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using InstanceCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( InstanceCreateFlags ) - { - - return "{}"; - } - -#ifdef VK_USE_PLATFORM_MACOS_MVK - enum class MacOSSurfaceCreateFlagBitsMVK : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( MacOSSurfaceCreateFlagBitsMVK ) - { - return "(void)"; - } - - using MacOSSurfaceCreateFlagsMVK = Flags; - - VULKAN_HPP_INLINE std::string to_string( MacOSSurfaceCreateFlagsMVK ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ - - - using MemoryAllocateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(MemoryAllocateFlagBits::eDeviceMask) | -VkFlags(MemoryAllocateFlagBits::eDeviceAddress) | -VkFlags(MemoryAllocateFlagBits::eDeviceAddressCaptureReplay) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryAllocateFlags operator|( MemoryAllocateFlagBits bit0, MemoryAllocateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return MemoryAllocateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryAllocateFlags operator&( MemoryAllocateFlagBits bit0, MemoryAllocateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return MemoryAllocateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryAllocateFlags operator^( MemoryAllocateFlagBits bit0, MemoryAllocateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return MemoryAllocateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryAllocateFlags operator~( MemoryAllocateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( MemoryAllocateFlags( bits ) ); - } - - using MemoryAllocateFlagsKHR = MemoryAllocateFlags; - - VULKAN_HPP_INLINE std::string to_string( MemoryAllocateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & MemoryAllocateFlagBits::eDeviceMask ) result += "DeviceMask | "; - if ( value & MemoryAllocateFlagBits::eDeviceAddress ) result += "DeviceAddress | "; - if ( value & MemoryAllocateFlagBits::eDeviceAddressCaptureReplay ) result += "DeviceAddressCaptureReplay | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using MemoryHeapFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(MemoryHeapFlagBits::eDeviceLocal) | -VkFlags(MemoryHeapFlagBits::eMultiInstance) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryHeapFlags operator|( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return MemoryHeapFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryHeapFlags operator&( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return MemoryHeapFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryHeapFlags operator^( MemoryHeapFlagBits bit0, MemoryHeapFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return MemoryHeapFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryHeapFlags operator~( MemoryHeapFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( MemoryHeapFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( MemoryHeapFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & MemoryHeapFlagBits::eDeviceLocal ) result += "DeviceLocal | "; - if ( value & MemoryHeapFlagBits::eMultiInstance ) result += "MultiInstance | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class MemoryMapFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( MemoryMapFlagBits ) - { - return "(void)"; - } - - using MemoryMapFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( MemoryMapFlags ) - { - - return "{}"; - } - - - using MemoryPropertyFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(MemoryPropertyFlagBits::eDeviceLocal) | -VkFlags(MemoryPropertyFlagBits::eHostVisible) | -VkFlags(MemoryPropertyFlagBits::eHostCoherent) | -VkFlags(MemoryPropertyFlagBits::eHostCached) | -VkFlags(MemoryPropertyFlagBits::eLazilyAllocated) | -VkFlags(MemoryPropertyFlagBits::eProtected) | -VkFlags(MemoryPropertyFlagBits::eDeviceCoherentAMD) | -VkFlags(MemoryPropertyFlagBits::eDeviceUncachedAMD) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryPropertyFlags operator|( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return MemoryPropertyFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryPropertyFlags operator&( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return MemoryPropertyFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryPropertyFlags operator^( MemoryPropertyFlagBits bit0, MemoryPropertyFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return MemoryPropertyFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR MemoryPropertyFlags operator~( MemoryPropertyFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( MemoryPropertyFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( MemoryPropertyFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - -#ifdef VK_USE_PLATFORM_METAL_EXT - enum class MetalSurfaceCreateFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( MetalSurfaceCreateFlagBitsEXT ) - { - return "(void)"; - } - - using MetalSurfaceCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( MetalSurfaceCreateFlagsEXT ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_METAL_EXT*/ - - - using PeerMemoryFeatureFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(PeerMemoryFeatureFlagBits::eCopySrc) | -VkFlags(PeerMemoryFeatureFlagBits::eCopyDst) | -VkFlags(PeerMemoryFeatureFlagBits::eGenericSrc) | -VkFlags(PeerMemoryFeatureFlagBits::eGenericDst) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PeerMemoryFeatureFlags operator|( PeerMemoryFeatureFlagBits bit0, PeerMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PeerMemoryFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PeerMemoryFeatureFlags operator&( PeerMemoryFeatureFlagBits bit0, PeerMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PeerMemoryFeatureFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PeerMemoryFeatureFlags operator^( PeerMemoryFeatureFlagBits bit0, PeerMemoryFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PeerMemoryFeatureFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PeerMemoryFeatureFlags operator~( PeerMemoryFeatureFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( PeerMemoryFeatureFlags( bits ) ); - } - - using PeerMemoryFeatureFlagsKHR = PeerMemoryFeatureFlags; - - VULKAN_HPP_INLINE std::string to_string( PeerMemoryFeatureFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using PerformanceCounterDescriptionFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(PerformanceCounterDescriptionFlagBitsKHR::ePerformanceImpacting) | -VkFlags(PerformanceCounterDescriptionFlagBitsKHR::eConcurrentlyImpacted) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PerformanceCounterDescriptionFlagsKHR operator|( PerformanceCounterDescriptionFlagBitsKHR bit0, PerformanceCounterDescriptionFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return PerformanceCounterDescriptionFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PerformanceCounterDescriptionFlagsKHR operator&( PerformanceCounterDescriptionFlagBitsKHR bit0, PerformanceCounterDescriptionFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return PerformanceCounterDescriptionFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PerformanceCounterDescriptionFlagsKHR operator^( PerformanceCounterDescriptionFlagBitsKHR bit0, PerformanceCounterDescriptionFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return PerformanceCounterDescriptionFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PerformanceCounterDescriptionFlagsKHR operator~( PerformanceCounterDescriptionFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( PerformanceCounterDescriptionFlagsKHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( PerformanceCounterDescriptionFlagsKHR value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & PerformanceCounterDescriptionFlagBitsKHR::ePerformanceImpacting ) result += "PerformanceImpacting | "; - if ( value & PerformanceCounterDescriptionFlagBitsKHR::eConcurrentlyImpacted ) result += "ConcurrentlyImpacted | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using PipelineCacheCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(PipelineCacheCreateFlagBits::eExternallySynchronizedEXT) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCacheCreateFlags operator|( PipelineCacheCreateFlagBits bit0, PipelineCacheCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineCacheCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCacheCreateFlags operator&( PipelineCacheCreateFlagBits bit0, PipelineCacheCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineCacheCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCacheCreateFlags operator^( PipelineCacheCreateFlagBits bit0, PipelineCacheCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineCacheCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCacheCreateFlags operator~( PipelineCacheCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( PipelineCacheCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( PipelineCacheCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & PipelineCacheCreateFlagBits::eExternallySynchronizedEXT ) result += "ExternallySynchronizedEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class PipelineColorBlendStateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineColorBlendStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineColorBlendStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineColorBlendStateCreateFlags ) - { - - return "{}"; - } - - - using PipelineCompilerControlFlagsAMD = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineCompilerControlFlagsAMD ) - { - - return "{}"; - } - - enum class PipelineCoverageModulationStateCreateFlagBitsNV : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageModulationStateCreateFlagBitsNV ) - { - return "(void)"; - } - - using PipelineCoverageModulationStateCreateFlagsNV = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageModulationStateCreateFlagsNV ) - { - - return "{}"; - } - - enum class PipelineCoverageReductionStateCreateFlagBitsNV : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageReductionStateCreateFlagBitsNV ) - { - return "(void)"; - } - - using PipelineCoverageReductionStateCreateFlagsNV = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageReductionStateCreateFlagsNV ) - { - - return "{}"; - } - - enum class PipelineCoverageToColorStateCreateFlagBitsNV : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageToColorStateCreateFlagBitsNV ) - { - return "(void)"; - } - - using PipelineCoverageToColorStateCreateFlagsNV = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineCoverageToColorStateCreateFlagsNV ) - { - - return "{}"; - } - - - using PipelineCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(PipelineCreateFlagBits::eDisableOptimization) | -VkFlags(PipelineCreateFlagBits::eAllowDerivatives) | -VkFlags(PipelineCreateFlagBits::eDerivative) | -VkFlags(PipelineCreateFlagBits::eViewIndexFromDeviceIndex) | -VkFlags(PipelineCreateFlagBits::eDispatchBase) | -VkFlags(PipelineCreateFlagBits::eRayTracingNoNullAnyHitShadersKHR) | -VkFlags(PipelineCreateFlagBits::eRayTracingNoNullClosestHitShadersKHR) | -VkFlags(PipelineCreateFlagBits::eRayTracingNoNullMissShadersKHR) | -VkFlags(PipelineCreateFlagBits::eRayTracingNoNullIntersectionShadersKHR) | -VkFlags(PipelineCreateFlagBits::eRayTracingSkipTrianglesKHR) | -VkFlags(PipelineCreateFlagBits::eRayTracingSkipAabbsKHR) | -VkFlags(PipelineCreateFlagBits::eRayTracingShaderGroupHandleCaptureReplayKHR) | -VkFlags(PipelineCreateFlagBits::eDeferCompileNV) | -VkFlags(PipelineCreateFlagBits::eCaptureStatisticsKHR) | -VkFlags(PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR) | -VkFlags(PipelineCreateFlagBits::eIndirectBindableNV) | -VkFlags(PipelineCreateFlagBits::eLibraryKHR) | -VkFlags(PipelineCreateFlagBits::eFailOnPipelineCompileRequiredEXT) | -VkFlags(PipelineCreateFlagBits::eEarlyReturnOnFailureEXT) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreateFlags operator|( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreateFlags operator&( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreateFlags operator^( PipelineCreateFlagBits bit0, PipelineCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreateFlags operator~( PipelineCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( PipelineCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( PipelineCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & PipelineCreateFlagBits::eDisableOptimization ) result += "DisableOptimization | "; - if ( value & PipelineCreateFlagBits::eAllowDerivatives ) result += "AllowDerivatives | "; - if ( value & PipelineCreateFlagBits::eDerivative ) result += "Derivative | "; - if ( value & PipelineCreateFlagBits::eViewIndexFromDeviceIndex ) result += "ViewIndexFromDeviceIndex | "; - if ( value & PipelineCreateFlagBits::eDispatchBase ) result += "DispatchBase | "; - 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::eCaptureStatisticsKHR ) result += "CaptureStatisticsKHR | "; - if ( value & PipelineCreateFlagBits::eCaptureInternalRepresentationsKHR ) result += "CaptureInternalRepresentationsKHR | "; - if ( value & PipelineCreateFlagBits::eIndirectBindableNV ) result += "IndirectBindableNV | "; - if ( value & PipelineCreateFlagBits::eLibraryKHR ) result += "LibraryKHR | "; - if ( value & PipelineCreateFlagBits::eFailOnPipelineCompileRequiredEXT ) result += "FailOnPipelineCompileRequiredEXT | "; - if ( value & PipelineCreateFlagBits::eEarlyReturnOnFailureEXT ) result += "EarlyReturnOnFailureEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using PipelineCreationFeedbackFlagsEXT = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(PipelineCreationFeedbackFlagBitsEXT::eValid) | -VkFlags(PipelineCreationFeedbackFlagBitsEXT::eApplicationPipelineCacheHit) | -VkFlags(PipelineCreationFeedbackFlagBitsEXT::eBasePipelineAcceleration) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackFlagsEXT operator|( PipelineCreationFeedbackFlagBitsEXT bit0, PipelineCreationFeedbackFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineCreationFeedbackFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackFlagsEXT operator&( PipelineCreationFeedbackFlagBitsEXT bit0, PipelineCreationFeedbackFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineCreationFeedbackFlagsEXT( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackFlagsEXT operator^( PipelineCreationFeedbackFlagBitsEXT bit0, PipelineCreationFeedbackFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineCreationFeedbackFlagsEXT( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackFlagsEXT operator~( PipelineCreationFeedbackFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT - { - return ~( PipelineCreationFeedbackFlagsEXT( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( PipelineCreationFeedbackFlagsEXT value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & PipelineCreationFeedbackFlagBitsEXT::eValid ) result += "Valid | "; - if ( value & PipelineCreationFeedbackFlagBitsEXT::eApplicationPipelineCacheHit ) result += "ApplicationPipelineCacheHit | "; - if ( value & PipelineCreationFeedbackFlagBitsEXT::eBasePipelineAcceleration ) result += "BasePipelineAcceleration | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class PipelineDepthStencilStateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineDepthStencilStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineDepthStencilStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineDepthStencilStateCreateFlags ) - { - - return "{}"; - } - - enum class PipelineDiscardRectangleStateCreateFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineDiscardRectangleStateCreateFlagBitsEXT ) - { - return "(void)"; - } - - using PipelineDiscardRectangleStateCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineDiscardRectangleStateCreateFlagsEXT ) - { - - return "{}"; - } - - enum class PipelineDynamicStateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineDynamicStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineDynamicStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineDynamicStateCreateFlags ) - { - - return "{}"; - } - - enum class PipelineInputAssemblyStateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineInputAssemblyStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineInputAssemblyStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineInputAssemblyStateCreateFlags ) - { - - return "{}"; - } - - enum class PipelineLayoutCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineLayoutCreateFlagBits ) - { - return "(void)"; - } - - using PipelineLayoutCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineLayoutCreateFlags ) - { - - return "{}"; - } - - enum class PipelineMultisampleStateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineMultisampleStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineMultisampleStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineMultisampleStateCreateFlags ) - { - - return "{}"; - } - - enum class PipelineRasterizationConservativeStateCreateFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationConservativeStateCreateFlagBitsEXT ) - { - return "(void)"; - } - - using PipelineRasterizationConservativeStateCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationConservativeStateCreateFlagsEXT ) - { - - return "{}"; - } - - enum class PipelineRasterizationDepthClipStateCreateFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationDepthClipStateCreateFlagBitsEXT ) - { - return "(void)"; - } - - using PipelineRasterizationDepthClipStateCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationDepthClipStateCreateFlagsEXT ) - { - - return "{}"; - } - - enum class PipelineRasterizationStateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineRasterizationStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateCreateFlags ) - { - - return "{}"; - } - - enum class PipelineRasterizationStateStreamCreateFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateStreamCreateFlagBitsEXT ) - { - return "(void)"; - } - - using PipelineRasterizationStateStreamCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineRasterizationStateStreamCreateFlagsEXT ) - { - - return "{}"; - } - - - using PipelineShaderStageCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSizeEXT) | -VkFlags(PipelineShaderStageCreateFlagBits::eRequireFullSubgroupsEXT) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateFlags operator|( PipelineShaderStageCreateFlagBits bit0, PipelineShaderStageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineShaderStageCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateFlags operator&( PipelineShaderStageCreateFlagBits bit0, PipelineShaderStageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineShaderStageCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateFlags operator^( PipelineShaderStageCreateFlagBits bit0, PipelineShaderStageCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineShaderStageCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateFlags operator~( PipelineShaderStageCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( PipelineShaderStageCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( PipelineShaderStageCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & PipelineShaderStageCreateFlagBits::eAllowVaryingSubgroupSizeEXT ) result += "AllowVaryingSubgroupSizeEXT | "; - if ( value & PipelineShaderStageCreateFlagBits::eRequireFullSubgroupsEXT ) result += "RequireFullSubgroupsEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using PipelineStageFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(PipelineStageFlagBits::eTopOfPipe) | -VkFlags(PipelineStageFlagBits::eDrawIndirect) | -VkFlags(PipelineStageFlagBits::eVertexInput) | -VkFlags(PipelineStageFlagBits::eVertexShader) | -VkFlags(PipelineStageFlagBits::eTessellationControlShader) | -VkFlags(PipelineStageFlagBits::eTessellationEvaluationShader) | -VkFlags(PipelineStageFlagBits::eGeometryShader) | -VkFlags(PipelineStageFlagBits::eFragmentShader) | -VkFlags(PipelineStageFlagBits::eEarlyFragmentTests) | -VkFlags(PipelineStageFlagBits::eLateFragmentTests) | -VkFlags(PipelineStageFlagBits::eColorAttachmentOutput) | -VkFlags(PipelineStageFlagBits::eComputeShader) | -VkFlags(PipelineStageFlagBits::eTransfer) | -VkFlags(PipelineStageFlagBits::eBottomOfPipe) | -VkFlags(PipelineStageFlagBits::eHost) | -VkFlags(PipelineStageFlagBits::eAllGraphics) | -VkFlags(PipelineStageFlagBits::eAllCommands) | -VkFlags(PipelineStageFlagBits::eTransformFeedbackEXT) | -VkFlags(PipelineStageFlagBits::eConditionalRenderingEXT) | -VkFlags(PipelineStageFlagBits::eAccelerationStructureBuildKHR) | -VkFlags(PipelineStageFlagBits::eRayTracingShaderKHR) | -VkFlags(PipelineStageFlagBits::eShadingRateImageNV) | -VkFlags(PipelineStageFlagBits::eTaskShaderNV) | -VkFlags(PipelineStageFlagBits::eMeshShaderNV) | -VkFlags(PipelineStageFlagBits::eFragmentDensityProcessEXT) | -VkFlags(PipelineStageFlagBits::eCommandPreprocessNV) | -VkFlags(PipelineStageFlagBits::eNoneKHR) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags operator|( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineStageFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags operator&( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineStageFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags operator^( PipelineStageFlagBits bit0, PipelineStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineStageFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags operator~( PipelineStageFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( PipelineStageFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( PipelineStageFlags value ) - { - - if ( !value ) return "{}"; - 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::eShadingRateImageNV ) result += "ShadingRateImageNV | "; - if ( value & PipelineStageFlagBits::eTaskShaderNV ) result += "TaskShaderNV | "; - if ( value & PipelineStageFlagBits::eMeshShaderNV ) result += "MeshShaderNV | "; - if ( value & PipelineStageFlagBits::eFragmentDensityProcessEXT ) result += "FragmentDensityProcessEXT | "; - if ( value & PipelineStageFlagBits::eCommandPreprocessNV ) result += "CommandPreprocessNV | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using PipelineStageFlags2KHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags64 - { - allFlags = VkFlags64(PipelineStageFlagBits2KHR::e2None) | -VkFlags64(PipelineStageFlagBits2KHR::e2TopOfPipe) | -VkFlags64(PipelineStageFlagBits2KHR::e2DrawIndirect) | -VkFlags64(PipelineStageFlagBits2KHR::e2VertexInput) | -VkFlags64(PipelineStageFlagBits2KHR::e2VertexShader) | -VkFlags64(PipelineStageFlagBits2KHR::e2TessellationControlShader) | -VkFlags64(PipelineStageFlagBits2KHR::e2TessellationEvaluationShader) | -VkFlags64(PipelineStageFlagBits2KHR::e2GeometryShader) | -VkFlags64(PipelineStageFlagBits2KHR::e2FragmentShader) | -VkFlags64(PipelineStageFlagBits2KHR::e2EarlyFragmentTests) | -VkFlags64(PipelineStageFlagBits2KHR::e2LateFragmentTests) | -VkFlags64(PipelineStageFlagBits2KHR::e2ColorAttachmentOutput) | -VkFlags64(PipelineStageFlagBits2KHR::e2ComputeShader) | -VkFlags64(PipelineStageFlagBits2KHR::e2AllTransfer) | -VkFlags64(PipelineStageFlagBits2KHR::e2BottomOfPipe) | -VkFlags64(PipelineStageFlagBits2KHR::e2Host) | -VkFlags64(PipelineStageFlagBits2KHR::e2AllGraphics) | -VkFlags64(PipelineStageFlagBits2KHR::e2AllCommands) | -VkFlags64(PipelineStageFlagBits2KHR::e2Copy) | -VkFlags64(PipelineStageFlagBits2KHR::e2Resolve) | -VkFlags64(PipelineStageFlagBits2KHR::e2Blit) | -VkFlags64(PipelineStageFlagBits2KHR::e2Clear) | -VkFlags64(PipelineStageFlagBits2KHR::e2IndexInput) | -VkFlags64(PipelineStageFlagBits2KHR::e2VertexAttributeInput) | -VkFlags64(PipelineStageFlagBits2KHR::e2PreRasterizationShaders) | -VkFlags64(PipelineStageFlagBits2KHR::e2TransformFeedbackExt) | -VkFlags64(PipelineStageFlagBits2KHR::e2ConditionalRenderingExt) | -VkFlags64(PipelineStageFlagBits2KHR::e2CommandPreprocessNv) | -VkFlags64(PipelineStageFlagBits2KHR::e2FragmentShadingRateAttachment) | -VkFlags64(PipelineStageFlagBits2KHR::e2AccelerationStructureBuild) | -VkFlags64(PipelineStageFlagBits2KHR::e2RayTracingShader) | -VkFlags64(PipelineStageFlagBits2KHR::e2FragmentDensityProcessExt) | -VkFlags64(PipelineStageFlagBits2KHR::e2TaskShaderNv) | -VkFlags64(PipelineStageFlagBits2KHR::e2MeshShaderNv) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags2KHR operator|( PipelineStageFlagBits2KHR bit0, PipelineStageFlagBits2KHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineStageFlags2KHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags2KHR operator&( PipelineStageFlagBits2KHR bit0, PipelineStageFlagBits2KHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineStageFlags2KHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags2KHR operator^( PipelineStageFlagBits2KHR bit0, PipelineStageFlagBits2KHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return PipelineStageFlags2KHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR PipelineStageFlags2KHR operator~( PipelineStageFlagBits2KHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( PipelineStageFlags2KHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( PipelineStageFlags2KHR value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & PipelineStageFlagBits2KHR::e2TopOfPipe ) result += "2TopOfPipe | "; - if ( value & PipelineStageFlagBits2KHR::e2DrawIndirect ) result += "2DrawIndirect | "; - if ( value & PipelineStageFlagBits2KHR::e2VertexInput ) result += "2VertexInput | "; - if ( value & PipelineStageFlagBits2KHR::e2VertexShader ) result += "2VertexShader | "; - if ( value & PipelineStageFlagBits2KHR::e2TessellationControlShader ) result += "2TessellationControlShader | "; - if ( value & PipelineStageFlagBits2KHR::e2TessellationEvaluationShader ) result += "2TessellationEvaluationShader | "; - if ( value & PipelineStageFlagBits2KHR::e2GeometryShader ) result += "2GeometryShader | "; - if ( value & PipelineStageFlagBits2KHR::e2FragmentShader ) result += "2FragmentShader | "; - if ( value & PipelineStageFlagBits2KHR::e2EarlyFragmentTests ) result += "2EarlyFragmentTests | "; - if ( value & PipelineStageFlagBits2KHR::e2LateFragmentTests ) result += "2LateFragmentTests | "; - if ( value & PipelineStageFlagBits2KHR::e2ColorAttachmentOutput ) result += "2ColorAttachmentOutput | "; - if ( value & PipelineStageFlagBits2KHR::e2ComputeShader ) result += "2ComputeShader | "; - if ( value & PipelineStageFlagBits2KHR::e2AllTransfer ) result += "2AllTransfer | "; - if ( value & PipelineStageFlagBits2KHR::e2BottomOfPipe ) result += "2BottomOfPipe | "; - if ( value & PipelineStageFlagBits2KHR::e2Host ) result += "2Host | "; - if ( value & PipelineStageFlagBits2KHR::e2AllGraphics ) result += "2AllGraphics | "; - if ( value & PipelineStageFlagBits2KHR::e2AllCommands ) result += "2AllCommands | "; - if ( value & PipelineStageFlagBits2KHR::e2Copy ) result += "2Copy | "; - if ( value & PipelineStageFlagBits2KHR::e2Resolve ) result += "2Resolve | "; - if ( value & PipelineStageFlagBits2KHR::e2Blit ) result += "2Blit | "; - if ( value & PipelineStageFlagBits2KHR::e2Clear ) result += "2Clear | "; - if ( value & PipelineStageFlagBits2KHR::e2IndexInput ) result += "2IndexInput | "; - if ( value & PipelineStageFlagBits2KHR::e2VertexAttributeInput ) result += "2VertexAttributeInput | "; - if ( value & PipelineStageFlagBits2KHR::e2PreRasterizationShaders ) result += "2PreRasterizationShaders | "; - if ( value & PipelineStageFlagBits2KHR::e2TransformFeedbackExt ) result += "2TransformFeedbackExt | "; - if ( value & PipelineStageFlagBits2KHR::e2ConditionalRenderingExt ) result += "2ConditionalRenderingExt | "; - if ( value & PipelineStageFlagBits2KHR::e2CommandPreprocessNv ) result += "2CommandPreprocessNv | "; - if ( value & PipelineStageFlagBits2KHR::e2FragmentShadingRateAttachment ) result += "2FragmentShadingRateAttachment | "; - if ( value & PipelineStageFlagBits2KHR::e2AccelerationStructureBuild ) result += "2AccelerationStructureBuild | "; - if ( value & PipelineStageFlagBits2KHR::e2RayTracingShader ) result += "2RayTracingShader | "; - if ( value & PipelineStageFlagBits2KHR::e2FragmentDensityProcessExt ) result += "2FragmentDensityProcessExt | "; - if ( value & PipelineStageFlagBits2KHR::e2TaskShaderNv ) result += "2TaskShaderNv | "; - if ( value & PipelineStageFlagBits2KHR::e2MeshShaderNv ) result += "2MeshShaderNv | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class PipelineTessellationStateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineTessellationStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineTessellationStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineTessellationStateCreateFlags ) - { - - return "{}"; - } - - enum class PipelineVertexInputStateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineVertexInputStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineVertexInputStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineVertexInputStateCreateFlags ) - { - - return "{}"; - } - - enum class PipelineViewportStateCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineViewportStateCreateFlagBits ) - { - return "(void)"; - } - - using PipelineViewportStateCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineViewportStateCreateFlags ) - { - - return "{}"; - } - - enum class PipelineViewportSwizzleStateCreateFlagBitsNV : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( PipelineViewportSwizzleStateCreateFlagBitsNV ) - { - return "(void)"; - } - - using PipelineViewportSwizzleStateCreateFlagsNV = Flags; - - VULKAN_HPP_INLINE std::string to_string( PipelineViewportSwizzleStateCreateFlagsNV ) - { - - return "{}"; - } - - - using PrivateDataSlotCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( PrivateDataSlotCreateFlagsEXT ) - { - - return "{}"; - } - - - using QueryControlFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(QueryControlFlagBits::ePrecise) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryControlFlags operator|( QueryControlFlagBits bit0, QueryControlFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueryControlFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryControlFlags operator&( QueryControlFlagBits bit0, QueryControlFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueryControlFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryControlFlags operator^( QueryControlFlagBits bit0, QueryControlFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueryControlFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryControlFlags operator~( QueryControlFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( QueryControlFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( QueryControlFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & QueryControlFlagBits::ePrecise ) result += "Precise | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using QueryPipelineStatisticFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(QueryPipelineStatisticFlagBits::eInputAssemblyVertices) | -VkFlags(QueryPipelineStatisticFlagBits::eInputAssemblyPrimitives) | -VkFlags(QueryPipelineStatisticFlagBits::eVertexShaderInvocations) | -VkFlags(QueryPipelineStatisticFlagBits::eGeometryShaderInvocations) | -VkFlags(QueryPipelineStatisticFlagBits::eGeometryShaderPrimitives) | -VkFlags(QueryPipelineStatisticFlagBits::eClippingInvocations) | -VkFlags(QueryPipelineStatisticFlagBits::eClippingPrimitives) | -VkFlags(QueryPipelineStatisticFlagBits::eFragmentShaderInvocations) | -VkFlags(QueryPipelineStatisticFlagBits::eTessellationControlShaderPatches) | -VkFlags(QueryPipelineStatisticFlagBits::eTessellationEvaluationShaderInvocations) | -VkFlags(QueryPipelineStatisticFlagBits::eComputeShaderInvocations) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryPipelineStatisticFlags operator|( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueryPipelineStatisticFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryPipelineStatisticFlags operator&( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueryPipelineStatisticFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryPipelineStatisticFlags operator^( QueryPipelineStatisticFlagBits bit0, QueryPipelineStatisticFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueryPipelineStatisticFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryPipelineStatisticFlags operator~( QueryPipelineStatisticFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( QueryPipelineStatisticFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( QueryPipelineStatisticFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using QueryPoolCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( QueryPoolCreateFlags ) - { - - return "{}"; - } - - - using QueryResultFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(QueryResultFlagBits::e64) | -VkFlags(QueryResultFlagBits::eWait) | -VkFlags(QueryResultFlagBits::eWithAvailability) | -VkFlags(QueryResultFlagBits::ePartial) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryResultFlags operator|( QueryResultFlagBits bit0, QueryResultFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueryResultFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryResultFlags operator&( QueryResultFlagBits bit0, QueryResultFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueryResultFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryResultFlags operator^( QueryResultFlagBits bit0, QueryResultFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueryResultFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueryResultFlags operator~( QueryResultFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( QueryResultFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( QueryResultFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using QueueFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(QueueFlagBits::eGraphics) | -VkFlags(QueueFlagBits::eCompute) | -VkFlags(QueueFlagBits::eTransfer) | -VkFlags(QueueFlagBits::eSparseBinding) | -VkFlags(QueueFlagBits::eProtected) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueueFlags operator|( QueueFlagBits bit0, QueueFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueueFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueueFlags operator&( QueueFlagBits bit0, QueueFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueueFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueueFlags operator^( QueueFlagBits bit0, QueueFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return QueueFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR QueueFlags operator~( QueueFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( QueueFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( QueueFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using RenderPassCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(RenderPassCreateFlagBits::eTransformQCOM) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderPassCreateFlags operator|( RenderPassCreateFlagBits bit0, RenderPassCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return RenderPassCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderPassCreateFlags operator&( RenderPassCreateFlagBits bit0, RenderPassCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return RenderPassCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderPassCreateFlags operator^( RenderPassCreateFlagBits bit0, RenderPassCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return RenderPassCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR RenderPassCreateFlags operator~( RenderPassCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( RenderPassCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( RenderPassCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & RenderPassCreateFlagBits::eTransformQCOM ) result += "TransformQCOM | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ResolveModeFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ResolveModeFlagBits::eNone) | -VkFlags(ResolveModeFlagBits::eSampleZero) | -VkFlags(ResolveModeFlagBits::eAverage) | -VkFlags(ResolveModeFlagBits::eMin) | -VkFlags(ResolveModeFlagBits::eMax) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ResolveModeFlags operator|( ResolveModeFlagBits bit0, ResolveModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ResolveModeFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ResolveModeFlags operator&( ResolveModeFlagBits bit0, ResolveModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ResolveModeFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ResolveModeFlags operator^( ResolveModeFlagBits bit0, ResolveModeFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ResolveModeFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ResolveModeFlags operator~( ResolveModeFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ResolveModeFlags( bits ) ); - } - - using ResolveModeFlagsKHR = ResolveModeFlags; - - VULKAN_HPP_INLINE std::string to_string( ResolveModeFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SampleCountFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SampleCountFlagBits::e1) | -VkFlags(SampleCountFlagBits::e2) | -VkFlags(SampleCountFlagBits::e4) | -VkFlags(SampleCountFlagBits::e8) | -VkFlags(SampleCountFlagBits::e16) | -VkFlags(SampleCountFlagBits::e32) | -VkFlags(SampleCountFlagBits::e64) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SampleCountFlags operator|( SampleCountFlagBits bit0, SampleCountFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SampleCountFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SampleCountFlags operator&( SampleCountFlagBits bit0, SampleCountFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SampleCountFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SampleCountFlags operator^( SampleCountFlagBits bit0, SampleCountFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SampleCountFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SampleCountFlags operator~( SampleCountFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SampleCountFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SampleCountFlags value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SamplerCreateFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SamplerCreateFlagBits::eSubsampledEXT) | -VkFlags(SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SamplerCreateFlags operator|( SamplerCreateFlagBits bit0, SamplerCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SamplerCreateFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SamplerCreateFlags operator&( SamplerCreateFlagBits bit0, SamplerCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SamplerCreateFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SamplerCreateFlags operator^( SamplerCreateFlagBits bit0, SamplerCreateFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SamplerCreateFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SamplerCreateFlags operator~( SamplerCreateFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SamplerCreateFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SamplerCreateFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & SamplerCreateFlagBits::eSubsampledEXT ) result += "SubsampledEXT | "; - if ( value & SamplerCreateFlagBits::eSubsampledCoarseReconstructionEXT ) result += "SubsampledCoarseReconstructionEXT | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - -#ifdef VK_USE_PLATFORM_SCREEN_QNX - enum class ScreenSurfaceCreateFlagBitsQNX : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( ScreenSurfaceCreateFlagBitsQNX ) - { - return "(void)"; - } - - using ScreenSurfaceCreateFlagsQNX = Flags; - - VULKAN_HPP_INLINE std::string to_string( ScreenSurfaceCreateFlagsQNX ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - - enum class SemaphoreCreateFlagBits : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreCreateFlagBits ) - { - return "(void)"; - } - - using SemaphoreCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreCreateFlags ) - { - - return "{}"; - } - - - using SemaphoreImportFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SemaphoreImportFlagBits::eTemporary) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreImportFlags operator|( SemaphoreImportFlagBits bit0, SemaphoreImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SemaphoreImportFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreImportFlags operator&( SemaphoreImportFlagBits bit0, SemaphoreImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SemaphoreImportFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreImportFlags operator^( SemaphoreImportFlagBits bit0, SemaphoreImportFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SemaphoreImportFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreImportFlags operator~( SemaphoreImportFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SemaphoreImportFlags( bits ) ); - } - - using SemaphoreImportFlagsKHR = SemaphoreImportFlags; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreImportFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & SemaphoreImportFlagBits::eTemporary ) result += "Temporary | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SemaphoreWaitFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SemaphoreWaitFlagBits::eAny) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreWaitFlags operator|( SemaphoreWaitFlagBits bit0, SemaphoreWaitFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SemaphoreWaitFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreWaitFlags operator&( SemaphoreWaitFlagBits bit0, SemaphoreWaitFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SemaphoreWaitFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreWaitFlags operator^( SemaphoreWaitFlagBits bit0, SemaphoreWaitFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SemaphoreWaitFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SemaphoreWaitFlags operator~( SemaphoreWaitFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SemaphoreWaitFlags( bits ) ); - } - - using SemaphoreWaitFlagsKHR = SemaphoreWaitFlags; - - VULKAN_HPP_INLINE std::string to_string( SemaphoreWaitFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & SemaphoreWaitFlagBits::eAny ) result += "Any | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ShaderCorePropertiesFlagsAMD = Flags; - - VULKAN_HPP_INLINE std::string to_string( ShaderCorePropertiesFlagsAMD ) - { - - return "{}"; - } - - - using ShaderModuleCreateFlags = Flags; - - VULKAN_HPP_INLINE std::string to_string( ShaderModuleCreateFlags ) - { - - return "{}"; - } - - - using ShaderStageFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ShaderStageFlagBits::eVertex) | -VkFlags(ShaderStageFlagBits::eTessellationControl) | -VkFlags(ShaderStageFlagBits::eTessellationEvaluation) | -VkFlags(ShaderStageFlagBits::eGeometry) | -VkFlags(ShaderStageFlagBits::eFragment) | -VkFlags(ShaderStageFlagBits::eCompute) | -VkFlags(ShaderStageFlagBits::eAllGraphics) | -VkFlags(ShaderStageFlagBits::eAll) | -VkFlags(ShaderStageFlagBits::eRaygenKHR) | -VkFlags(ShaderStageFlagBits::eAnyHitKHR) | -VkFlags(ShaderStageFlagBits::eClosestHitKHR) | -VkFlags(ShaderStageFlagBits::eMissKHR) | -VkFlags(ShaderStageFlagBits::eIntersectionKHR) | -VkFlags(ShaderStageFlagBits::eCallableKHR) | -VkFlags(ShaderStageFlagBits::eTaskNV) | -VkFlags(ShaderStageFlagBits::eMeshNV) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ShaderStageFlags operator|( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ShaderStageFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ShaderStageFlags operator&( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ShaderStageFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ShaderStageFlags operator^( ShaderStageFlagBits bit0, ShaderStageFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return ShaderStageFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ShaderStageFlags operator~( ShaderStageFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ShaderStageFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ShaderStageFlags value ) - { - - if ( !value ) return "{}"; - 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::eTaskNV ) result += "TaskNV | "; - if ( value & ShaderStageFlagBits::eMeshNV ) result += "MeshNV | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SparseImageFormatFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SparseImageFormatFlagBits::eSingleMiptail) | -VkFlags(SparseImageFormatFlagBits::eAlignedMipSize) | -VkFlags(SparseImageFormatFlagBits::eNonstandardBlockSize) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseImageFormatFlags operator|( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SparseImageFormatFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseImageFormatFlags operator&( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SparseImageFormatFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseImageFormatFlags operator^( SparseImageFormatFlagBits bit0, SparseImageFormatFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SparseImageFormatFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseImageFormatFlags operator~( SparseImageFormatFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SparseImageFormatFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SparseImageFormatFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & SparseImageFormatFlagBits::eSingleMiptail ) result += "SingleMiptail | "; - if ( value & SparseImageFormatFlagBits::eAlignedMipSize ) result += "AlignedMipSize | "; - if ( value & SparseImageFormatFlagBits::eNonstandardBlockSize ) result += "NonstandardBlockSize | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SparseMemoryBindFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SparseMemoryBindFlagBits::eMetadata) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseMemoryBindFlags operator|( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SparseMemoryBindFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseMemoryBindFlags operator&( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SparseMemoryBindFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseMemoryBindFlags operator^( SparseMemoryBindFlagBits bit0, SparseMemoryBindFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SparseMemoryBindFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SparseMemoryBindFlags operator~( SparseMemoryBindFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SparseMemoryBindFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SparseMemoryBindFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & SparseMemoryBindFlagBits::eMetadata ) result += "Metadata | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using StencilFaceFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(StencilFaceFlagBits::eFront) | -VkFlags(StencilFaceFlagBits::eBack) | -VkFlags(StencilFaceFlagBits::eFrontAndBack) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR StencilFaceFlags operator|( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return StencilFaceFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR StencilFaceFlags operator&( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return StencilFaceFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR StencilFaceFlags operator^( StencilFaceFlagBits bit0, StencilFaceFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return StencilFaceFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR StencilFaceFlags operator~( StencilFaceFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( StencilFaceFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( StencilFaceFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & StencilFaceFlagBits::eFront ) result += "Front | "; - if ( value & StencilFaceFlagBits::eBack ) result += "Back | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - -#ifdef VK_USE_PLATFORM_GGP - enum class StreamDescriptorSurfaceCreateFlagBitsGGP : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( StreamDescriptorSurfaceCreateFlagBitsGGP ) - { - return "(void)"; - } - - using StreamDescriptorSurfaceCreateFlagsGGP = Flags; - - VULKAN_HPP_INLINE std::string to_string( StreamDescriptorSurfaceCreateFlagsGGP ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_GGP*/ - - - using SubgroupFeatureFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SubgroupFeatureFlagBits::eBasic) | -VkFlags(SubgroupFeatureFlagBits::eVote) | -VkFlags(SubgroupFeatureFlagBits::eArithmetic) | -VkFlags(SubgroupFeatureFlagBits::eBallot) | -VkFlags(SubgroupFeatureFlagBits::eShuffle) | -VkFlags(SubgroupFeatureFlagBits::eShuffleRelative) | -VkFlags(SubgroupFeatureFlagBits::eClustered) | -VkFlags(SubgroupFeatureFlagBits::eQuad) | -VkFlags(SubgroupFeatureFlagBits::ePartitionedNV) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubgroupFeatureFlags operator|( SubgroupFeatureFlagBits bit0, SubgroupFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SubgroupFeatureFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubgroupFeatureFlags operator&( SubgroupFeatureFlagBits bit0, SubgroupFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SubgroupFeatureFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubgroupFeatureFlags operator^( SubgroupFeatureFlagBits bit0, SubgroupFeatureFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SubgroupFeatureFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubgroupFeatureFlags operator~( SubgroupFeatureFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SubgroupFeatureFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SubgroupFeatureFlags value ) - { - - if ( !value ) return "{}"; - 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::ePartitionedNV ) result += "PartitionedNV | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SubmitFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SubmitFlagBitsKHR::eProtected) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubmitFlagsKHR operator|( SubmitFlagBitsKHR bit0, SubmitFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return SubmitFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubmitFlagsKHR operator&( SubmitFlagBitsKHR bit0, SubmitFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return SubmitFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubmitFlagsKHR operator^( SubmitFlagBitsKHR bit0, SubmitFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return SubmitFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubmitFlagsKHR operator~( SubmitFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SubmitFlagsKHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SubmitFlagsKHR value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & SubmitFlagBitsKHR::eProtected ) result += "Protected | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SubpassDescriptionFlags = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SubpassDescriptionFlagBits::ePerViewAttributesNVX) | -VkFlags(SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX) | -VkFlags(SubpassDescriptionFlagBits::eFragmentRegionQCOM) | -VkFlags(SubpassDescriptionFlagBits::eShaderResolveQCOM) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubpassDescriptionFlags operator|( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SubpassDescriptionFlags( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubpassDescriptionFlags operator&( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SubpassDescriptionFlags( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubpassDescriptionFlags operator^( SubpassDescriptionFlagBits bit0, SubpassDescriptionFlagBits bit1 ) VULKAN_HPP_NOEXCEPT - { - return SubpassDescriptionFlags( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SubpassDescriptionFlags operator~( SubpassDescriptionFlagBits bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SubpassDescriptionFlags( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SubpassDescriptionFlags value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & SubpassDescriptionFlagBits::ePerViewAttributesNVX ) result += "PerViewAttributesNVX | "; - if ( value & SubpassDescriptionFlagBits::ePerViewPositionXOnlyNVX ) result += "PerViewPositionXOnlyNVX | "; - if ( value & SubpassDescriptionFlagBits::eFragmentRegionQCOM ) result += "FragmentRegionQCOM | "; - if ( value & SubpassDescriptionFlagBits::eShaderResolveQCOM ) result += "ShaderResolveQCOM | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SurfaceCounterFlagsEXT = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SurfaceCounterFlagBitsEXT::eVblank) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceCounterFlagsEXT operator|( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return SurfaceCounterFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceCounterFlagsEXT operator&( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return SurfaceCounterFlagsEXT( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceCounterFlagsEXT operator^( SurfaceCounterFlagBitsEXT bit0, SurfaceCounterFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return SurfaceCounterFlagsEXT( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceCounterFlagsEXT operator~( SurfaceCounterFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SurfaceCounterFlagsEXT( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SurfaceCounterFlagsEXT value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & SurfaceCounterFlagBitsEXT::eVblank ) result += "Vblank | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SurfaceTransformFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SurfaceTransformFlagBitsKHR::eIdentity) | -VkFlags(SurfaceTransformFlagBitsKHR::eRotate90) | -VkFlags(SurfaceTransformFlagBitsKHR::eRotate180) | -VkFlags(SurfaceTransformFlagBitsKHR::eRotate270) | -VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirror) | -VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate90) | -VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate180) | -VkFlags(SurfaceTransformFlagBitsKHR::eHorizontalMirrorRotate270) | -VkFlags(SurfaceTransformFlagBitsKHR::eInherit) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceTransformFlagsKHR operator|( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return SurfaceTransformFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceTransformFlagsKHR operator&( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return SurfaceTransformFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceTransformFlagsKHR operator^( SurfaceTransformFlagBitsKHR bit0, SurfaceTransformFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return SurfaceTransformFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SurfaceTransformFlagsKHR operator~( SurfaceTransformFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SurfaceTransformFlagsKHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SurfaceTransformFlagsKHR value ) - { - - if ( !value ) return "{}"; - 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 | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using SwapchainCreateFlagsKHR = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions) | -VkFlags(SwapchainCreateFlagBitsKHR::eProtected) | -VkFlags(SwapchainCreateFlagBitsKHR::eMutableFormat) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SwapchainCreateFlagsKHR operator|( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return SwapchainCreateFlagsKHR( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SwapchainCreateFlagsKHR operator&( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return SwapchainCreateFlagsKHR( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SwapchainCreateFlagsKHR operator^( SwapchainCreateFlagBitsKHR bit0, SwapchainCreateFlagBitsKHR bit1 ) VULKAN_HPP_NOEXCEPT - { - return SwapchainCreateFlagsKHR( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR SwapchainCreateFlagsKHR operator~( SwapchainCreateFlagBitsKHR bits ) VULKAN_HPP_NOEXCEPT - { - return ~( SwapchainCreateFlagsKHR( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( SwapchainCreateFlagsKHR value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & SwapchainCreateFlagBitsKHR::eSplitInstanceBindRegions ) result += "SplitInstanceBindRegions | "; - if ( value & SwapchainCreateFlagBitsKHR::eProtected ) result += "Protected | "; - if ( value & SwapchainCreateFlagBitsKHR::eMutableFormat ) result += "MutableFormat | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - - using ToolPurposeFlagsEXT = Flags; - - template <> struct FlagTraits - { - enum : VkFlags - { - allFlags = VkFlags(ToolPurposeFlagBitsEXT::eValidation) | -VkFlags(ToolPurposeFlagBitsEXT::eProfiling) | -VkFlags(ToolPurposeFlagBitsEXT::eTracing) | -VkFlags(ToolPurposeFlagBitsEXT::eAdditionalFeatures) | -VkFlags(ToolPurposeFlagBitsEXT::eModifyingFeatures) | -VkFlags(ToolPurposeFlagBitsEXT::eDebugReporting) | -VkFlags(ToolPurposeFlagBitsEXT::eDebugMarkers) - }; - }; - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ToolPurposeFlagsEXT operator|( ToolPurposeFlagBitsEXT bit0, ToolPurposeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return ToolPurposeFlagsEXT( bit0 ) | bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ToolPurposeFlagsEXT operator&( ToolPurposeFlagBitsEXT bit0, ToolPurposeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return ToolPurposeFlagsEXT( bit0 ) & bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ToolPurposeFlagsEXT operator^( ToolPurposeFlagBitsEXT bit0, ToolPurposeFlagBitsEXT bit1 ) VULKAN_HPP_NOEXCEPT - { - return ToolPurposeFlagsEXT( bit0 ) ^ bit1; - } - - VULKAN_HPP_INLINE VULKAN_HPP_CONSTEXPR ToolPurposeFlagsEXT operator~( ToolPurposeFlagBitsEXT bits ) VULKAN_HPP_NOEXCEPT - { - return ~( ToolPurposeFlagsEXT( bits ) ); - } - - VULKAN_HPP_INLINE std::string to_string( ToolPurposeFlagsEXT value ) - { - - if ( !value ) return "{}"; - std::string result; - - if ( value & ToolPurposeFlagBitsEXT::eValidation ) result += "Validation | "; - if ( value & ToolPurposeFlagBitsEXT::eProfiling ) result += "Profiling | "; - if ( value & ToolPurposeFlagBitsEXT::eTracing ) result += "Tracing | "; - if ( value & ToolPurposeFlagBitsEXT::eAdditionalFeatures ) result += "AdditionalFeatures | "; - if ( value & ToolPurposeFlagBitsEXT::eModifyingFeatures ) result += "ModifyingFeatures | "; - if ( value & ToolPurposeFlagBitsEXT::eDebugReporting ) result += "DebugReporting | "; - if ( value & ToolPurposeFlagBitsEXT::eDebugMarkers ) result += "DebugMarkers | "; - return "{ " + result.substr(0, result.size() - 3) + " }"; - } - - enum class ValidationCacheCreateFlagBitsEXT : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( ValidationCacheCreateFlagBitsEXT ) - { - return "(void)"; - } - - using ValidationCacheCreateFlagsEXT = Flags; - - VULKAN_HPP_INLINE std::string to_string( ValidationCacheCreateFlagsEXT ) - { - - return "{}"; - } - -#ifdef VK_USE_PLATFORM_VI_NN - enum class ViSurfaceCreateFlagBitsNN : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( ViSurfaceCreateFlagBitsNN ) - { - return "(void)"; - } - - using ViSurfaceCreateFlagsNN = Flags; - - VULKAN_HPP_INLINE std::string to_string( ViSurfaceCreateFlagsNN ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_VI_NN*/ - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - enum class WaylandSurfaceCreateFlagBitsKHR : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( WaylandSurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } - - using WaylandSurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( WaylandSurfaceCreateFlagsKHR ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - enum class Win32SurfaceCreateFlagBitsKHR : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( Win32SurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } - - using Win32SurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( Win32SurfaceCreateFlagsKHR ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_XCB_KHR - enum class XcbSurfaceCreateFlagBitsKHR : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( XcbSurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } - - using XcbSurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( XcbSurfaceCreateFlagsKHR ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_XCB_KHR*/ - -#ifdef VK_USE_PLATFORM_XLIB_KHR - enum class XlibSurfaceCreateFlagBitsKHR : VkFlags - {}; - - VULKAN_HPP_INLINE std::string to_string( XlibSurfaceCreateFlagBitsKHR ) - { - return "(void)"; - } - - using XlibSurfaceCreateFlagsKHR = Flags; - - VULKAN_HPP_INLINE std::string to_string( XlibSurfaceCreateFlagsKHR ) - { - - return "{}"; - } -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ -} // namespace VULKAN_HPP_NAMESPACE - -#ifndef VULKAN_HPP_NO_EXCEPTIONS -namespace std -{ - template <> - struct is_error_code_enum : public true_type - {}; -} -#endif - -namespace VULKAN_HPP_NAMESPACE -{ -#ifndef VULKAN_HPP_NO_EXCEPTIONS - class ErrorCategoryImpl : public std::error_category - { - public: - virtual const char* name() const VULKAN_HPP_NOEXCEPT override { return VULKAN_HPP_NAMESPACE_STRING"::Result"; } - virtual std::string message(int ev) const override { return to_string(static_cast(ev)); } - }; - - class Error - { - public: - Error() VULKAN_HPP_NOEXCEPT = default; - Error(const Error&) VULKAN_HPP_NOEXCEPT = default; - virtual ~Error() VULKAN_HPP_NOEXCEPT = default; - - virtual const char* what() const VULKAN_HPP_NOEXCEPT = 0; - }; - - class LogicError : public Error, public std::logic_error - { - public: - explicit LogicError( const std::string& what ) - : Error(), std::logic_error(what) {} - explicit LogicError( char const * what ) - : Error(), std::logic_error(what) {} - - virtual const char* 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 const char* what() const VULKAN_HPP_NOEXCEPT { return std::system_error::what(); } - }; - - VULKAN_HPP_INLINE const std::error_category& 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 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 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 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 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 ValidationFailedEXTError : public SystemError - { - public: - ValidationFailedEXTError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), message ) {} - ValidationFailedEXTError( char const * message ) - : SystemError( make_error_code( Result::eErrorValidationFailedEXT ), 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 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 NotPermittedEXTError : public SystemError - { - public: - NotPermittedEXTError( std::string const& message ) - : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {} - NotPermittedEXTError( char const * message ) - : SystemError( make_error_code( Result::eErrorNotPermittedEXT ), message ) {} - }; - -#ifdef 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*/ - - [[noreturn]] static 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::eErrorOutOfPoolMemory: throw OutOfPoolMemoryError( message ); - case Result::eErrorInvalidExternalHandle: throw InvalidExternalHandleError( message ); - case Result::eErrorFragmentation: throw FragmentationError( message ); - case Result::eErrorInvalidOpaqueCaptureAddress: throw InvalidOpaqueCaptureAddressError( 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::eErrorValidationFailedEXT: throw ValidationFailedEXTError( message ); - case Result::eErrorInvalidShaderNV: throw InvalidShaderNVError( message ); - case Result::eErrorInvalidDrmFormatModifierPlaneLayoutEXT: throw InvalidDrmFormatModifierPlaneLayoutEXTError( message ); - case Result::eErrorNotPermittedEXT: throw NotPermittedEXTError( message ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - case Result::eErrorFullScreenExclusiveModeLostEXT: throw FullScreenExclusiveModeLostEXTError( message ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - default: throw SystemError( make_error_code( result ) ); - } - } -#endif - - template void ignore(T const&) VULKAN_HPP_NOEXCEPT {} - - 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); } - -#if !defined(VULKAN_HPP_DISABLE_IMPLICIT_RESULT_VALUE_CAST) - VULKAN_HPP_DEPRECATED("Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue.") - operator T const& () const & VULKAN_HPP_NOEXCEPT - { - return value; - } - - VULKAN_HPP_DEPRECATED("Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue.") - operator T& () & VULKAN_HPP_NOEXCEPT - { - return value; - } - - VULKAN_HPP_DEPRECATED("Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue.") - operator T const&& () const && VULKAN_HPP_NOEXCEPT - { - return std::move( value ); - } - - VULKAN_HPP_DEPRECATED("Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue.") - operator T&& () && VULKAN_HPP_NOEXCEPT - { - return std::move( value ); - } -#endif - }; - -#if !defined(VULKAN_HPP_NO_SMART_HANDLE) - template - struct ResultValue> - { -#ifdef VULKAN_HPP_HAS_NOEXCEPT - ResultValue(Result r, UniqueHandle && v) VULKAN_HPP_NOEXCEPT -#else - ResultValue(Result r, UniqueHandle && v) -#endif - : result(r) - , value(std::move(v)) - {} - - std::tuple> asTuple() - { - return std::make_tuple( result, std::move( value ) ); - } - -# if !defined(VULKAN_HPP_DISABLE_IMPLICIT_RESULT_VALUE_CAST) - VULKAN_HPP_DEPRECATED("Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue.") - operator UniqueHandle& () & VULKAN_HPP_NOEXCEPT - { - return value; - } - - VULKAN_HPP_DEPRECATED("Implicit-cast operators on vk::ResultValue are deprecated. Explicitly access the value as member of ResultValue.") - operator UniqueHandle() VULKAN_HPP_NOEXCEPT - { - return std::move(value); - } -# endif - - Result result; - UniqueHandle value; - }; - - template - struct ResultValue>> - { -# ifdef VULKAN_HPP_HAS_NOEXCEPT - ResultValue( Result r, std::vector> && v ) VULKAN_HPP_NOEXCEPT -# else - ResultValue( Result r, std::vector> && v ) -# endif - : result( r ) - , value( std::move( v ) ) - {} - - Result result; - std::vector> value; - - operator std::tuple> &>() VULKAN_HPP_NOEXCEPT - { - return std::tuple> &>( result, value ); - } - }; -#endif - - template - struct ResultValueType - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - typedef ResultValue type; -#else - typedef T type; -#endif - }; - - template <> - struct ResultValueType - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - typedef Result type; -#else - typedef void type; -#endif - }; - - VULKAN_HPP_INLINE ResultValueType::type createResultValue( Result result, char const * message ) - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - ignore(message); - VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); - return result; -#else - if ( result != Result::eSuccess ) - { - throwResultException( result, message ); - } -#endif - } - - template - VULKAN_HPP_INLINE typename ResultValueType::type createResultValue( Result result, T & data, char const * message ) - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - ignore(message); - VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); - return ResultValue( result, std::move( data ) ); -#else - if ( result != Result::eSuccess ) - { - throwResultException( result, message ); - } - return std::move( data ); -#endif - } - - VULKAN_HPP_INLINE Result createResultValue( Result result, char const * message, std::initializer_list successCodes ) - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - 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 - return result; - } - - template - VULKAN_HPP_INLINE ResultValue createResultValue( Result result, T & data, char const * message, std::initializer_list successCodes ) - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - 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 - return ResultValue( result, data ); - } - -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type createResultValue( Result result, T & data, char const * message, typename UniqueHandleTraits::deleter const& deleter ) - { -#ifdef VULKAN_HPP_NO_EXCEPTIONS - ignore(message); - VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); - return ResultValue>( result, UniqueHandle(data, deleter) ); -#else - if ( result != Result::eSuccess ) - { - throwResultException( result, message ); - } - return UniqueHandle(data, deleter); -#endif - } - - template - VULKAN_HPP_INLINE ResultValue> - createResultValue( Result result, - T & data, - char const * message, - std::initializer_list successCodes, - typename UniqueHandleTraits::deleter const & deleter ) - { -# ifdef VULKAN_HPP_NO_EXCEPTIONS - 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 - return ResultValue>( result, UniqueHandle( data, deleter ) ); - } - - template - VULKAN_HPP_INLINE typename ResultValueType>>::type - createResultValue( Result result, std::vector> && data, char const * message ) - { -# ifdef VULKAN_HPP_NO_EXCEPTIONS - ignore( message ); - VULKAN_HPP_ASSERT_ON_RESULT( result == Result::eSuccess ); - return ResultValue>>( result, std::move( data ) ); -# else - if ( result != Result::eSuccess ) - { - throwResultException( result, message ); - } - return std::move( data ); -# endif - } - - template - VULKAN_HPP_INLINE ResultValue>> - createResultValue( Result result, - std::vector> && data, - char const * message, - std::initializer_list successCodes ) - { -# ifdef VULKAN_HPP_NO_EXCEPTIONS - 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 - return ResultValue>>( result, std::move( data ) ); - } -#endif - - struct AabbPositionsKHR - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AabbPositionsKHR & operator=( AabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AabbPositionsKHR & operator=( VkAabbPositionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AabbPositionsKHR & setMinX( float minX_ ) VULKAN_HPP_NOEXCEPT - { - minX = minX_; - return *this; - } - - AabbPositionsKHR & setMinY( float minY_ ) VULKAN_HPP_NOEXCEPT - { - minY = minY_; - return *this; - } - - AabbPositionsKHR & setMinZ( float minZ_ ) VULKAN_HPP_NOEXCEPT - { - minZ = minZ_; - return *this; - } - - AabbPositionsKHR & setMaxX( float maxX_ ) VULKAN_HPP_NOEXCEPT - { - maxX = maxX_; - return *this; - } - - AabbPositionsKHR & setMaxY( float maxY_ ) VULKAN_HPP_NOEXCEPT - { - maxY = maxY_; - return *this; - } - - AabbPositionsKHR & setMaxZ( float maxZ_ ) VULKAN_HPP_NOEXCEPT - { - maxZ = maxZ_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AabbPositionsKHR const& ) const = default; -#else - bool operator==( AabbPositionsKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( minX == rhs.minX ) - && ( minY == rhs.minY ) - && ( minZ == rhs.minZ ) - && ( maxX == rhs.maxX ) - && ( maxY == rhs.maxY ) - && ( maxZ == rhs.maxZ ); - } - - 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 = {}; - - }; - static_assert( sizeof( AabbPositionsKHR ) == sizeof( VkAabbPositionsKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - using AabbPositionsNV = AabbPositionsKHR; - - class AccelerationStructureKHR - { - public: - using CType = VkAccelerationStructureKHR; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureKHR; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureKHR; - - public: - VULKAN_HPP_CONSTEXPR AccelerationStructureKHR() VULKAN_HPP_NOEXCEPT - : m_accelerationStructureKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR AccelerationStructureKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_accelerationStructureKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT AccelerationStructureKHR( VkAccelerationStructureKHR accelerationStructureKHR ) VULKAN_HPP_NOEXCEPT - : m_accelerationStructureKHR( accelerationStructureKHR ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - AccelerationStructureKHR & operator=(VkAccelerationStructureKHR accelerationStructureKHR) VULKAN_HPP_NOEXCEPT - { - m_accelerationStructureKHR = accelerationStructureKHR; - return *this; - } -#endif - - AccelerationStructureKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_accelerationStructureKHR = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureKHR const& ) const = default; -#else - bool operator==( AccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_accelerationStructureKHR == rhs.m_accelerationStructureKHR; - } - - bool operator!=(AccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_accelerationStructureKHR != rhs.m_accelerationStructureKHR; - } - - bool operator<(AccelerationStructureKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_accelerationStructureKHR < rhs.m_accelerationStructureKHR; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR ) == sizeof( VkAccelerationStructureKHR ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::AccelerationStructureKHR; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::AccelerationStructureKHR; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::AccelerationStructureKHR; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - union DeviceOrHostAddressConstKHR - { - DeviceOrHostAddressConstKHR( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const& rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR ) ); - } - - DeviceOrHostAddressConstKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) - : deviceAddress( deviceAddress_ ) - {} - - DeviceOrHostAddressConstKHR( const void* hostAddress_ ) - : hostAddress( hostAddress_ ) - {} - - DeviceOrHostAddressConstKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT - { - deviceAddress = deviceAddress_; - return *this; - } - - DeviceOrHostAddressConstKHR & setHostAddress( const void* hostAddress_ ) VULKAN_HPP_NOEXCEPT - { - hostAddress = hostAddress_; - return *this; - } - - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR & operator=( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR ) ); - return *this; - } - - operator VkDeviceOrHostAddressConstKHR const&() const - { - return *reinterpret_cast(this); - } - - operator VkDeviceOrHostAddressConstKHR &() - { - return *reinterpret_cast(this); - } - -#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS - VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress; - const void* hostAddress; -#else - VkDeviceAddress deviceAddress; - const void* hostAddress; -#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ - }; - - struct AccelerationStructureGeometryTrianglesDataKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryTrianglesDataKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - AccelerationStructureGeometryTrianglesDataKHR(VULKAN_HPP_NAMESPACE::Format vertexFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ = {}, uint32_t maxVertex_ = {}, VULKAN_HPP_NAMESPACE::IndexType indexType_ = VULKAN_HPP_NAMESPACE::IndexType::eUint16, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData_ = {}, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData_ = {}) VULKAN_HPP_NOEXCEPT - : vertexFormat( vertexFormat_ ), vertexData( vertexData_ ), vertexStride( vertexStride_ ), maxVertex( maxVertex_ ), indexType( indexType_ ), indexData( indexData_ ), transformData( transformData_ ) - {} - - AccelerationStructureGeometryTrianglesDataKHR( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureGeometryTrianglesDataKHR( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : AccelerationStructureGeometryTrianglesDataKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - AccelerationStructureGeometryTrianglesDataKHR & operator=( AccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureGeometryTrianglesDataKHR & operator=( VkAccelerationStructureGeometryTrianglesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureGeometryTrianglesDataKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureGeometryTrianglesDataKHR & setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT - { - vertexFormat = vertexFormat_; - return *this; - } - - AccelerationStructureGeometryTrianglesDataKHR & setVertexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & vertexData_ ) VULKAN_HPP_NOEXCEPT - { - vertexData = vertexData_; - return *this; - } - - AccelerationStructureGeometryTrianglesDataKHR & setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT - { - vertexStride = vertexStride_; - return *this; - } - - AccelerationStructureGeometryTrianglesDataKHR & setMaxVertex( uint32_t maxVertex_ ) VULKAN_HPP_NOEXCEPT - { - maxVertex = maxVertex_; - return *this; - } - - AccelerationStructureGeometryTrianglesDataKHR & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT - { - indexType = indexType_; - return *this; - } - - AccelerationStructureGeometryTrianglesDataKHR & setIndexData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & indexData_ ) VULKAN_HPP_NOEXCEPT - { - indexData = indexData_; - return *this; - } - - AccelerationStructureGeometryTrianglesDataKHR & setTransformData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & transformData_ ) VULKAN_HPP_NOEXCEPT - { - transformData = transformData_; - return *this; - } - - - operator VkAccelerationStructureGeometryTrianglesDataKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkAccelerationStructureGeometryTrianglesDataKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryTrianglesDataKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Format vertexFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR vertexData = {}; - VULKAN_HPP_NAMESPACE::DeviceSize vertexStride = {}; - uint32_t maxVertex = {}; - VULKAN_HPP_NAMESPACE::IndexType indexType = VULKAN_HPP_NAMESPACE::IndexType::eUint16; - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR indexData = {}; - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR transformData = {}; - - }; - static_assert( sizeof( AccelerationStructureGeometryTrianglesDataKHR ) == sizeof( VkAccelerationStructureGeometryTrianglesDataKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureGeometryTrianglesDataKHR; - }; - - struct AccelerationStructureGeometryAabbsDataKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryAabbsDataKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - AccelerationStructureGeometryAabbsDataKHR(VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize stride_ = {}) VULKAN_HPP_NOEXCEPT - : data( data_ ), stride( stride_ ) - {} - - AccelerationStructureGeometryAabbsDataKHR( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureGeometryAabbsDataKHR( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : AccelerationStructureGeometryAabbsDataKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - AccelerationStructureGeometryAabbsDataKHR & operator=( AccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureGeometryAabbsDataKHR & operator=( VkAccelerationStructureGeometryAabbsDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureGeometryAabbsDataKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureGeometryAabbsDataKHR & setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT - { - data = data_; - return *this; - } - - AccelerationStructureGeometryAabbsDataKHR & setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT - { - stride = stride_; - return *this; - } - - - operator VkAccelerationStructureGeometryAabbsDataKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkAccelerationStructureGeometryAabbsDataKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryAabbsDataKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data = {}; - VULKAN_HPP_NAMESPACE::DeviceSize stride = {}; - - }; - static_assert( sizeof( AccelerationStructureGeometryAabbsDataKHR ) == sizeof( VkAccelerationStructureGeometryAabbsDataKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureGeometryAabbsDataKHR; - }; - - struct AccelerationStructureGeometryInstancesDataKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryInstancesDataKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - AccelerationStructureGeometryInstancesDataKHR(VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers_ = {}, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data_ = {}) VULKAN_HPP_NOEXCEPT - : arrayOfPointers( arrayOfPointers_ ), data( data_ ) - {} - - AccelerationStructureGeometryInstancesDataKHR( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureGeometryInstancesDataKHR( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : AccelerationStructureGeometryInstancesDataKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - AccelerationStructureGeometryInstancesDataKHR & operator=( AccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureGeometryInstancesDataKHR & operator=( VkAccelerationStructureGeometryInstancesDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureGeometryInstancesDataKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureGeometryInstancesDataKHR & setArrayOfPointers( VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers_ ) VULKAN_HPP_NOEXCEPT - { - arrayOfPointers = arrayOfPointers_; - return *this; - } - - AccelerationStructureGeometryInstancesDataKHR & setData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & data_ ) VULKAN_HPP_NOEXCEPT - { - data = data_; - return *this; - } - - - operator VkAccelerationStructureGeometryInstancesDataKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkAccelerationStructureGeometryInstancesDataKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryInstancesDataKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 arrayOfPointers = {}; - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR data = {}; - - }; - static_assert( sizeof( AccelerationStructureGeometryInstancesDataKHR ) == sizeof( VkAccelerationStructureGeometryInstancesDataKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureGeometryInstancesDataKHR; - }; - - union AccelerationStructureGeometryDataKHR - { - AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const& rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR ) ); - } - - AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles_ = {} ) - : triangles( triangles_ ) - {} - - AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs_ ) - : aabbs( aabbs_ ) - {} - - AccelerationStructureGeometryDataKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances_ ) - : instances( instances_ ) - {} - - AccelerationStructureGeometryDataKHR & setTriangles( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR const & triangles_ ) VULKAN_HPP_NOEXCEPT - { - triangles = triangles_; - return *this; - } - - AccelerationStructureGeometryDataKHR & setAabbs( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR const & aabbs_ ) VULKAN_HPP_NOEXCEPT - { - aabbs = aabbs_; - return *this; - } - - AccelerationStructureGeometryDataKHR & setInstances( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR const & instances_ ) VULKAN_HPP_NOEXCEPT - { - instances = instances_; - return *this; - } - - VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR & operator=( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR ) ); - return *this; - } - - operator VkAccelerationStructureGeometryDataKHR const&() const - { - return *reinterpret_cast(this); - } - - operator VkAccelerationStructureGeometryDataKHR &() - { - return *reinterpret_cast(this); - } - -#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS - VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryTrianglesDataKHR triangles; - VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryAabbsDataKHR aabbs; - VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryInstancesDataKHR instances; -#else - VkAccelerationStructureGeometryTrianglesDataKHR triangles; - VkAccelerationStructureGeometryAabbsDataKHR aabbs; - VkAccelerationStructureGeometryInstancesDataKHR instances; -#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ - }; - - struct AccelerationStructureGeometryKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureGeometryKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - AccelerationStructureGeometryKHR(VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles, VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry_ = {}, VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ = {}) VULKAN_HPP_NOEXCEPT - : geometryType( geometryType_ ), geometry( geometry_ ), flags( flags_ ) - {} - - AccelerationStructureGeometryKHR( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureGeometryKHR( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : AccelerationStructureGeometryKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - AccelerationStructureGeometryKHR & operator=( AccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureGeometryKHR & operator=( VkAccelerationStructureGeometryKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureGeometryKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureGeometryKHR & setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT - { - geometryType = geometryType_; - return *this; - } - - AccelerationStructureGeometryKHR & setGeometry( VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR const & geometry_ ) VULKAN_HPP_NOEXCEPT - { - geometry = geometry_; - return *this; - } - - AccelerationStructureGeometryKHR & setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - - operator VkAccelerationStructureGeometryKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkAccelerationStructureGeometryKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureGeometryKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles; - VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryDataKHR geometry = {}; - VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags = {}; - - }; - static_assert( sizeof( AccelerationStructureGeometryKHR ) == sizeof( VkAccelerationStructureGeometryKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureGeometryKHR; - }; - - union DeviceOrHostAddressKHR - { - DeviceOrHostAddressKHR( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const& rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR ) ); - } - - DeviceOrHostAddressKHR( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {} ) - : deviceAddress( deviceAddress_ ) - {} - - DeviceOrHostAddressKHR( void* hostAddress_ ) - : hostAddress( hostAddress_ ) - {} - - DeviceOrHostAddressKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT - { - deviceAddress = deviceAddress_; - return *this; - } - - DeviceOrHostAddressKHR & setHostAddress( void* hostAddress_ ) VULKAN_HPP_NOEXCEPT - { - hostAddress = hostAddress_; - return *this; - } - - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR & operator=( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR ) ); - return *this; - } - - operator VkDeviceOrHostAddressKHR const&() const - { - return *reinterpret_cast(this); - } - - operator VkDeviceOrHostAddressKHR &() - { - return *reinterpret_cast(this); - } - -#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS - VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress; - void* hostAddress; -#else - VkDeviceAddress deviceAddress; - void* hostAddress; -#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ - }; - - struct AccelerationStructureBuildGeometryInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureBuildGeometryInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - AccelerationStructureBuildGeometryInfoKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel, VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_ = {}, VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_ = VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_ = {}, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_ = {}, uint32_t geometryCount_ = {}, const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR* pGeometries_ = {}, const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR* const * ppGeometries_ = {}, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR scratchData_ = {}) VULKAN_HPP_NOEXCEPT - : type( type_ ), flags( flags_ ), mode( mode_ ), srcAccelerationStructure( srcAccelerationStructure_ ), dstAccelerationStructure( dstAccelerationStructure_ ), geometryCount( geometryCount_ ), pGeometries( pGeometries_ ), ppGeometries( ppGeometries_ ), scratchData( scratchData_ ) - {} - - 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( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_, VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_, VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & geometries_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pGeometries_ = {}, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR scratchData_ = {} ) - : 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 ( ( !geometries_.empty() + !pGeometries_.empty() ) != 1 ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::AccelerationStructureBuildGeometryInfoKHR::AccelerationStructureBuildGeometryInfoKHR: ( !geometries_.empty() + !pGeometries_.empty() ) != 1" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - AccelerationStructureBuildGeometryInfoKHR & operator=( AccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureBuildGeometryInfoKHR & operator=( VkAccelerationStructureBuildGeometryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureBuildGeometryInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureBuildGeometryInfoKHR & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - AccelerationStructureBuildGeometryInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - AccelerationStructureBuildGeometryInfoKHR & setMode( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT - { - mode = mode_; - return *this; - } - - AccelerationStructureBuildGeometryInfoKHR & setSrcAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT - { - srcAccelerationStructure = srcAccelerationStructure_; - return *this; - } - - AccelerationStructureBuildGeometryInfoKHR & setDstAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure_ ) VULKAN_HPP_NOEXCEPT - { - dstAccelerationStructure = dstAccelerationStructure_; - return *this; - } - - AccelerationStructureBuildGeometryInfoKHR & setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT - { - geometryCount = geometryCount_; - return *this; - } - - AccelerationStructureBuildGeometryInfoKHR & setPGeometries( const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR* pGeometries_ ) VULKAN_HPP_NOEXCEPT - { - pGeometries = pGeometries_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - AccelerationStructureBuildGeometryInfoKHR & setGeometries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & geometries_ ) VULKAN_HPP_NOEXCEPT - { - geometryCount = static_cast( geometries_.size() ); - pGeometries = geometries_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - AccelerationStructureBuildGeometryInfoKHR & setPpGeometries( const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR* const * ppGeometries_ ) VULKAN_HPP_NOEXCEPT - { - ppGeometries = ppGeometries_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - AccelerationStructureBuildGeometryInfoKHR & setPGeometries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pGeometries_ ) VULKAN_HPP_NOEXCEPT - { - geometryCount = static_cast( pGeometries_.size() ); - ppGeometries = pGeometries_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - AccelerationStructureBuildGeometryInfoKHR & setScratchData( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & scratchData_ ) VULKAN_HPP_NOEXCEPT - { - scratchData = scratchData_; - return *this; - } - - - operator VkAccelerationStructureBuildGeometryInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkAccelerationStructureBuildGeometryInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildGeometryInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel; - VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsKHR flags = {}; - VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR mode = VULKAN_HPP_NAMESPACE::BuildAccelerationStructureModeKHR::eBuild; - VULKAN_HPP_NAMESPACE::AccelerationStructureKHR srcAccelerationStructure = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dstAccelerationStructure = {}; - uint32_t geometryCount = {}; - const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR* pGeometries = {}; - const VULKAN_HPP_NAMESPACE::AccelerationStructureGeometryKHR* const * ppGeometries = {}; - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR scratchData = {}; - - }; - static_assert( sizeof( AccelerationStructureBuildGeometryInfoKHR ) == sizeof( VkAccelerationStructureBuildGeometryInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureBuildGeometryInfoKHR; - }; - - struct AccelerationStructureBuildRangeInfoKHR - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildRangeInfoKHR & operator=( AccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureBuildRangeInfoKHR & operator=( VkAccelerationStructureBuildRangeInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureBuildRangeInfoKHR & setPrimitiveCount( uint32_t primitiveCount_ ) VULKAN_HPP_NOEXCEPT - { - primitiveCount = primitiveCount_; - return *this; - } - - AccelerationStructureBuildRangeInfoKHR & setPrimitiveOffset( uint32_t primitiveOffset_ ) VULKAN_HPP_NOEXCEPT - { - primitiveOffset = primitiveOffset_; - return *this; - } - - AccelerationStructureBuildRangeInfoKHR & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT - { - firstVertex = firstVertex_; - return *this; - } - - AccelerationStructureBuildRangeInfoKHR & setTransformOffset( uint32_t transformOffset_ ) VULKAN_HPP_NOEXCEPT - { - transformOffset = transformOffset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureBuildRangeInfoKHR const& ) const = default; -#else - bool operator==( AccelerationStructureBuildRangeInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( primitiveCount == rhs.primitiveCount ) - && ( primitiveOffset == rhs.primitiveOffset ) - && ( firstVertex == rhs.firstVertex ) - && ( transformOffset == rhs.transformOffset ); - } - - 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 = {}; - - }; - static_assert( sizeof( AccelerationStructureBuildRangeInfoKHR ) == sizeof( VkAccelerationStructureBuildRangeInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct AccelerationStructureBuildSizesInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureBuildSizesInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AccelerationStructureBuildSizesInfoKHR(VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureBuildSizesInfoKHR & operator=( AccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureBuildSizesInfoKHR & operator=( VkAccelerationStructureBuildSizesInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureBuildSizesInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureBuildSizesInfoKHR & setAccelerationStructureSize( VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructureSize = accelerationStructureSize_; - return *this; - } - - AccelerationStructureBuildSizesInfoKHR & setUpdateScratchSize( VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize_ ) VULKAN_HPP_NOEXCEPT - { - updateScratchSize = updateScratchSize_; - return *this; - } - - AccelerationStructureBuildSizesInfoKHR & setBuildScratchSize( VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize_ ) VULKAN_HPP_NOEXCEPT - { - buildScratchSize = buildScratchSize_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureBuildSizesInfoKHR const& ) const = default; -#else - bool operator==( AccelerationStructureBuildSizesInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( accelerationStructureSize == rhs.accelerationStructureSize ) - && ( updateScratchSize == rhs.updateScratchSize ) - && ( buildScratchSize == rhs.buildScratchSize ); - } - - bool operator!=( AccelerationStructureBuildSizesInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureBuildSizesInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceSize accelerationStructureSize = {}; - VULKAN_HPP_NAMESPACE::DeviceSize updateScratchSize = {}; - VULKAN_HPP_NAMESPACE::DeviceSize buildScratchSize = {}; - - }; - static_assert( sizeof( AccelerationStructureBuildSizesInfoKHR ) == sizeof( VkAccelerationStructureBuildSizesInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureBuildSizesInfoKHR; - }; - - class Buffer - { - public: - using CType = VkBuffer; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eBuffer; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBuffer; - - public: - VULKAN_HPP_CONSTEXPR Buffer() VULKAN_HPP_NOEXCEPT - : m_buffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Buffer( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_buffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Buffer( VkBuffer buffer ) VULKAN_HPP_NOEXCEPT - : m_buffer( buffer ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Buffer & operator=(VkBuffer buffer) VULKAN_HPP_NOEXCEPT - { - m_buffer = buffer; - return *this; - } -#endif - - Buffer & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_buffer = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Buffer const& ) const = default; -#else - bool operator==( Buffer const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_buffer == rhs.m_buffer; - } - - bool operator!=(Buffer const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_buffer != rhs.m_buffer; - } - - bool operator<(Buffer const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_buffer < rhs.m_buffer; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Buffer ) == sizeof( VkBuffer ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Buffer; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Buffer; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Buffer; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct AccelerationStructureCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel, VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoKHR & operator=( AccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureCreateInfoKHR & operator=( VkAccelerationStructureCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureCreateInfoKHR & setCreateFlags( VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags_ ) VULKAN_HPP_NOEXCEPT - { - createFlags = createFlags_; - return *this; - } - - AccelerationStructureCreateInfoKHR & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *this; - } - - AccelerationStructureCreateInfoKHR & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - AccelerationStructureCreateInfoKHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *this; - } - - AccelerationStructureCreateInfoKHR & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - AccelerationStructureCreateInfoKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT - { - deviceAddress = deviceAddress_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureCreateInfoKHR const& ) const = default; -#else - bool operator==( AccelerationStructureCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( AccelerationStructureCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureCreateFlagsKHR createFlags = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR type = VULKAN_HPP_NAMESPACE::AccelerationStructureTypeKHR::eTopLevel; - VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {}; - - }; - static_assert( sizeof( AccelerationStructureCreateInfoKHR ) == sizeof( VkAccelerationStructureCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureCreateInfoKHR; - }; - - struct GeometryTrianglesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeometryTrianglesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR GeometryTrianglesNV(VULKAN_HPP_NAMESPACE::Buffer vertexData_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_ = {}, uint32_t vertexCount_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ = {}, VULKAN_HPP_NAMESPACE::Format vertexFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::Buffer indexData_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_ = {}, uint32_t indexCount_ = {}, VULKAN_HPP_NAMESPACE::IndexType indexType_ = VULKAN_HPP_NAMESPACE::IndexType::eUint16, VULKAN_HPP_NAMESPACE::Buffer transformData_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 GeometryTrianglesNV & operator=( GeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - GeometryTrianglesNV & operator=( VkGeometryTrianglesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - GeometryTrianglesNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - GeometryTrianglesNV & setVertexData( VULKAN_HPP_NAMESPACE::Buffer vertexData_ ) VULKAN_HPP_NOEXCEPT - { - vertexData = vertexData_; - return *this; - } - - GeometryTrianglesNV & setVertexOffset( VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset_ ) VULKAN_HPP_NOEXCEPT - { - vertexOffset = vertexOffset_; - return *this; - } - - GeometryTrianglesNV & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT - { - vertexCount = vertexCount_; - return *this; - } - - GeometryTrianglesNV & setVertexStride( VULKAN_HPP_NAMESPACE::DeviceSize vertexStride_ ) VULKAN_HPP_NOEXCEPT - { - vertexStride = vertexStride_; - return *this; - } - - GeometryTrianglesNV & setVertexFormat( VULKAN_HPP_NAMESPACE::Format vertexFormat_ ) VULKAN_HPP_NOEXCEPT - { - vertexFormat = vertexFormat_; - return *this; - } - - GeometryTrianglesNV & setIndexData( VULKAN_HPP_NAMESPACE::Buffer indexData_ ) VULKAN_HPP_NOEXCEPT - { - indexData = indexData_; - return *this; - } - - GeometryTrianglesNV & setIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize indexOffset_ ) VULKAN_HPP_NOEXCEPT - { - indexOffset = indexOffset_; - return *this; - } - - GeometryTrianglesNV & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT - { - indexCount = indexCount_; - return *this; - } - - GeometryTrianglesNV & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT - { - indexType = indexType_; - return *this; - } - - GeometryTrianglesNV & setTransformData( VULKAN_HPP_NAMESPACE::Buffer transformData_ ) VULKAN_HPP_NOEXCEPT - { - transformData = transformData_; - return *this; - } - - GeometryTrianglesNV & setTransformOffset( VULKAN_HPP_NAMESPACE::DeviceSize transformOffset_ ) VULKAN_HPP_NOEXCEPT - { - transformOffset = transformOffset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( GeometryTrianglesNV const& ) const = default; -#else - bool operator==( GeometryTrianglesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( GeometryTrianglesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryTrianglesNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Buffer vertexData = {}; - VULKAN_HPP_NAMESPACE::DeviceSize vertexOffset = {}; - uint32_t vertexCount = {}; - VULKAN_HPP_NAMESPACE::DeviceSize vertexStride = {}; - VULKAN_HPP_NAMESPACE::Format vertexFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::Buffer indexData = {}; - VULKAN_HPP_NAMESPACE::DeviceSize indexOffset = {}; - uint32_t indexCount = {}; - VULKAN_HPP_NAMESPACE::IndexType indexType = VULKAN_HPP_NAMESPACE::IndexType::eUint16; - VULKAN_HPP_NAMESPACE::Buffer transformData = {}; - VULKAN_HPP_NAMESPACE::DeviceSize transformOffset = {}; - - }; - static_assert( sizeof( GeometryTrianglesNV ) == sizeof( VkGeometryTrianglesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = GeometryTrianglesNV; - }; - - struct GeometryAABBNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeometryAabbNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR GeometryAABBNV(VULKAN_HPP_NAMESPACE::Buffer aabbData_ = {}, uint32_t numAABBs_ = {}, uint32_t stride_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 GeometryAABBNV & operator=( GeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - GeometryAABBNV & operator=( VkGeometryAABBNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - GeometryAABBNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - GeometryAABBNV & setAabbData( VULKAN_HPP_NAMESPACE::Buffer aabbData_ ) VULKAN_HPP_NOEXCEPT - { - aabbData = aabbData_; - return *this; - } - - GeometryAABBNV & setNumAABBs( uint32_t numAABBs_ ) VULKAN_HPP_NOEXCEPT - { - numAABBs = numAABBs_; - return *this; - } - - GeometryAABBNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT - { - stride = stride_; - return *this; - } - - GeometryAABBNV & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( GeometryAABBNV const& ) const = default; -#else - bool operator==( GeometryAABBNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( aabbData == rhs.aabbData ) - && ( numAABBs == rhs.numAABBs ) - && ( stride == rhs.stride ) - && ( offset == rhs.offset ); - } - - bool operator!=( GeometryAABBNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryAabbNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Buffer aabbData = {}; - uint32_t numAABBs = {}; - uint32_t stride = {}; - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - - }; - static_assert( sizeof( GeometryAABBNV ) == sizeof( VkGeometryAABBNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = GeometryAABBNV; - }; - - struct GeometryDataNV - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR GeometryDataNV(VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 GeometryDataNV & operator=( GeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - GeometryDataNV & operator=( VkGeometryDataNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - GeometryDataNV & setTriangles( VULKAN_HPP_NAMESPACE::GeometryTrianglesNV const & triangles_ ) VULKAN_HPP_NOEXCEPT - { - triangles = triangles_; - return *this; - } - - GeometryDataNV & setAabbs( VULKAN_HPP_NAMESPACE::GeometryAABBNV const & aabbs_ ) VULKAN_HPP_NOEXCEPT - { - aabbs = aabbs_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( GeometryDataNV const& ) const = default; -#else - bool operator==( GeometryDataNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( triangles == rhs.triangles ) - && ( aabbs == rhs.aabbs ); - } - - bool operator!=( GeometryDataNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::GeometryTrianglesNV triangles = {}; - VULKAN_HPP_NAMESPACE::GeometryAABBNV aabbs = {}; - - }; - static_assert( sizeof( GeometryDataNV ) == sizeof( VkGeometryDataNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct GeometryNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeometryNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR GeometryNV(VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles, VULKAN_HPP_NAMESPACE::GeometryDataNV geometry_ = {}, VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 GeometryNV & operator=( GeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - GeometryNV & operator=( VkGeometryNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - GeometryNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - GeometryNV & setGeometryType( VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType_ ) VULKAN_HPP_NOEXCEPT - { - geometryType = geometryType_; - return *this; - } - - GeometryNV & setGeometry( VULKAN_HPP_NAMESPACE::GeometryDataNV const & geometry_ ) VULKAN_HPP_NOEXCEPT - { - geometry = geometry_; - return *this; - } - - GeometryNV & setFlags( VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( GeometryNV const& ) const = default; -#else - bool operator==( GeometryNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( geometryType == rhs.geometryType ) - && ( geometry == rhs.geometry ) - && ( flags == rhs.flags ); - } - - bool operator!=( GeometryNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeometryNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::GeometryTypeKHR geometryType = VULKAN_HPP_NAMESPACE::GeometryTypeKHR::eTriangles; - VULKAN_HPP_NAMESPACE::GeometryDataNV geometry = {}; - VULKAN_HPP_NAMESPACE::GeometryFlagsKHR flags = {}; - - }; - static_assert( sizeof( GeometryNV ) == sizeof( VkGeometryNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = GeometryNV; - }; - - struct AccelerationStructureInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AccelerationStructureInfoNV(VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_ = {}, VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_ = {}, uint32_t instanceCount_ = {}, uint32_t geometryCount_ = {}, const VULKAN_HPP_NAMESPACE::GeometryNV* pGeometries_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_, VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_, uint32_t instanceCount_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & geometries_ ) - : type( type_ ), flags( flags_ ), instanceCount( instanceCount_ ), geometryCount( static_cast( geometries_.size() ) ), pGeometries( geometries_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInfoNV & operator=( AccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureInfoNV & operator=( VkAccelerationStructureInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureInfoNV & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - AccelerationStructureInfoNV & setFlags( VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - AccelerationStructureInfoNV & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT - { - instanceCount = instanceCount_; - return *this; - } - - AccelerationStructureInfoNV & setGeometryCount( uint32_t geometryCount_ ) VULKAN_HPP_NOEXCEPT - { - geometryCount = geometryCount_; - return *this; - } - - AccelerationStructureInfoNV & setPGeometries( const VULKAN_HPP_NAMESPACE::GeometryNV* pGeometries_ ) VULKAN_HPP_NOEXCEPT - { - pGeometries = pGeometries_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - AccelerationStructureInfoNV & setGeometries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & geometries_ ) VULKAN_HPP_NOEXCEPT - { - geometryCount = static_cast( geometries_.size() ); - pGeometries = geometries_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkAccelerationStructureInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkAccelerationStructureInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureInfoNV const& ) const = default; -#else - bool operator==( AccelerationStructureInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ) - && ( flags == rhs.flags ) - && ( instanceCount == rhs.instanceCount ) - && ( geometryCount == rhs.geometryCount ) - && ( pGeometries == rhs.pGeometries ); - } - - bool operator!=( AccelerationStructureInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureTypeNV type = {}; - VULKAN_HPP_NAMESPACE::BuildAccelerationStructureFlagsNV flags = {}; - uint32_t instanceCount = {}; - uint32_t geometryCount = {}; - const VULKAN_HPP_NAMESPACE::GeometryNV* pGeometries = {}; - - }; - static_assert( sizeof( AccelerationStructureInfoNV ) == sizeof( VkAccelerationStructureInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureInfoNV; - }; - - struct AccelerationStructureCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AccelerationStructureCreateInfoNV(VULKAN_HPP_NAMESPACE::DeviceSize compactedSize_ = {}, VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureCreateInfoNV & operator=( AccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureCreateInfoNV & operator=( VkAccelerationStructureCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureCreateInfoNV & setCompactedSize( VULKAN_HPP_NAMESPACE::DeviceSize compactedSize_ ) VULKAN_HPP_NOEXCEPT - { - compactedSize = compactedSize_; - return *this; - } - - AccelerationStructureCreateInfoNV & setInfo( VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV const & info_ ) VULKAN_HPP_NOEXCEPT - { - info = info_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureCreateInfoNV const& ) const = default; -#else - bool operator==( AccelerationStructureCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( compactedSize == rhs.compactedSize ) - && ( info == rhs.info ); - } - - bool operator!=( AccelerationStructureCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceSize compactedSize = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV info = {}; - - }; - static_assert( sizeof( AccelerationStructureCreateInfoNV ) == sizeof( VkAccelerationStructureCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureCreateInfoNV; - }; - - struct AccelerationStructureDeviceAddressInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureDeviceAddressInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ = {}) VULKAN_HPP_NOEXCEPT - : accelerationStructure( accelerationStructure_ ) - {} - - VULKAN_HPP_CONSTEXPR AccelerationStructureDeviceAddressInfoKHR( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureDeviceAddressInfoKHR( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : AccelerationStructureDeviceAddressInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureDeviceAddressInfoKHR & operator=( AccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureDeviceAddressInfoKHR & operator=( VkAccelerationStructureDeviceAddressInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureDeviceAddressInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureDeviceAddressInfoKHR & setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructure = accelerationStructure_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureDeviceAddressInfoKHR const& ) const = default; -#else - bool operator==( AccelerationStructureDeviceAddressInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( accelerationStructure == rhs.accelerationStructure ); - } - - bool operator!=( AccelerationStructureDeviceAddressInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureDeviceAddressInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure = {}; - - }; - static_assert( sizeof( AccelerationStructureDeviceAddressInfoKHR ) == sizeof( VkAccelerationStructureDeviceAddressInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureDeviceAddressInfoKHR; - }; - - struct TransformMatrixKHR - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 TransformMatrixKHR & operator=( TransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - TransformMatrixKHR & operator=( VkTransformMatrixKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - TransformMatrixKHR & setMatrix( std::array,3> matrix_ ) VULKAN_HPP_NOEXCEPT - { - matrix = matrix_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( TransformMatrixKHR const& ) const = default; -#else - bool operator==( TransformMatrixKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( matrix == rhs.matrix ); - } - - bool operator!=( TransformMatrixKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ArrayWrapper2D matrix = {}; - - }; - static_assert( sizeof( TransformMatrixKHR ) == sizeof( VkTransformMatrixKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - using TransformMatrixNV = TransformMatrixKHR; - - struct AccelerationStructureInstanceKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR(VULKAN_HPP_NAMESPACE::TransformMatrixKHR transform_ = {}, uint32_t instanceCustomIndex_ = {}, uint32_t mask_ = {}, uint32_t instanceShaderBindingTableRecordOffset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureInstanceKHR & operator=( AccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureInstanceKHR & operator=( VkAccelerationStructureInstanceKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureInstanceKHR & setTransform( VULKAN_HPP_NAMESPACE::TransformMatrixKHR const & transform_ ) VULKAN_HPP_NOEXCEPT - { - transform = transform_; - return *this; - } - - AccelerationStructureInstanceKHR & setInstanceCustomIndex( uint32_t instanceCustomIndex_ ) VULKAN_HPP_NOEXCEPT - { - instanceCustomIndex = instanceCustomIndex_; - return *this; - } - - AccelerationStructureInstanceKHR & setMask( uint32_t mask_ ) VULKAN_HPP_NOEXCEPT - { - mask = mask_; - return *this; - } - - AccelerationStructureInstanceKHR & setInstanceShaderBindingTableRecordOffset( uint32_t instanceShaderBindingTableRecordOffset_ ) VULKAN_HPP_NOEXCEPT - { - instanceShaderBindingTableRecordOffset = instanceShaderBindingTableRecordOffset_; - return *this; - } - - AccelerationStructureInstanceKHR & setFlags( VULKAN_HPP_NAMESPACE::GeometryInstanceFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = *reinterpret_cast(&flags_); - return *this; - } - - AccelerationStructureInstanceKHR & setAccelerationStructureReference( uint64_t accelerationStructureReference_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructureReference = accelerationStructureReference_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureInstanceKHR const& ) const = default; -#else - bool operator==( AccelerationStructureInstanceKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( transform == rhs.transform ) - && ( instanceCustomIndex == rhs.instanceCustomIndex ) - && ( mask == rhs.mask ) - && ( instanceShaderBindingTableRecordOffset == rhs.instanceShaderBindingTableRecordOffset ) - && ( flags == rhs.flags ) - && ( accelerationStructureReference == rhs.accelerationStructureReference ); - } - - bool operator!=( AccelerationStructureInstanceKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::TransformMatrixKHR transform = {}; - uint32_t instanceCustomIndex : 24; - uint32_t mask : 8; - uint32_t instanceShaderBindingTableRecordOffset : 24; - VkGeometryInstanceFlagsKHR flags : 8; - uint64_t accelerationStructureReference = {}; - - }; - static_assert( sizeof( AccelerationStructureInstanceKHR ) == sizeof( VkAccelerationStructureInstanceKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - using AccelerationStructureInstanceNV = AccelerationStructureInstanceKHR; - - class AccelerationStructureNV - { - public: - using CType = VkAccelerationStructureNV; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eAccelerationStructureNV; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eAccelerationStructureNV; - - public: - VULKAN_HPP_CONSTEXPR AccelerationStructureNV() VULKAN_HPP_NOEXCEPT - : m_accelerationStructureNV(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR AccelerationStructureNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_accelerationStructureNV(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT AccelerationStructureNV( VkAccelerationStructureNV accelerationStructureNV ) VULKAN_HPP_NOEXCEPT - : m_accelerationStructureNV( accelerationStructureNV ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - AccelerationStructureNV & operator=(VkAccelerationStructureNV accelerationStructureNV) VULKAN_HPP_NOEXCEPT - { - m_accelerationStructureNV = accelerationStructureNV; - return *this; - } -#endif - - AccelerationStructureNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_accelerationStructureNV = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureNV const& ) const = default; -#else - bool operator==( AccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_accelerationStructureNV == rhs.m_accelerationStructureNV; - } - - bool operator!=(AccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_accelerationStructureNV != rhs.m_accelerationStructureNV; - } - - bool operator<(AccelerationStructureNV const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_accelerationStructureNV < rhs.m_accelerationStructureNV; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::AccelerationStructureNV ) == sizeof( VkAccelerationStructureNV ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::AccelerationStructureNV; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::AccelerationStructureNV; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::AccelerationStructureNV; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct AccelerationStructureMemoryRequirementsInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AccelerationStructureMemoryRequirementsInfoNV(VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ = VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject, VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureMemoryRequirementsInfoNV & operator=( AccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureMemoryRequirementsInfoNV & operator=( VkAccelerationStructureMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureMemoryRequirementsInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureMemoryRequirementsInfoNV & setType( VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - AccelerationStructureMemoryRequirementsInfoNV & setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructure = accelerationStructure_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureMemoryRequirementsInfoNV const& ) const = default; -#else - bool operator==( AccelerationStructureMemoryRequirementsInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ) - && ( accelerationStructure == rhs.accelerationStructure ); - } - - bool operator!=( AccelerationStructureMemoryRequirementsInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureMemoryRequirementsInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV type = VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsTypeNV::eObject; - VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {}; - - }; - static_assert( sizeof( AccelerationStructureMemoryRequirementsInfoNV ) == sizeof( VkAccelerationStructureMemoryRequirementsInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureMemoryRequirementsInfoNV; - }; - - struct AccelerationStructureVersionInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAccelerationStructureVersionInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR(const uint8_t* pVersionData_ = {}) VULKAN_HPP_NOEXCEPT - : pVersionData( pVersionData_ ) - {} - - VULKAN_HPP_CONSTEXPR AccelerationStructureVersionInfoKHR( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureVersionInfoKHR( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : AccelerationStructureVersionInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AccelerationStructureVersionInfoKHR & operator=( AccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AccelerationStructureVersionInfoKHR & operator=( VkAccelerationStructureVersionInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AccelerationStructureVersionInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AccelerationStructureVersionInfoKHR & setPVersionData( const uint8_t* pVersionData_ ) VULKAN_HPP_NOEXCEPT - { - pVersionData = pVersionData_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AccelerationStructureVersionInfoKHR const& ) const = default; -#else - bool operator==( AccelerationStructureVersionInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pVersionData == rhs.pVersionData ); - } - - bool operator!=( AccelerationStructureVersionInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAccelerationStructureVersionInfoKHR; - const void* pNext = {}; - const uint8_t* pVersionData = {}; - - }; - static_assert( sizeof( AccelerationStructureVersionInfoKHR ) == sizeof( VkAccelerationStructureVersionInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AccelerationStructureVersionInfoKHR; - }; - - class SwapchainKHR - { - public: - using CType = VkSwapchainKHR; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSwapchainKHR; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSwapchainKHR; - - public: - VULKAN_HPP_CONSTEXPR SwapchainKHR() VULKAN_HPP_NOEXCEPT - : m_swapchainKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR SwapchainKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_swapchainKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT SwapchainKHR( VkSwapchainKHR swapchainKHR ) VULKAN_HPP_NOEXCEPT - : m_swapchainKHR( swapchainKHR ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - SwapchainKHR & operator=(VkSwapchainKHR swapchainKHR) VULKAN_HPP_NOEXCEPT - { - m_swapchainKHR = swapchainKHR; - return *this; - } -#endif - - SwapchainKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_swapchainKHR = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SwapchainKHR const& ) const = default; -#else - bool operator==( SwapchainKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_swapchainKHR == rhs.m_swapchainKHR; - } - - bool operator!=(SwapchainKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_swapchainKHR != rhs.m_swapchainKHR; - } - - bool operator<(SwapchainKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_swapchainKHR < rhs.m_swapchainKHR; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::SwapchainKHR ) == sizeof( VkSwapchainKHR ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::SwapchainKHR; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::SwapchainKHR; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::SwapchainKHR; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - class Semaphore - { - public: - using CType = VkSemaphore; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSemaphore; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSemaphore; - - public: - VULKAN_HPP_CONSTEXPR Semaphore() VULKAN_HPP_NOEXCEPT - : m_semaphore(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Semaphore( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_semaphore(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Semaphore( VkSemaphore semaphore ) VULKAN_HPP_NOEXCEPT - : m_semaphore( semaphore ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Semaphore & operator=(VkSemaphore semaphore) VULKAN_HPP_NOEXCEPT - { - m_semaphore = semaphore; - return *this; - } -#endif - - Semaphore & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_semaphore = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Semaphore const& ) const = default; -#else - bool operator==( Semaphore const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_semaphore == rhs.m_semaphore; - } - - bool operator!=(Semaphore const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_semaphore != rhs.m_semaphore; - } - - bool operator<(Semaphore const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_semaphore < rhs.m_semaphore; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Semaphore ) == sizeof( VkSemaphore ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Semaphore; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Semaphore; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Semaphore; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - class Fence - { - public: - using CType = VkFence; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eFence; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFence; - - public: - VULKAN_HPP_CONSTEXPR Fence() VULKAN_HPP_NOEXCEPT - : m_fence(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Fence( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_fence(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Fence( VkFence fence ) VULKAN_HPP_NOEXCEPT - : m_fence( fence ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Fence & operator=(VkFence fence) VULKAN_HPP_NOEXCEPT - { - m_fence = fence; - return *this; - } -#endif - - Fence & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_fence = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Fence const& ) const = default; -#else - bool operator==( Fence const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_fence == rhs.m_fence; - } - - bool operator!=(Fence const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_fence != rhs.m_fence; - } - - bool operator<(Fence const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_fence < rhs.m_fence; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Fence ) == sizeof( VkFence ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Fence; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Fence; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Fence; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct AcquireNextImageInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAcquireNextImageInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AcquireNextImageInfoKHR(VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}, uint64_t timeout_ = {}, VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::Fence fence_ = {}, uint32_t deviceMask_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AcquireNextImageInfoKHR & operator=( AcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AcquireNextImageInfoKHR & operator=( VkAcquireNextImageInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AcquireNextImageInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AcquireNextImageInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT - { - swapchain = swapchain_; - return *this; - } - - AcquireNextImageInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT - { - timeout = timeout_; - return *this; - } - - AcquireNextImageInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT - { - semaphore = semaphore_; - return *this; - } - - AcquireNextImageInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT - { - fence = fence_; - return *this; - } - - AcquireNextImageInfoKHR & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT - { - deviceMask = deviceMask_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AcquireNextImageInfoKHR const& ) const = default; -#else - bool operator==( AcquireNextImageInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchain == rhs.swapchain ) - && ( timeout == rhs.timeout ) - && ( semaphore == rhs.semaphore ) - && ( fence == rhs.fence ) - && ( deviceMask == rhs.deviceMask ); - } - - bool operator!=( AcquireNextImageInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireNextImageInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {}; - uint64_t timeout = {}; - VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; - VULKAN_HPP_NAMESPACE::Fence fence = {}; - uint32_t deviceMask = {}; - - }; - static_assert( sizeof( AcquireNextImageInfoKHR ) == sizeof( VkAcquireNextImageInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AcquireNextImageInfoKHR; - }; - - struct AcquireProfilingLockInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAcquireProfilingLockInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AcquireProfilingLockInfoKHR(VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ = {}, uint64_t timeout_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AcquireProfilingLockInfoKHR & operator=( AcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AcquireProfilingLockInfoKHR & operator=( VkAcquireProfilingLockInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AcquireProfilingLockInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AcquireProfilingLockInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - AcquireProfilingLockInfoKHR & setTimeout( uint64_t timeout_ ) VULKAN_HPP_NOEXCEPT - { - timeout = timeout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AcquireProfilingLockInfoKHR const& ) const = default; -#else - bool operator==( AcquireProfilingLockInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( timeout == rhs.timeout ); - } - - bool operator!=( AcquireProfilingLockInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAcquireProfilingLockInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AcquireProfilingLockFlagsKHR flags = {}; - uint64_t timeout = {}; - - }; - static_assert( sizeof( AcquireProfilingLockInfoKHR ) == sizeof( VkAcquireProfilingLockInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AcquireProfilingLockInfoKHR; - }; - - struct AllocationCallbacks - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AllocationCallbacks(void* pUserData_ = {}, PFN_vkAllocationFunction pfnAllocation_ = {}, PFN_vkReallocationFunction pfnReallocation_ = {}, PFN_vkFreeFunction pfnFree_ = {}, PFN_vkInternalAllocationNotification pfnInternalAllocation_ = {}, PFN_vkInternalFreeNotification 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AllocationCallbacks & operator=( AllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AllocationCallbacks & operator=( VkAllocationCallbacks const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AllocationCallbacks & setPUserData( void* pUserData_ ) VULKAN_HPP_NOEXCEPT - { - pUserData = pUserData_; - return *this; - } - - AllocationCallbacks & setPfnAllocation( PFN_vkAllocationFunction pfnAllocation_ ) VULKAN_HPP_NOEXCEPT - { - pfnAllocation = pfnAllocation_; - return *this; - } - - AllocationCallbacks & setPfnReallocation( PFN_vkReallocationFunction pfnReallocation_ ) VULKAN_HPP_NOEXCEPT - { - pfnReallocation = pfnReallocation_; - return *this; - } - - AllocationCallbacks & setPfnFree( PFN_vkFreeFunction pfnFree_ ) VULKAN_HPP_NOEXCEPT - { - pfnFree = pfnFree_; - return *this; - } - - AllocationCallbacks & setPfnInternalAllocation( PFN_vkInternalAllocationNotification pfnInternalAllocation_ ) VULKAN_HPP_NOEXCEPT - { - pfnInternalAllocation = pfnInternalAllocation_; - return *this; - } - - AllocationCallbacks & setPfnInternalFree( PFN_vkInternalFreeNotification pfnInternalFree_ ) VULKAN_HPP_NOEXCEPT - { - pfnInternalFree = pfnInternalFree_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AllocationCallbacks const& ) const = default; -#else - bool operator==( AllocationCallbacks const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( pUserData == rhs.pUserData ) - && ( pfnAllocation == rhs.pfnAllocation ) - && ( pfnReallocation == rhs.pfnReallocation ) - && ( pfnFree == rhs.pfnFree ) - && ( pfnInternalAllocation == rhs.pfnInternalAllocation ) - && ( pfnInternalFree == rhs.pfnInternalFree ); - } - - bool operator!=( AllocationCallbacks const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - void* pUserData = {}; - PFN_vkAllocationFunction pfnAllocation = {}; - PFN_vkReallocationFunction pfnReallocation = {}; - PFN_vkFreeFunction pfnFree = {}; - PFN_vkInternalAllocationNotification pfnInternalAllocation = {}; - PFN_vkInternalFreeNotification pfnInternalFree = {}; - - }; - static_assert( sizeof( AllocationCallbacks ) == sizeof( VkAllocationCallbacks ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ComponentMapping - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ComponentMapping(VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity, VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity, VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity, VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ComponentMapping & operator=( ComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ComponentMapping & operator=( VkComponentMapping const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ComponentMapping & setR( VULKAN_HPP_NAMESPACE::ComponentSwizzle r_ ) VULKAN_HPP_NOEXCEPT - { - r = r_; - return *this; - } - - ComponentMapping & setG( VULKAN_HPP_NAMESPACE::ComponentSwizzle g_ ) VULKAN_HPP_NOEXCEPT - { - g = g_; - return *this; - } - - ComponentMapping & setB( VULKAN_HPP_NAMESPACE::ComponentSwizzle b_ ) VULKAN_HPP_NOEXCEPT - { - b = b_; - return *this; - } - - ComponentMapping & setA( VULKAN_HPP_NAMESPACE::ComponentSwizzle a_ ) VULKAN_HPP_NOEXCEPT - { - a = a_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ComponentMapping const& ) const = default; -#else - bool operator==( ComponentMapping const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( r == rhs.r ) - && ( g == rhs.g ) - && ( b == rhs.b ) - && ( a == rhs.a ); - } - - bool operator!=( ComponentMapping const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ComponentSwizzle r = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity; - VULKAN_HPP_NAMESPACE::ComponentSwizzle g = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity; - VULKAN_HPP_NAMESPACE::ComponentSwizzle b = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity; - VULKAN_HPP_NAMESPACE::ComponentSwizzle a = VULKAN_HPP_NAMESPACE::ComponentSwizzle::eIdentity; - - }; - static_assert( sizeof( ComponentMapping ) == sizeof( VkComponentMapping ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct AndroidHardwareBufferFormatPropertiesANDROID - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AndroidHardwareBufferFormatPropertiesANDROID(VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, uint64_t externalFormat_ = {}, VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures_ = {}, VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents_ = {}, VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity, VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull, VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AndroidHardwareBufferFormatPropertiesANDROID & operator=( AndroidHardwareBufferFormatPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AndroidHardwareBufferFormatPropertiesANDROID const& ) const = default; -#else - bool operator==( AndroidHardwareBufferFormatPropertiesANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( AndroidHardwareBufferFormatPropertiesANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferFormatPropertiesANDROID; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - uint64_t externalFormat = {}; - VULKAN_HPP_NAMESPACE::FormatFeatureFlags formatFeatures = {}; - VULKAN_HPP_NAMESPACE::ComponentMapping samplerYcbcrConversionComponents = {}; - VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion suggestedYcbcrModel = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity; - VULKAN_HPP_NAMESPACE::SamplerYcbcrRange suggestedYcbcrRange = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull; - VULKAN_HPP_NAMESPACE::ChromaLocation suggestedXChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; - VULKAN_HPP_NAMESPACE::ChromaLocation suggestedYChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; - - }; - static_assert( sizeof( AndroidHardwareBufferFormatPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferFormatPropertiesANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AndroidHardwareBufferFormatPropertiesANDROID; - }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct AndroidHardwareBufferPropertiesANDROID - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidHardwareBufferPropertiesANDROID; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AndroidHardwareBufferPropertiesANDROID(VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {}, uint32_t memoryTypeBits_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AndroidHardwareBufferPropertiesANDROID & operator=( AndroidHardwareBufferPropertiesANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AndroidHardwareBufferPropertiesANDROID const& ) const = default; -#else - bool operator==( AndroidHardwareBufferPropertiesANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( allocationSize == rhs.allocationSize ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( AndroidHardwareBufferPropertiesANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferPropertiesANDROID; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceSize allocationSize = {}; - uint32_t memoryTypeBits = {}; - - }; - static_assert( sizeof( AndroidHardwareBufferPropertiesANDROID ) == sizeof( VkAndroidHardwareBufferPropertiesANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AndroidHardwareBufferPropertiesANDROID; - }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct AndroidHardwareBufferUsageANDROID - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidHardwareBufferUsageANDROID; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AndroidHardwareBufferUsageANDROID(uint64_t androidHardwareBufferUsage_ = {}) VULKAN_HPP_NOEXCEPT - : androidHardwareBufferUsage( androidHardwareBufferUsage_ ) - {} - - VULKAN_HPP_CONSTEXPR AndroidHardwareBufferUsageANDROID( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AndroidHardwareBufferUsageANDROID( VkAndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT - : AndroidHardwareBufferUsageANDROID( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AndroidHardwareBufferUsageANDROID & operator=( AndroidHardwareBufferUsageANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AndroidHardwareBufferUsageANDROID const& ) const = default; -#else - bool operator==( AndroidHardwareBufferUsageANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( androidHardwareBufferUsage == rhs.androidHardwareBufferUsage ); - } - - bool operator!=( AndroidHardwareBufferUsageANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidHardwareBufferUsageANDROID; - void* pNext = {}; - uint64_t androidHardwareBufferUsage = {}; - - }; - static_assert( sizeof( AndroidHardwareBufferUsageANDROID ) == sizeof( VkAndroidHardwareBufferUsageANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AndroidHardwareBufferUsageANDROID; - }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct AndroidSurfaceCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAndroidSurfaceCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AndroidSurfaceCreateInfoKHR(VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_ = {}, struct ANativeWindow* window_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AndroidSurfaceCreateInfoKHR & operator=( AndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AndroidSurfaceCreateInfoKHR & operator=( VkAndroidSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AndroidSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AndroidSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - AndroidSurfaceCreateInfoKHR & setWindow( struct ANativeWindow* window_ ) VULKAN_HPP_NOEXCEPT - { - window = window_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AndroidSurfaceCreateInfoKHR const& ) const = default; -#else - bool operator==( AndroidSurfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( window == rhs.window ); - } - - bool operator!=( AndroidSurfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAndroidSurfaceCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateFlagsKHR flags = {}; - struct ANativeWindow* window = {}; - - }; - static_assert( sizeof( AndroidSurfaceCreateInfoKHR ) == sizeof( VkAndroidSurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AndroidSurfaceCreateInfoKHR; - }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - struct ApplicationInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eApplicationInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ApplicationInfo(const char* pApplicationName_ = {}, uint32_t applicationVersion_ = {}, const char* pEngineName_ = {}, uint32_t engineVersion_ = {}, uint32_t apiVersion_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ApplicationInfo & operator=( ApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ApplicationInfo & operator=( VkApplicationInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ApplicationInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ApplicationInfo & setPApplicationName( const char* pApplicationName_ ) VULKAN_HPP_NOEXCEPT - { - pApplicationName = pApplicationName_; - return *this; - } - - ApplicationInfo & setApplicationVersion( uint32_t applicationVersion_ ) VULKAN_HPP_NOEXCEPT - { - applicationVersion = applicationVersion_; - return *this; - } - - ApplicationInfo & setPEngineName( const char* pEngineName_ ) VULKAN_HPP_NOEXCEPT - { - pEngineName = pEngineName_; - return *this; - } - - ApplicationInfo & setEngineVersion( uint32_t engineVersion_ ) VULKAN_HPP_NOEXCEPT - { - engineVersion = engineVersion_; - return *this; - } - - ApplicationInfo & setApiVersion( uint32_t apiVersion_ ) VULKAN_HPP_NOEXCEPT - { - apiVersion = apiVersion_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ApplicationInfo const& ) const = default; -#else - bool operator==( ApplicationInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pApplicationName == rhs.pApplicationName ) - && ( applicationVersion == rhs.applicationVersion ) - && ( pEngineName == rhs.pEngineName ) - && ( engineVersion == rhs.engineVersion ) - && ( apiVersion == rhs.apiVersion ); - } - - bool operator!=( ApplicationInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eApplicationInfo; - const void* pNext = {}; - const char* pApplicationName = {}; - uint32_t applicationVersion = {}; - const char* pEngineName = {}; - uint32_t engineVersion = {}; - uint32_t apiVersion = {}; - - }; - static_assert( sizeof( ApplicationInfo ) == sizeof( VkApplicationInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ApplicationInfo; - }; - - struct AttachmentDescription - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AttachmentDescription(VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AttachmentDescription & operator=( AttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AttachmentDescription & operator=( VkAttachmentDescription const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AttachmentDescription & setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - AttachmentDescription & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - AttachmentDescription & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT - { - samples = samples_; - return *this; - } - - AttachmentDescription & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT - { - loadOp = loadOp_; - return *this; - } - - AttachmentDescription & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT - { - storeOp = storeOp_; - return *this; - } - - AttachmentDescription & setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT - { - stencilLoadOp = stencilLoadOp_; - return *this; - } - - AttachmentDescription & setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT - { - stencilStoreOp = stencilStoreOp_; - return *this; - } - - AttachmentDescription & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT - { - initialLayout = initialLayout_; - return *this; - } - - AttachmentDescription & setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT - { - finalLayout = finalLayout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AttachmentDescription const& ) const = default; -#else - bool operator==( AttachmentDescription const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( AttachmentDescription const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags = {}; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; - VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad; - VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore; - VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad; - VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore; - VULKAN_HPP_NAMESPACE::ImageLayout initialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::ImageLayout finalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - - }; - static_assert( sizeof( AttachmentDescription ) == sizeof( VkAttachmentDescription ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct AttachmentDescription2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentDescription2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AttachmentDescription2(VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad, VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore, VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ = VULKAN_HPP_NAMESPACE::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 AttachmentDescription2( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AttachmentDescription2( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT - : AttachmentDescription2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AttachmentDescription2 & operator=( AttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AttachmentDescription2 & operator=( VkAttachmentDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AttachmentDescription2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AttachmentDescription2 & setFlags( VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - AttachmentDescription2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - AttachmentDescription2 & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT - { - samples = samples_; - return *this; - } - - AttachmentDescription2 & setLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp_ ) VULKAN_HPP_NOEXCEPT - { - loadOp = loadOp_; - return *this; - } - - AttachmentDescription2 & setStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp_ ) VULKAN_HPP_NOEXCEPT - { - storeOp = storeOp_; - return *this; - } - - AttachmentDescription2 & setStencilLoadOp( VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp_ ) VULKAN_HPP_NOEXCEPT - { - stencilLoadOp = stencilLoadOp_; - return *this; - } - - AttachmentDescription2 & setStencilStoreOp( VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp_ ) VULKAN_HPP_NOEXCEPT - { - stencilStoreOp = stencilStoreOp_; - return *this; - } - - AttachmentDescription2 & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT - { - initialLayout = initialLayout_; - return *this; - } - - AttachmentDescription2 & setFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout finalLayout_ ) VULKAN_HPP_NOEXCEPT - { - finalLayout = finalLayout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AttachmentDescription2 const& ) const = default; -#else - bool operator==( AttachmentDescription2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( AttachmentDescription2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescription2; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AttachmentDescriptionFlags flags = {}; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; - VULKAN_HPP_NAMESPACE::AttachmentLoadOp loadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad; - VULKAN_HPP_NAMESPACE::AttachmentStoreOp storeOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore; - VULKAN_HPP_NAMESPACE::AttachmentLoadOp stencilLoadOp = VULKAN_HPP_NAMESPACE::AttachmentLoadOp::eLoad; - VULKAN_HPP_NAMESPACE::AttachmentStoreOp stencilStoreOp = VULKAN_HPP_NAMESPACE::AttachmentStoreOp::eStore; - VULKAN_HPP_NAMESPACE::ImageLayout initialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::ImageLayout finalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - - }; - static_assert( sizeof( AttachmentDescription2 ) == sizeof( VkAttachmentDescription2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AttachmentDescription2; - }; - using AttachmentDescription2KHR = AttachmentDescription2; - - struct AttachmentDescriptionStencilLayout - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentDescriptionStencilLayout; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AttachmentDescriptionStencilLayout(VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AttachmentDescriptionStencilLayout & operator=( AttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AttachmentDescriptionStencilLayout & operator=( VkAttachmentDescriptionStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AttachmentDescriptionStencilLayout & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AttachmentDescriptionStencilLayout & setStencilInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout_ ) VULKAN_HPP_NOEXCEPT - { - stencilInitialLayout = stencilInitialLayout_; - return *this; - } - - AttachmentDescriptionStencilLayout & setStencilFinalLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout_ ) VULKAN_HPP_NOEXCEPT - { - stencilFinalLayout = stencilFinalLayout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AttachmentDescriptionStencilLayout const& ) const = default; -#else - bool operator==( AttachmentDescriptionStencilLayout const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stencilInitialLayout == rhs.stencilInitialLayout ) - && ( stencilFinalLayout == rhs.stencilFinalLayout ); - } - - bool operator!=( AttachmentDescriptionStencilLayout const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentDescriptionStencilLayout; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageLayout stencilInitialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::ImageLayout stencilFinalLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - - }; - static_assert( sizeof( AttachmentDescriptionStencilLayout ) == sizeof( VkAttachmentDescriptionStencilLayout ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AttachmentDescriptionStencilLayout; - }; - using AttachmentDescriptionStencilLayoutKHR = AttachmentDescriptionStencilLayout; - - struct AttachmentReference - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AttachmentReference(uint32_t attachment_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AttachmentReference & operator=( AttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AttachmentReference & operator=( VkAttachmentReference const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AttachmentReference & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT - { - attachment = attachment_; - return *this; - } - - AttachmentReference & setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT - { - layout = layout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AttachmentReference const& ) const = default; -#else - bool operator==( AttachmentReference const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( attachment == rhs.attachment ) - && ( layout == rhs.layout ); - } - - bool operator!=( AttachmentReference const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t attachment = {}; - VULKAN_HPP_NAMESPACE::ImageLayout layout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - - }; - static_assert( sizeof( AttachmentReference ) == sizeof( VkAttachmentReference ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct AttachmentReference2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentReference2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AttachmentReference2(uint32_t attachment_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout layout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AttachmentReference2 & operator=( AttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AttachmentReference2 & operator=( VkAttachmentReference2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AttachmentReference2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AttachmentReference2 & setAttachment( uint32_t attachment_ ) VULKAN_HPP_NOEXCEPT - { - attachment = attachment_; - return *this; - } - - AttachmentReference2 & setLayout( VULKAN_HPP_NAMESPACE::ImageLayout layout_ ) VULKAN_HPP_NOEXCEPT - { - layout = layout_; - return *this; - } - - AttachmentReference2 & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT - { - aspectMask = aspectMask_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AttachmentReference2 const& ) const = default; -#else - bool operator==( AttachmentReference2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( attachment == rhs.attachment ) - && ( layout == rhs.layout ) - && ( aspectMask == rhs.aspectMask ); - } - - bool operator!=( AttachmentReference2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReference2; - const void* pNext = {}; - uint32_t attachment = {}; - VULKAN_HPP_NAMESPACE::ImageLayout layout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; - - }; - static_assert( sizeof( AttachmentReference2 ) == sizeof( VkAttachmentReference2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AttachmentReference2; - }; - using AttachmentReference2KHR = AttachmentReference2; - - struct AttachmentReferenceStencilLayout - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eAttachmentReferenceStencilLayout; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout(VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined) VULKAN_HPP_NOEXCEPT - : stencilLayout( stencilLayout_ ) - {} - - VULKAN_HPP_CONSTEXPR AttachmentReferenceStencilLayout( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AttachmentReferenceStencilLayout( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT - : AttachmentReferenceStencilLayout( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AttachmentReferenceStencilLayout & operator=( AttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AttachmentReferenceStencilLayout & operator=( VkAttachmentReferenceStencilLayout const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AttachmentReferenceStencilLayout & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - AttachmentReferenceStencilLayout & setStencilLayout( VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout_ ) VULKAN_HPP_NOEXCEPT - { - stencilLayout = stencilLayout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AttachmentReferenceStencilLayout const& ) const = default; -#else - bool operator==( AttachmentReferenceStencilLayout const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stencilLayout == rhs.stencilLayout ); - } - - bool operator!=( AttachmentReferenceStencilLayout const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eAttachmentReferenceStencilLayout; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageLayout stencilLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - - }; - static_assert( sizeof( AttachmentReferenceStencilLayout ) == sizeof( VkAttachmentReferenceStencilLayout ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = AttachmentReferenceStencilLayout; - }; - using AttachmentReferenceStencilLayoutKHR = AttachmentReferenceStencilLayout; - - struct Extent2D - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 Extent2D & operator=( Extent2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - Extent2D & operator=( VkExtent2D const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - Extent2D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT - { - width = width_; - return *this; - } - - Extent2D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT - { - height = height_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Extent2D const& ) const = default; -#else - bool operator==( Extent2D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( width == rhs.width ) - && ( height == rhs.height ); - } - - bool operator!=( Extent2D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t width = {}; - uint32_t height = {}; - - }; - static_assert( sizeof( Extent2D ) == sizeof( VkExtent2D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SampleLocationEXT - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SampleLocationEXT & operator=( SampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SampleLocationEXT & operator=( VkSampleLocationEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SampleLocationEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT - { - x = x_; - return *this; - } - - SampleLocationEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT - { - y = y_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SampleLocationEXT const& ) const = default; -#else - bool operator==( SampleLocationEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( x == rhs.x ) - && ( y == rhs.y ); - } - - bool operator!=( SampleLocationEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - float x = {}; - float y = {}; - - }; - static_assert( sizeof( SampleLocationEXT ) == sizeof( VkSampleLocationEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SampleLocationsInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSampleLocationsInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SampleLocationsInfoEXT(VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize_ = {}, uint32_t sampleLocationsCount_ = {}, const VULKAN_HPP_NAMESPACE::SampleLocationEXT* pSampleLocations_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_, VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & sampleLocations_ ) - : sampleLocationsPerPixel( sampleLocationsPerPixel_ ), sampleLocationGridSize( sampleLocationGridSize_ ), sampleLocationsCount( static_cast( sampleLocations_.size() ) ), pSampleLocations( sampleLocations_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SampleLocationsInfoEXT & operator=( SampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SampleLocationsInfoEXT & operator=( VkSampleLocationsInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SampleLocationsInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SampleLocationsInfoEXT & setSampleLocationsPerPixel( VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationsPerPixel = sampleLocationsPerPixel_; - return *this; - } - - SampleLocationsInfoEXT & setSampleLocationGridSize( VULKAN_HPP_NAMESPACE::Extent2D const & sampleLocationGridSize_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationGridSize = sampleLocationGridSize_; - return *this; - } - - SampleLocationsInfoEXT & setSampleLocationsCount( uint32_t sampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationsCount = sampleLocationsCount_; - return *this; - } - - SampleLocationsInfoEXT & setPSampleLocations( const VULKAN_HPP_NAMESPACE::SampleLocationEXT* pSampleLocations_ ) VULKAN_HPP_NOEXCEPT - { - pSampleLocations = pSampleLocations_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SampleLocationsInfoEXT & setSampleLocations( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & sampleLocations_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationsCount = static_cast( sampleLocations_.size() ); - pSampleLocations = sampleLocations_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSampleLocationsInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSampleLocationsInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SampleLocationsInfoEXT const& ) const = default; -#else - bool operator==( SampleLocationsInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sampleLocationsPerPixel == rhs.sampleLocationsPerPixel ) - && ( sampleLocationGridSize == rhs.sampleLocationGridSize ) - && ( sampleLocationsCount == rhs.sampleLocationsCount ) - && ( pSampleLocations == rhs.pSampleLocations ); - } - - bool operator!=( SampleLocationsInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSampleLocationsInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlagBits sampleLocationsPerPixel = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; - VULKAN_HPP_NAMESPACE::Extent2D sampleLocationGridSize = {}; - uint32_t sampleLocationsCount = {}; - const VULKAN_HPP_NAMESPACE::SampleLocationEXT* pSampleLocations = {}; - - }; - static_assert( sizeof( SampleLocationsInfoEXT ) == sizeof( VkSampleLocationsInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SampleLocationsInfoEXT; - }; - - struct AttachmentSampleLocationsEXT - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR AttachmentSampleLocationsEXT(uint32_t attachmentIndex_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 AttachmentSampleLocationsEXT & operator=( AttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - AttachmentSampleLocationsEXT & operator=( VkAttachmentSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - AttachmentSampleLocationsEXT & setAttachmentIndex( uint32_t attachmentIndex_ ) VULKAN_HPP_NOEXCEPT - { - attachmentIndex = attachmentIndex_; - return *this; - } - - AttachmentSampleLocationsEXT & setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationsInfo = sampleLocationsInfo_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( AttachmentSampleLocationsEXT const& ) const = default; -#else - bool operator==( AttachmentSampleLocationsEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( attachmentIndex == rhs.attachmentIndex ) - && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); - } - - bool operator!=( AttachmentSampleLocationsEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t attachmentIndex = {}; - VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {}; - - }; - static_assert( sizeof( AttachmentSampleLocationsEXT ) == sizeof( VkAttachmentSampleLocationsEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct BaseInStructure - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - BaseInStructure(VULKAN_HPP_NAMESPACE::StructureType sType_ = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo) VULKAN_HPP_NOEXCEPT - : sType( sType_ ) - {} - - BaseInStructure( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BaseInStructure( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT - : BaseInStructure( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - BaseInStructure & operator=( BaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BaseInStructure & operator=( VkBaseInStructure const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BaseInStructure & setPNext( const struct VULKAN_HPP_NAMESPACE::BaseInStructure* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BaseInStructure const& ) const = default; -#else - bool operator==( BaseInStructure const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ); - } - - bool operator!=( BaseInStructure const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo; - const struct VULKAN_HPP_NAMESPACE::BaseInStructure* pNext = {}; - - }; - static_assert( sizeof( BaseInStructure ) == sizeof( VkBaseInStructure ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct BaseOutStructure - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - BaseOutStructure(VULKAN_HPP_NAMESPACE::StructureType sType_ = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo) VULKAN_HPP_NOEXCEPT - : sType( sType_ ) - {} - - BaseOutStructure( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BaseOutStructure( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT - : BaseOutStructure( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - BaseOutStructure & operator=( BaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BaseOutStructure & operator=( VkBaseOutStructure const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BaseOutStructure & setPNext( struct VULKAN_HPP_NAMESPACE::BaseOutStructure* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BaseOutStructure const& ) const = default; -#else - bool operator==( BaseOutStructure const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ); - } - - bool operator!=( BaseOutStructure const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = VULKAN_HPP_NAMESPACE::StructureType::eApplicationInfo; - struct VULKAN_HPP_NAMESPACE::BaseOutStructure* pNext = {}; - - }; - static_assert( sizeof( BaseOutStructure ) == sizeof( VkBaseOutStructure ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - class DeviceMemory - { - public: - using CType = VkDeviceMemory; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDeviceMemory; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDeviceMemory; - - public: - VULKAN_HPP_CONSTEXPR DeviceMemory() VULKAN_HPP_NOEXCEPT - : m_deviceMemory(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DeviceMemory( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_deviceMemory(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DeviceMemory( VkDeviceMemory deviceMemory ) VULKAN_HPP_NOEXCEPT - : m_deviceMemory( deviceMemory ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DeviceMemory & operator=(VkDeviceMemory deviceMemory) VULKAN_HPP_NOEXCEPT - { - m_deviceMemory = deviceMemory; - return *this; - } -#endif - - DeviceMemory & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_deviceMemory = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceMemory const& ) const = default; -#else - bool operator==( DeviceMemory const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_deviceMemory == rhs.m_deviceMemory; - } - - bool operator!=(DeviceMemory const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_deviceMemory != rhs.m_deviceMemory; - } - - bool operator<(DeviceMemory const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_deviceMemory < rhs.m_deviceMemory; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DeviceMemory ) == sizeof( VkDeviceMemory ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DeviceMemory; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DeviceMemory; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DeviceMemory; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct BindAccelerationStructureMemoryInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindAccelerationStructureMemoryInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindAccelerationStructureMemoryInfoNV(VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ = {}, VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}, uint32_t deviceIndexCount_ = {}, const uint32_t* pDeviceIndices_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_, VULKAN_HPP_NAMESPACE::DeviceMemory memory_, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) - : accelerationStructure( accelerationStructure_ ), memory( memory_ ), memoryOffset( memoryOffset_ ), deviceIndexCount( static_cast( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindAccelerationStructureMemoryInfoNV & operator=( BindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindAccelerationStructureMemoryInfoNV & operator=( VkBindAccelerationStructureMemoryInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setAccelerationStructure( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructure = accelerationStructure_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT - { - memoryOffset = memoryOffset_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT - { - deviceIndexCount = deviceIndexCount_; - return *this; - } - - BindAccelerationStructureMemoryInfoNV & setPDeviceIndices( const uint32_t* pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - pDeviceIndices = pDeviceIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BindAccelerationStructureMemoryInfoNV & setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - deviceIndexCount = static_cast( deviceIndices_.size() ); - pDeviceIndices = deviceIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkBindAccelerationStructureMemoryInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkBindAccelerationStructureMemoryInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindAccelerationStructureMemoryInfoNV const& ) const = default; -#else - bool operator==( BindAccelerationStructureMemoryInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( accelerationStructure == rhs.accelerationStructure ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ) - && ( deviceIndexCount == rhs.deviceIndexCount ) - && ( pDeviceIndices == rhs.pDeviceIndices ); - } - - bool operator!=( BindAccelerationStructureMemoryInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindAccelerationStructureMemoryInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; - uint32_t deviceIndexCount = {}; - const uint32_t* pDeviceIndices = {}; - - }; - static_assert( sizeof( BindAccelerationStructureMemoryInfoNV ) == sizeof( VkBindAccelerationStructureMemoryInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BindAccelerationStructureMemoryInfoNV; - }; - - struct BindBufferMemoryDeviceGroupInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindBufferMemoryDeviceGroupInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindBufferMemoryDeviceGroupInfo(uint32_t deviceIndexCount_ = {}, const uint32_t* pDeviceIndices_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) - : deviceIndexCount( static_cast( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryDeviceGroupInfo & operator=( BindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindBufferMemoryDeviceGroupInfo & operator=( VkBindBufferMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindBufferMemoryDeviceGroupInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BindBufferMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT - { - deviceIndexCount = deviceIndexCount_; - return *this; - } - - BindBufferMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t* pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - pDeviceIndices = pDeviceIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BindBufferMemoryDeviceGroupInfo & setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - deviceIndexCount = static_cast( deviceIndices_.size() ); - pDeviceIndices = deviceIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkBindBufferMemoryDeviceGroupInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkBindBufferMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindBufferMemoryDeviceGroupInfo const& ) const = default; -#else - bool operator==( BindBufferMemoryDeviceGroupInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceIndexCount == rhs.deviceIndexCount ) - && ( pDeviceIndices == rhs.pDeviceIndices ); - } - - bool operator!=( BindBufferMemoryDeviceGroupInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryDeviceGroupInfo; - const void* pNext = {}; - uint32_t deviceIndexCount = {}; - const uint32_t* pDeviceIndices = {}; - - }; - static_assert( sizeof( BindBufferMemoryDeviceGroupInfo ) == sizeof( VkBindBufferMemoryDeviceGroupInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BindBufferMemoryDeviceGroupInfo; - }; - using BindBufferMemoryDeviceGroupInfoKHR = BindBufferMemoryDeviceGroupInfo; - - struct BindBufferMemoryInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindBufferMemoryInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindBufferMemoryInfo(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindBufferMemoryInfo & operator=( BindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindBufferMemoryInfo & operator=( VkBindBufferMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindBufferMemoryInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BindBufferMemoryInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *this; - } - - BindBufferMemoryInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *this; - } - - BindBufferMemoryInfo & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT - { - memoryOffset = memoryOffset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindBufferMemoryInfo const& ) const = default; -#else - bool operator==( BindBufferMemoryInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ); - } - - bool operator!=( BindBufferMemoryInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindBufferMemoryInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; - - }; - static_assert( sizeof( BindBufferMemoryInfo ) == sizeof( VkBindBufferMemoryInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BindBufferMemoryInfo; - }; - using BindBufferMemoryInfoKHR = BindBufferMemoryInfo; - - struct Offset2D - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 Offset2D & operator=( Offset2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - Offset2D & operator=( VkOffset2D const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - Offset2D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT - { - x = x_; - return *this; - } - - Offset2D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT - { - y = y_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Offset2D const& ) const = default; -#else - bool operator==( Offset2D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( x == rhs.x ) - && ( y == rhs.y ); - } - - bool operator!=( Offset2D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - int32_t x = {}; - int32_t y = {}; - - }; - static_assert( sizeof( Offset2D ) == sizeof( VkOffset2D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct Rect2D - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR Rect2D(VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 Rect2D & operator=( Rect2D const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - Rect2D & operator=( VkRect2D const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - Rect2D & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - Rect2D & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT - { - extent = extent_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Rect2D const& ) const = default; -#else - bool operator==( Rect2D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( offset == rhs.offset ) - && ( extent == rhs.extent ); - } - - bool operator!=( Rect2D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Offset2D offset = {}; - VULKAN_HPP_NAMESPACE::Extent2D extent = {}; - - }; - static_assert( sizeof( Rect2D ) == sizeof( VkRect2D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct BindImageMemoryDeviceGroupInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemoryDeviceGroupInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindImageMemoryDeviceGroupInfo(uint32_t deviceIndexCount_ = {}, const uint32_t* pDeviceIndices_ = {}, uint32_t splitInstanceBindRegionCount_ = {}, const VULKAN_HPP_NAMESPACE::Rect2D* pSplitInstanceBindRegions_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & splitInstanceBindRegions_ = {} ) - : deviceIndexCount( static_cast( deviceIndices_.size() ) ), pDeviceIndices( deviceIndices_.data() ), splitInstanceBindRegionCount( static_cast( splitInstanceBindRegions_.size() ) ), pSplitInstanceBindRegions( splitInstanceBindRegions_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindImageMemoryDeviceGroupInfo & operator=( BindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindImageMemoryDeviceGroupInfo & operator=( VkBindImageMemoryDeviceGroupInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindImageMemoryDeviceGroupInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BindImageMemoryDeviceGroupInfo & setDeviceIndexCount( uint32_t deviceIndexCount_ ) VULKAN_HPP_NOEXCEPT - { - deviceIndexCount = deviceIndexCount_; - return *this; - } - - BindImageMemoryDeviceGroupInfo & setPDeviceIndices( const uint32_t* pDeviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - pDeviceIndices = pDeviceIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BindImageMemoryDeviceGroupInfo & setDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - deviceIndexCount = static_cast( deviceIndices_.size() ); - pDeviceIndices = deviceIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegionCount( uint32_t splitInstanceBindRegionCount_ ) VULKAN_HPP_NOEXCEPT - { - splitInstanceBindRegionCount = splitInstanceBindRegionCount_; - return *this; - } - - BindImageMemoryDeviceGroupInfo & setPSplitInstanceBindRegions( const VULKAN_HPP_NAMESPACE::Rect2D* pSplitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT - { - pSplitInstanceBindRegions = pSplitInstanceBindRegions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BindImageMemoryDeviceGroupInfo & setSplitInstanceBindRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & splitInstanceBindRegions_ ) VULKAN_HPP_NOEXCEPT - { - splitInstanceBindRegionCount = static_cast( splitInstanceBindRegions_.size() ); - pSplitInstanceBindRegions = splitInstanceBindRegions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkBindImageMemoryDeviceGroupInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkBindImageMemoryDeviceGroupInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindImageMemoryDeviceGroupInfo const& ) const = default; -#else - bool operator==( BindImageMemoryDeviceGroupInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceIndexCount == rhs.deviceIndexCount ) - && ( pDeviceIndices == rhs.pDeviceIndices ) - && ( splitInstanceBindRegionCount == rhs.splitInstanceBindRegionCount ) - && ( pSplitInstanceBindRegions == rhs.pSplitInstanceBindRegions ); - } - - bool operator!=( BindImageMemoryDeviceGroupInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryDeviceGroupInfo; - const void* pNext = {}; - uint32_t deviceIndexCount = {}; - const uint32_t* pDeviceIndices = {}; - uint32_t splitInstanceBindRegionCount = {}; - const VULKAN_HPP_NAMESPACE::Rect2D* pSplitInstanceBindRegions = {}; - - }; - static_assert( sizeof( BindImageMemoryDeviceGroupInfo ) == sizeof( VkBindImageMemoryDeviceGroupInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BindImageMemoryDeviceGroupInfo; - }; - using BindImageMemoryDeviceGroupInfoKHR = BindImageMemoryDeviceGroupInfo; - - class Image - { - public: - using CType = VkImage; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eImage; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImage; - - public: - VULKAN_HPP_CONSTEXPR Image() VULKAN_HPP_NOEXCEPT - : m_image(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Image( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_image(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Image( VkImage image ) VULKAN_HPP_NOEXCEPT - : m_image( image ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Image & operator=(VkImage image) VULKAN_HPP_NOEXCEPT - { - m_image = image; - return *this; - } -#endif - - Image & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_image = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Image const& ) const = default; -#else - bool operator==( Image const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_image == rhs.m_image; - } - - bool operator!=(Image const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_image != rhs.m_image; - } - - bool operator<(Image const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_image < rhs.m_image; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Image ) == sizeof( VkImage ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Image; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Image; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Image; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct BindImageMemoryInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemoryInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindImageMemoryInfo(VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindImageMemoryInfo & operator=( BindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindImageMemoryInfo & operator=( VkBindImageMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindImageMemoryInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BindImageMemoryInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *this; - } - - BindImageMemoryInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *this; - } - - BindImageMemoryInfo & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT - { - memoryOffset = memoryOffset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindImageMemoryInfo const& ) const = default; -#else - bool operator==( BindImageMemoryInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ); - } - - bool operator!=( BindImageMemoryInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemoryInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Image image = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; - - }; - static_assert( sizeof( BindImageMemoryInfo ) == sizeof( VkBindImageMemoryInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BindImageMemoryInfo; - }; - using BindImageMemoryInfoKHR = BindImageMemoryInfo; - - struct BindImageMemorySwapchainInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImageMemorySwapchainInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindImageMemorySwapchainInfoKHR(VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}, uint32_t imageIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindImageMemorySwapchainInfoKHR & operator=( BindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindImageMemorySwapchainInfoKHR & operator=( VkBindImageMemorySwapchainInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindImageMemorySwapchainInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BindImageMemorySwapchainInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT - { - swapchain = swapchain_; - return *this; - } - - BindImageMemorySwapchainInfoKHR & setImageIndex( uint32_t imageIndex_ ) VULKAN_HPP_NOEXCEPT - { - imageIndex = imageIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindImageMemorySwapchainInfoKHR const& ) const = default; -#else - bool operator==( BindImageMemorySwapchainInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchain == rhs.swapchain ) - && ( imageIndex == rhs.imageIndex ); - } - - bool operator!=( BindImageMemorySwapchainInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImageMemorySwapchainInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {}; - uint32_t imageIndex = {}; - - }; - static_assert( sizeof( BindImageMemorySwapchainInfoKHR ) == sizeof( VkBindImageMemorySwapchainInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BindImageMemorySwapchainInfoKHR; - }; - - struct BindImagePlaneMemoryInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindImagePlaneMemoryInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo(VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor) VULKAN_HPP_NOEXCEPT - : planeAspect( planeAspect_ ) - {} - - VULKAN_HPP_CONSTEXPR BindImagePlaneMemoryInfo( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindImagePlaneMemoryInfo( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : BindImagePlaneMemoryInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindImagePlaneMemoryInfo & operator=( BindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindImagePlaneMemoryInfo & operator=( VkBindImagePlaneMemoryInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindImagePlaneMemoryInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BindImagePlaneMemoryInfo & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT - { - planeAspect = planeAspect_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindImagePlaneMemoryInfo const& ) const = default; -#else - bool operator==( BindImagePlaneMemoryInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( planeAspect == rhs.planeAspect ); - } - - bool operator!=( BindImagePlaneMemoryInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindImagePlaneMemoryInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor; - - }; - static_assert( sizeof( BindImagePlaneMemoryInfo ) == sizeof( VkBindImagePlaneMemoryInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BindImagePlaneMemoryInfo; - }; - using BindImagePlaneMemoryInfoKHR = BindImagePlaneMemoryInfo; - - struct BindIndexBufferIndirectCommandNV - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindIndexBufferIndirectCommandNV(VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ = {}, uint32_t size_ = {}, VULKAN_HPP_NAMESPACE::IndexType indexType_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindIndexBufferIndirectCommandNV & operator=( BindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindIndexBufferIndirectCommandNV & operator=( VkBindIndexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindIndexBufferIndirectCommandNV & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT - { - bufferAddress = bufferAddress_; - return *this; - } - - BindIndexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *this; - } - - BindIndexBufferIndirectCommandNV & setIndexType( VULKAN_HPP_NAMESPACE::IndexType indexType_ ) VULKAN_HPP_NOEXCEPT - { - indexType = indexType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindIndexBufferIndirectCommandNV const& ) const = default; -#else - bool operator==( BindIndexBufferIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( bufferAddress == rhs.bufferAddress ) - && ( size == rhs.size ) - && ( indexType == rhs.indexType ); - } - - bool operator!=( BindIndexBufferIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {}; - uint32_t size = {}; - VULKAN_HPP_NAMESPACE::IndexType indexType = VULKAN_HPP_NAMESPACE::IndexType::eUint16; - - }; - static_assert( sizeof( BindIndexBufferIndirectCommandNV ) == sizeof( VkBindIndexBufferIndirectCommandNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct BindShaderGroupIndirectCommandNV - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindShaderGroupIndirectCommandNV & operator=( BindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindShaderGroupIndirectCommandNV & operator=( VkBindShaderGroupIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindShaderGroupIndirectCommandNV & setGroupIndex( uint32_t groupIndex_ ) VULKAN_HPP_NOEXCEPT - { - groupIndex = groupIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindShaderGroupIndirectCommandNV const& ) const = default; -#else - bool operator==( BindShaderGroupIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( groupIndex == rhs.groupIndex ); - } - - bool operator!=( BindShaderGroupIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t groupIndex = {}; - - }; - static_assert( sizeof( BindShaderGroupIndirectCommandNV ) == sizeof( VkBindShaderGroupIndirectCommandNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseMemoryBind - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SparseMemoryBind(VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SparseMemoryBind & operator=( SparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SparseMemoryBind & operator=( VkSparseMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SparseMemoryBind & setResourceOffset( VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset_ ) VULKAN_HPP_NOEXCEPT - { - resourceOffset = resourceOffset_; - return *this; - } - - SparseMemoryBind & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *this; - } - - SparseMemoryBind & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *this; - } - - SparseMemoryBind & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT - { - memoryOffset = memoryOffset_; - return *this; - } - - SparseMemoryBind & setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SparseMemoryBind const& ) const = default; -#else - bool operator==( SparseMemoryBind const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( resourceOffset == rhs.resourceOffset ) - && ( size == rhs.size ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ) - && ( flags == rhs.flags ); - } - - bool operator!=( SparseMemoryBind const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DeviceSize resourceOffset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; - VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags = {}; - - }; - static_assert( sizeof( SparseMemoryBind ) == sizeof( VkSparseMemoryBind ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseBufferMemoryBindInfo - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SparseBufferMemoryBindInfo(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, uint32_t bindCount_ = {}, const VULKAN_HPP_NAMESPACE::SparseMemoryBind* 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( VULKAN_HPP_NAMESPACE::Buffer buffer_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) - : buffer( buffer_ ), bindCount( static_cast( binds_.size() ) ), pBinds( binds_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SparseBufferMemoryBindInfo & operator=( SparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SparseBufferMemoryBindInfo & operator=( VkSparseBufferMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SparseBufferMemoryBindInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *this; - } - - SparseBufferMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT - { - bindCount = bindCount_; - return *this; - } - - SparseBufferMemoryBindInfo & setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind* pBinds_ ) VULKAN_HPP_NOEXCEPT - { - pBinds = pBinds_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SparseBufferMemoryBindInfo & setBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) VULKAN_HPP_NOEXCEPT - { - bindCount = static_cast( binds_.size() ); - pBinds = binds_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSparseBufferMemoryBindInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSparseBufferMemoryBindInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SparseBufferMemoryBindInfo const& ) const = default; -#else - bool operator==( SparseBufferMemoryBindInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( buffer == rhs.buffer ) - && ( bindCount == rhs.bindCount ) - && ( pBinds == rhs.pBinds ); - } - - bool operator!=( SparseBufferMemoryBindInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - uint32_t bindCount = {}; - const VULKAN_HPP_NAMESPACE::SparseMemoryBind* pBinds = {}; - - }; - static_assert( sizeof( SparseBufferMemoryBindInfo ) == sizeof( VkSparseBufferMemoryBindInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseImageOpaqueMemoryBindInfo - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SparseImageOpaqueMemoryBindInfo(VULKAN_HPP_NAMESPACE::Image image_ = {}, uint32_t bindCount_ = {}, const VULKAN_HPP_NAMESPACE::SparseMemoryBind* 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( VULKAN_HPP_NAMESPACE::Image image_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) - : image( image_ ), bindCount( static_cast( binds_.size() ) ), pBinds( binds_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SparseImageOpaqueMemoryBindInfo & operator=( SparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SparseImageOpaqueMemoryBindInfo & operator=( VkSparseImageOpaqueMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SparseImageOpaqueMemoryBindInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *this; - } - - SparseImageOpaqueMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT - { - bindCount = bindCount_; - return *this; - } - - SparseImageOpaqueMemoryBindInfo & setPBinds( const VULKAN_HPP_NAMESPACE::SparseMemoryBind* pBinds_ ) VULKAN_HPP_NOEXCEPT - { - pBinds = pBinds_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SparseImageOpaqueMemoryBindInfo & setBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) VULKAN_HPP_NOEXCEPT - { - bindCount = static_cast( binds_.size() ); - pBinds = binds_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSparseImageOpaqueMemoryBindInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSparseImageOpaqueMemoryBindInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SparseImageOpaqueMemoryBindInfo const& ) const = default; -#else - bool operator==( SparseImageOpaqueMemoryBindInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( image == rhs.image ) - && ( bindCount == rhs.bindCount ) - && ( pBinds == rhs.pBinds ); - } - - bool operator!=( SparseImageOpaqueMemoryBindInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Image image = {}; - uint32_t bindCount = {}; - const VULKAN_HPP_NAMESPACE::SparseMemoryBind* pBinds = {}; - - }; - static_assert( sizeof( SparseImageOpaqueMemoryBindInfo ) == sizeof( VkSparseImageOpaqueMemoryBindInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageSubresource - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageSubresource(VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageSubresource & operator=( ImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageSubresource & operator=( VkImageSubresource const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageSubresource & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT - { - aspectMask = aspectMask_; - return *this; - } - - ImageSubresource & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT - { - mipLevel = mipLevel_; - return *this; - } - - ImageSubresource & setArrayLayer( uint32_t arrayLayer_ ) VULKAN_HPP_NOEXCEPT - { - arrayLayer = arrayLayer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageSubresource const& ) const = default; -#else - bool operator==( ImageSubresource const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( aspectMask == rhs.aspectMask ) - && ( mipLevel == rhs.mipLevel ) - && ( arrayLayer == rhs.arrayLayer ); - } - - bool operator!=( ImageSubresource const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; - uint32_t mipLevel = {}; - uint32_t arrayLayer = {}; - - }; - static_assert( sizeof( ImageSubresource ) == sizeof( VkImageSubresource ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct Offset3D - { - - -#if !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_ ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 Offset3D & operator=( Offset3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - Offset3D & operator=( VkOffset3D const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - Offset3D & setX( int32_t x_ ) VULKAN_HPP_NOEXCEPT - { - x = x_; - return *this; - } - - Offset3D & setY( int32_t y_ ) VULKAN_HPP_NOEXCEPT - { - y = y_; - return *this; - } - - Offset3D & setZ( int32_t z_ ) VULKAN_HPP_NOEXCEPT - { - z = z_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Offset3D const& ) const = default; -#else - bool operator==( Offset3D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( x == rhs.x ) - && ( y == rhs.y ) - && ( z == rhs.z ); - } - - bool operator!=( Offset3D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - int32_t x = {}; - int32_t y = {}; - int32_t z = {}; - - }; - static_assert( sizeof( Offset3D ) == sizeof( VkOffset3D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct Extent3D - { - - -#if !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_ ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 Extent3D & operator=( Extent3D const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - Extent3D & operator=( VkExtent3D const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - Extent3D & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT - { - width = width_; - return *this; - } - - Extent3D & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT - { - height = height_; - return *this; - } - - Extent3D & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT - { - depth = depth_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Extent3D const& ) const = default; -#else - bool operator==( Extent3D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( width == rhs.width ) - && ( height == rhs.height ) - && ( depth == rhs.depth ); - } - - bool operator!=( Extent3D const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t width = {}; - uint32_t height = {}; - uint32_t depth = {}; - - }; - static_assert( sizeof( Extent3D ) == sizeof( VkExtent3D ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseImageMemoryBind - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SparseImageMemoryBind(VULKAN_HPP_NAMESPACE::ImageSubresource subresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D offset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}, VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBind & operator=( SparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SparseImageMemoryBind & operator=( VkSparseImageMemoryBind const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SparseImageMemoryBind & setSubresource( VULKAN_HPP_NAMESPACE::ImageSubresource const & subresource_ ) VULKAN_HPP_NOEXCEPT - { - subresource = subresource_; - return *this; - } - - SparseImageMemoryBind & setOffset( VULKAN_HPP_NAMESPACE::Offset3D const & offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - SparseImageMemoryBind & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT - { - extent = extent_; - return *this; - } - - SparseImageMemoryBind & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *this; - } - - SparseImageMemoryBind & setMemoryOffset( VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset_ ) VULKAN_HPP_NOEXCEPT - { - memoryOffset = memoryOffset_; - return *this; - } - - SparseImageMemoryBind & setFlags( VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SparseImageMemoryBind const& ) const = default; -#else - bool operator==( SparseImageMemoryBind const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( subresource == rhs.subresource ) - && ( offset == rhs.offset ) - && ( extent == rhs.extent ) - && ( memory == rhs.memory ) - && ( memoryOffset == rhs.memoryOffset ) - && ( flags == rhs.flags ); - } - - bool operator!=( SparseImageMemoryBind const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ImageSubresource subresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D offset = {}; - VULKAN_HPP_NAMESPACE::Extent3D extent = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset = {}; - VULKAN_HPP_NAMESPACE::SparseMemoryBindFlags flags = {}; - - }; - static_assert( sizeof( SparseImageMemoryBind ) == sizeof( VkSparseImageMemoryBind ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseImageMemoryBindInfo - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SparseImageMemoryBindInfo(VULKAN_HPP_NAMESPACE::Image image_ = {}, uint32_t bindCount_ = {}, const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind* 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( VULKAN_HPP_NAMESPACE::Image image_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) - : image( image_ ), bindCount( static_cast( binds_.size() ) ), pBinds( binds_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryBindInfo & operator=( SparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SparseImageMemoryBindInfo & operator=( VkSparseImageMemoryBindInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SparseImageMemoryBindInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *this; - } - - SparseImageMemoryBindInfo & setBindCount( uint32_t bindCount_ ) VULKAN_HPP_NOEXCEPT - { - bindCount = bindCount_; - return *this; - } - - SparseImageMemoryBindInfo & setPBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind* pBinds_ ) VULKAN_HPP_NOEXCEPT - { - pBinds = pBinds_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SparseImageMemoryBindInfo & setBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & binds_ ) VULKAN_HPP_NOEXCEPT - { - bindCount = static_cast( binds_.size() ); - pBinds = binds_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSparseImageMemoryBindInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSparseImageMemoryBindInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SparseImageMemoryBindInfo const& ) const = default; -#else - bool operator==( SparseImageMemoryBindInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( image == rhs.image ) - && ( bindCount == rhs.bindCount ) - && ( pBinds == rhs.pBinds ); - } - - bool operator!=( SparseImageMemoryBindInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Image image = {}; - uint32_t bindCount = {}; - const VULKAN_HPP_NAMESPACE::SparseImageMemoryBind* pBinds = {}; - - }; - static_assert( sizeof( SparseImageMemoryBindInfo ) == sizeof( VkSparseImageMemoryBindInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct BindSparseInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBindSparseInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindSparseInfo(uint32_t waitSemaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores_ = {}, uint32_t bufferBindCount_ = {}, const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo* pBufferBinds_ = {}, uint32_t imageOpaqueBindCount_ = {}, const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ = {}, uint32_t imageBindCount_ = {}, const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo* pImageBinds_ = {}, uint32_t signalSemaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore* pSignalSemaphores_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bufferBinds_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageOpaqueBinds_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageBinds_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphores_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindSparseInfo & operator=( BindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindSparseInfo & operator=( VkBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindSparseInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BindSparseInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreCount = waitSemaphoreCount_; - return *this; - } - - BindSparseInfo & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - pWaitSemaphores = pWaitSemaphores_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BindSparseInfo & setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreCount = static_cast( waitSemaphores_.size() ); - pWaitSemaphores = waitSemaphores_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - BindSparseInfo & setBufferBindCount( uint32_t bufferBindCount_ ) VULKAN_HPP_NOEXCEPT - { - bufferBindCount = bufferBindCount_; - return *this; - } - - BindSparseInfo & setPBufferBinds( const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo* pBufferBinds_ ) VULKAN_HPP_NOEXCEPT - { - pBufferBinds = pBufferBinds_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BindSparseInfo & setBufferBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bufferBinds_ ) VULKAN_HPP_NOEXCEPT - { - bufferBindCount = static_cast( bufferBinds_.size() ); - pBufferBinds = bufferBinds_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - BindSparseInfo & setImageOpaqueBindCount( uint32_t imageOpaqueBindCount_ ) VULKAN_HPP_NOEXCEPT - { - imageOpaqueBindCount = imageOpaqueBindCount_; - return *this; - } - - BindSparseInfo & setPImageOpaqueBinds( const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT - { - pImageOpaqueBinds = pImageOpaqueBinds_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BindSparseInfo & setImageOpaqueBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageOpaqueBinds_ ) VULKAN_HPP_NOEXCEPT - { - imageOpaqueBindCount = static_cast( imageOpaqueBinds_.size() ); - pImageOpaqueBinds = imageOpaqueBinds_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - BindSparseInfo & setImageBindCount( uint32_t imageBindCount_ ) VULKAN_HPP_NOEXCEPT - { - imageBindCount = imageBindCount_; - return *this; - } - - BindSparseInfo & setPImageBinds( const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo* pImageBinds_ ) VULKAN_HPP_NOEXCEPT - { - pImageBinds = pImageBinds_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BindSparseInfo & setImageBinds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageBinds_ ) VULKAN_HPP_NOEXCEPT - { - imageBindCount = static_cast( imageBinds_.size() ); - pImageBinds = imageBinds_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - BindSparseInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreCount = signalSemaphoreCount_; - return *this; - } - - BindSparseInfo & setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore* pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - pSignalSemaphores = pSignalSemaphores_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BindSparseInfo & setSignalSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreCount = static_cast( signalSemaphores_.size() ); - pSignalSemaphores = signalSemaphores_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkBindSparseInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkBindSparseInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindSparseInfo const& ) const = default; -#else - bool operator==( BindSparseInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( BindSparseInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBindSparseInfo; - const void* pNext = {}; - uint32_t waitSemaphoreCount = {}; - const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores = {}; - uint32_t bufferBindCount = {}; - const VULKAN_HPP_NAMESPACE::SparseBufferMemoryBindInfo* pBufferBinds = {}; - uint32_t imageOpaqueBindCount = {}; - const VULKAN_HPP_NAMESPACE::SparseImageOpaqueMemoryBindInfo* pImageOpaqueBinds = {}; - uint32_t imageBindCount = {}; - const VULKAN_HPP_NAMESPACE::SparseImageMemoryBindInfo* pImageBinds = {}; - uint32_t signalSemaphoreCount = {}; - const VULKAN_HPP_NAMESPACE::Semaphore* pSignalSemaphores = {}; - - }; - static_assert( sizeof( BindSparseInfo ) == sizeof( VkBindSparseInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BindSparseInfo; - }; - - struct BindVertexBufferIndirectCommandNV - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BindVertexBufferIndirectCommandNV(VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BindVertexBufferIndirectCommandNV & operator=( BindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BindVertexBufferIndirectCommandNV & operator=( VkBindVertexBufferIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BindVertexBufferIndirectCommandNV & setBufferAddress( VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress_ ) VULKAN_HPP_NOEXCEPT - { - bufferAddress = bufferAddress_; - return *this; - } - - BindVertexBufferIndirectCommandNV & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *this; - } - - BindVertexBufferIndirectCommandNV & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT - { - stride = stride_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BindVertexBufferIndirectCommandNV const& ) const = default; -#else - bool operator==( BindVertexBufferIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( bufferAddress == rhs.bufferAddress ) - && ( size == rhs.size ) - && ( stride == rhs.stride ); - } - - bool operator!=( BindVertexBufferIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DeviceAddress bufferAddress = {}; - uint32_t size = {}; - uint32_t stride = {}; - - }; - static_assert( sizeof( BindVertexBufferIndirectCommandNV ) == sizeof( VkBindVertexBufferIndirectCommandNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageSubresourceLayers - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageSubresourceLayers(VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageSubresourceLayers & operator=( ImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageSubresourceLayers & operator=( VkImageSubresourceLayers const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageSubresourceLayers & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT - { - aspectMask = aspectMask_; - return *this; - } - - ImageSubresourceLayers & setMipLevel( uint32_t mipLevel_ ) VULKAN_HPP_NOEXCEPT - { - mipLevel = mipLevel_; - return *this; - } - - ImageSubresourceLayers & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT - { - baseArrayLayer = baseArrayLayer_; - return *this; - } - - ImageSubresourceLayers & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT - { - layerCount = layerCount_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageSubresourceLayers const& ) const = default; -#else - bool operator==( ImageSubresourceLayers const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( aspectMask == rhs.aspectMask ) - && ( mipLevel == rhs.mipLevel ) - && ( baseArrayLayer == rhs.baseArrayLayer ) - && ( layerCount == rhs.layerCount ); - } - - bool operator!=( ImageSubresourceLayers const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; - uint32_t mipLevel = {}; - uint32_t baseArrayLayer = {}; - uint32_t layerCount = {}; - - }; - static_assert( sizeof( ImageSubresourceLayers ) == sizeof( VkImageSubresourceLayers ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageBlit2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageBlit2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, std::array const& srcOffsets_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, std::array const& dstOffsets_ = {}) VULKAN_HPP_NOEXCEPT - : srcSubresource( srcSubresource_ ), srcOffsets( srcOffsets_ ), dstSubresource( dstSubresource_ ), dstOffsets( dstOffsets_ ) - {} - - VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR( ImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageBlit2KHR( VkImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageBlit2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageBlit2KHR & operator=( ImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageBlit2KHR & operator=( VkImageBlit2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageBlit2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageBlit2KHR & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT - { - srcSubresource = srcSubresource_; - return *this; - } - - ImageBlit2KHR & setSrcOffsets( std::array const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT - { - srcOffsets = srcOffsets_; - return *this; - } - - ImageBlit2KHR & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT - { - dstSubresource = dstSubresource_; - return *this; - } - - ImageBlit2KHR & setDstOffsets( std::array const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT - { - dstOffsets = dstOffsets_; - return *this; - } - - - operator VkImageBlit2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkImageBlit2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageBlit2KHR const& ) const = default; -#else - bool operator==( ImageBlit2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcSubresource == rhs.srcSubresource ) - && ( srcOffsets == rhs.srcOffsets ) - && ( dstSubresource == rhs.dstSubresource ) - && ( dstOffsets == rhs.dstOffsets ); - } - - bool operator!=( ImageBlit2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageBlit2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D srcOffsets = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D dstOffsets = {}; - - }; - static_assert( sizeof( ImageBlit2KHR ) == sizeof( VkImageBlit2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageBlit2KHR; - }; - - struct BlitImageInfo2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBlitImageInfo2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR(VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageBlit2KHR* pRegions_ = {}, VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest) VULKAN_HPP_NOEXCEPT - : srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( regionCount_ ), pRegions( pRegions_ ), filter( filter_ ) - {} - - VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR( BlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BlitImageInfo2KHR( VkBlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : BlitImageInfo2KHR( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BlitImageInfo2KHR( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_, VULKAN_HPP_NAMESPACE::Filter filter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest ) - : srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ), filter( filter_ ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BlitImageInfo2KHR & operator=( BlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BlitImageInfo2KHR & operator=( VkBlitImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BlitImageInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BlitImageInfo2KHR & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT - { - srcImage = srcImage_; - return *this; - } - - BlitImageInfo2KHR & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT - { - srcImageLayout = srcImageLayout_; - return *this; - } - - BlitImageInfo2KHR & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT - { - dstImage = dstImage_; - return *this; - } - - BlitImageInfo2KHR & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT - { - dstImageLayout = dstImageLayout_; - return *this; - } - - BlitImageInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = regionCount_; - return *this; - } - - BlitImageInfo2KHR & setPRegions( const VULKAN_HPP_NAMESPACE::ImageBlit2KHR* pRegions_ ) VULKAN_HPP_NOEXCEPT - { - pRegions = pRegions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BlitImageInfo2KHR & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = static_cast( regions_.size() ); - pRegions = regions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - BlitImageInfo2KHR & setFilter( VULKAN_HPP_NAMESPACE::Filter filter_ ) VULKAN_HPP_NOEXCEPT - { - filter = filter_; - return *this; - } - - - operator VkBlitImageInfo2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkBlitImageInfo2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BlitImageInfo2KHR const& ) const = default; -#else - bool operator==( BlitImageInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( BlitImageInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBlitImageInfo2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Image srcImage = {}; - VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::Image dstImage = {}; - VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - uint32_t regionCount = {}; - const VULKAN_HPP_NAMESPACE::ImageBlit2KHR* pRegions = {}; - VULKAN_HPP_NAMESPACE::Filter filter = VULKAN_HPP_NAMESPACE::Filter::eNearest; - - }; - static_assert( sizeof( BlitImageInfo2KHR ) == sizeof( VkBlitImageInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BlitImageInfo2KHR; - }; - - struct BufferCopy - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferCopy(VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferCopy & operator=( BufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferCopy & operator=( VkBufferCopy const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT - { - srcOffset = srcOffset_; - return *this; - } - - BufferCopy & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT - { - dstOffset = dstOffset_; - return *this; - } - - BufferCopy & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferCopy const& ) const = default; -#else - bool operator==( BufferCopy const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( srcOffset == rhs.srcOffset ) - && ( dstOffset == rhs.dstOffset ) - && ( size == rhs.size ); - } - - bool operator!=( BufferCopy const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - - }; - static_assert( sizeof( BufferCopy ) == sizeof( VkBufferCopy ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct BufferCopy2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCopy2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferCopy2KHR(VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}) VULKAN_HPP_NOEXCEPT - : srcOffset( srcOffset_ ), dstOffset( dstOffset_ ), size( size_ ) - {} - - VULKAN_HPP_CONSTEXPR BufferCopy2KHR( BufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferCopy2KHR( VkBufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : BufferCopy2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferCopy2KHR & operator=( BufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferCopy2KHR & operator=( VkBufferCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferCopy2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferCopy2KHR & setSrcOffset( VULKAN_HPP_NAMESPACE::DeviceSize srcOffset_ ) VULKAN_HPP_NOEXCEPT - { - srcOffset = srcOffset_; - return *this; - } - - BufferCopy2KHR & setDstOffset( VULKAN_HPP_NAMESPACE::DeviceSize dstOffset_ ) VULKAN_HPP_NOEXCEPT - { - dstOffset = dstOffset_; - return *this; - } - - BufferCopy2KHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *this; - } - - - operator VkBufferCopy2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkBufferCopy2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferCopy2KHR const& ) const = default; -#else - bool operator==( BufferCopy2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcOffset == rhs.srcOffset ) - && ( dstOffset == rhs.dstOffset ) - && ( size == rhs.size ); - } - - bool operator!=( BufferCopy2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCopy2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceSize srcOffset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize dstOffset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - - }; - static_assert( sizeof( BufferCopy2KHR ) == sizeof( VkBufferCopy2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferCopy2KHR; - }; - - struct BufferCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferCreateInfo(VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ = {}, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = {}, const uint32_t* pQueueFamilyIndices_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_, VULKAN_HPP_NAMESPACE::DeviceSize size_, VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) - : flags( flags_ ), size( size_ ), usage( usage_ ), sharingMode( sharingMode_ ), queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ), pQueueFamilyIndices( queueFamilyIndices_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferCreateInfo & operator=( BufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferCreateInfo & operator=( VkBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - BufferCreateInfo & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *this; - } - - BufferCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT - { - usage = usage_; - return *this; - } - - BufferCreateInfo & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT - { - sharingMode = sharingMode_; - return *this; - } - - BufferCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndexCount = queueFamilyIndexCount_; - return *this; - } - - BufferCreateInfo & setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT - { - pQueueFamilyIndices = pQueueFamilyIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - BufferCreateInfo & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); - pQueueFamilyIndices = queueFamilyIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkBufferCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkBufferCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferCreateInfo const& ) const = default; -#else - bool operator==( BufferCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( BufferCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::BufferCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - VULKAN_HPP_NAMESPACE::BufferUsageFlags usage = {}; - VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive; - uint32_t queueFamilyIndexCount = {}; - const uint32_t* pQueueFamilyIndices = {}; - - }; - static_assert( sizeof( BufferCreateInfo ) == sizeof( VkBufferCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferCreateInfo; - }; - - struct BufferDeviceAddressCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferDeviceAddressCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferDeviceAddressCreateInfoEXT(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {}) VULKAN_HPP_NOEXCEPT - : deviceAddress( deviceAddress_ ) - {} - - VULKAN_HPP_CONSTEXPR BufferDeviceAddressCreateInfoEXT( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferDeviceAddressCreateInfoEXT( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : BufferDeviceAddressCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressCreateInfoEXT & operator=( BufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferDeviceAddressCreateInfoEXT & operator=( VkBufferDeviceAddressCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferDeviceAddressCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferDeviceAddressCreateInfoEXT & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT - { - deviceAddress = deviceAddress_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferDeviceAddressCreateInfoEXT const& ) const = default; -#else - bool operator==( BufferDeviceAddressCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceAddress == rhs.deviceAddress ); - } - - bool operator!=( BufferDeviceAddressCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferDeviceAddressCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {}; - - }; - static_assert( sizeof( BufferDeviceAddressCreateInfoEXT ) == sizeof( VkBufferDeviceAddressCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferDeviceAddressCreateInfoEXT; - }; - - struct BufferDeviceAddressInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferDeviceAddressInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}) VULKAN_HPP_NOEXCEPT - : buffer( buffer_ ) - {} - - VULKAN_HPP_CONSTEXPR BufferDeviceAddressInfo( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferDeviceAddressInfo( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : BufferDeviceAddressInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferDeviceAddressInfo & operator=( BufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferDeviceAddressInfo & operator=( VkBufferDeviceAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferDeviceAddressInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferDeviceAddressInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferDeviceAddressInfo const& ) const = default; -#else - bool operator==( BufferDeviceAddressInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( BufferDeviceAddressInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferDeviceAddressInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - - }; - static_assert( sizeof( BufferDeviceAddressInfo ) == sizeof( VkBufferDeviceAddressInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferDeviceAddressInfo; - }; - using BufferDeviceAddressInfoEXT = BufferDeviceAddressInfo; - using BufferDeviceAddressInfoKHR = BufferDeviceAddressInfo; - - struct BufferImageCopy - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferImageCopy(VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ = {}, uint32_t bufferRowLength_ = {}, uint32_t bufferImageHeight_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D imageOffset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferImageCopy & operator=( BufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferImageCopy & operator=( VkBufferImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferImageCopy & setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT - { - bufferOffset = bufferOffset_; - return *this; - } - - BufferImageCopy & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT - { - bufferRowLength = bufferRowLength_; - return *this; - } - - BufferImageCopy & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT - { - bufferImageHeight = bufferImageHeight_; - return *this; - } - - BufferImageCopy & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT - { - imageSubresource = imageSubresource_; - return *this; - } - - BufferImageCopy & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT - { - imageOffset = imageOffset_; - return *this; - } - - BufferImageCopy & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT - { - imageExtent = imageExtent_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferImageCopy const& ) const = default; -#else - bool operator==( BufferImageCopy const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( bufferOffset == rhs.bufferOffset ) - && ( bufferRowLength == rhs.bufferRowLength ) - && ( bufferImageHeight == rhs.bufferImageHeight ) - && ( imageSubresource == rhs.imageSubresource ) - && ( imageOffset == rhs.imageOffset ) - && ( imageExtent == rhs.imageExtent ); - } - - bool operator!=( BufferImageCopy const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset = {}; - uint32_t bufferRowLength = {}; - uint32_t bufferImageHeight = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D imageOffset = {}; - VULKAN_HPP_NAMESPACE::Extent3D imageExtent = {}; - - }; - static_assert( sizeof( BufferImageCopy ) == sizeof( VkBufferImageCopy ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct BufferImageCopy2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferImageCopy2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferImageCopy2KHR(VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ = {}, uint32_t bufferRowLength_ = {}, uint32_t bufferImageHeight_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D imageOffset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D imageExtent_ = {}) VULKAN_HPP_NOEXCEPT - : bufferOffset( bufferOffset_ ), bufferRowLength( bufferRowLength_ ), bufferImageHeight( bufferImageHeight_ ), imageSubresource( imageSubresource_ ), imageOffset( imageOffset_ ), imageExtent( imageExtent_ ) - {} - - VULKAN_HPP_CONSTEXPR BufferImageCopy2KHR( BufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferImageCopy2KHR( VkBufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : BufferImageCopy2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferImageCopy2KHR & operator=( BufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferImageCopy2KHR & operator=( VkBufferImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferImageCopy2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferImageCopy2KHR & setBufferOffset( VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset_ ) VULKAN_HPP_NOEXCEPT - { - bufferOffset = bufferOffset_; - return *this; - } - - BufferImageCopy2KHR & setBufferRowLength( uint32_t bufferRowLength_ ) VULKAN_HPP_NOEXCEPT - { - bufferRowLength = bufferRowLength_; - return *this; - } - - BufferImageCopy2KHR & setBufferImageHeight( uint32_t bufferImageHeight_ ) VULKAN_HPP_NOEXCEPT - { - bufferImageHeight = bufferImageHeight_; - return *this; - } - - BufferImageCopy2KHR & setImageSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & imageSubresource_ ) VULKAN_HPP_NOEXCEPT - { - imageSubresource = imageSubresource_; - return *this; - } - - BufferImageCopy2KHR & setImageOffset( VULKAN_HPP_NAMESPACE::Offset3D const & imageOffset_ ) VULKAN_HPP_NOEXCEPT - { - imageOffset = imageOffset_; - return *this; - } - - BufferImageCopy2KHR & setImageExtent( VULKAN_HPP_NAMESPACE::Extent3D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT - { - imageExtent = imageExtent_; - return *this; - } - - - operator VkBufferImageCopy2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkBufferImageCopy2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferImageCopy2KHR const& ) const = default; -#else - bool operator==( BufferImageCopy2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( BufferImageCopy2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferImageCopy2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceSize bufferOffset = {}; - uint32_t bufferRowLength = {}; - uint32_t bufferImageHeight = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers imageSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D imageOffset = {}; - VULKAN_HPP_NAMESPACE::Extent3D imageExtent = {}; - - }; - static_assert( sizeof( BufferImageCopy2KHR ) == sizeof( VkBufferImageCopy2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferImageCopy2KHR; - }; - - struct BufferMemoryBarrier - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryBarrier; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferMemoryBarrier(VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, uint32_t srcQueueFamilyIndex_ = {}, uint32_t dstQueueFamilyIndex_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier & operator=( BufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferMemoryBarrier & operator=( VkBufferMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferMemoryBarrier & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferMemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - srcAccessMask = srcAccessMask_; - return *this; - } - - BufferMemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - dstAccessMask = dstAccessMask_; - return *this; - } - - BufferMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - srcQueueFamilyIndex = srcQueueFamilyIndex_; - return *this; - } - - BufferMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - dstQueueFamilyIndex = dstQueueFamilyIndex_; - return *this; - } - - BufferMemoryBarrier & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *this; - } - - BufferMemoryBarrier & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - BufferMemoryBarrier & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferMemoryBarrier const& ) const = default; -#else - bool operator==( BufferMemoryBarrier const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( BufferMemoryBarrier const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryBarrier; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; - uint32_t srcQueueFamilyIndex = {}; - uint32_t dstQueueFamilyIndex = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - - }; - static_assert( sizeof( BufferMemoryBarrier ) == sizeof( VkBufferMemoryBarrier ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferMemoryBarrier; - }; - - struct BufferMemoryBarrier2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryBarrier2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2KHR(VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask_ = {}, uint32_t srcQueueFamilyIndex_ = {}, uint32_t dstQueueFamilyIndex_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}) VULKAN_HPP_NOEXCEPT - : srcStageMask( srcStageMask_ ), srcAccessMask( srcAccessMask_ ), dstStageMask( dstStageMask_ ), dstAccessMask( dstAccessMask_ ), srcQueueFamilyIndex( srcQueueFamilyIndex_ ), dstQueueFamilyIndex( dstQueueFamilyIndex_ ), buffer( buffer_ ), offset( offset_ ), size( size_ ) - {} - - VULKAN_HPP_CONSTEXPR BufferMemoryBarrier2KHR( BufferMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferMemoryBarrier2KHR( VkBufferMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : BufferMemoryBarrier2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferMemoryBarrier2KHR & operator=( BufferMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferMemoryBarrier2KHR & operator=( VkBufferMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferMemoryBarrier2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferMemoryBarrier2KHR & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_ ) VULKAN_HPP_NOEXCEPT - { - srcStageMask = srcStageMask_; - return *this; - } - - BufferMemoryBarrier2KHR & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - srcAccessMask = srcAccessMask_; - return *this; - } - - BufferMemoryBarrier2KHR & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_ ) VULKAN_HPP_NOEXCEPT - { - dstStageMask = dstStageMask_; - return *this; - } - - BufferMemoryBarrier2KHR & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - dstAccessMask = dstAccessMask_; - return *this; - } - - BufferMemoryBarrier2KHR & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - srcQueueFamilyIndex = srcQueueFamilyIndex_; - return *this; - } - - BufferMemoryBarrier2KHR & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - dstQueueFamilyIndex = dstQueueFamilyIndex_; - return *this; - } - - BufferMemoryBarrier2KHR & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *this; - } - - BufferMemoryBarrier2KHR & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - BufferMemoryBarrier2KHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *this; - } - - - operator VkBufferMemoryBarrier2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkBufferMemoryBarrier2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferMemoryBarrier2KHR const& ) const = default; -#else - bool operator==( BufferMemoryBarrier2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( BufferMemoryBarrier2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryBarrier2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask = {}; - uint32_t srcQueueFamilyIndex = {}; - uint32_t dstQueueFamilyIndex = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - - }; - static_assert( sizeof( BufferMemoryBarrier2KHR ) == sizeof( VkBufferMemoryBarrier2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferMemoryBarrier2KHR; - }; - - struct BufferMemoryRequirementsInfo2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferMemoryRequirementsInfo2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}) VULKAN_HPP_NOEXCEPT - : buffer( buffer_ ) - {} - - VULKAN_HPP_CONSTEXPR BufferMemoryRequirementsInfo2( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferMemoryRequirementsInfo2( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - : BufferMemoryRequirementsInfo2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferMemoryRequirementsInfo2 & operator=( BufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferMemoryRequirementsInfo2 & operator=( VkBufferMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferMemoryRequirementsInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferMemoryRequirementsInfo2 & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferMemoryRequirementsInfo2 const& ) const = default; -#else - bool operator==( BufferMemoryRequirementsInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( BufferMemoryRequirementsInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferMemoryRequirementsInfo2; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - - }; - static_assert( sizeof( BufferMemoryRequirementsInfo2 ) == sizeof( VkBufferMemoryRequirementsInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferMemoryRequirementsInfo2; - }; - using BufferMemoryRequirementsInfo2KHR = BufferMemoryRequirementsInfo2; - - struct BufferOpaqueCaptureAddressCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferOpaqueCaptureAddressCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo(uint64_t opaqueCaptureAddress_ = {}) VULKAN_HPP_NOEXCEPT - : opaqueCaptureAddress( opaqueCaptureAddress_ ) - {} - - VULKAN_HPP_CONSTEXPR BufferOpaqueCaptureAddressCreateInfo( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferOpaqueCaptureAddressCreateInfo( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : BufferOpaqueCaptureAddressCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferOpaqueCaptureAddressCreateInfo & operator=( BufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferOpaqueCaptureAddressCreateInfo & operator=( VkBufferOpaqueCaptureAddressCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferOpaqueCaptureAddressCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferOpaqueCaptureAddressCreateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT - { - opaqueCaptureAddress = opaqueCaptureAddress_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferOpaqueCaptureAddressCreateInfo const& ) const = default; -#else - bool operator==( BufferOpaqueCaptureAddressCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress ); - } - - bool operator!=( BufferOpaqueCaptureAddressCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferOpaqueCaptureAddressCreateInfo; - const void* pNext = {}; - uint64_t opaqueCaptureAddress = {}; - - }; - static_assert( sizeof( BufferOpaqueCaptureAddressCreateInfo ) == sizeof( VkBufferOpaqueCaptureAddressCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferOpaqueCaptureAddressCreateInfo; - }; - using BufferOpaqueCaptureAddressCreateInfoKHR = BufferOpaqueCaptureAddressCreateInfo; - - struct BufferViewCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eBufferViewCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR BufferViewCreateInfo(VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize range_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 BufferViewCreateInfo & operator=( BufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - BufferViewCreateInfo & operator=( VkBufferViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - BufferViewCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - BufferViewCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - BufferViewCreateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *this; - } - - BufferViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - BufferViewCreateInfo & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - BufferViewCreateInfo & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT - { - range = range_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferViewCreateInfo const& ) const = default; -#else - bool operator==( BufferViewCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( buffer == rhs.buffer ) - && ( format == rhs.format ) - && ( offset == rhs.offset ) - && ( range == rhs.range ); - } - - bool operator!=( BufferViewCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eBufferViewCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::BufferViewCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize range = {}; - - }; - static_assert( sizeof( BufferViewCreateInfo ) == sizeof( VkBufferViewCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = BufferViewCreateInfo; - }; - - struct CalibratedTimestampInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCalibratedTimestampInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoEXT(VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain_ = VULKAN_HPP_NAMESPACE::TimeDomainEXT::eDevice) VULKAN_HPP_NOEXCEPT - : timeDomain( timeDomain_ ) - {} - - VULKAN_HPP_CONSTEXPR CalibratedTimestampInfoEXT( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CalibratedTimestampInfoEXT( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : CalibratedTimestampInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CalibratedTimestampInfoEXT & operator=( CalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CalibratedTimestampInfoEXT & operator=( VkCalibratedTimestampInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CalibratedTimestampInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CalibratedTimestampInfoEXT & setTimeDomain( VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain_ ) VULKAN_HPP_NOEXCEPT - { - timeDomain = timeDomain_; - return *this; - } - - - operator VkCalibratedTimestampInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkCalibratedTimestampInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CalibratedTimestampInfoEXT const& ) const = default; -#else - bool operator==( CalibratedTimestampInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( timeDomain == rhs.timeDomain ); - } - - bool operator!=( CalibratedTimestampInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCalibratedTimestampInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::TimeDomainEXT timeDomain = VULKAN_HPP_NAMESPACE::TimeDomainEXT::eDevice; - - }; - static_assert( sizeof( CalibratedTimestampInfoEXT ) == sizeof( VkCalibratedTimestampInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CalibratedTimestampInfoEXT; - }; - - struct CheckpointData2NV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCheckpointData2Nv; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CheckpointData2NV(VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage_ = {}, void* pCheckpointMarker_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CheckpointData2NV & operator=( CheckpointData2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CheckpointData2NV const& ) const = default; -#else - bool operator==( CheckpointData2NV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stage == rhs.stage ) - && ( pCheckpointMarker == rhs.pCheckpointMarker ); - } - - bool operator!=( CheckpointData2NV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCheckpointData2Nv; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage = {}; - void* pCheckpointMarker = {}; - - }; - static_assert( sizeof( CheckpointData2NV ) == sizeof( VkCheckpointData2NV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CheckpointData2NV; - }; - - struct CheckpointDataNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCheckpointDataNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CheckpointDataNV(VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage_ = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe, void* pCheckpointMarker_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CheckpointDataNV & operator=( CheckpointDataNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CheckpointDataNV const& ) const = default; -#else - bool operator==( CheckpointDataNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stage == rhs.stage ) - && ( pCheckpointMarker == rhs.pCheckpointMarker ); - } - - bool operator!=( CheckpointDataNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCheckpointDataNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlagBits stage = VULKAN_HPP_NAMESPACE::PipelineStageFlagBits::eTopOfPipe; - void* pCheckpointMarker = {}; - - }; - static_assert( sizeof( CheckpointDataNV ) == sizeof( VkCheckpointDataNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CheckpointDataNV; - }; - - union ClearColorValue - { - ClearColorValue( VULKAN_HPP_NAMESPACE::ClearColorValue const& rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::ClearColorValue ) ); - } - - ClearColorValue( const std::array& float32_ = {} ) - : float32( float32_ ) - {} - - ClearColorValue( const std::array& int32_ ) - : int32( int32_ ) - {} - - ClearColorValue( const std::array& uint32_ ) - : uint32( uint32_ ) - {} - - ClearColorValue & setFloat32( std::array float32_ ) VULKAN_HPP_NOEXCEPT - { - float32 = float32_; - return *this; - } - - ClearColorValue & setInt32( std::array int32_ ) VULKAN_HPP_NOEXCEPT - { - int32 = int32_; - return *this; - } - - ClearColorValue & setUint32( std::array uint32_ ) VULKAN_HPP_NOEXCEPT - { - uint32 = uint32_; - return *this; - } - - VULKAN_HPP_NAMESPACE::ClearColorValue & operator=( VULKAN_HPP_NAMESPACE::ClearColorValue const & rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::ClearColorValue ) ); - return *this; - } - - operator VkClearColorValue const&() const - { - return *reinterpret_cast(this); - } - - operator VkClearColorValue &() - { - return *reinterpret_cast(this); - } - - VULKAN_HPP_NAMESPACE::ArrayWrapper1D float32; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D int32; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D uint32; - }; - - struct ClearDepthStencilValue - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ClearDepthStencilValue & operator=( ClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ClearDepthStencilValue & operator=( VkClearDepthStencilValue const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ClearDepthStencilValue & setDepth( float depth_ ) VULKAN_HPP_NOEXCEPT - { - depth = depth_; - return *this; - } - - ClearDepthStencilValue & setStencil( uint32_t stencil_ ) VULKAN_HPP_NOEXCEPT - { - stencil = stencil_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ClearDepthStencilValue const& ) const = default; -#else - bool operator==( ClearDepthStencilValue const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( depth == rhs.depth ) - && ( stencil == rhs.stencil ); - } - - bool operator!=( ClearDepthStencilValue const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - float depth = {}; - uint32_t stencil = {}; - - }; - static_assert( sizeof( ClearDepthStencilValue ) == sizeof( VkClearDepthStencilValue ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - union ClearValue - { - ClearValue( VULKAN_HPP_NAMESPACE::ClearValue const& rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::ClearValue ) ); - } - - ClearValue( VULKAN_HPP_NAMESPACE::ClearColorValue color_ = {} ) - : color( color_ ) - {} - - ClearValue( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil_ ) - : depthStencil( depthStencil_ ) - {} - - ClearValue & setColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & color_ ) VULKAN_HPP_NOEXCEPT - { - color = color_; - return *this; - } - - ClearValue & setDepthStencil( VULKAN_HPP_NAMESPACE::ClearDepthStencilValue const & depthStencil_ ) VULKAN_HPP_NOEXCEPT - { - depthStencil = depthStencil_; - return *this; - } - - VULKAN_HPP_NAMESPACE::ClearValue & operator=( VULKAN_HPP_NAMESPACE::ClearValue const & rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::ClearValue ) ); - return *this; - } - - operator VkClearValue const&() const - { - return *reinterpret_cast(this); - } - - operator VkClearValue &() - { - return *reinterpret_cast(this); - } - -#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS - VULKAN_HPP_NAMESPACE::ClearColorValue color; - VULKAN_HPP_NAMESPACE::ClearDepthStencilValue depthStencil; -#else - VkClearColorValue color; - VkClearDepthStencilValue depthStencil; -#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ - }; - - struct ClearAttachment - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - ClearAttachment(VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, uint32_t colorAttachment_ = {}, VULKAN_HPP_NAMESPACE::ClearValue clearValue_ = {}) VULKAN_HPP_NOEXCEPT - : aspectMask( aspectMask_ ), colorAttachment( colorAttachment_ ), clearValue( clearValue_ ) - {} - - ClearAttachment( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ClearAttachment( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT - : ClearAttachment( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - ClearAttachment & operator=( ClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ClearAttachment & operator=( VkClearAttachment const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ClearAttachment & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT - { - aspectMask = aspectMask_; - return *this; - } - - ClearAttachment & setColorAttachment( uint32_t colorAttachment_ ) VULKAN_HPP_NOEXCEPT - { - colorAttachment = colorAttachment_; - return *this; - } - - ClearAttachment & setClearValue( VULKAN_HPP_NAMESPACE::ClearValue const & clearValue_ ) VULKAN_HPP_NOEXCEPT - { - clearValue = clearValue_; - return *this; - } - - - operator VkClearAttachment const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkClearAttachment &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; - uint32_t colorAttachment = {}; - VULKAN_HPP_NAMESPACE::ClearValue clearValue = {}; - - }; - static_assert( sizeof( ClearAttachment ) == sizeof( VkClearAttachment ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ClearRect - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ClearRect(VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ClearRect & operator=( ClearRect const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ClearRect & operator=( VkClearRect const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ClearRect & setRect( VULKAN_HPP_NAMESPACE::Rect2D const & rect_ ) VULKAN_HPP_NOEXCEPT - { - rect = rect_; - return *this; - } - - ClearRect & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT - { - baseArrayLayer = baseArrayLayer_; - return *this; - } - - ClearRect & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT - { - layerCount = layerCount_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ClearRect const& ) const = default; -#else - bool operator==( ClearRect const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( rect == rhs.rect ) - && ( baseArrayLayer == rhs.baseArrayLayer ) - && ( layerCount == rhs.layerCount ); - } - - bool operator!=( ClearRect const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Rect2D rect = {}; - uint32_t baseArrayLayer = {}; - uint32_t layerCount = {}; - - }; - static_assert( sizeof( ClearRect ) == sizeof( VkClearRect ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct CoarseSampleLocationNV - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CoarseSampleLocationNV & operator=( CoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CoarseSampleLocationNV & operator=( VkCoarseSampleLocationNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CoarseSampleLocationNV & setPixelX( uint32_t pixelX_ ) VULKAN_HPP_NOEXCEPT - { - pixelX = pixelX_; - return *this; - } - - CoarseSampleLocationNV & setPixelY( uint32_t pixelY_ ) VULKAN_HPP_NOEXCEPT - { - pixelY = pixelY_; - return *this; - } - - CoarseSampleLocationNV & setSample( uint32_t sample_ ) VULKAN_HPP_NOEXCEPT - { - sample = sample_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CoarseSampleLocationNV const& ) const = default; -#else - bool operator==( CoarseSampleLocationNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( pixelX == rhs.pixelX ) - && ( pixelY == rhs.pixelY ) - && ( sample == rhs.sample ); - } - - bool operator!=( CoarseSampleLocationNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t pixelX = {}; - uint32_t pixelY = {}; - uint32_t sample = {}; - - }; - static_assert( sizeof( CoarseSampleLocationNV ) == sizeof( VkCoarseSampleLocationNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct CoarseSampleOrderCustomNV - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CoarseSampleOrderCustomNV(VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ = VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations, uint32_t sampleCount_ = {}, uint32_t sampleLocationCount_ = {}, const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV* 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( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_, uint32_t sampleCount_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & sampleLocations_ ) - : shadingRate( shadingRate_ ), sampleCount( sampleCount_ ), sampleLocationCount( static_cast( sampleLocations_.size() ) ), pSampleLocations( sampleLocations_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CoarseSampleOrderCustomNV & operator=( CoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CoarseSampleOrderCustomNV & operator=( VkCoarseSampleOrderCustomNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CoarseSampleOrderCustomNV & setShadingRate( VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate_ ) VULKAN_HPP_NOEXCEPT - { - shadingRate = shadingRate_; - return *this; - } - - CoarseSampleOrderCustomNV & setSampleCount( uint32_t sampleCount_ ) VULKAN_HPP_NOEXCEPT - { - sampleCount = sampleCount_; - return *this; - } - - CoarseSampleOrderCustomNV & setSampleLocationCount( uint32_t sampleLocationCount_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationCount = sampleLocationCount_; - return *this; - } - - CoarseSampleOrderCustomNV & setPSampleLocations( const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV* pSampleLocations_ ) VULKAN_HPP_NOEXCEPT - { - pSampleLocations = pSampleLocations_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - CoarseSampleOrderCustomNV & setSampleLocations( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & sampleLocations_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationCount = static_cast( sampleLocations_.size() ); - pSampleLocations = sampleLocations_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkCoarseSampleOrderCustomNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkCoarseSampleOrderCustomNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CoarseSampleOrderCustomNV const& ) const = default; -#else - bool operator==( CoarseSampleOrderCustomNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( shadingRate == rhs.shadingRate ) - && ( sampleCount == rhs.sampleCount ) - && ( sampleLocationCount == rhs.sampleLocationCount ) - && ( pSampleLocations == rhs.pSampleLocations ); - } - - bool operator!=( CoarseSampleOrderCustomNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV shadingRate = VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV::eNoInvocations; - uint32_t sampleCount = {}; - uint32_t sampleLocationCount = {}; - const VULKAN_HPP_NAMESPACE::CoarseSampleLocationNV* pSampleLocations = {}; - - }; - static_assert( sizeof( CoarseSampleOrderCustomNV ) == sizeof( VkCoarseSampleOrderCustomNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - class CommandPool - { - public: - using CType = VkCommandPool; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCommandPool; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandPool; - - public: - VULKAN_HPP_CONSTEXPR CommandPool() VULKAN_HPP_NOEXCEPT - : m_commandPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR CommandPool( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_commandPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT CommandPool( VkCommandPool commandPool ) VULKAN_HPP_NOEXCEPT - : m_commandPool( commandPool ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - CommandPool & operator=(VkCommandPool commandPool) VULKAN_HPP_NOEXCEPT - { - m_commandPool = commandPool; - return *this; - } -#endif - - CommandPool & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_commandPool = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CommandPool const& ) const = default; -#else - bool operator==( CommandPool const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_commandPool == rhs.m_commandPool; - } - - bool operator!=(CommandPool const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_commandPool != rhs.m_commandPool; - } - - bool operator<(CommandPool const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_commandPool < rhs.m_commandPool; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::CommandPool ) == sizeof( VkCommandPool ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::CommandPool; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::CommandPool; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::CommandPool; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct CommandBufferAllocateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferAllocateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CommandBufferAllocateInfo(VULKAN_HPP_NAMESPACE::CommandPool commandPool_ = {}, VULKAN_HPP_NAMESPACE::CommandBufferLevel level_ = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary, uint32_t commandBufferCount_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CommandBufferAllocateInfo & operator=( CommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CommandBufferAllocateInfo & operator=( VkCommandBufferAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CommandBufferAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CommandBufferAllocateInfo & setCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool_ ) VULKAN_HPP_NOEXCEPT - { - commandPool = commandPool_; - return *this; - } - - CommandBufferAllocateInfo & setLevel( VULKAN_HPP_NAMESPACE::CommandBufferLevel level_ ) VULKAN_HPP_NOEXCEPT - { - level = level_; - return *this; - } - - CommandBufferAllocateInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT - { - commandBufferCount = commandBufferCount_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CommandBufferAllocateInfo const& ) const = default; -#else - bool operator==( CommandBufferAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( commandPool == rhs.commandPool ) - && ( level == rhs.level ) - && ( commandBufferCount == rhs.commandBufferCount ); - } - - bool operator!=( CommandBufferAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferAllocateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::CommandPool commandPool = {}; - VULKAN_HPP_NAMESPACE::CommandBufferLevel level = VULKAN_HPP_NAMESPACE::CommandBufferLevel::ePrimary; - uint32_t commandBufferCount = {}; - - }; - static_assert( sizeof( CommandBufferAllocateInfo ) == sizeof( VkCommandBufferAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CommandBufferAllocateInfo; - }; - - class RenderPass - { - public: - using CType = VkRenderPass; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eRenderPass; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eRenderPass; - - public: - VULKAN_HPP_CONSTEXPR RenderPass() VULKAN_HPP_NOEXCEPT - : m_renderPass(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR RenderPass( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_renderPass(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT RenderPass( VkRenderPass renderPass ) VULKAN_HPP_NOEXCEPT - : m_renderPass( renderPass ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - RenderPass & operator=(VkRenderPass renderPass) VULKAN_HPP_NOEXCEPT - { - m_renderPass = renderPass; - return *this; - } -#endif - - RenderPass & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_renderPass = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPass const& ) const = default; -#else - bool operator==( RenderPass const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_renderPass == rhs.m_renderPass; - } - - bool operator!=(RenderPass const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_renderPass != rhs.m_renderPass; - } - - bool operator<(RenderPass const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_renderPass < rhs.m_renderPass; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::RenderPass ) == sizeof( VkRenderPass ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::RenderPass; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::RenderPass; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::RenderPass; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - class Framebuffer - { - public: - using CType = VkFramebuffer; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eFramebuffer; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eFramebuffer; - - public: - VULKAN_HPP_CONSTEXPR Framebuffer() VULKAN_HPP_NOEXCEPT - : m_framebuffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Framebuffer( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_framebuffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Framebuffer( VkFramebuffer framebuffer ) VULKAN_HPP_NOEXCEPT - : m_framebuffer( framebuffer ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Framebuffer & operator=(VkFramebuffer framebuffer) VULKAN_HPP_NOEXCEPT - { - m_framebuffer = framebuffer; - return *this; - } -#endif - - Framebuffer & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_framebuffer = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Framebuffer const& ) const = default; -#else - bool operator==( Framebuffer const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_framebuffer == rhs.m_framebuffer; - } - - bool operator!=(Framebuffer const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_framebuffer != rhs.m_framebuffer; - } - - bool operator<(Framebuffer const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_framebuffer < rhs.m_framebuffer; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Framebuffer ) == sizeof( VkFramebuffer ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Framebuffer; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Framebuffer; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Framebuffer; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct CommandBufferInheritanceInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CommandBufferInheritanceInfo(VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, uint32_t subpass_ = {}, VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable_ = {}, VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags_ = {}, VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceInfo & operator=( CommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CommandBufferInheritanceInfo & operator=( VkCommandBufferInheritanceInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CommandBufferInheritanceInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CommandBufferInheritanceInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT - { - renderPass = renderPass_; - return *this; - } - - CommandBufferInheritanceInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT - { - subpass = subpass_; - return *this; - } - - CommandBufferInheritanceInfo & setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT - { - framebuffer = framebuffer_; - return *this; - } - - CommandBufferInheritanceInfo & setOcclusionQueryEnable( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable_ ) VULKAN_HPP_NOEXCEPT - { - occlusionQueryEnable = occlusionQueryEnable_; - return *this; - } - - CommandBufferInheritanceInfo & setQueryFlags( VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags_ ) VULKAN_HPP_NOEXCEPT - { - queryFlags = queryFlags_; - return *this; - } - - CommandBufferInheritanceInfo & setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT - { - pipelineStatistics = pipelineStatistics_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CommandBufferInheritanceInfo const& ) const = default; -#else - bool operator==( CommandBufferInheritanceInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( CommandBufferInheritanceInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::RenderPass renderPass = {}; - uint32_t subpass = {}; - VULKAN_HPP_NAMESPACE::Framebuffer framebuffer = {}; - VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryEnable = {}; - VULKAN_HPP_NAMESPACE::QueryControlFlags queryFlags = {}; - VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics = {}; - - }; - static_assert( sizeof( CommandBufferInheritanceInfo ) == sizeof( VkCommandBufferInheritanceInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CommandBufferInheritanceInfo; - }; - - struct CommandBufferBeginInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferBeginInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CommandBufferBeginInfo(VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags_ = {}, const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo* pInheritanceInfo_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CommandBufferBeginInfo & operator=( CommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CommandBufferBeginInfo & operator=( VkCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CommandBufferBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CommandBufferBeginInfo & setFlags( VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - CommandBufferBeginInfo & setPInheritanceInfo( const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo* pInheritanceInfo_ ) VULKAN_HPP_NOEXCEPT - { - pInheritanceInfo = pInheritanceInfo_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CommandBufferBeginInfo const& ) const = default; -#else - bool operator==( CommandBufferBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pInheritanceInfo == rhs.pInheritanceInfo ); - } - - bool operator!=( CommandBufferBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferBeginInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::CommandBufferUsageFlags flags = {}; - const VULKAN_HPP_NAMESPACE::CommandBufferInheritanceInfo* pInheritanceInfo = {}; - - }; - static_assert( sizeof( CommandBufferBeginInfo ) == sizeof( VkCommandBufferBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CommandBufferBeginInfo; - }; - - struct CommandBufferInheritanceConditionalRenderingInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT(VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ = {}) VULKAN_HPP_NOEXCEPT - : conditionalRenderingEnable( conditionalRenderingEnable_ ) - {} - - VULKAN_HPP_CONSTEXPR CommandBufferInheritanceConditionalRenderingInfoEXT( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CommandBufferInheritanceConditionalRenderingInfoEXT( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : CommandBufferInheritanceConditionalRenderingInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceConditionalRenderingInfoEXT & operator=( CommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CommandBufferInheritanceConditionalRenderingInfoEXT & operator=( VkCommandBufferInheritanceConditionalRenderingInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CommandBufferInheritanceConditionalRenderingInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CommandBufferInheritanceConditionalRenderingInfoEXT & setConditionalRenderingEnable( VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable_ ) VULKAN_HPP_NOEXCEPT - { - conditionalRenderingEnable = conditionalRenderingEnable_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CommandBufferInheritanceConditionalRenderingInfoEXT const& ) const = default; -#else - bool operator==( CommandBufferInheritanceConditionalRenderingInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( conditionalRenderingEnable == rhs.conditionalRenderingEnable ); - } - - bool operator!=( CommandBufferInheritanceConditionalRenderingInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceConditionalRenderingInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 conditionalRenderingEnable = {}; - - }; - static_assert( sizeof( CommandBufferInheritanceConditionalRenderingInfoEXT ) == sizeof( VkCommandBufferInheritanceConditionalRenderingInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CommandBufferInheritanceConditionalRenderingInfoEXT; - }; - - struct CommandBufferInheritanceRenderPassTransformInfoQCOM - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CommandBufferInheritanceRenderPassTransformInfoQCOM(VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::Rect2D renderArea_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CommandBufferInheritanceRenderPassTransformInfoQCOM & operator=( CommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CommandBufferInheritanceRenderPassTransformInfoQCOM & operator=( VkCommandBufferInheritanceRenderPassTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CommandBufferInheritanceRenderPassTransformInfoQCOM & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CommandBufferInheritanceRenderPassTransformInfoQCOM & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT - { - transform = transform_; - return *this; - } - - CommandBufferInheritanceRenderPassTransformInfoQCOM & setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT - { - renderArea = renderArea_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CommandBufferInheritanceRenderPassTransformInfoQCOM const& ) const = default; -#else - bool operator==( CommandBufferInheritanceRenderPassTransformInfoQCOM const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( transform == rhs.transform ) - && ( renderArea == rhs.renderArea ); - } - - bool operator!=( CommandBufferInheritanceRenderPassTransformInfoQCOM const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferInheritanceRenderPassTransformInfoQCOM; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; - VULKAN_HPP_NAMESPACE::Rect2D renderArea = {}; - - }; - static_assert( sizeof( CommandBufferInheritanceRenderPassTransformInfoQCOM ) == sizeof( VkCommandBufferInheritanceRenderPassTransformInfoQCOM ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CommandBufferInheritanceRenderPassTransformInfoQCOM; - }; - - struct ConditionalRenderingBeginInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eConditionalRenderingBeginInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ConditionalRenderingBeginInfoEXT(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ConditionalRenderingBeginInfoEXT & operator=( ConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ConditionalRenderingBeginInfoEXT & operator=( VkConditionalRenderingBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ConditionalRenderingBeginInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ConditionalRenderingBeginInfoEXT & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *this; - } - - ConditionalRenderingBeginInfoEXT & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - ConditionalRenderingBeginInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ConditionalRenderingBeginInfoEXT const& ) const = default; -#else - bool operator==( ConditionalRenderingBeginInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ) - && ( offset == rhs.offset ) - && ( flags == rhs.flags ); - } - - bool operator!=( ConditionalRenderingBeginInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eConditionalRenderingBeginInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - VULKAN_HPP_NAMESPACE::ConditionalRenderingFlagsEXT flags = {}; - - }; - static_assert( sizeof( ConditionalRenderingBeginInfoEXT ) == sizeof( VkConditionalRenderingBeginInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ConditionalRenderingBeginInfoEXT; - }; - - struct DebugUtilsLabelEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsLabelEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT(const char* pLabelName_ = {}, std::array const& color_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DebugUtilsLabelEXT & operator=( DebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DebugUtilsLabelEXT & operator=( VkDebugUtilsLabelEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DebugUtilsLabelEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DebugUtilsLabelEXT & setPLabelName( const char* pLabelName_ ) VULKAN_HPP_NOEXCEPT - { - pLabelName = pLabelName_; - return *this; - } - - DebugUtilsLabelEXT & setColor( std::array color_ ) VULKAN_HPP_NOEXCEPT - { - color = color_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugUtilsLabelEXT const& ) const = default; -#else - bool operator==( DebugUtilsLabelEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pLabelName == rhs.pLabelName ) - && ( color == rhs.color ); - } - - bool operator!=( DebugUtilsLabelEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsLabelEXT; - const void* pNext = {}; - const char* pLabelName = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D color = {}; - - }; - static_assert( sizeof( DebugUtilsLabelEXT ) == sizeof( VkDebugUtilsLabelEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DebugUtilsLabelEXT; - }; - - class QueryPool - { - public: - using CType = VkQueryPool; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eQueryPool; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueryPool; - - public: - VULKAN_HPP_CONSTEXPR QueryPool() VULKAN_HPP_NOEXCEPT - : m_queryPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR QueryPool( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_queryPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT QueryPool( VkQueryPool queryPool ) VULKAN_HPP_NOEXCEPT - : m_queryPool( queryPool ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - QueryPool & operator=(VkQueryPool queryPool) VULKAN_HPP_NOEXCEPT - { - m_queryPool = queryPool; - return *this; - } -#endif - - QueryPool & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_queryPool = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( QueryPool const& ) const = default; -#else - bool operator==( QueryPool const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_queryPool == rhs.m_queryPool; - } - - bool operator!=(QueryPool const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_queryPool != rhs.m_queryPool; - } - - bool operator<(QueryPool const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_queryPool < rhs.m_queryPool; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::QueryPool ) == sizeof( VkQueryPool ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::QueryPool; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::QueryPool; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::QueryPool; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct RenderPassBeginInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassBeginInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo(VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ = {}, VULKAN_HPP_NAMESPACE::Rect2D renderArea_ = {}, uint32_t clearValueCount_ = {}, const VULKAN_HPP_NAMESPACE::ClearValue* pClearValues_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::RenderPass renderPass_, VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_, VULKAN_HPP_NAMESPACE::Rect2D renderArea_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & clearValues_ ) - : renderPass( renderPass_ ), framebuffer( framebuffer_ ), renderArea( renderArea_ ), clearValueCount( static_cast( clearValues_.size() ) ), pClearValues( clearValues_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RenderPassBeginInfo & operator=( RenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassBeginInfo & operator=( VkRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RenderPassBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RenderPassBeginInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT - { - renderPass = renderPass_; - return *this; - } - - RenderPassBeginInfo & setFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer_ ) VULKAN_HPP_NOEXCEPT - { - framebuffer = framebuffer_; - return *this; - } - - RenderPassBeginInfo & setRenderArea( VULKAN_HPP_NAMESPACE::Rect2D const & renderArea_ ) VULKAN_HPP_NOEXCEPT - { - renderArea = renderArea_; - return *this; - } - - RenderPassBeginInfo & setClearValueCount( uint32_t clearValueCount_ ) VULKAN_HPP_NOEXCEPT - { - clearValueCount = clearValueCount_; - return *this; - } - - RenderPassBeginInfo & setPClearValues( const VULKAN_HPP_NAMESPACE::ClearValue* pClearValues_ ) VULKAN_HPP_NOEXCEPT - { - pClearValues = pClearValues_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassBeginInfo & setClearValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & clearValues_ ) VULKAN_HPP_NOEXCEPT - { - clearValueCount = static_cast( clearValues_.size() ); - pClearValues = clearValues_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkRenderPassBeginInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPassBeginInfo const& ) const = default; -#else - bool operator==( RenderPassBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( renderPass == rhs.renderPass ) - && ( framebuffer == rhs.framebuffer ) - && ( renderArea == rhs.renderArea ) - && ( clearValueCount == rhs.clearValueCount ) - && ( pClearValues == rhs.pClearValues ); - } - - bool operator!=( RenderPassBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassBeginInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::RenderPass renderPass = {}; - VULKAN_HPP_NAMESPACE::Framebuffer framebuffer = {}; - VULKAN_HPP_NAMESPACE::Rect2D renderArea = {}; - uint32_t clearValueCount = {}; - const VULKAN_HPP_NAMESPACE::ClearValue* pClearValues = {}; - - }; - static_assert( sizeof( RenderPassBeginInfo ) == sizeof( VkRenderPassBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RenderPassBeginInfo; - }; - - struct SubpassBeginInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassBeginInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubpassBeginInfo(VULKAN_HPP_NAMESPACE::SubpassContents contents_ = VULKAN_HPP_NAMESPACE::SubpassContents::eInline) VULKAN_HPP_NOEXCEPT - : contents( contents_ ) - {} - - VULKAN_HPP_CONSTEXPR SubpassBeginInfo( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassBeginInfo( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : SubpassBeginInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubpassBeginInfo & operator=( SubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassBeginInfo & operator=( VkSubpassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubpassBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SubpassBeginInfo & setContents( VULKAN_HPP_NAMESPACE::SubpassContents contents_ ) VULKAN_HPP_NOEXCEPT - { - contents = contents_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubpassBeginInfo const& ) const = default; -#else - bool operator==( SubpassBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( contents == rhs.contents ); - } - - bool operator!=( SubpassBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassBeginInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SubpassContents contents = VULKAN_HPP_NAMESPACE::SubpassContents::eInline; - - }; - static_assert( sizeof( SubpassBeginInfo ) == sizeof( VkSubpassBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SubpassBeginInfo; - }; - using SubpassBeginInfoKHR = SubpassBeginInfo; - - class PipelineLayout - { - public: - using CType = VkPipelineLayout; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePipelineLayout; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineLayout; - - public: - VULKAN_HPP_CONSTEXPR PipelineLayout() VULKAN_HPP_NOEXCEPT - : m_pipelineLayout(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR PipelineLayout( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_pipelineLayout(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT PipelineLayout( VkPipelineLayout pipelineLayout ) VULKAN_HPP_NOEXCEPT - : m_pipelineLayout( pipelineLayout ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - PipelineLayout & operator=(VkPipelineLayout pipelineLayout) VULKAN_HPP_NOEXCEPT - { - m_pipelineLayout = pipelineLayout; - return *this; - } -#endif - - PipelineLayout & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_pipelineLayout = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineLayout const& ) const = default; -#else - bool operator==( PipelineLayout const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_pipelineLayout == rhs.m_pipelineLayout; - } - - bool operator!=(PipelineLayout const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_pipelineLayout != rhs.m_pipelineLayout; - } - - bool operator<(PipelineLayout const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_pipelineLayout < rhs.m_pipelineLayout; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::PipelineLayout ) == sizeof( VkPipelineLayout ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::PipelineLayout; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::PipelineLayout; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::PipelineLayout; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - class DescriptorSet - { - public: - using CType = VkDescriptorSet; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSet; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSet; - - public: - VULKAN_HPP_CONSTEXPR DescriptorSet() VULKAN_HPP_NOEXCEPT - : m_descriptorSet(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DescriptorSet( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_descriptorSet(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSet( VkDescriptorSet descriptorSet ) VULKAN_HPP_NOEXCEPT - : m_descriptorSet( descriptorSet ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DescriptorSet & operator=(VkDescriptorSet descriptorSet) VULKAN_HPP_NOEXCEPT - { - m_descriptorSet = descriptorSet; - return *this; - } -#endif - - DescriptorSet & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_descriptorSet = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorSet const& ) const = default; -#else - bool operator==( DescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorSet == rhs.m_descriptorSet; - } - - bool operator!=(DescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorSet != rhs.m_descriptorSet; - } - - bool operator<(DescriptorSet const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorSet < rhs.m_descriptorSet; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSet ) == sizeof( VkDescriptorSet ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DescriptorSet; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DescriptorSet; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DescriptorSet; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - class Pipeline - { - public: - using CType = VkPipeline; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePipeline; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipeline; - - public: - VULKAN_HPP_CONSTEXPR Pipeline() VULKAN_HPP_NOEXCEPT - : m_pipeline(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Pipeline( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_pipeline(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Pipeline( VkPipeline pipeline ) VULKAN_HPP_NOEXCEPT - : m_pipeline( pipeline ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Pipeline & operator=(VkPipeline pipeline) VULKAN_HPP_NOEXCEPT - { - m_pipeline = pipeline; - return *this; - } -#endif - - Pipeline & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_pipeline = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Pipeline const& ) const = default; -#else - bool operator==( Pipeline const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_pipeline == rhs.m_pipeline; - } - - bool operator!=(Pipeline const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_pipeline != rhs.m_pipeline; - } - - bool operator<(Pipeline const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_pipeline < rhs.m_pipeline; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Pipeline ) == sizeof( VkPipeline ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Pipeline; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Pipeline; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Pipeline; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - class ImageView - { - public: - using CType = VkImageView; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eImageView; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eImageView; - - public: - VULKAN_HPP_CONSTEXPR ImageView() VULKAN_HPP_NOEXCEPT - : m_imageView(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR ImageView( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_imageView(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT ImageView( VkImageView imageView ) VULKAN_HPP_NOEXCEPT - : m_imageView( imageView ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - ImageView & operator=(VkImageView imageView) VULKAN_HPP_NOEXCEPT - { - m_imageView = imageView; - return *this; - } -#endif - - ImageView & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_imageView = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageView const& ) const = default; -#else - bool operator==( ImageView const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_imageView == rhs.m_imageView; - } - - bool operator!=(ImageView const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_imageView != rhs.m_imageView; - } - - bool operator<(ImageView const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_imageView < rhs.m_imageView; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::ImageView ) == sizeof( VkImageView ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::ImageView; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::ImageView; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::ImageView; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct ImageBlit - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 ImageBlit(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, std::array const& srcOffsets_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageBlit & operator=( ImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageBlit & operator=( VkImageBlit const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageBlit & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT - { - srcSubresource = srcSubresource_; - return *this; - } - - ImageBlit & setSrcOffsets( std::array const & srcOffsets_ ) VULKAN_HPP_NOEXCEPT - { - srcOffsets = srcOffsets_; - return *this; - } - - ImageBlit & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT - { - dstSubresource = dstSubresource_; - return *this; - } - - ImageBlit & setDstOffsets( std::array const & dstOffsets_ ) VULKAN_HPP_NOEXCEPT - { - dstOffsets = dstOffsets_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageBlit const& ) const = default; -#else - bool operator==( ImageBlit const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( srcSubresource == rhs.srcSubresource ) - && ( srcOffsets == rhs.srcOffsets ) - && ( dstSubresource == rhs.dstSubresource ) - && ( dstOffsets == rhs.dstOffsets ); - } - - bool operator!=( ImageBlit const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D srcOffsets = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D dstOffsets = {}; - - }; - static_assert( sizeof( ImageBlit ) == sizeof( VkImageBlit ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageSubresourceRange - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageSubresourceRange(VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageSubresourceRange & operator=( ImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageSubresourceRange & operator=( VkImageSubresourceRange const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageSubresourceRange & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT - { - aspectMask = aspectMask_; - return *this; - } - - ImageSubresourceRange & setBaseMipLevel( uint32_t baseMipLevel_ ) VULKAN_HPP_NOEXCEPT - { - baseMipLevel = baseMipLevel_; - return *this; - } - - ImageSubresourceRange & setLevelCount( uint32_t levelCount_ ) VULKAN_HPP_NOEXCEPT - { - levelCount = levelCount_; - return *this; - } - - ImageSubresourceRange & setBaseArrayLayer( uint32_t baseArrayLayer_ ) VULKAN_HPP_NOEXCEPT - { - baseArrayLayer = baseArrayLayer_; - return *this; - } - - ImageSubresourceRange & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT - { - layerCount = layerCount_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageSubresourceRange const& ) const = default; -#else - bool operator==( ImageSubresourceRange const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( aspectMask == rhs.aspectMask ) - && ( baseMipLevel == rhs.baseMipLevel ) - && ( levelCount == rhs.levelCount ) - && ( baseArrayLayer == rhs.baseArrayLayer ) - && ( layerCount == rhs.layerCount ); - } - - bool operator!=( ImageSubresourceRange const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; - uint32_t baseMipLevel = {}; - uint32_t levelCount = {}; - uint32_t baseArrayLayer = {}; - uint32_t layerCount = {}; - - }; - static_assert( sizeof( ImageSubresourceRange ) == sizeof( VkImageSubresourceRange ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct CopyAccelerationStructureInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyAccelerationStructureInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CopyAccelerationStructureInfoKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ = {}, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ = {}, VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CopyAccelerationStructureInfoKHR & operator=( CopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyAccelerationStructureInfoKHR & operator=( VkCopyAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CopyAccelerationStructureInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CopyAccelerationStructureInfoKHR & setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT - { - src = src_; - return *this; - } - - CopyAccelerationStructureInfoKHR & setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT - { - dst = dst_; - return *this; - } - - CopyAccelerationStructureInfoKHR & setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT - { - mode = mode_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CopyAccelerationStructureInfoKHR const& ) const = default; -#else - bool operator==( CopyAccelerationStructureInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( src == rhs.src ) - && ( dst == rhs.dst ) - && ( mode == rhs.mode ); - } - - bool operator!=( CopyAccelerationStructureInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyAccelerationStructureInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst = {}; - VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone; - - }; - static_assert( sizeof( CopyAccelerationStructureInfoKHR ) == sizeof( VkCopyAccelerationStructureInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CopyAccelerationStructureInfoKHR; - }; - - struct CopyAccelerationStructureToMemoryInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - CopyAccelerationStructureToMemoryInfoKHR(VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ = {}, VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR dst_ = {}, VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone) VULKAN_HPP_NOEXCEPT - : src( src_ ), dst( dst_ ), mode( mode_ ) - {} - - CopyAccelerationStructureToMemoryInfoKHR( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyAccelerationStructureToMemoryInfoKHR( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : CopyAccelerationStructureToMemoryInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - CopyAccelerationStructureToMemoryInfoKHR & operator=( CopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyAccelerationStructureToMemoryInfoKHR & operator=( VkCopyAccelerationStructureToMemoryInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CopyAccelerationStructureToMemoryInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CopyAccelerationStructureToMemoryInfoKHR & setSrc( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src_ ) VULKAN_HPP_NOEXCEPT - { - src = src_; - return *this; - } - - CopyAccelerationStructureToMemoryInfoKHR & setDst( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR const & dst_ ) VULKAN_HPP_NOEXCEPT - { - dst = dst_; - return *this; - } - - CopyAccelerationStructureToMemoryInfoKHR & setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT - { - mode = mode_; - return *this; - } - - - operator VkCopyAccelerationStructureToMemoryInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkCopyAccelerationStructureToMemoryInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyAccelerationStructureToMemoryInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureKHR src = {}; - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressKHR dst = {}; - VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone; - - }; - static_assert( sizeof( CopyAccelerationStructureToMemoryInfoKHR ) == sizeof( VkCopyAccelerationStructureToMemoryInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CopyAccelerationStructureToMemoryInfoKHR; - }; - - struct CopyBufferInfo2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyBufferInfo2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CopyBufferInfo2KHR(VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ = {}, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ = {}, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::BufferCopy2KHR* pRegions_ = {}) VULKAN_HPP_NOEXCEPT - : srcBuffer( srcBuffer_ ), dstBuffer( dstBuffer_ ), regionCount( regionCount_ ), pRegions( pRegions_ ) - {} - - VULKAN_HPP_CONSTEXPR CopyBufferInfo2KHR( CopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyBufferInfo2KHR( VkCopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : CopyBufferInfo2KHR( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - CopyBufferInfo2KHR( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) - : srcBuffer( srcBuffer_ ), dstBuffer( dstBuffer_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CopyBufferInfo2KHR & operator=( CopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyBufferInfo2KHR & operator=( VkCopyBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CopyBufferInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CopyBufferInfo2KHR & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT - { - srcBuffer = srcBuffer_; - return *this; - } - - CopyBufferInfo2KHR & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT - { - dstBuffer = dstBuffer_; - return *this; - } - - CopyBufferInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = regionCount_; - return *this; - } - - CopyBufferInfo2KHR & setPRegions( const VULKAN_HPP_NAMESPACE::BufferCopy2KHR* pRegions_ ) VULKAN_HPP_NOEXCEPT - { - pRegions = pRegions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - CopyBufferInfo2KHR & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = static_cast( regions_.size() ); - pRegions = regions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkCopyBufferInfo2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkCopyBufferInfo2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CopyBufferInfo2KHR const& ) const = default; -#else - bool operator==( CopyBufferInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcBuffer == rhs.srcBuffer ) - && ( dstBuffer == rhs.dstBuffer ) - && ( regionCount == rhs.regionCount ) - && ( pRegions == rhs.pRegions ); - } - - bool operator!=( CopyBufferInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferInfo2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Buffer srcBuffer = {}; - VULKAN_HPP_NAMESPACE::Buffer dstBuffer = {}; - uint32_t regionCount = {}; - const VULKAN_HPP_NAMESPACE::BufferCopy2KHR* pRegions = {}; - - }; - static_assert( sizeof( CopyBufferInfo2KHR ) == sizeof( VkCopyBufferInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CopyBufferInfo2KHR; - }; - - struct CopyBufferToImageInfo2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyBufferToImageInfo2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2KHR(VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ = {}, VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR* pRegions_ = {}) VULKAN_HPP_NOEXCEPT - : srcBuffer( srcBuffer_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( regionCount_ ), pRegions( pRegions_ ) - {} - - VULKAN_HPP_CONSTEXPR CopyBufferToImageInfo2KHR( CopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyBufferToImageInfo2KHR( VkCopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : CopyBufferToImageInfo2KHR( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - CopyBufferToImageInfo2KHR( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) - : srcBuffer( srcBuffer_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CopyBufferToImageInfo2KHR & operator=( CopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyBufferToImageInfo2KHR & operator=( VkCopyBufferToImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CopyBufferToImageInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CopyBufferToImageInfo2KHR & setSrcBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer_ ) VULKAN_HPP_NOEXCEPT - { - srcBuffer = srcBuffer_; - return *this; - } - - CopyBufferToImageInfo2KHR & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT - { - dstImage = dstImage_; - return *this; - } - - CopyBufferToImageInfo2KHR & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT - { - dstImageLayout = dstImageLayout_; - return *this; - } - - CopyBufferToImageInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = regionCount_; - return *this; - } - - CopyBufferToImageInfo2KHR & setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR* pRegions_ ) VULKAN_HPP_NOEXCEPT - { - pRegions = pRegions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - CopyBufferToImageInfo2KHR & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = static_cast( regions_.size() ); - pRegions = regions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkCopyBufferToImageInfo2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkCopyBufferToImageInfo2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CopyBufferToImageInfo2KHR const& ) const = default; -#else - bool operator==( CopyBufferToImageInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcBuffer == rhs.srcBuffer ) - && ( dstImage == rhs.dstImage ) - && ( dstImageLayout == rhs.dstImageLayout ) - && ( regionCount == rhs.regionCount ) - && ( pRegions == rhs.pRegions ); - } - - bool operator!=( CopyBufferToImageInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyBufferToImageInfo2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Buffer srcBuffer = {}; - VULKAN_HPP_NAMESPACE::Image dstImage = {}; - VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - uint32_t regionCount = {}; - const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR* pRegions = {}; - - }; - static_assert( sizeof( CopyBufferToImageInfo2KHR ) == sizeof( VkCopyBufferToImageInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CopyBufferToImageInfo2KHR; - }; - - struct ImageCopy - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageCopy(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageCopy & operator=( ImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageCopy & operator=( VkImageCopy const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageCopy & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT - { - srcSubresource = srcSubresource_; - return *this; - } - - ImageCopy & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT - { - srcOffset = srcOffset_; - return *this; - } - - ImageCopy & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT - { - dstSubresource = dstSubresource_; - return *this; - } - - ImageCopy & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT - { - dstOffset = dstOffset_; - return *this; - } - - ImageCopy & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT - { - extent = extent_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageCopy const& ) const = default; -#else - bool operator==( ImageCopy const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( srcSubresource == rhs.srcSubresource ) - && ( srcOffset == rhs.srcOffset ) - && ( dstSubresource == rhs.dstSubresource ) - && ( dstOffset == rhs.dstOffset ) - && ( extent == rhs.extent ); - } - - bool operator!=( ImageCopy const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {}; - VULKAN_HPP_NAMESPACE::Extent3D extent = {}; - - }; - static_assert( sizeof( ImageCopy ) == sizeof( VkImageCopy ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageCopy2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCopy2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageCopy2KHR(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}) VULKAN_HPP_NOEXCEPT - : srcSubresource( srcSubresource_ ), srcOffset( srcOffset_ ), dstSubresource( dstSubresource_ ), dstOffset( dstOffset_ ), extent( extent_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageCopy2KHR( ImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageCopy2KHR( VkImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageCopy2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageCopy2KHR & operator=( ImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageCopy2KHR & operator=( VkImageCopy2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageCopy2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageCopy2KHR & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT - { - srcSubresource = srcSubresource_; - return *this; - } - - ImageCopy2KHR & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT - { - srcOffset = srcOffset_; - return *this; - } - - ImageCopy2KHR & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT - { - dstSubresource = dstSubresource_; - return *this; - } - - ImageCopy2KHR & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT - { - dstOffset = dstOffset_; - return *this; - } - - ImageCopy2KHR & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT - { - extent = extent_; - return *this; - } - - - operator VkImageCopy2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkImageCopy2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageCopy2KHR const& ) const = default; -#else - bool operator==( ImageCopy2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcSubresource == rhs.srcSubresource ) - && ( srcOffset == rhs.srcOffset ) - && ( dstSubresource == rhs.dstSubresource ) - && ( dstOffset == rhs.dstOffset ) - && ( extent == rhs.extent ); - } - - bool operator!=( ImageCopy2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCopy2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {}; - VULKAN_HPP_NAMESPACE::Extent3D extent = {}; - - }; - static_assert( sizeof( ImageCopy2KHR ) == sizeof( VkImageCopy2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageCopy2KHR; - }; - - struct CopyImageInfo2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageInfo2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CopyImageInfo2KHR(VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageCopy2KHR* pRegions_ = {}) VULKAN_HPP_NOEXCEPT - : srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( regionCount_ ), pRegions( pRegions_ ) - {} - - VULKAN_HPP_CONSTEXPR CopyImageInfo2KHR( CopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyImageInfo2KHR( VkCopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : CopyImageInfo2KHR( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - CopyImageInfo2KHR( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) - : srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CopyImageInfo2KHR & operator=( CopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyImageInfo2KHR & operator=( VkCopyImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CopyImageInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CopyImageInfo2KHR & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT - { - srcImage = srcImage_; - return *this; - } - - CopyImageInfo2KHR & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT - { - srcImageLayout = srcImageLayout_; - return *this; - } - - CopyImageInfo2KHR & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT - { - dstImage = dstImage_; - return *this; - } - - CopyImageInfo2KHR & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT - { - dstImageLayout = dstImageLayout_; - return *this; - } - - CopyImageInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = regionCount_; - return *this; - } - - CopyImageInfo2KHR & setPRegions( const VULKAN_HPP_NAMESPACE::ImageCopy2KHR* pRegions_ ) VULKAN_HPP_NOEXCEPT - { - pRegions = pRegions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - CopyImageInfo2KHR & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = static_cast( regions_.size() ); - pRegions = regions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkCopyImageInfo2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkCopyImageInfo2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CopyImageInfo2KHR const& ) const = default; -#else - bool operator==( CopyImageInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( CopyImageInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageInfo2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Image srcImage = {}; - VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::Image dstImage = {}; - VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - uint32_t regionCount = {}; - const VULKAN_HPP_NAMESPACE::ImageCopy2KHR* pRegions = {}; - - }; - static_assert( sizeof( CopyImageInfo2KHR ) == sizeof( VkCopyImageInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CopyImageInfo2KHR; - }; - - struct CopyImageToBufferInfo2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyImageToBufferInfo2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2KHR(VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ = {}, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR* pRegions_ = {}) VULKAN_HPP_NOEXCEPT - : srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstBuffer( dstBuffer_ ), regionCount( regionCount_ ), pRegions( pRegions_ ) - {} - - VULKAN_HPP_CONSTEXPR CopyImageToBufferInfo2KHR( CopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyImageToBufferInfo2KHR( VkCopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : CopyImageToBufferInfo2KHR( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - CopyImageToBufferInfo2KHR( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Buffer dstBuffer_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) - : srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstBuffer( dstBuffer_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CopyImageToBufferInfo2KHR & operator=( CopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyImageToBufferInfo2KHR & operator=( VkCopyImageToBufferInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CopyImageToBufferInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CopyImageToBufferInfo2KHR & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT - { - srcImage = srcImage_; - return *this; - } - - CopyImageToBufferInfo2KHR & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT - { - srcImageLayout = srcImageLayout_; - return *this; - } - - CopyImageToBufferInfo2KHR & setDstBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer_ ) VULKAN_HPP_NOEXCEPT - { - dstBuffer = dstBuffer_; - return *this; - } - - CopyImageToBufferInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = regionCount_; - return *this; - } - - CopyImageToBufferInfo2KHR & setPRegions( const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR* pRegions_ ) VULKAN_HPP_NOEXCEPT - { - pRegions = pRegions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - CopyImageToBufferInfo2KHR & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = static_cast( regions_.size() ); - pRegions = regions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkCopyImageToBufferInfo2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkCopyImageToBufferInfo2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CopyImageToBufferInfo2KHR const& ) const = default; -#else - bool operator==( CopyImageToBufferInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcImage == rhs.srcImage ) - && ( srcImageLayout == rhs.srcImageLayout ) - && ( dstBuffer == rhs.dstBuffer ) - && ( regionCount == rhs.regionCount ) - && ( pRegions == rhs.pRegions ); - } - - bool operator!=( CopyImageToBufferInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyImageToBufferInfo2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Image srcImage = {}; - VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::Buffer dstBuffer = {}; - uint32_t regionCount = {}; - const VULKAN_HPP_NAMESPACE::BufferImageCopy2KHR* pRegions = {}; - - }; - static_assert( sizeof( CopyImageToBufferInfo2KHR ) == sizeof( VkCopyImageToBufferInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CopyImageToBufferInfo2KHR; - }; - - struct CopyMemoryToAccelerationStructureInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - CopyMemoryToAccelerationStructureInfoKHR(VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src_ = {}, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ = {}, VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone) VULKAN_HPP_NOEXCEPT - : src( src_ ), dst( dst_ ), mode( mode_ ) - {} - - CopyMemoryToAccelerationStructureInfoKHR( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyMemoryToAccelerationStructureInfoKHR( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : CopyMemoryToAccelerationStructureInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - CopyMemoryToAccelerationStructureInfoKHR & operator=( CopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyMemoryToAccelerationStructureInfoKHR & operator=( VkCopyMemoryToAccelerationStructureInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CopyMemoryToAccelerationStructureInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CopyMemoryToAccelerationStructureInfoKHR & setSrc( VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR const & src_ ) VULKAN_HPP_NOEXCEPT - { - src = src_; - return *this; - } - - CopyMemoryToAccelerationStructureInfoKHR & setDst( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst_ ) VULKAN_HPP_NOEXCEPT - { - dst = dst_; - return *this; - } - - CopyMemoryToAccelerationStructureInfoKHR & setMode( VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode_ ) VULKAN_HPP_NOEXCEPT - { - mode = mode_; - return *this; - } - - - operator VkCopyMemoryToAccelerationStructureInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkCopyMemoryToAccelerationStructureInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyMemoryToAccelerationStructureInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceOrHostAddressConstKHR src = {}; - VULKAN_HPP_NAMESPACE::AccelerationStructureKHR dst = {}; - VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode = VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR::eClone; - - }; - static_assert( sizeof( CopyMemoryToAccelerationStructureInfoKHR ) == sizeof( VkCopyMemoryToAccelerationStructureInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CopyMemoryToAccelerationStructureInfoKHR; - }; - - struct DebugMarkerMarkerInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugMarkerMarkerInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT(const char* pMarkerName_ = {}, std::array const& color_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DebugMarkerMarkerInfoEXT & operator=( DebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DebugMarkerMarkerInfoEXT & operator=( VkDebugMarkerMarkerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DebugMarkerMarkerInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DebugMarkerMarkerInfoEXT & setPMarkerName( const char* pMarkerName_ ) VULKAN_HPP_NOEXCEPT - { - pMarkerName = pMarkerName_; - return *this; - } - - DebugMarkerMarkerInfoEXT & setColor( std::array color_ ) VULKAN_HPP_NOEXCEPT - { - color = color_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugMarkerMarkerInfoEXT const& ) const = default; -#else - bool operator==( DebugMarkerMarkerInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pMarkerName == rhs.pMarkerName ) - && ( color == rhs.color ); - } - - bool operator!=( DebugMarkerMarkerInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerMarkerInfoEXT; - const void* pNext = {}; - const char* pMarkerName = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D color = {}; - - }; - static_assert( sizeof( DebugMarkerMarkerInfoEXT ) == sizeof( VkDebugMarkerMarkerInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DebugMarkerMarkerInfoEXT; - }; - - struct SubpassEndInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassEndInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubpassEndInfo() VULKAN_HPP_NOEXCEPT - - {} - - VULKAN_HPP_CONSTEXPR SubpassEndInfo( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassEndInfo( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : SubpassEndInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubpassEndInfo & operator=( SubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassEndInfo & operator=( VkSubpassEndInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubpassEndInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubpassEndInfo const& ) const = default; -#else - bool operator==( SubpassEndInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ); - } - - bool operator!=( SubpassEndInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassEndInfo; - const void* pNext = {}; - - }; - static_assert( sizeof( SubpassEndInfo ) == sizeof( VkSubpassEndInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SubpassEndInfo; - }; - using SubpassEndInfoKHR = SubpassEndInfo; - - class IndirectCommandsLayoutNV - { - public: - using CType = VkIndirectCommandsLayoutNV; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eIndirectCommandsLayoutNV; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; - - public: - VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNV() VULKAN_HPP_NOEXCEPT - : m_indirectCommandsLayoutNV(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutNV( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_indirectCommandsLayoutNV(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT IndirectCommandsLayoutNV( VkIndirectCommandsLayoutNV indirectCommandsLayoutNV ) VULKAN_HPP_NOEXCEPT - : m_indirectCommandsLayoutNV( indirectCommandsLayoutNV ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - IndirectCommandsLayoutNV & operator=(VkIndirectCommandsLayoutNV indirectCommandsLayoutNV) VULKAN_HPP_NOEXCEPT - { - m_indirectCommandsLayoutNV = indirectCommandsLayoutNV; - return *this; - } -#endif - - IndirectCommandsLayoutNV & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_indirectCommandsLayoutNV = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( IndirectCommandsLayoutNV const& ) const = default; -#else - bool operator==( IndirectCommandsLayoutNV const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_indirectCommandsLayoutNV == rhs.m_indirectCommandsLayoutNV; - } - - bool operator!=(IndirectCommandsLayoutNV const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_indirectCommandsLayoutNV != rhs.m_indirectCommandsLayoutNV; - } - - bool operator<(IndirectCommandsLayoutNV const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_indirectCommandsLayoutNV < rhs.m_indirectCommandsLayoutNV; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV ) == sizeof( VkIndirectCommandsLayoutNV ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV; - }; - - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct IndirectCommandsStreamNV - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR IndirectCommandsStreamNV(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 IndirectCommandsStreamNV & operator=( IndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - IndirectCommandsStreamNV & operator=( VkIndirectCommandsStreamNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - IndirectCommandsStreamNV & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *this; - } - - IndirectCommandsStreamNV & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( IndirectCommandsStreamNV const& ) const = default; -#else - bool operator==( IndirectCommandsStreamNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( buffer == rhs.buffer ) - && ( offset == rhs.offset ); - } - - bool operator!=( IndirectCommandsStreamNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - - }; - static_assert( sizeof( IndirectCommandsStreamNV ) == sizeof( VkIndirectCommandsStreamNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct GeneratedCommandsInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR GeneratedCommandsInfoNV(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ = {}, uint32_t streamCount_ = {}, const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV* pStreams_ = {}, uint32_t sequencesCount_ = {}, VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ = {}, VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ = {}, VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, VULKAN_HPP_NAMESPACE::Pipeline pipeline_, VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & streams_, uint32_t sequencesCount_ = {}, VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ = {}, VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ = {}, VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsInfoNV & operator=( GeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - GeneratedCommandsInfoNV & operator=( VkGeneratedCommandsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - GeneratedCommandsInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - GeneratedCommandsInfoNV & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - GeneratedCommandsInfoNV & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT - { - pipeline = pipeline_; - return *this; - } - - GeneratedCommandsInfoNV & setIndirectCommandsLayout( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT - { - indirectCommandsLayout = indirectCommandsLayout_; - return *this; - } - - GeneratedCommandsInfoNV & setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT - { - streamCount = streamCount_; - return *this; - } - - GeneratedCommandsInfoNV & setPStreams( const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV* pStreams_ ) VULKAN_HPP_NOEXCEPT - { - pStreams = pStreams_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - GeneratedCommandsInfoNV & setStreams( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & streams_ ) VULKAN_HPP_NOEXCEPT - { - streamCount = static_cast( streams_.size() ); - pStreams = streams_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - GeneratedCommandsInfoNV & setSequencesCount( uint32_t sequencesCount_ ) VULKAN_HPP_NOEXCEPT - { - sequencesCount = sequencesCount_; - return *this; - } - - GeneratedCommandsInfoNV & setPreprocessBuffer( VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer_ ) VULKAN_HPP_NOEXCEPT - { - preprocessBuffer = preprocessBuffer_; - return *this; - } - - GeneratedCommandsInfoNV & setPreprocessOffset( VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset_ ) VULKAN_HPP_NOEXCEPT - { - preprocessOffset = preprocessOffset_; - return *this; - } - - GeneratedCommandsInfoNV & setPreprocessSize( VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize_ ) VULKAN_HPP_NOEXCEPT - { - preprocessSize = preprocessSize_; - return *this; - } - - GeneratedCommandsInfoNV & setSequencesCountBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer_ ) VULKAN_HPP_NOEXCEPT - { - sequencesCountBuffer = sequencesCountBuffer_; - return *this; - } - - GeneratedCommandsInfoNV & setSequencesCountOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset_ ) VULKAN_HPP_NOEXCEPT - { - sequencesCountOffset = sequencesCountOffset_; - return *this; - } - - GeneratedCommandsInfoNV & setSequencesIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer_ ) VULKAN_HPP_NOEXCEPT - { - sequencesIndexBuffer = sequencesIndexBuffer_; - return *this; - } - - GeneratedCommandsInfoNV & setSequencesIndexOffset( VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset_ ) VULKAN_HPP_NOEXCEPT - { - sequencesIndexOffset = sequencesIndexOffset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( GeneratedCommandsInfoNV const& ) const = default; -#else - bool operator==( GeneratedCommandsInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( GeneratedCommandsInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; - VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; - VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout = {}; - uint32_t streamCount = {}; - const VULKAN_HPP_NAMESPACE::IndirectCommandsStreamNV* pStreams = {}; - uint32_t sequencesCount = {}; - VULKAN_HPP_NAMESPACE::Buffer preprocessBuffer = {}; - VULKAN_HPP_NAMESPACE::DeviceSize preprocessOffset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize preprocessSize = {}; - VULKAN_HPP_NAMESPACE::Buffer sequencesCountBuffer = {}; - VULKAN_HPP_NAMESPACE::DeviceSize sequencesCountOffset = {}; - VULKAN_HPP_NAMESPACE::Buffer sequencesIndexBuffer = {}; - VULKAN_HPP_NAMESPACE::DeviceSize sequencesIndexOffset = {}; - - }; - static_assert( sizeof( GeneratedCommandsInfoNV ) == sizeof( VkGeneratedCommandsInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = GeneratedCommandsInfoNV; - }; - - struct MemoryBarrier - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryBarrier; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryBarrier(VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryBarrier & operator=( MemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryBarrier & operator=( VkMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryBarrier & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - srcAccessMask = srcAccessMask_; - return *this; - } - - MemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - dstAccessMask = dstAccessMask_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryBarrier const& ) const = default; -#else - bool operator==( MemoryBarrier const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcAccessMask == rhs.srcAccessMask ) - && ( dstAccessMask == rhs.dstAccessMask ); - } - - bool operator!=( MemoryBarrier const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryBarrier; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; - - }; - static_assert( sizeof( MemoryBarrier ) == sizeof( VkMemoryBarrier ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryBarrier; - }; - - struct ImageMemoryBarrier - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryBarrier; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageMemoryBarrier(VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t srcQueueFamilyIndex_ = {}, uint32_t dstQueueFamilyIndex_ = {}, VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier & operator=( ImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageMemoryBarrier & operator=( VkImageMemoryBarrier const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageMemoryBarrier & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageMemoryBarrier & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - srcAccessMask = srcAccessMask_; - return *this; - } - - ImageMemoryBarrier & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - dstAccessMask = dstAccessMask_; - return *this; - } - - ImageMemoryBarrier & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT - { - oldLayout = oldLayout_; - return *this; - } - - ImageMemoryBarrier & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT - { - newLayout = newLayout_; - return *this; - } - - ImageMemoryBarrier & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - srcQueueFamilyIndex = srcQueueFamilyIndex_; - return *this; - } - - ImageMemoryBarrier & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - dstQueueFamilyIndex = dstQueueFamilyIndex_; - return *this; - } - - ImageMemoryBarrier & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *this; - } - - ImageMemoryBarrier & setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT - { - subresourceRange = subresourceRange_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageMemoryBarrier const& ) const = default; -#else - bool operator==( ImageMemoryBarrier const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( ImageMemoryBarrier const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryBarrier; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; - VULKAN_HPP_NAMESPACE::ImageLayout oldLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::ImageLayout newLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - uint32_t srcQueueFamilyIndex = {}; - uint32_t dstQueueFamilyIndex = {}; - VULKAN_HPP_NAMESPACE::Image image = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {}; - - }; - static_assert( sizeof( ImageMemoryBarrier ) == sizeof( VkImageMemoryBarrier ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageMemoryBarrier; - }; - - struct MemoryBarrier2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryBarrier2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryBarrier2KHR(VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask_ = {}) VULKAN_HPP_NOEXCEPT - : srcStageMask( srcStageMask_ ), srcAccessMask( srcAccessMask_ ), dstStageMask( dstStageMask_ ), dstAccessMask( dstAccessMask_ ) - {} - - VULKAN_HPP_CONSTEXPR MemoryBarrier2KHR( MemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryBarrier2KHR( VkMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : MemoryBarrier2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryBarrier2KHR & operator=( MemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryBarrier2KHR & operator=( VkMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryBarrier2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryBarrier2KHR & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_ ) VULKAN_HPP_NOEXCEPT - { - srcStageMask = srcStageMask_; - return *this; - } - - MemoryBarrier2KHR & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - srcAccessMask = srcAccessMask_; - return *this; - } - - MemoryBarrier2KHR & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_ ) VULKAN_HPP_NOEXCEPT - { - dstStageMask = dstStageMask_; - return *this; - } - - MemoryBarrier2KHR & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - dstAccessMask = dstAccessMask_; - return *this; - } - - - operator VkMemoryBarrier2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkMemoryBarrier2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryBarrier2KHR const& ) const = default; -#else - bool operator==( MemoryBarrier2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcStageMask == rhs.srcStageMask ) - && ( srcAccessMask == rhs.srcAccessMask ) - && ( dstStageMask == rhs.dstStageMask ) - && ( dstAccessMask == rhs.dstAccessMask ); - } - - bool operator!=( MemoryBarrier2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryBarrier2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask = {}; - - }; - static_assert( sizeof( MemoryBarrier2KHR ) == sizeof( VkMemoryBarrier2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryBarrier2KHR; - }; - - struct ImageMemoryBarrier2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryBarrier2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2KHR(VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t srcQueueFamilyIndex_ = {}, uint32_t dstQueueFamilyIndex_ = {}, VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {}) VULKAN_HPP_NOEXCEPT - : srcStageMask( srcStageMask_ ), srcAccessMask( srcAccessMask_ ), dstStageMask( dstStageMask_ ), dstAccessMask( dstAccessMask_ ), oldLayout( oldLayout_ ), newLayout( newLayout_ ), srcQueueFamilyIndex( srcQueueFamilyIndex_ ), dstQueueFamilyIndex( dstQueueFamilyIndex_ ), image( image_ ), subresourceRange( subresourceRange_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageMemoryBarrier2KHR( ImageMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageMemoryBarrier2KHR( VkImageMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageMemoryBarrier2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageMemoryBarrier2KHR & operator=( ImageMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageMemoryBarrier2KHR & operator=( VkImageMemoryBarrier2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageMemoryBarrier2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageMemoryBarrier2KHR & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask_ ) VULKAN_HPP_NOEXCEPT - { - srcStageMask = srcStageMask_; - return *this; - } - - ImageMemoryBarrier2KHR & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - srcAccessMask = srcAccessMask_; - return *this; - } - - ImageMemoryBarrier2KHR & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask_ ) VULKAN_HPP_NOEXCEPT - { - dstStageMask = dstStageMask_; - return *this; - } - - ImageMemoryBarrier2KHR & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - dstAccessMask = dstAccessMask_; - return *this; - } - - ImageMemoryBarrier2KHR & setOldLayout( VULKAN_HPP_NAMESPACE::ImageLayout oldLayout_ ) VULKAN_HPP_NOEXCEPT - { - oldLayout = oldLayout_; - return *this; - } - - ImageMemoryBarrier2KHR & setNewLayout( VULKAN_HPP_NAMESPACE::ImageLayout newLayout_ ) VULKAN_HPP_NOEXCEPT - { - newLayout = newLayout_; - return *this; - } - - ImageMemoryBarrier2KHR & setSrcQueueFamilyIndex( uint32_t srcQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - srcQueueFamilyIndex = srcQueueFamilyIndex_; - return *this; - } - - ImageMemoryBarrier2KHR & setDstQueueFamilyIndex( uint32_t dstQueueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - dstQueueFamilyIndex = dstQueueFamilyIndex_; - return *this; - } - - ImageMemoryBarrier2KHR & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *this; - } - - ImageMemoryBarrier2KHR & setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT - { - subresourceRange = subresourceRange_; - return *this; - } - - - operator VkImageMemoryBarrier2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkImageMemoryBarrier2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageMemoryBarrier2KHR const& ) const = default; -#else - bool operator==( ImageMemoryBarrier2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( ImageMemoryBarrier2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryBarrier2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR srcStageMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags2KHR srcAccessMask = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR dstStageMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags2KHR dstAccessMask = {}; - VULKAN_HPP_NAMESPACE::ImageLayout oldLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::ImageLayout newLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - uint32_t srcQueueFamilyIndex = {}; - uint32_t dstQueueFamilyIndex = {}; - VULKAN_HPP_NAMESPACE::Image image = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {}; - - }; - static_assert( sizeof( ImageMemoryBarrier2KHR ) == sizeof( VkImageMemoryBarrier2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageMemoryBarrier2KHR; - }; - - struct DependencyInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDependencyInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DependencyInfoKHR(VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ = {}, uint32_t memoryBarrierCount_ = {}, const VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR* pMemoryBarriers_ = {}, uint32_t bufferMemoryBarrierCount_ = {}, const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR* pBufferMemoryBarriers_ = {}, uint32_t imageMemoryBarrierCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR* pImageMemoryBarriers_ = {}) VULKAN_HPP_NOEXCEPT - : dependencyFlags( dependencyFlags_ ), memoryBarrierCount( memoryBarrierCount_ ), pMemoryBarriers( pMemoryBarriers_ ), bufferMemoryBarrierCount( bufferMemoryBarrierCount_ ), pBufferMemoryBarriers( pBufferMemoryBarriers_ ), imageMemoryBarrierCount( imageMemoryBarrierCount_ ), pImageMemoryBarriers( pImageMemoryBarriers_ ) - {} - - VULKAN_HPP_CONSTEXPR DependencyInfoKHR( DependencyInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DependencyInfoKHR( VkDependencyInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : DependencyInfoKHR( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DependencyInfoKHR( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & memoryBarriers_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bufferMemoryBarriers_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageMemoryBarriers_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DependencyInfoKHR & operator=( DependencyInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DependencyInfoKHR & operator=( VkDependencyInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DependencyInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DependencyInfoKHR & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT - { - dependencyFlags = dependencyFlags_; - return *this; - } - - DependencyInfoKHR & setMemoryBarrierCount( uint32_t memoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT - { - memoryBarrierCount = memoryBarrierCount_; - return *this; - } - - DependencyInfoKHR & setPMemoryBarriers( const VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR* pMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT - { - pMemoryBarriers = pMemoryBarriers_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DependencyInfoKHR & setMemoryBarriers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & memoryBarriers_ ) VULKAN_HPP_NOEXCEPT - { - memoryBarrierCount = static_cast( memoryBarriers_.size() ); - pMemoryBarriers = memoryBarriers_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DependencyInfoKHR & setBufferMemoryBarrierCount( uint32_t bufferMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT - { - bufferMemoryBarrierCount = bufferMemoryBarrierCount_; - return *this; - } - - DependencyInfoKHR & setPBufferMemoryBarriers( const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR* pBufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT - { - pBufferMemoryBarriers = pBufferMemoryBarriers_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DependencyInfoKHR & setBufferMemoryBarriers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bufferMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT - { - bufferMemoryBarrierCount = static_cast( bufferMemoryBarriers_.size() ); - pBufferMemoryBarriers = bufferMemoryBarriers_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DependencyInfoKHR & setImageMemoryBarrierCount( uint32_t imageMemoryBarrierCount_ ) VULKAN_HPP_NOEXCEPT - { - imageMemoryBarrierCount = imageMemoryBarrierCount_; - return *this; - } - - DependencyInfoKHR & setPImageMemoryBarriers( const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR* pImageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT - { - pImageMemoryBarriers = pImageMemoryBarriers_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DependencyInfoKHR & setImageMemoryBarriers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageMemoryBarriers_ ) VULKAN_HPP_NOEXCEPT - { - imageMemoryBarrierCount = static_cast( imageMemoryBarriers_.size() ); - pImageMemoryBarriers = imageMemoryBarriers_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDependencyInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDependencyInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DependencyInfoKHR const& ) const = default; -#else - bool operator==( DependencyInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( DependencyInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDependencyInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags = {}; - uint32_t memoryBarrierCount = {}; - const VULKAN_HPP_NAMESPACE::MemoryBarrier2KHR* pMemoryBarriers = {}; - uint32_t bufferMemoryBarrierCount = {}; - const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier2KHR* pBufferMemoryBarriers = {}; - uint32_t imageMemoryBarrierCount = {}; - const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier2KHR* pImageMemoryBarriers = {}; - - }; - static_assert( sizeof( DependencyInfoKHR ) == sizeof( VkDependencyInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DependencyInfoKHR; - }; - - class Sampler - { - public: - using CType = VkSampler; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSampler; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSampler; - - public: - VULKAN_HPP_CONSTEXPR Sampler() VULKAN_HPP_NOEXCEPT - : m_sampler(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Sampler( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_sampler(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Sampler( VkSampler sampler ) VULKAN_HPP_NOEXCEPT - : m_sampler( sampler ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Sampler & operator=(VkSampler sampler) VULKAN_HPP_NOEXCEPT - { - m_sampler = sampler; - return *this; - } -#endif - - Sampler & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_sampler = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Sampler const& ) const = default; -#else - bool operator==( Sampler const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_sampler == rhs.m_sampler; - } - - bool operator!=(Sampler const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_sampler != rhs.m_sampler; - } - - bool operator<(Sampler const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_sampler < rhs.m_sampler; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Sampler ) == sizeof( VkSampler ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Sampler; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Sampler; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Sampler; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct DescriptorImageInfo - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorImageInfo(VULKAN_HPP_NAMESPACE::Sampler sampler_ = {}, VULKAN_HPP_NAMESPACE::ImageView imageView_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorImageInfo & operator=( DescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorImageInfo & operator=( VkDescriptorImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorImageInfo & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT - { - sampler = sampler_; - return *this; - } - - DescriptorImageInfo & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT - { - imageView = imageView_; - return *this; - } - - DescriptorImageInfo & setImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout imageLayout_ ) VULKAN_HPP_NOEXCEPT - { - imageLayout = imageLayout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorImageInfo const& ) const = default; -#else - bool operator==( DescriptorImageInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sampler == rhs.sampler ) - && ( imageView == rhs.imageView ) - && ( imageLayout == rhs.imageLayout ); - } - - bool operator!=( DescriptorImageInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Sampler sampler = {}; - VULKAN_HPP_NAMESPACE::ImageView imageView = {}; - VULKAN_HPP_NAMESPACE::ImageLayout imageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - - }; - static_assert( sizeof( DescriptorImageInfo ) == sizeof( VkDescriptorImageInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DescriptorBufferInfo - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorBufferInfo(VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorBufferInfo & operator=( DescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorBufferInfo & operator=( VkDescriptorBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorBufferInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *this; - } - - DescriptorBufferInfo & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - DescriptorBufferInfo & setRange( VULKAN_HPP_NAMESPACE::DeviceSize range_ ) VULKAN_HPP_NOEXCEPT - { - range = range_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorBufferInfo const& ) const = default; -#else - bool operator==( DescriptorBufferInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( buffer == rhs.buffer ) - && ( offset == rhs.offset ) - && ( range == rhs.range ); - } - - bool operator!=( DescriptorBufferInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize range = {}; - - }; - static_assert( sizeof( DescriptorBufferInfo ) == sizeof( VkDescriptorBufferInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - class BufferView - { - public: - using CType = VkBufferView; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eBufferView; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eBufferView; - - public: - VULKAN_HPP_CONSTEXPR BufferView() VULKAN_HPP_NOEXCEPT - : m_bufferView(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR BufferView( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_bufferView(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT BufferView( VkBufferView bufferView ) VULKAN_HPP_NOEXCEPT - : m_bufferView( bufferView ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - BufferView & operator=(VkBufferView bufferView) VULKAN_HPP_NOEXCEPT - { - m_bufferView = bufferView; - return *this; - } -#endif - - BufferView & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_bufferView = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( BufferView const& ) const = default; -#else - bool operator==( BufferView const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_bufferView == rhs.m_bufferView; - } - - bool operator!=(BufferView const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_bufferView != rhs.m_bufferView; - } - - bool operator<(BufferView const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_bufferView < rhs.m_bufferView; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::BufferView ) == sizeof( VkBufferView ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::BufferView; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::BufferView; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::BufferView; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct WriteDescriptorSet - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSet; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR WriteDescriptorSet(VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ = {}, uint32_t dstBinding_ = {}, uint32_t dstArrayElement_ = {}, uint32_t descriptorCount_ = {}, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, const VULKAN_HPP_NAMESPACE::DescriptorImageInfo* pImageInfo_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo* pBufferInfo_ = {}, const VULKAN_HPP_NAMESPACE::BufferView* pTexelBufferView_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_, uint32_t dstBinding_, uint32_t dstArrayElement_, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageInfo_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bufferInfo_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & texelBufferView_ = {} ) - : 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 ( ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) != 1 ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::WriteDescriptorSet::WriteDescriptorSet: ( !imageInfo_.empty() + !bufferInfo_.empty() + !texelBufferView_.empty() ) != 1" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSet & operator=( WriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - WriteDescriptorSet & operator=( VkWriteDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - WriteDescriptorSet & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - WriteDescriptorSet & setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT - { - dstSet = dstSet_; - return *this; - } - - WriteDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT - { - dstBinding = dstBinding_; - return *this; - } - - WriteDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT - { - dstArrayElement = dstArrayElement_; - return *this; - } - - WriteDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorCount = descriptorCount_; - return *this; - } - - WriteDescriptorSet & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT - { - descriptorType = descriptorType_; - return *this; - } - - WriteDescriptorSet & setPImageInfo( const VULKAN_HPP_NAMESPACE::DescriptorImageInfo* pImageInfo_ ) VULKAN_HPP_NOEXCEPT - { - pImageInfo = pImageInfo_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - WriteDescriptorSet & setImageInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageInfo_ ) VULKAN_HPP_NOEXCEPT - { - descriptorCount = static_cast( imageInfo_.size() ); - pImageInfo = imageInfo_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - WriteDescriptorSet & setPBufferInfo( const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo* pBufferInfo_ ) VULKAN_HPP_NOEXCEPT - { - pBufferInfo = pBufferInfo_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - WriteDescriptorSet & setBufferInfo( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bufferInfo_ ) VULKAN_HPP_NOEXCEPT - { - descriptorCount = static_cast( bufferInfo_.size() ); - pBufferInfo = bufferInfo_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - WriteDescriptorSet & setPTexelBufferView( const VULKAN_HPP_NAMESPACE::BufferView* pTexelBufferView_ ) VULKAN_HPP_NOEXCEPT - { - pTexelBufferView = pTexelBufferView_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - WriteDescriptorSet & setTexelBufferView( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & texelBufferView_ ) VULKAN_HPP_NOEXCEPT - { - descriptorCount = static_cast( texelBufferView_.size() ); - pTexelBufferView = texelBufferView_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkWriteDescriptorSet const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkWriteDescriptorSet &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( WriteDescriptorSet const& ) const = default; -#else - bool operator==( WriteDescriptorSet const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( WriteDescriptorSet const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSet; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DescriptorSet dstSet = {}; - uint32_t dstBinding = {}; - uint32_t dstArrayElement = {}; - uint32_t descriptorCount = {}; - VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; - const VULKAN_HPP_NAMESPACE::DescriptorImageInfo* pImageInfo = {}; - const VULKAN_HPP_NAMESPACE::DescriptorBufferInfo* pBufferInfo = {}; - const VULKAN_HPP_NAMESPACE::BufferView* pTexelBufferView = {}; - - }; - static_assert( sizeof( WriteDescriptorSet ) == sizeof( VkWriteDescriptorSet ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = WriteDescriptorSet; - }; - - class DescriptorUpdateTemplate - { - public: - using CType = VkDescriptorUpdateTemplate; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorUpdateTemplate; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorUpdateTemplate; - - public: - VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate() VULKAN_HPP_NOEXCEPT - : m_descriptorUpdateTemplate(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplate( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_descriptorUpdateTemplate(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorUpdateTemplate( VkDescriptorUpdateTemplate descriptorUpdateTemplate ) VULKAN_HPP_NOEXCEPT - : m_descriptorUpdateTemplate( descriptorUpdateTemplate ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DescriptorUpdateTemplate & operator=(VkDescriptorUpdateTemplate descriptorUpdateTemplate) VULKAN_HPP_NOEXCEPT - { - m_descriptorUpdateTemplate = descriptorUpdateTemplate; - return *this; - } -#endif - - DescriptorUpdateTemplate & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_descriptorUpdateTemplate = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorUpdateTemplate const& ) const = default; -#else - bool operator==( DescriptorUpdateTemplate const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorUpdateTemplate == rhs.m_descriptorUpdateTemplate; - } - - bool operator!=(DescriptorUpdateTemplate const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorUpdateTemplate != rhs.m_descriptorUpdateTemplate; - } - - bool operator<(DescriptorUpdateTemplate const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorUpdateTemplate < rhs.m_descriptorUpdateTemplate; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate ) == sizeof( VkDescriptorUpdateTemplate ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - using DescriptorUpdateTemplateKHR = DescriptorUpdateTemplate; - - class Event - { - public: - using CType = VkEvent; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eEvent; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eEvent; - - public: - VULKAN_HPP_CONSTEXPR Event() VULKAN_HPP_NOEXCEPT - : m_event(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Event( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_event(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Event( VkEvent event ) VULKAN_HPP_NOEXCEPT - : m_event( event ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Event & operator=(VkEvent event) VULKAN_HPP_NOEXCEPT - { - m_event = event; - return *this; - } -#endif - - Event & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_event = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Event const& ) const = default; -#else - bool operator==( Event const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_event == rhs.m_event; - } - - bool operator!=(Event const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_event != rhs.m_event; - } - - bool operator<(Event const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_event < rhs.m_event; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Event ) == sizeof( VkEvent ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Event; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Event; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Event; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct ImageResolve - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageResolve(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageResolve & operator=( ImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageResolve & operator=( VkImageResolve const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageResolve & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT - { - srcSubresource = srcSubresource_; - return *this; - } - - ImageResolve & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT - { - srcOffset = srcOffset_; - return *this; - } - - ImageResolve & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT - { - dstSubresource = dstSubresource_; - return *this; - } - - ImageResolve & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT - { - dstOffset = dstOffset_; - return *this; - } - - ImageResolve & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT - { - extent = extent_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageResolve const& ) const = default; -#else - bool operator==( ImageResolve const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( srcSubresource == rhs.srcSubresource ) - && ( srcOffset == rhs.srcOffset ) - && ( dstSubresource == rhs.dstSubresource ) - && ( dstOffset == rhs.dstOffset ) - && ( extent == rhs.extent ); - } - - bool operator!=( ImageResolve const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {}; - VULKAN_HPP_NAMESPACE::Extent3D extent = {}; - - }; - static_assert( sizeof( ImageResolve ) == sizeof( VkImageResolve ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageResolve2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageResolve2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageResolve2KHR(VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D srcOffset_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource_ = {}, VULKAN_HPP_NAMESPACE::Offset3D dstOffset_ = {}, VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}) VULKAN_HPP_NOEXCEPT - : srcSubresource( srcSubresource_ ), srcOffset( srcOffset_ ), dstSubresource( dstSubresource_ ), dstOffset( dstOffset_ ), extent( extent_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageResolve2KHR( ImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageResolve2KHR( VkImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageResolve2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageResolve2KHR & operator=( ImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageResolve2KHR & operator=( VkImageResolve2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageResolve2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageResolve2KHR & setSrcSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & srcSubresource_ ) VULKAN_HPP_NOEXCEPT - { - srcSubresource = srcSubresource_; - return *this; - } - - ImageResolve2KHR & setSrcOffset( VULKAN_HPP_NAMESPACE::Offset3D const & srcOffset_ ) VULKAN_HPP_NOEXCEPT - { - srcOffset = srcOffset_; - return *this; - } - - ImageResolve2KHR & setDstSubresource( VULKAN_HPP_NAMESPACE::ImageSubresourceLayers const & dstSubresource_ ) VULKAN_HPP_NOEXCEPT - { - dstSubresource = dstSubresource_; - return *this; - } - - ImageResolve2KHR & setDstOffset( VULKAN_HPP_NAMESPACE::Offset3D const & dstOffset_ ) VULKAN_HPP_NOEXCEPT - { - dstOffset = dstOffset_; - return *this; - } - - ImageResolve2KHR & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT - { - extent = extent_; - return *this; - } - - - operator VkImageResolve2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkImageResolve2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageResolve2KHR const& ) const = default; -#else - bool operator==( ImageResolve2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcSubresource == rhs.srcSubresource ) - && ( srcOffset == rhs.srcOffset ) - && ( dstSubresource == rhs.dstSubresource ) - && ( dstOffset == rhs.dstOffset ) - && ( extent == rhs.extent ); - } - - bool operator!=( ImageResolve2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageResolve2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers srcSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D srcOffset = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceLayers dstSubresource = {}; - VULKAN_HPP_NAMESPACE::Offset3D dstOffset = {}; - VULKAN_HPP_NAMESPACE::Extent3D extent = {}; - - }; - static_assert( sizeof( ImageResolve2KHR ) == sizeof( VkImageResolve2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageResolve2KHR; - }; - - struct ResolveImageInfo2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eResolveImageInfo2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ResolveImageInfo2KHR(VULKAN_HPP_NAMESPACE::Image srcImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, VULKAN_HPP_NAMESPACE::Image dstImage_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined, uint32_t regionCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageResolve2KHR* pRegions_ = {}) VULKAN_HPP_NOEXCEPT - : srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( regionCount_ ), pRegions( pRegions_ ) - {} - - VULKAN_HPP_CONSTEXPR ResolveImageInfo2KHR( ResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ResolveImageInfo2KHR( VkResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : ResolveImageInfo2KHR( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ResolveImageInfo2KHR( VULKAN_HPP_NAMESPACE::Image srcImage_, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_, VULKAN_HPP_NAMESPACE::Image dstImage_, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) - : srcImage( srcImage_ ), srcImageLayout( srcImageLayout_ ), dstImage( dstImage_ ), dstImageLayout( dstImageLayout_ ), regionCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ResolveImageInfo2KHR & operator=( ResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ResolveImageInfo2KHR & operator=( VkResolveImageInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ResolveImageInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ResolveImageInfo2KHR & setSrcImage( VULKAN_HPP_NAMESPACE::Image srcImage_ ) VULKAN_HPP_NOEXCEPT - { - srcImage = srcImage_; - return *this; - } - - ResolveImageInfo2KHR & setSrcImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout_ ) VULKAN_HPP_NOEXCEPT - { - srcImageLayout = srcImageLayout_; - return *this; - } - - ResolveImageInfo2KHR & setDstImage( VULKAN_HPP_NAMESPACE::Image dstImage_ ) VULKAN_HPP_NOEXCEPT - { - dstImage = dstImage_; - return *this; - } - - ResolveImageInfo2KHR & setDstImageLayout( VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout_ ) VULKAN_HPP_NOEXCEPT - { - dstImageLayout = dstImageLayout_; - return *this; - } - - ResolveImageInfo2KHR & setRegionCount( uint32_t regionCount_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = regionCount_; - return *this; - } - - ResolveImageInfo2KHR & setPRegions( const VULKAN_HPP_NAMESPACE::ImageResolve2KHR* pRegions_ ) VULKAN_HPP_NOEXCEPT - { - pRegions = pRegions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ResolveImageInfo2KHR & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT - { - regionCount = static_cast( regions_.size() ); - pRegions = regions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkResolveImageInfo2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkResolveImageInfo2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ResolveImageInfo2KHR const& ) const = default; -#else - bool operator==( ResolveImageInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( ResolveImageInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eResolveImageInfo2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Image srcImage = {}; - VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - VULKAN_HPP_NAMESPACE::Image dstImage = {}; - VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - uint32_t regionCount = {}; - const VULKAN_HPP_NAMESPACE::ImageResolve2KHR* pRegions = {}; - - }; - static_assert( sizeof( ResolveImageInfo2KHR ) == sizeof( VkResolveImageInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ResolveImageInfo2KHR; - }; - - struct PerformanceMarkerInfoINTEL - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceMarkerInfoINTEL; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL(uint64_t marker_ = {}) VULKAN_HPP_NOEXCEPT - : marker( marker_ ) - {} - - VULKAN_HPP_CONSTEXPR PerformanceMarkerInfoINTEL( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceMarkerInfoINTEL( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - : PerformanceMarkerInfoINTEL( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PerformanceMarkerInfoINTEL & operator=( PerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceMarkerInfoINTEL & operator=( VkPerformanceMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PerformanceMarkerInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PerformanceMarkerInfoINTEL & setMarker( uint64_t marker_ ) VULKAN_HPP_NOEXCEPT - { - marker = marker_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PerformanceMarkerInfoINTEL const& ) const = default; -#else - bool operator==( PerformanceMarkerInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( marker == rhs.marker ); - } - - bool operator!=( PerformanceMarkerInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceMarkerInfoINTEL; - const void* pNext = {}; - uint64_t marker = {}; - - }; - static_assert( sizeof( PerformanceMarkerInfoINTEL ) == sizeof( VkPerformanceMarkerInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PerformanceMarkerInfoINTEL; - }; - - struct PerformanceOverrideInfoINTEL - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceOverrideInfoINTEL; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PerformanceOverrideInfoINTEL(VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_ = VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware, VULKAN_HPP_NAMESPACE::Bool32 enable_ = {}, uint64_t parameter_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PerformanceOverrideInfoINTEL & operator=( PerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceOverrideInfoINTEL & operator=( VkPerformanceOverrideInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PerformanceOverrideInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PerformanceOverrideInfoINTEL & setType( VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - PerformanceOverrideInfoINTEL & setEnable( VULKAN_HPP_NAMESPACE::Bool32 enable_ ) VULKAN_HPP_NOEXCEPT - { - enable = enable_; - return *this; - } - - PerformanceOverrideInfoINTEL & setParameter( uint64_t parameter_ ) VULKAN_HPP_NOEXCEPT - { - parameter = parameter_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PerformanceOverrideInfoINTEL const& ) const = default; -#else - bool operator==( PerformanceOverrideInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ) - && ( enable == rhs.enable ) - && ( parameter == rhs.parameter ); - } - - bool operator!=( PerformanceOverrideInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceOverrideInfoINTEL; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL type = VULKAN_HPP_NAMESPACE::PerformanceOverrideTypeINTEL::eNullHardware; - VULKAN_HPP_NAMESPACE::Bool32 enable = {}; - uint64_t parameter = {}; - - }; - static_assert( sizeof( PerformanceOverrideInfoINTEL ) == sizeof( VkPerformanceOverrideInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PerformanceOverrideInfoINTEL; - }; - - struct PerformanceStreamMarkerInfoINTEL - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceStreamMarkerInfoINTEL; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL(uint32_t marker_ = {}) VULKAN_HPP_NOEXCEPT - : marker( marker_ ) - {} - - VULKAN_HPP_CONSTEXPR PerformanceStreamMarkerInfoINTEL( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceStreamMarkerInfoINTEL( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - : PerformanceStreamMarkerInfoINTEL( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PerformanceStreamMarkerInfoINTEL & operator=( PerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceStreamMarkerInfoINTEL & operator=( VkPerformanceStreamMarkerInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PerformanceStreamMarkerInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PerformanceStreamMarkerInfoINTEL & setMarker( uint32_t marker_ ) VULKAN_HPP_NOEXCEPT - { - marker = marker_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PerformanceStreamMarkerInfoINTEL const& ) const = default; -#else - bool operator==( PerformanceStreamMarkerInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( marker == rhs.marker ); - } - - bool operator!=( PerformanceStreamMarkerInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceStreamMarkerInfoINTEL; - const void* pNext = {}; - uint32_t marker = {}; - - }; - static_assert( sizeof( PerformanceStreamMarkerInfoINTEL ) == sizeof( VkPerformanceStreamMarkerInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PerformanceStreamMarkerInfoINTEL; - }; - - struct Viewport - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 Viewport & operator=( Viewport const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - Viewport & operator=( VkViewport const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - Viewport & setX( float x_ ) VULKAN_HPP_NOEXCEPT - { - x = x_; - return *this; - } - - Viewport & setY( float y_ ) VULKAN_HPP_NOEXCEPT - { - y = y_; - return *this; - } - - Viewport & setWidth( float width_ ) VULKAN_HPP_NOEXCEPT - { - width = width_; - return *this; - } - - Viewport & setHeight( float height_ ) VULKAN_HPP_NOEXCEPT - { - height = height_; - return *this; - } - - Viewport & setMinDepth( float minDepth_ ) VULKAN_HPP_NOEXCEPT - { - minDepth = minDepth_; - return *this; - } - - Viewport & setMaxDepth( float maxDepth_ ) VULKAN_HPP_NOEXCEPT - { - maxDepth = maxDepth_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Viewport const& ) const = default; -#else - bool operator==( Viewport const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( x == rhs.x ) - && ( y == rhs.y ) - && ( width == rhs.width ) - && ( height == rhs.height ) - && ( minDepth == rhs.minDepth ) - && ( maxDepth == rhs.maxDepth ); - } - - 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 = {}; - - }; - static_assert( sizeof( Viewport ) == sizeof( VkViewport ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ShadingRatePaletteNV - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ShadingRatePaletteNV(uint32_t shadingRatePaletteEntryCount_ = {}, const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV* 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & shadingRatePaletteEntries_ ) - : shadingRatePaletteEntryCount( static_cast( shadingRatePaletteEntries_.size() ) ), pShadingRatePaletteEntries( shadingRatePaletteEntries_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ShadingRatePaletteNV & operator=( ShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ShadingRatePaletteNV & operator=( VkShadingRatePaletteNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ShadingRatePaletteNV & setShadingRatePaletteEntryCount( uint32_t shadingRatePaletteEntryCount_ ) VULKAN_HPP_NOEXCEPT - { - shadingRatePaletteEntryCount = shadingRatePaletteEntryCount_; - return *this; - } - - ShadingRatePaletteNV & setPShadingRatePaletteEntries( const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV* pShadingRatePaletteEntries_ ) VULKAN_HPP_NOEXCEPT - { - pShadingRatePaletteEntries = pShadingRatePaletteEntries_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ShadingRatePaletteNV & setShadingRatePaletteEntries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & shadingRatePaletteEntries_ ) VULKAN_HPP_NOEXCEPT - { - shadingRatePaletteEntryCount = static_cast( shadingRatePaletteEntries_.size() ); - pShadingRatePaletteEntries = shadingRatePaletteEntries_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkShadingRatePaletteNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkShadingRatePaletteNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ShadingRatePaletteNV const& ) const = default; -#else - bool operator==( ShadingRatePaletteNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( shadingRatePaletteEntryCount == rhs.shadingRatePaletteEntryCount ) - && ( pShadingRatePaletteEntries == rhs.pShadingRatePaletteEntries ); - } - - bool operator!=( ShadingRatePaletteNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t shadingRatePaletteEntryCount = {}; - const VULKAN_HPP_NAMESPACE::ShadingRatePaletteEntryNV* pShadingRatePaletteEntries = {}; - - }; - static_assert( sizeof( ShadingRatePaletteNV ) == sizeof( VkShadingRatePaletteNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ViewportWScalingNV - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ViewportWScalingNV & operator=( ViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ViewportWScalingNV & operator=( VkViewportWScalingNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ViewportWScalingNV & setXcoeff( float xcoeff_ ) VULKAN_HPP_NOEXCEPT - { - xcoeff = xcoeff_; - return *this; - } - - ViewportWScalingNV & setYcoeff( float ycoeff_ ) VULKAN_HPP_NOEXCEPT - { - ycoeff = ycoeff_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ViewportWScalingNV const& ) const = default; -#else - bool operator==( ViewportWScalingNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( xcoeff == rhs.xcoeff ) - && ( ycoeff == rhs.ycoeff ); - } - - bool operator!=( ViewportWScalingNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - float xcoeff = {}; - float ycoeff = {}; - - }; - static_assert( sizeof( ViewportWScalingNV ) == sizeof( VkViewportWScalingNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct StridedDeviceAddressRegionKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR StridedDeviceAddressRegionKHR(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize stride_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 StridedDeviceAddressRegionKHR & operator=( StridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - StridedDeviceAddressRegionKHR & operator=( VkStridedDeviceAddressRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - StridedDeviceAddressRegionKHR & setDeviceAddress( VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ ) VULKAN_HPP_NOEXCEPT - { - deviceAddress = deviceAddress_; - return *this; - } - - StridedDeviceAddressRegionKHR & setStride( VULKAN_HPP_NAMESPACE::DeviceSize stride_ ) VULKAN_HPP_NOEXCEPT - { - stride = stride_; - return *this; - } - - StridedDeviceAddressRegionKHR & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( StridedDeviceAddressRegionKHR const& ) const = default; -#else - bool operator==( StridedDeviceAddressRegionKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( deviceAddress == rhs.deviceAddress ) - && ( stride == rhs.stride ) - && ( size == rhs.size ); - } - - bool operator!=( StridedDeviceAddressRegionKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {}; - VULKAN_HPP_NAMESPACE::DeviceSize stride = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - - }; - static_assert( sizeof( StridedDeviceAddressRegionKHR ) == sizeof( VkStridedDeviceAddressRegionKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - class CommandBuffer - { - public: - using CType = VkCommandBuffer; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eCommandBuffer; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eCommandBuffer; - - public: - VULKAN_HPP_CONSTEXPR CommandBuffer() VULKAN_HPP_NOEXCEPT - : m_commandBuffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR CommandBuffer( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_commandBuffer(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT CommandBuffer( VkCommandBuffer commandBuffer ) VULKAN_HPP_NOEXCEPT - : m_commandBuffer( commandBuffer ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - CommandBuffer & operator=(VkCommandBuffer commandBuffer) VULKAN_HPP_NOEXCEPT - { - m_commandBuffer = commandBuffer; - return *this; - } -#endif - - CommandBuffer & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_commandBuffer = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CommandBuffer const& ) const = default; -#else - bool operator==( CommandBuffer const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_commandBuffer == rhs.m_commandBuffer; - } - - bool operator!=(CommandBuffer const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_commandBuffer != rhs.m_commandBuffer; - } - - bool operator<(CommandBuffer const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_commandBuffer < rhs.m_commandBuffer; - } -#endif - - - template - VULKAN_HPP_NODISCARD Result begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo* pBeginInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type begin( const CommandBufferBeginInfo & beginInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void beginConditionalRenderingEXT( const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pLabelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, VULKAN_HPP_NAMESPACE::QueryControlFlags flags, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, VULKAN_HPP_NAMESPACE::QueryControlFlags flags, uint32_t index, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo* pRenderPassBegin, VULKAN_HPP_NAMESPACE::SubpassContents contents, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginRenderPass( const RenderPassBeginInfo & renderPassBegin, VULKAN_HPP_NAMESPACE::SubpassContents contents, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo* pRenderPassBegin, const VULKAN_HPP_NAMESPACE::SubpassBeginInfo* pSubpassBeginInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginRenderPass2( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfo & subpassBeginInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo* pRenderPassBegin, const VULKAN_HPP_NAMESPACE::SubpassBeginInfo* pSubpassBeginInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfo & subpassBeginInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VULKAN_HPP_NAMESPACE::Buffer* pCounterBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pCounterBufferOffsets, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy const & counterBuffers, ArrayProxy const & counterBufferOffsets VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::PipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VULKAN_HPP_NAMESPACE::DescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::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*/ - - - template - void bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::IndexType indexType, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t groupIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, uint32_t bindingCount, const VULKAN_HPP_NAMESPACE::Buffer* pBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pOffsets, const VULKAN_HPP_NAMESPACE::DeviceSize* pSizes, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void bindTransformFeedbackBuffersEXT( uint32_t firstBinding, ArrayProxy const & buffers, ArrayProxy const & offsets, ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const VULKAN_HPP_NAMESPACE::Buffer* pBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pOffsets, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void bindVertexBuffers2EXT( uint32_t firstBinding, uint32_t bindingCount, const VULKAN_HPP_NAMESPACE::Buffer* pBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pOffsets, const VULKAN_HPP_NAMESPACE::DeviceSize* pSizes, const VULKAN_HPP_NAMESPACE::DeviceSize* pStrides, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void bindVertexBuffers2EXT( uint32_t firstBinding, ArrayProxy const & buffers, ArrayProxy const & offsets, ArrayProxy const & sizes VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, ArrayProxy const & strides VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::ImageBlit* pRegions, VULKAN_HPP_NAMESPACE::Filter filter, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, ArrayProxy const & regions, VULKAN_HPP_NAMESPACE::Filter filter, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR* pBlitImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void blitImage2KHR( const BlitImageInfo2KHR & blitImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV* pInfo, VULKAN_HPP_NAMESPACE::Buffer instanceData, VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, VULKAN_HPP_NAMESPACE::Bool32 update, VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, VULKAN_HPP_NAMESPACE::Buffer scratch, VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void buildAccelerationStructureNV( const AccelerationStructureInfoNV & info, VULKAN_HPP_NAMESPACE::Buffer instanceData, VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, VULKAN_HPP_NAMESPACE::Bool32 update, VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, VULKAN_HPP_NAMESPACE::Buffer scratch, VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void buildAccelerationStructuresIndirectKHR( uint32_t infoCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR* pInfos, const VULKAN_HPP_NAMESPACE::DeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const * ppMaxPrimitiveCounts, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void buildAccelerationStructuresKHR( uint32_t infoCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR* pInfos, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR* const * ppBuildRangeInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void clearAttachments( uint32_t attachmentCount, const VULKAN_HPP_NAMESPACE::ClearAttachment* pAttachments, uint32_t rectCount, const VULKAN_HPP_NAMESPACE::ClearRect* pRects, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void clearColorImage( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, const VULKAN_HPP_NAMESPACE::ClearColorValue* pColor, uint32_t rangeCount, const VULKAN_HPP_NAMESPACE::ImageSubresourceRange* pRanges, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void clearColorImage( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy const & ranges, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VULKAN_HPP_NAMESPACE::ImageSubresourceRange* pRanges, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy const & ranges, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyAccelerationStructureKHR( const CopyAccelerationStructureInfoKHR & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void copyAccelerationStructureToMemoryKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyAccelerationStructureToMemoryKHR( const CopyAccelerationStructureToMemoryInfoKHR & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::BufferCopy* pRegions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, ArrayProxy const & regions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR* pCopyBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyBuffer2KHR( const CopyBufferInfo2KHR & copyBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::BufferImageCopy* pRegions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, ArrayProxy const & regions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR* pCopyBufferToImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyBufferToImage2KHR( const CopyBufferToImageInfo2KHR & copyBufferToImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::ImageCopy* pRegions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, ArrayProxy const & regions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR* pCopyImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyImage2KHR( const CopyImageInfo2KHR & copyImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::BufferImageCopy* pRegions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, ArrayProxy const & regions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR* pCopyImageToBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyImageToBuffer2KHR( const CopyImageToBufferInfo2KHR & copyImageToBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyMemoryToAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void copyMemoryToAccelerationStructureKHR( const CopyMemoryToAccelerationStructureInfoKHR & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void debugMarkerEndEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - 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; - - template - 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; - - - template - void dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - 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; - - - template - 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; - - - template - void drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - template - void drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - template - void drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void drawIndirectByteCountEXT( uint32_t instanceCount, uint32_t firstInstance, VULKAN_HPP_NAMESPACE::Buffer counterBuffer, VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - template - void drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - template - void drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void endConditionalRenderingEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void endDebugUtilsLabelEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, uint32_t index, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void endRenderPass( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo* pSubpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void endRenderPass2( const SubpassEndInfo & subpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo* pSubpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void endRenderPass2KHR( const SubpassEndInfo & subpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void endTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VULKAN_HPP_NAMESPACE::Buffer* pCounterBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pCounterBufferOffsets, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void endTransformFeedbackEXT( uint32_t firstCounterBuffer, ArrayProxy const & counterBuffers, ArrayProxy const & counterBufferOffsets VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void executeCommands( uint32_t commandBufferCount, const VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void executeCommands( ArrayProxy const & commandBuffers, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void executeGeneratedCommandsNV( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV* pGeneratedCommandsInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void executeGeneratedCommandsNV( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, const GeneratedCommandsInfoNV & generatedCommandsInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, VULKAN_HPP_NAMESPACE::DeviceSize size, uint32_t data, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pLabelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo* pSubpassBeginInfo, const VULKAN_HPP_NAMESPACE::SubpassEndInfo* pSubpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void nextSubpass2( const SubpassBeginInfo & subpassBeginInfo, const SubpassEndInfo & subpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo* pSubpassBeginInfo, const VULKAN_HPP_NAMESPACE::SubpassEndInfo* pSubpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void nextSubpass2KHR( const SubpassBeginInfo & subpassBeginInfo, const SubpassEndInfo & subpassEndInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VULKAN_HPP_NAMESPACE::MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier* pImageMemoryBarriers, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, VULKAN_HPP_NAMESPACE::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*/ - - - template - void pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfoKHR* pDependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void pipelineBarrier2KHR( const DependencyInfoKHR & dependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void preprocessGeneratedCommandsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV* pGeneratedCommandsInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void preprocessGeneratedCommandsNV( const GeneratedCommandsInfoNV & generatedCommandsInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, VULKAN_HPP_NAMESPACE::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*/ - - - template - void pushDescriptorSetKHR( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VULKAN_HPP_NAMESPACE::WriteDescriptorSet* pDescriptorWrites, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void pushDescriptorSetKHR( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::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*/ - - - template - void pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE::PipelineLayout layout, uint32_t set, const void* pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void resetEvent( VULKAN_HPP_NAMESPACE::Event event, VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::ImageResolve* pRegions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, ArrayProxy const & regions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR* pResolveImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void resolveImage2KHR( const ResolveImageInfo2KHR & resolveImageInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void setBlendConstants( const float blendConstants[4], Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setCheckpointNV( const void* pCheckpointMarker, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV* pCustomSampleOrders, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, ArrayProxy const & customSampleOrders, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setDepthBoundsTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setDeviceMask( uint32_t deviceMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - template - void setDeviceMaskKHR( uint32_t deviceMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VULKAN_HPP_NAMESPACE::Rect2D* pDiscardRectangles, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void setEvent( VULKAN_HPP_NAMESPACE::Event event, VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, const VULKAN_HPP_NAMESPACE::DependencyInfoKHR* pDependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, const DependencyInfoKHR & dependencyInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void setExclusiveScissorNV( uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VULKAN_HPP_NAMESPACE::Rect2D* pExclusiveScissors, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void setFragmentShadingRateEnumNV( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate, const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setFragmentShadingRateKHR( const VULKAN_HPP_NAMESPACE::Extent2D* pFragmentSize, const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setFragmentShadingRateKHR( const Extent2D & fragmentSize, const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setLineWidth( float lineWidth, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - VULKAN_HPP_NODISCARD Result setPerformanceMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL* pMarkerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setPerformanceMarkerINTEL( const PerformanceMarkerInfoINTEL & markerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result setPerformanceOverrideINTEL( const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL* pOverrideInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setPerformanceOverrideINTEL( const PerformanceOverrideInfoINTEL & overrideInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result setPerformanceStreamMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL* pMarkerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setPerformanceStreamMarkerINTEL( const PerformanceStreamMarkerInfoINTEL & markerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void setPrimitiveTopologyEXT( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT* pSampleLocationsInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void setScissor( uint32_t firstScissor, uint32_t scissorCount, const VULKAN_HPP_NAMESPACE::Rect2D* pScissors, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void setScissorWithCountEXT( uint32_t scissorCount, const VULKAN_HPP_NAMESPACE::Rect2D* pScissors, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setScissorWithCountEXT( ArrayProxy const & scissors, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, VULKAN_HPP_NAMESPACE::StencilOp failOp, VULKAN_HPP_NAMESPACE::StencilOp passOp, VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, VULKAN_HPP_NAMESPACE::CompareOp compareOp, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t reference, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void setViewport( uint32_t firstViewport, uint32_t viewportCount, const VULKAN_HPP_NAMESPACE::Viewport* pViewports, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void setViewportShadingRatePaletteNV( uint32_t firstViewport, uint32_t viewportCount, const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV* pShadingRatePalettes, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const VULKAN_HPP_NAMESPACE::ViewportWScalingNV* pViewportWScalings, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void setViewportWithCountEXT( uint32_t viewportCount, const VULKAN_HPP_NAMESPACE::Viewport* pViewports, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void setViewportWithCountEXT( ArrayProxy const & viewports, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void traceRaysIndirectKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void traceRaysIndirectKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable, const StridedDeviceAddressRegionKHR & missShaderBindingTable, const StridedDeviceAddressRegionKHR & hitShaderBindingTable, const StridedDeviceAddressRegionKHR & callableShaderBindingTable, VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void traceRaysKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* 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 - template - void traceRaysKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable, const StridedDeviceAddressRegionKHR & missShaderBindingTable, const StridedDeviceAddressRegionKHR & hitShaderBindingTable, const StridedDeviceAddressRegionKHR & 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*/ - - - template - void traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer, VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset, VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer, VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset, VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride, VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer, VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset, VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride, VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer, VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset, VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, VULKAN_HPP_NAMESPACE::DeviceSize dataSize, const void* pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, ArrayProxy const & data, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void waitEvents( uint32_t eventCount, const VULKAN_HPP_NAMESPACE::Event* pEvents, VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VULKAN_HPP_NAMESPACE::MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier* pImageMemoryBarriers, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void waitEvents( ArrayProxy const & events, VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, VULKAN_HPP_NAMESPACE::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*/ - - - template - void waitEvents2KHR( uint32_t eventCount, const VULKAN_HPP_NAMESPACE::Event* pEvents, const VULKAN_HPP_NAMESPACE::DependencyInfoKHR* pDependencyInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void writeAccelerationStructuresPropertiesNV( uint32_t accelerationStructureCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureNV* pAccelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void writeAccelerationStructuresPropertiesNV( ArrayProxy const & accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, uint32_t marker, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, uint32_t marker, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result end( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - 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 - template - VULKAN_HPP_NODISCARD Result reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - typename ResultValueType::type reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - VULKAN_HPP_TYPESAFE_EXPLICIT 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::CommandBuffer ) == sizeof( VkCommandBuffer ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::CommandBuffer; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::CommandBuffer; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::CommandBuffer; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct CommandBufferSubmitInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandBufferSubmitInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfoKHR(VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ = {}, uint32_t deviceMask_ = {}) VULKAN_HPP_NOEXCEPT - : commandBuffer( commandBuffer_ ), deviceMask( deviceMask_ ) - {} - - VULKAN_HPP_CONSTEXPR CommandBufferSubmitInfoKHR( CommandBufferSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CommandBufferSubmitInfoKHR( VkCommandBufferSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : CommandBufferSubmitInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CommandBufferSubmitInfoKHR & operator=( CommandBufferSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CommandBufferSubmitInfoKHR & operator=( VkCommandBufferSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CommandBufferSubmitInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CommandBufferSubmitInfoKHR & setCommandBuffer( VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer_ ) VULKAN_HPP_NOEXCEPT - { - commandBuffer = commandBuffer_; - return *this; - } - - CommandBufferSubmitInfoKHR & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT - { - deviceMask = deviceMask_; - return *this; - } - - - operator VkCommandBufferSubmitInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkCommandBufferSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CommandBufferSubmitInfoKHR const& ) const = default; -#else - bool operator==( CommandBufferSubmitInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( commandBuffer == rhs.commandBuffer ) - && ( deviceMask == rhs.deviceMask ); - } - - bool operator!=( CommandBufferSubmitInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandBufferSubmitInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::CommandBuffer commandBuffer = {}; - uint32_t deviceMask = {}; - - }; - static_assert( sizeof( CommandBufferSubmitInfoKHR ) == sizeof( VkCommandBufferSubmitInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CommandBufferSubmitInfoKHR; - }; - - struct CommandPoolCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCommandPoolCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CommandPoolCreateInfo(VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ = {}, uint32_t queueFamilyIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CommandPoolCreateInfo & operator=( CommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CommandPoolCreateInfo & operator=( VkCommandPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CommandPoolCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CommandPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - CommandPoolCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndex = queueFamilyIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CommandPoolCreateInfo const& ) const = default; -#else - bool operator==( CommandPoolCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( queueFamilyIndex == rhs.queueFamilyIndex ); - } - - bool operator!=( CommandPoolCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCommandPoolCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::CommandPoolCreateFlags flags = {}; - uint32_t queueFamilyIndex = {}; - - }; - static_assert( sizeof( CommandPoolCreateInfo ) == sizeof( VkCommandPoolCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CommandPoolCreateInfo; - }; - - class ShaderModule - { - public: - using CType = VkShaderModule; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eShaderModule; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eShaderModule; - - public: - VULKAN_HPP_CONSTEXPR ShaderModule() VULKAN_HPP_NOEXCEPT - : m_shaderModule(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR ShaderModule( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_shaderModule(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT ShaderModule( VkShaderModule shaderModule ) VULKAN_HPP_NOEXCEPT - : m_shaderModule( shaderModule ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - ShaderModule & operator=(VkShaderModule shaderModule) VULKAN_HPP_NOEXCEPT - { - m_shaderModule = shaderModule; - return *this; - } -#endif - - ShaderModule & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_shaderModule = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ShaderModule const& ) const = default; -#else - bool operator==( ShaderModule const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_shaderModule == rhs.m_shaderModule; - } - - bool operator!=(ShaderModule const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_shaderModule != rhs.m_shaderModule; - } - - bool operator<(ShaderModule const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_shaderModule < rhs.m_shaderModule; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::ShaderModule ) == sizeof( VkShaderModule ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::ShaderModule; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::ShaderModule; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::ShaderModule; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct SpecializationMapEntry - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SpecializationMapEntry & operator=( SpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SpecializationMapEntry & operator=( VkSpecializationMapEntry const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SpecializationMapEntry & setConstantID( uint32_t constantID_ ) VULKAN_HPP_NOEXCEPT - { - constantID = constantID_; - return *this; - } - - SpecializationMapEntry & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - SpecializationMapEntry & setSize( size_t size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SpecializationMapEntry const& ) const = default; -#else - bool operator==( SpecializationMapEntry const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( constantID == rhs.constantID ) - && ( offset == rhs.offset ) - && ( size == rhs.size ); - } - - bool operator!=( SpecializationMapEntry const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t constantID = {}; - uint32_t offset = {}; - size_t size = {}; - - }; - static_assert( sizeof( SpecializationMapEntry ) == sizeof( VkSpecializationMapEntry ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SpecializationInfo - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SpecializationInfo(uint32_t mapEntryCount_ = {}, const VULKAN_HPP_NAMESPACE::SpecializationMapEntry* pMapEntries_ = {}, size_t dataSize_ = {}, const void* 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & mapEntries_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ = {} ) - : mapEntryCount( static_cast( mapEntries_.size() ) ), pMapEntries( mapEntries_.data() ), dataSize( data_.size() * sizeof(T) ), pData( data_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SpecializationInfo & operator=( SpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SpecializationInfo & operator=( VkSpecializationInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SpecializationInfo & setMapEntryCount( uint32_t mapEntryCount_ ) VULKAN_HPP_NOEXCEPT - { - mapEntryCount = mapEntryCount_; - return *this; - } - - SpecializationInfo & setPMapEntries( const VULKAN_HPP_NAMESPACE::SpecializationMapEntry* pMapEntries_ ) VULKAN_HPP_NOEXCEPT - { - pMapEntries = pMapEntries_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SpecializationInfo & setMapEntries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & mapEntries_ ) VULKAN_HPP_NOEXCEPT - { - mapEntryCount = static_cast( mapEntries_.size() ); - pMapEntries = mapEntries_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SpecializationInfo & setDataSize( size_t dataSize_ ) VULKAN_HPP_NOEXCEPT - { - dataSize = dataSize_; - return *this; - } - - SpecializationInfo & setPData( const void* pData_ ) VULKAN_HPP_NOEXCEPT - { - pData = pData_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - template - SpecializationInfo & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT - { - dataSize = data_.size() * sizeof(T); - pData = data_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSpecializationInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSpecializationInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SpecializationInfo const& ) const = default; -#else - bool operator==( SpecializationInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( mapEntryCount == rhs.mapEntryCount ) - && ( pMapEntries == rhs.pMapEntries ) - && ( dataSize == rhs.dataSize ) - && ( pData == rhs.pData ); - } - - bool operator!=( SpecializationInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t mapEntryCount = {}; - const VULKAN_HPP_NAMESPACE::SpecializationMapEntry* pMapEntries = {}; - size_t dataSize = {}; - const void* pData = {}; - - }; - static_assert( sizeof( SpecializationInfo ) == sizeof( VkSpecializationInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineShaderStageCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineShaderStageCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineShaderStageCreateInfo(VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex, VULKAN_HPP_NAMESPACE::ShaderModule module_ = {}, const char* pName_ = {}, const VULKAN_HPP_NAMESPACE::SpecializationInfo* pSpecializationInfo_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageCreateInfo & operator=( PipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineShaderStageCreateInfo & operator=( VkPipelineShaderStageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineShaderStageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineShaderStageCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineShaderStageCreateInfo & setStage( VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage_ ) VULKAN_HPP_NOEXCEPT - { - stage = stage_; - return *this; - } - - PipelineShaderStageCreateInfo & setModule( VULKAN_HPP_NAMESPACE::ShaderModule module_ ) VULKAN_HPP_NOEXCEPT - { - module = module_; - return *this; - } - - PipelineShaderStageCreateInfo & setPName( const char* pName_ ) VULKAN_HPP_NOEXCEPT - { - pName = pName_; - return *this; - } - - PipelineShaderStageCreateInfo & setPSpecializationInfo( const VULKAN_HPP_NAMESPACE::SpecializationInfo* pSpecializationInfo_ ) VULKAN_HPP_NOEXCEPT - { - pSpecializationInfo = pSpecializationInfo_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineShaderStageCreateInfo const& ) const = default; -#else - 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 ) - && ( pSpecializationInfo == rhs.pSpecializationInfo ); - } - - bool operator!=( PipelineShaderStageCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::ShaderStageFlagBits stage = VULKAN_HPP_NAMESPACE::ShaderStageFlagBits::eVertex; - VULKAN_HPP_NAMESPACE::ShaderModule module = {}; - const char* pName = {}; - const VULKAN_HPP_NAMESPACE::SpecializationInfo* pSpecializationInfo = {}; - - }; - static_assert( sizeof( PipelineShaderStageCreateInfo ) == sizeof( VkPipelineShaderStageCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineShaderStageCreateInfo; - }; - - struct ComputePipelineCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eComputePipelineCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ComputePipelineCreateInfo(VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ComputePipelineCreateInfo & operator=( ComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ComputePipelineCreateInfo & operator=( VkComputePipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ComputePipelineCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ComputePipelineCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ComputePipelineCreateInfo & setStage( VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo const & stage_ ) VULKAN_HPP_NOEXCEPT - { - stage = stage_; - return *this; - } - - ComputePipelineCreateInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT - { - layout = layout_; - return *this; - } - - ComputePipelineCreateInfo & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT - { - basePipelineHandle = basePipelineHandle_; - return *this; - } - - ComputePipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT - { - basePipelineIndex = basePipelineIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ComputePipelineCreateInfo const& ) const = default; -#else - bool operator==( ComputePipelineCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( stage == rhs.stage ) - && ( layout == rhs.layout ) - && ( basePipelineHandle == rhs.basePipelineHandle ) - && ( basePipelineIndex == rhs.basePipelineIndex ); - } - - bool operator!=( ComputePipelineCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eComputePipelineCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo stage = {}; - VULKAN_HPP_NAMESPACE::PipelineLayout layout = {}; - VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {}; - int32_t basePipelineIndex = {}; - - }; - static_assert( sizeof( ComputePipelineCreateInfo ) == sizeof( VkComputePipelineCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ComputePipelineCreateInfo; - }; - - struct ConformanceVersion - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ConformanceVersion & operator=( ConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ConformanceVersion & operator=( VkConformanceVersion const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ConformanceVersion & setMajor( uint8_t major_ ) VULKAN_HPP_NOEXCEPT - { - major = major_; - return *this; - } - - ConformanceVersion & setMinor( uint8_t minor_ ) VULKAN_HPP_NOEXCEPT - { - minor = minor_; - return *this; - } - - ConformanceVersion & setSubminor( uint8_t subminor_ ) VULKAN_HPP_NOEXCEPT - { - subminor = subminor_; - return *this; - } - - ConformanceVersion & setPatch( uint8_t patch_ ) VULKAN_HPP_NOEXCEPT - { - patch = patch_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ConformanceVersion const& ) const = default; -#else - bool operator==( ConformanceVersion const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( major == rhs.major ) - && ( minor == rhs.minor ) - && ( subminor == rhs.subminor ) - && ( patch == rhs.patch ); - } - - 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 = {}; - - }; - static_assert( sizeof( ConformanceVersion ) == sizeof( VkConformanceVersion ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - using ConformanceVersionKHR = ConformanceVersion; - - struct CooperativeMatrixPropertiesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCooperativeMatrixPropertiesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CooperativeMatrixPropertiesNV(uint32_t MSize_ = {}, uint32_t NSize_ = {}, uint32_t KSize_ = {}, VULKAN_HPP_NAMESPACE::ComponentTypeNV AType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16, VULKAN_HPP_NAMESPACE::ComponentTypeNV BType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16, VULKAN_HPP_NAMESPACE::ComponentTypeNV CType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16, VULKAN_HPP_NAMESPACE::ComponentTypeNV DType_ = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16, VULKAN_HPP_NAMESPACE::ScopeNV scope_ = VULKAN_HPP_NAMESPACE::ScopeNV::eDevice) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CooperativeMatrixPropertiesNV & operator=( CooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CooperativeMatrixPropertiesNV & operator=( VkCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CooperativeMatrixPropertiesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CooperativeMatrixPropertiesNV & setMSize( uint32_t MSize_ ) VULKAN_HPP_NOEXCEPT - { - MSize = MSize_; - return *this; - } - - CooperativeMatrixPropertiesNV & setNSize( uint32_t NSize_ ) VULKAN_HPP_NOEXCEPT - { - NSize = NSize_; - return *this; - } - - CooperativeMatrixPropertiesNV & setKSize( uint32_t KSize_ ) VULKAN_HPP_NOEXCEPT - { - KSize = KSize_; - return *this; - } - - CooperativeMatrixPropertiesNV & setAType( VULKAN_HPP_NAMESPACE::ComponentTypeNV AType_ ) VULKAN_HPP_NOEXCEPT - { - AType = AType_; - return *this; - } - - CooperativeMatrixPropertiesNV & setBType( VULKAN_HPP_NAMESPACE::ComponentTypeNV BType_ ) VULKAN_HPP_NOEXCEPT - { - BType = BType_; - return *this; - } - - CooperativeMatrixPropertiesNV & setCType( VULKAN_HPP_NAMESPACE::ComponentTypeNV CType_ ) VULKAN_HPP_NOEXCEPT - { - CType = CType_; - return *this; - } - - CooperativeMatrixPropertiesNV & setDType( VULKAN_HPP_NAMESPACE::ComponentTypeNV DType_ ) VULKAN_HPP_NOEXCEPT - { - DType = DType_; - return *this; - } - - CooperativeMatrixPropertiesNV & setScope( VULKAN_HPP_NAMESPACE::ScopeNV scope_ ) VULKAN_HPP_NOEXCEPT - { - scope = scope_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CooperativeMatrixPropertiesNV const& ) const = default; -#else - bool operator==( CooperativeMatrixPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( CooperativeMatrixPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCooperativeMatrixPropertiesNV; - void* pNext = {}; - uint32_t MSize = {}; - uint32_t NSize = {}; - uint32_t KSize = {}; - VULKAN_HPP_NAMESPACE::ComponentTypeNV AType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16; - VULKAN_HPP_NAMESPACE::ComponentTypeNV BType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16; - VULKAN_HPP_NAMESPACE::ComponentTypeNV CType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16; - VULKAN_HPP_NAMESPACE::ComponentTypeNV DType = VULKAN_HPP_NAMESPACE::ComponentTypeNV::eFloat16; - VULKAN_HPP_NAMESPACE::ScopeNV scope = VULKAN_HPP_NAMESPACE::ScopeNV::eDevice; - - }; - static_assert( sizeof( CooperativeMatrixPropertiesNV ) == sizeof( VkCooperativeMatrixPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CooperativeMatrixPropertiesNV; - }; - - struct CopyCommandTransformInfoQCOM - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyCommandTransformInfoQCOM; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CopyCommandTransformInfoQCOM(VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity) VULKAN_HPP_NOEXCEPT - : transform( transform_ ) - {} - - VULKAN_HPP_CONSTEXPR CopyCommandTransformInfoQCOM( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyCommandTransformInfoQCOM( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT - : CopyCommandTransformInfoQCOM( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CopyCommandTransformInfoQCOM & operator=( CopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyCommandTransformInfoQCOM & operator=( VkCopyCommandTransformInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CopyCommandTransformInfoQCOM & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CopyCommandTransformInfoQCOM & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT - { - transform = transform_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CopyCommandTransformInfoQCOM const& ) const = default; -#else - bool operator==( CopyCommandTransformInfoQCOM const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( transform == rhs.transform ); - } - - bool operator!=( CopyCommandTransformInfoQCOM const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyCommandTransformInfoQCOM; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; - - }; - static_assert( sizeof( CopyCommandTransformInfoQCOM ) == sizeof( VkCopyCommandTransformInfoQCOM ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CopyCommandTransformInfoQCOM; - }; - - struct CopyDescriptorSet - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eCopyDescriptorSet; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR CopyDescriptorSet(VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_ = {}, uint32_t srcBinding_ = {}, uint32_t srcArrayElement_ = {}, VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ = {}, uint32_t dstBinding_ = {}, uint32_t dstArrayElement_ = {}, uint32_t descriptorCount_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 CopyDescriptorSet & operator=( CopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - CopyDescriptorSet & operator=( VkCopyDescriptorSet const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - CopyDescriptorSet & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - CopyDescriptorSet & setSrcSet( VULKAN_HPP_NAMESPACE::DescriptorSet srcSet_ ) VULKAN_HPP_NOEXCEPT - { - srcSet = srcSet_; - return *this; - } - - CopyDescriptorSet & setSrcBinding( uint32_t srcBinding_ ) VULKAN_HPP_NOEXCEPT - { - srcBinding = srcBinding_; - return *this; - } - - CopyDescriptorSet & setSrcArrayElement( uint32_t srcArrayElement_ ) VULKAN_HPP_NOEXCEPT - { - srcArrayElement = srcArrayElement_; - return *this; - } - - CopyDescriptorSet & setDstSet( VULKAN_HPP_NAMESPACE::DescriptorSet dstSet_ ) VULKAN_HPP_NOEXCEPT - { - dstSet = dstSet_; - return *this; - } - - CopyDescriptorSet & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT - { - dstBinding = dstBinding_; - return *this; - } - - CopyDescriptorSet & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT - { - dstArrayElement = dstArrayElement_; - return *this; - } - - CopyDescriptorSet & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorCount = descriptorCount_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( CopyDescriptorSet const& ) const = default; -#else - bool operator==( CopyDescriptorSet const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( CopyDescriptorSet const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eCopyDescriptorSet; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DescriptorSet srcSet = {}; - uint32_t srcBinding = {}; - uint32_t srcArrayElement = {}; - VULKAN_HPP_NAMESPACE::DescriptorSet dstSet = {}; - uint32_t dstBinding = {}; - uint32_t dstArrayElement = {}; - uint32_t descriptorCount = {}; - - }; - static_assert( sizeof( CopyDescriptorSet ) == sizeof( VkCopyDescriptorSet ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = CopyDescriptorSet; - }; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct D3D12FenceSubmitInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eD3D12FenceSubmitInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR D3D12FenceSubmitInfoKHR(uint32_t waitSemaphoreValuesCount_ = {}, const uint64_t* pWaitSemaphoreValues_ = {}, uint32_t signalSemaphoreValuesCount_ = {}, const uint64_t* pSignalSemaphoreValues_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreValues_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreValues_ = {} ) - : waitSemaphoreValuesCount( static_cast( waitSemaphoreValues_.size() ) ), pWaitSemaphoreValues( waitSemaphoreValues_.data() ), signalSemaphoreValuesCount( static_cast( signalSemaphoreValues_.size() ) ), pSignalSemaphoreValues( signalSemaphoreValues_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 D3D12FenceSubmitInfoKHR & operator=( D3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - D3D12FenceSubmitInfoKHR & operator=( VkD3D12FenceSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - D3D12FenceSubmitInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - D3D12FenceSubmitInfoKHR & setWaitSemaphoreValuesCount( uint32_t waitSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreValuesCount = waitSemaphoreValuesCount_; - return *this; - } - - D3D12FenceSubmitInfoKHR & setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT - { - pWaitSemaphoreValues = pWaitSemaphoreValues_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - D3D12FenceSubmitInfoKHR & setWaitSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreValuesCount = static_cast( waitSemaphoreValues_.size() ); - pWaitSemaphoreValues = waitSemaphoreValues_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - D3D12FenceSubmitInfoKHR & setSignalSemaphoreValuesCount( uint32_t signalSemaphoreValuesCount_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreValuesCount = signalSemaphoreValuesCount_; - return *this; - } - - D3D12FenceSubmitInfoKHR & setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT - { - pSignalSemaphoreValues = pSignalSemaphoreValues_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - D3D12FenceSubmitInfoKHR & setSignalSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreValuesCount = static_cast( signalSemaphoreValues_.size() ); - pSignalSemaphoreValues = signalSemaphoreValues_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkD3D12FenceSubmitInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkD3D12FenceSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( D3D12FenceSubmitInfoKHR const& ) const = default; -#else - bool operator==( D3D12FenceSubmitInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( waitSemaphoreValuesCount == rhs.waitSemaphoreValuesCount ) - && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) - && ( signalSemaphoreValuesCount == rhs.signalSemaphoreValuesCount ) - && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues ); - } - - bool operator!=( D3D12FenceSubmitInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eD3D12FenceSubmitInfoKHR; - const void* pNext = {}; - uint32_t waitSemaphoreValuesCount = {}; - const uint64_t* pWaitSemaphoreValues = {}; - uint32_t signalSemaphoreValuesCount = {}; - const uint64_t* pSignalSemaphoreValues = {}; - - }; - static_assert( sizeof( D3D12FenceSubmitInfoKHR ) == sizeof( VkD3D12FenceSubmitInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = D3D12FenceSubmitInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct DebugMarkerObjectNameInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugMarkerObjectNameInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DebugMarkerObjectNameInfoEXT(VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = {}, const char* pObjectName_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectNameInfoEXT & operator=( DebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DebugMarkerObjectNameInfoEXT & operator=( VkDebugMarkerObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DebugMarkerObjectNameInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DebugMarkerObjectNameInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT - { - objectType = objectType_; - return *this; - } - - DebugMarkerObjectNameInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT - { - object = object_; - return *this; - } - - DebugMarkerObjectNameInfoEXT & setPObjectName( const char* pObjectName_ ) VULKAN_HPP_NOEXCEPT - { - pObjectName = pObjectName_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugMarkerObjectNameInfoEXT const& ) const = default; -#else - 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 ); - } - - bool operator!=( DebugMarkerObjectNameInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerObjectNameInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; - uint64_t object = {}; - const char* pObjectName = {}; - - }; - static_assert( sizeof( DebugMarkerObjectNameInfoEXT ) == sizeof( VkDebugMarkerObjectNameInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DebugMarkerObjectNameInfoEXT; - }; - - struct DebugMarkerObjectTagInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugMarkerObjectTagInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DebugMarkerObjectTagInfoEXT(VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown, uint64_t object_ = {}, uint64_t tagName_ = {}, size_t tagSize_ = {}, const void* pTag_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_, uint64_t object_, uint64_t tagName_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tag_ ) - : objectType( objectType_ ), object( object_ ), tagName( tagName_ ), tagSize( tag_.size() * sizeof(T) ), pTag( tag_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DebugMarkerObjectTagInfoEXT & operator=( DebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DebugMarkerObjectTagInfoEXT & operator=( VkDebugMarkerObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DebugMarkerObjectTagInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType_ ) VULKAN_HPP_NOEXCEPT - { - objectType = objectType_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setObject( uint64_t object_ ) VULKAN_HPP_NOEXCEPT - { - object = object_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT - { - tagName = tagName_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT - { - tagSize = tagSize_; - return *this; - } - - DebugMarkerObjectTagInfoEXT & setPTag( const void* pTag_ ) VULKAN_HPP_NOEXCEPT - { - pTag = pTag_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - template - DebugMarkerObjectTagInfoEXT & setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tag_ ) VULKAN_HPP_NOEXCEPT - { - tagSize = tag_.size() * sizeof(T); - pTag = tag_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDebugMarkerObjectTagInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDebugMarkerObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugMarkerObjectTagInfoEXT const& ) const = default; -#else - bool operator==( DebugMarkerObjectTagInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( objectType == rhs.objectType ) - && ( object == rhs.object ) - && ( tagName == rhs.tagName ) - && ( tagSize == rhs.tagSize ) - && ( pTag == rhs.pTag ); - } - - bool operator!=( DebugMarkerObjectTagInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugMarkerObjectTagInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; - uint64_t object = {}; - uint64_t tagName = {}; - size_t tagSize = {}; - const void* pTag = {}; - - }; - static_assert( sizeof( DebugMarkerObjectTagInfoEXT ) == sizeof( VkDebugMarkerObjectTagInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DebugMarkerObjectTagInfoEXT; - }; - - struct DebugReportCallbackCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugReportCallbackCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DebugReportCallbackCreateInfoEXT(VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_ = {}, PFN_vkDebugReportCallbackEXT pfnCallback_ = {}, void* pUserData_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DebugReportCallbackCreateInfoEXT & operator=( DebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DebugReportCallbackCreateInfoEXT & operator=( VkDebugReportCallbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DebugReportCallbackCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DebugReportCallbackCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DebugReportCallbackCreateInfoEXT & setPfnCallback( PFN_vkDebugReportCallbackEXT pfnCallback_ ) VULKAN_HPP_NOEXCEPT - { - pfnCallback = pfnCallback_; - return *this; - } - - DebugReportCallbackCreateInfoEXT & setPUserData( void* pUserData_ ) VULKAN_HPP_NOEXCEPT - { - pUserData = pUserData_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugReportCallbackCreateInfoEXT const& ) const = default; -#else - bool operator==( DebugReportCallbackCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pfnCallback == rhs.pfnCallback ) - && ( pUserData == rhs.pUserData ); - } - - bool operator!=( DebugReportCallbackCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugReportCallbackCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags = {}; - PFN_vkDebugReportCallbackEXT pfnCallback = {}; - void* pUserData = {}; - - }; - static_assert( sizeof( DebugReportCallbackCreateInfoEXT ) == sizeof( VkDebugReportCallbackCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DebugReportCallbackCreateInfoEXT; - }; - - struct DebugUtilsObjectNameInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsObjectNameInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DebugUtilsObjectNameInfoEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_ = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown, uint64_t objectHandle_ = {}, const char* pObjectName_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectNameInfoEXT & operator=( DebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DebugUtilsObjectNameInfoEXT & operator=( VkDebugUtilsObjectNameInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DebugUtilsObjectNameInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DebugUtilsObjectNameInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT - { - objectType = objectType_; - return *this; - } - - DebugUtilsObjectNameInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT - { - objectHandle = objectHandle_; - return *this; - } - - DebugUtilsObjectNameInfoEXT & setPObjectName( const char* pObjectName_ ) VULKAN_HPP_NOEXCEPT - { - pObjectName = pObjectName_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugUtilsObjectNameInfoEXT const& ) const = default; -#else - 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 ); - } - - bool operator!=( DebugUtilsObjectNameInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectNameInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown; - uint64_t objectHandle = {}; - const char* pObjectName = {}; - - }; - static_assert( sizeof( DebugUtilsObjectNameInfoEXT ) == sizeof( VkDebugUtilsObjectNameInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DebugUtilsObjectNameInfoEXT; - }; - - struct DebugUtilsMessengerCallbackDataEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsMessengerCallbackDataEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT(VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_ = {}, const char* pMessageIdName_ = {}, int32_t messageIdNumber_ = {}, const char* pMessage_ = {}, uint32_t queueLabelCount_ = {}, const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pQueueLabels_ = {}, uint32_t cmdBufLabelCount_ = {}, const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pCmdBufLabels_ = {}, uint32_t objectCount_ = {}, const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT* pObjects_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_, const char* pMessageIdName_, int32_t messageIdNumber_, const char* pMessage_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueLabels_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & cmdBufLabels_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & objects_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCallbackDataEXT & operator=( DebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DebugUtilsMessengerCallbackDataEXT & operator=( VkDebugUtilsMessengerCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPMessageIdName( const char* pMessageIdName_ ) VULKAN_HPP_NOEXCEPT - { - pMessageIdName = pMessageIdName_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setMessageIdNumber( int32_t messageIdNumber_ ) VULKAN_HPP_NOEXCEPT - { - messageIdNumber = messageIdNumber_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPMessage( const char* pMessage_ ) VULKAN_HPP_NOEXCEPT - { - pMessage = pMessage_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setQueueLabelCount( uint32_t queueLabelCount_ ) VULKAN_HPP_NOEXCEPT - { - queueLabelCount = queueLabelCount_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPQueueLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pQueueLabels_ ) VULKAN_HPP_NOEXCEPT - { - pQueueLabels = pQueueLabels_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DebugUtilsMessengerCallbackDataEXT & setQueueLabels( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueLabels_ ) VULKAN_HPP_NOEXCEPT - { - queueLabelCount = static_cast( queueLabels_.size() ); - pQueueLabels = queueLabels_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DebugUtilsMessengerCallbackDataEXT & setCmdBufLabelCount( uint32_t cmdBufLabelCount_ ) VULKAN_HPP_NOEXCEPT - { - cmdBufLabelCount = cmdBufLabelCount_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPCmdBufLabels( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pCmdBufLabels_ ) VULKAN_HPP_NOEXCEPT - { - pCmdBufLabels = pCmdBufLabels_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DebugUtilsMessengerCallbackDataEXT & setCmdBufLabels( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & cmdBufLabels_ ) VULKAN_HPP_NOEXCEPT - { - cmdBufLabelCount = static_cast( cmdBufLabels_.size() ); - pCmdBufLabels = cmdBufLabels_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DebugUtilsMessengerCallbackDataEXT & setObjectCount( uint32_t objectCount_ ) VULKAN_HPP_NOEXCEPT - { - objectCount = objectCount_; - return *this; - } - - DebugUtilsMessengerCallbackDataEXT & setPObjects( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT* pObjects_ ) VULKAN_HPP_NOEXCEPT - { - pObjects = pObjects_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DebugUtilsMessengerCallbackDataEXT & setObjects( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & objects_ ) VULKAN_HPP_NOEXCEPT - { - objectCount = static_cast( objects_.size() ); - pObjects = objects_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDebugUtilsMessengerCallbackDataEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDebugUtilsMessengerCallbackDataEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugUtilsMessengerCallbackDataEXT const& ) const = default; -#else - bool operator==( DebugUtilsMessengerCallbackDataEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pMessageIdName == rhs.pMessageIdName ) - && ( messageIdNumber == rhs.messageIdNumber ) - && ( pMessage == rhs.pMessage ) - && ( 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 ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCallbackDataEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataFlagsEXT flags = {}; - const char* pMessageIdName = {}; - int32_t messageIdNumber = {}; - const char* pMessage = {}; - uint32_t queueLabelCount = {}; - const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pQueueLabels = {}; - uint32_t cmdBufLabelCount = {}; - const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pCmdBufLabels = {}; - uint32_t objectCount = {}; - const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT* pObjects = {}; - - }; - static_assert( sizeof( DebugUtilsMessengerCallbackDataEXT ) == sizeof( VkDebugUtilsMessengerCallbackDataEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DebugUtilsMessengerCallbackDataEXT; - }; - - struct DebugUtilsMessengerCreateInfoEXT - { - static const bool allowDuplicate = true; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsMessengerCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DebugUtilsMessengerCreateInfoEXT(VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_ = {}, VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ = {}, VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType_ = {}, PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ = {}, void* pUserData_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DebugUtilsMessengerCreateInfoEXT & operator=( DebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DebugUtilsMessengerCreateInfoEXT & operator=( VkDebugUtilsMessengerCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setMessageSeverity( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity_ ) VULKAN_HPP_NOEXCEPT - { - messageSeverity = messageSeverity_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setMessageType( VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType_ ) VULKAN_HPP_NOEXCEPT - { - messageType = messageType_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setPfnUserCallback( PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT - { - pfnUserCallback = pfnUserCallback_; - return *this; - } - - DebugUtilsMessengerCreateInfoEXT & setPUserData( void* pUserData_ ) VULKAN_HPP_NOEXCEPT - { - pUserData = pUserData_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugUtilsMessengerCreateInfoEXT const& ) const = default; -#else - bool operator==( DebugUtilsMessengerCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( messageSeverity == rhs.messageSeverity ) - && ( messageType == rhs.messageType ) - && ( pfnUserCallback == rhs.pfnUserCallback ) - && ( pUserData == rhs.pUserData ); - } - - bool operator!=( DebugUtilsMessengerCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsMessengerCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateFlagsEXT flags = {}; - VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagsEXT messageSeverity = {}; - VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageType = {}; - PFN_vkDebugUtilsMessengerCallbackEXT pfnUserCallback = {}; - void* pUserData = {}; - - }; - static_assert( sizeof( DebugUtilsMessengerCreateInfoEXT ) == sizeof( VkDebugUtilsMessengerCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DebugUtilsMessengerCreateInfoEXT; - }; - - struct DebugUtilsObjectTagInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDebugUtilsObjectTagInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DebugUtilsObjectTagInfoEXT(VULKAN_HPP_NAMESPACE::ObjectType objectType_ = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown, uint64_t objectHandle_ = {}, uint64_t tagName_ = {}, size_t tagSize_ = {}, const void* pTag_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ObjectType objectType_, uint64_t objectHandle_, uint64_t tagName_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tag_ ) - : objectType( objectType_ ), objectHandle( objectHandle_ ), tagName( tagName_ ), tagSize( tag_.size() * sizeof(T) ), pTag( tag_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DebugUtilsObjectTagInfoEXT & operator=( DebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DebugUtilsObjectTagInfoEXT & operator=( VkDebugUtilsObjectTagInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DebugUtilsObjectTagInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setObjectType( VULKAN_HPP_NAMESPACE::ObjectType objectType_ ) VULKAN_HPP_NOEXCEPT - { - objectType = objectType_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setObjectHandle( uint64_t objectHandle_ ) VULKAN_HPP_NOEXCEPT - { - objectHandle = objectHandle_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setTagName( uint64_t tagName_ ) VULKAN_HPP_NOEXCEPT - { - tagName = tagName_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setTagSize( size_t tagSize_ ) VULKAN_HPP_NOEXCEPT - { - tagSize = tagSize_; - return *this; - } - - DebugUtilsObjectTagInfoEXT & setPTag( const void* pTag_ ) VULKAN_HPP_NOEXCEPT - { - pTag = pTag_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - template - DebugUtilsObjectTagInfoEXT & setTag( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tag_ ) VULKAN_HPP_NOEXCEPT - { - tagSize = tag_.size() * sizeof(T); - pTag = tag_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDebugUtilsObjectTagInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDebugUtilsObjectTagInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugUtilsObjectTagInfoEXT const& ) const = default; -#else - bool operator==( DebugUtilsObjectTagInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( objectType == rhs.objectType ) - && ( objectHandle == rhs.objectHandle ) - && ( tagName == rhs.tagName ) - && ( tagSize == rhs.tagSize ) - && ( pTag == rhs.pTag ); - } - - bool operator!=( DebugUtilsObjectTagInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDebugUtilsObjectTagInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown; - uint64_t objectHandle = {}; - uint64_t tagName = {}; - size_t tagSize = {}; - const void* pTag = {}; - - }; - static_assert( sizeof( DebugUtilsObjectTagInfoEXT ) == sizeof( VkDebugUtilsObjectTagInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DebugUtilsObjectTagInfoEXT; - }; - - struct DedicatedAllocationBufferCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDedicatedAllocationBufferCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV(VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {}) VULKAN_HPP_NOEXCEPT - : dedicatedAllocation( dedicatedAllocation_ ) - {} - - VULKAN_HPP_CONSTEXPR DedicatedAllocationBufferCreateInfoNV( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DedicatedAllocationBufferCreateInfoNV( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - : DedicatedAllocationBufferCreateInfoNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationBufferCreateInfoNV & operator=( DedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DedicatedAllocationBufferCreateInfoNV & operator=( VkDedicatedAllocationBufferCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DedicatedAllocationBufferCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DedicatedAllocationBufferCreateInfoNV & setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT - { - dedicatedAllocation = dedicatedAllocation_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DedicatedAllocationBufferCreateInfoNV const& ) const = default; -#else - bool operator==( DedicatedAllocationBufferCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( dedicatedAllocation == rhs.dedicatedAllocation ); - } - - bool operator!=( DedicatedAllocationBufferCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationBufferCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation = {}; - - }; - static_assert( sizeof( DedicatedAllocationBufferCreateInfoNV ) == sizeof( VkDedicatedAllocationBufferCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DedicatedAllocationBufferCreateInfoNV; - }; - - struct DedicatedAllocationImageCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDedicatedAllocationImageCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV(VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ = {}) VULKAN_HPP_NOEXCEPT - : dedicatedAllocation( dedicatedAllocation_ ) - {} - - VULKAN_HPP_CONSTEXPR DedicatedAllocationImageCreateInfoNV( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DedicatedAllocationImageCreateInfoNV( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - : DedicatedAllocationImageCreateInfoNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationImageCreateInfoNV & operator=( DedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DedicatedAllocationImageCreateInfoNV & operator=( VkDedicatedAllocationImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DedicatedAllocationImageCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DedicatedAllocationImageCreateInfoNV & setDedicatedAllocation( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation_ ) VULKAN_HPP_NOEXCEPT - { - dedicatedAllocation = dedicatedAllocation_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DedicatedAllocationImageCreateInfoNV const& ) const = default; -#else - bool operator==( DedicatedAllocationImageCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( dedicatedAllocation == rhs.dedicatedAllocation ); - } - - bool operator!=( DedicatedAllocationImageCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationImageCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocation = {}; - - }; - static_assert( sizeof( DedicatedAllocationImageCreateInfoNV ) == sizeof( VkDedicatedAllocationImageCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DedicatedAllocationImageCreateInfoNV; - }; - - struct DedicatedAllocationMemoryAllocateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DedicatedAllocationMemoryAllocateInfoNV(VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DedicatedAllocationMemoryAllocateInfoNV & operator=( DedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DedicatedAllocationMemoryAllocateInfoNV & operator=( VkDedicatedAllocationMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DedicatedAllocationMemoryAllocateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DedicatedAllocationMemoryAllocateInfoNV & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *this; - } - - DedicatedAllocationMemoryAllocateInfoNV & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DedicatedAllocationMemoryAllocateInfoNV const& ) const = default; -#else - bool operator==( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( DedicatedAllocationMemoryAllocateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDedicatedAllocationMemoryAllocateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Image image = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - - }; - static_assert( sizeof( DedicatedAllocationMemoryAllocateInfoNV ) == sizeof( VkDedicatedAllocationMemoryAllocateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DedicatedAllocationMemoryAllocateInfoNV; - }; - - struct DescriptorPoolSize - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorPoolSize(VULKAN_HPP_NAMESPACE::DescriptorType type_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorPoolSize & operator=( DescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorPoolSize & operator=( VkDescriptorPoolSize const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorPoolSize & setType( VULKAN_HPP_NAMESPACE::DescriptorType type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - DescriptorPoolSize & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorCount = descriptorCount_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorPoolSize const& ) const = default; -#else - bool operator==( DescriptorPoolSize const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( type == rhs.type ) - && ( descriptorCount == rhs.descriptorCount ); - } - - bool operator!=( DescriptorPoolSize const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DescriptorType type = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; - uint32_t descriptorCount = {}; - - }; - static_assert( sizeof( DescriptorPoolSize ) == sizeof( VkDescriptorPoolSize ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DescriptorPoolCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorPoolCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorPoolCreateInfo(VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_ = {}, uint32_t maxSets_ = {}, uint32_t poolSizeCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorPoolSize* pPoolSizes_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_, uint32_t maxSets_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & poolSizes_ ) - : flags( flags_ ), maxSets( maxSets_ ), poolSizeCount( static_cast( poolSizes_.size() ) ), pPoolSizes( poolSizes_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorPoolCreateInfo & operator=( DescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorPoolCreateInfo & operator=( VkDescriptorPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorPoolCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DescriptorPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DescriptorPoolCreateInfo & setMaxSets( uint32_t maxSets_ ) VULKAN_HPP_NOEXCEPT - { - maxSets = maxSets_; - return *this; - } - - DescriptorPoolCreateInfo & setPoolSizeCount( uint32_t poolSizeCount_ ) VULKAN_HPP_NOEXCEPT - { - poolSizeCount = poolSizeCount_; - return *this; - } - - DescriptorPoolCreateInfo & setPPoolSizes( const VULKAN_HPP_NAMESPACE::DescriptorPoolSize* pPoolSizes_ ) VULKAN_HPP_NOEXCEPT - { - pPoolSizes = pPoolSizes_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DescriptorPoolCreateInfo & setPoolSizes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & poolSizes_ ) VULKAN_HPP_NOEXCEPT - { - poolSizeCount = static_cast( poolSizes_.size() ); - pPoolSizes = poolSizes_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDescriptorPoolCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorPoolCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorPoolCreateInfo const& ) const = default; -#else - bool operator==( DescriptorPoolCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( maxSets == rhs.maxSets ) - && ( poolSizeCount == rhs.poolSizeCount ) - && ( pPoolSizes == rhs.pPoolSizes ); - } - - bool operator!=( DescriptorPoolCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DescriptorPoolCreateFlags flags = {}; - uint32_t maxSets = {}; - uint32_t poolSizeCount = {}; - const VULKAN_HPP_NAMESPACE::DescriptorPoolSize* pPoolSizes = {}; - - }; - static_assert( sizeof( DescriptorPoolCreateInfo ) == sizeof( VkDescriptorPoolCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DescriptorPoolCreateInfo; - }; - - struct DescriptorPoolInlineUniformBlockCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfoEXT(uint32_t maxInlineUniformBlockBindings_ = {}) VULKAN_HPP_NOEXCEPT - : maxInlineUniformBlockBindings( maxInlineUniformBlockBindings_ ) - {} - - VULKAN_HPP_CONSTEXPR DescriptorPoolInlineUniformBlockCreateInfoEXT( DescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorPoolInlineUniformBlockCreateInfoEXT( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : DescriptorPoolInlineUniformBlockCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorPoolInlineUniformBlockCreateInfoEXT & operator=( DescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorPoolInlineUniformBlockCreateInfoEXT & operator=( VkDescriptorPoolInlineUniformBlockCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorPoolInlineUniformBlockCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DescriptorPoolInlineUniformBlockCreateInfoEXT & setMaxInlineUniformBlockBindings( uint32_t maxInlineUniformBlockBindings_ ) VULKAN_HPP_NOEXCEPT - { - maxInlineUniformBlockBindings = maxInlineUniformBlockBindings_; - return *this; - } - - - operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorPoolInlineUniformBlockCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorPoolInlineUniformBlockCreateInfoEXT const& ) const = default; -#else - bool operator==( DescriptorPoolInlineUniformBlockCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxInlineUniformBlockBindings == rhs.maxInlineUniformBlockBindings ); - } - - bool operator!=( DescriptorPoolInlineUniformBlockCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorPoolInlineUniformBlockCreateInfoEXT; - const void* pNext = {}; - uint32_t maxInlineUniformBlockBindings = {}; - - }; - static_assert( sizeof( DescriptorPoolInlineUniformBlockCreateInfoEXT ) == sizeof( VkDescriptorPoolInlineUniformBlockCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DescriptorPoolInlineUniformBlockCreateInfoEXT; - }; - - class DescriptorPool - { - public: - using CType = VkDescriptorPool; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorPool; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorPool; - - public: - VULKAN_HPP_CONSTEXPR DescriptorPool() VULKAN_HPP_NOEXCEPT - : m_descriptorPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DescriptorPool( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_descriptorPool(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorPool( VkDescriptorPool descriptorPool ) VULKAN_HPP_NOEXCEPT - : m_descriptorPool( descriptorPool ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DescriptorPool & operator=(VkDescriptorPool descriptorPool) VULKAN_HPP_NOEXCEPT - { - m_descriptorPool = descriptorPool; - return *this; - } -#endif - - DescriptorPool & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_descriptorPool = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorPool const& ) const = default; -#else - bool operator==( DescriptorPool const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorPool == rhs.m_descriptorPool; - } - - bool operator!=(DescriptorPool const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorPool != rhs.m_descriptorPool; - } - - bool operator<(DescriptorPool const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorPool < rhs.m_descriptorPool; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DescriptorPool ) == sizeof( VkDescriptorPool ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DescriptorPool; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DescriptorPool; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DescriptorPool; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - class DescriptorSetLayout - { - public: - using CType = VkDescriptorSetLayout; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDescriptorSetLayout; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDescriptorSetLayout; - - public: - VULKAN_HPP_CONSTEXPR DescriptorSetLayout() VULKAN_HPP_NOEXCEPT - : m_descriptorSetLayout(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DescriptorSetLayout( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_descriptorSetLayout(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DescriptorSetLayout( VkDescriptorSetLayout descriptorSetLayout ) VULKAN_HPP_NOEXCEPT - : m_descriptorSetLayout( descriptorSetLayout ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DescriptorSetLayout & operator=(VkDescriptorSetLayout descriptorSetLayout) VULKAN_HPP_NOEXCEPT - { - m_descriptorSetLayout = descriptorSetLayout; - return *this; - } -#endif - - DescriptorSetLayout & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_descriptorSetLayout = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorSetLayout const& ) const = default; -#else - bool operator==( DescriptorSetLayout const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorSetLayout == rhs.m_descriptorSetLayout; - } - - bool operator!=(DescriptorSetLayout const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorSetLayout != rhs.m_descriptorSetLayout; - } - - bool operator<(DescriptorSetLayout const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_descriptorSetLayout < rhs.m_descriptorSetLayout; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DescriptorSetLayout ) == sizeof( VkDescriptorSetLayout ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DescriptorSetLayout; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DescriptorSetLayout; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DescriptorSetLayout; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct DescriptorSetAllocateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetAllocateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorSetAllocateInfo(VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_ = {}, uint32_t descriptorSetCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorSetLayout* pSetLayouts_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & setLayouts_ ) - : descriptorPool( descriptorPool_ ), descriptorSetCount( static_cast( setLayouts_.size() ) ), pSetLayouts( setLayouts_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorSetAllocateInfo & operator=( DescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorSetAllocateInfo & operator=( VkDescriptorSetAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorSetAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DescriptorSetAllocateInfo & setDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool_ ) VULKAN_HPP_NOEXCEPT - { - descriptorPool = descriptorPool_; - return *this; - } - - DescriptorSetAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorSetCount = descriptorSetCount_; - return *this; - } - - DescriptorSetAllocateInfo & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout* pSetLayouts_ ) VULKAN_HPP_NOEXCEPT - { - pSetLayouts = pSetLayouts_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DescriptorSetAllocateInfo & setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & setLayouts_ ) VULKAN_HPP_NOEXCEPT - { - descriptorSetCount = static_cast( setLayouts_.size() ); - pSetLayouts = setLayouts_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDescriptorSetAllocateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetAllocateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorSetAllocateInfo const& ) const = default; -#else - bool operator==( DescriptorSetAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( descriptorPool == rhs.descriptorPool ) - && ( descriptorSetCount == rhs.descriptorSetCount ) - && ( pSetLayouts == rhs.pSetLayouts ); - } - - bool operator!=( DescriptorSetAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetAllocateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool = {}; - uint32_t descriptorSetCount = {}; - const VULKAN_HPP_NAMESPACE::DescriptorSetLayout* pSetLayouts = {}; - - }; - static_assert( sizeof( DescriptorSetAllocateInfo ) == sizeof( VkDescriptorSetAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DescriptorSetAllocateInfo; - }; - - struct DescriptorSetLayoutBinding - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBinding(uint32_t binding_ = {}, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, uint32_t descriptorCount_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ = {}, const VULKAN_HPP_NAMESPACE::Sampler* 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_, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_, VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & immutableSamplers_ ) - : binding( binding_ ), descriptorType( descriptorType_ ), descriptorCount( static_cast( immutableSamplers_.size() ) ), stageFlags( stageFlags_ ), pImmutableSamplers( immutableSamplers_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBinding & operator=( DescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorSetLayoutBinding & operator=( VkDescriptorSetLayoutBinding const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorSetLayoutBinding & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT - { - binding = binding_; - return *this; - } - - DescriptorSetLayoutBinding & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT - { - descriptorType = descriptorType_; - return *this; - } - - DescriptorSetLayoutBinding & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorCount = descriptorCount_; - return *this; - } - - DescriptorSetLayoutBinding & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT - { - stageFlags = stageFlags_; - return *this; - } - - DescriptorSetLayoutBinding & setPImmutableSamplers( const VULKAN_HPP_NAMESPACE::Sampler* pImmutableSamplers_ ) VULKAN_HPP_NOEXCEPT - { - pImmutableSamplers = pImmutableSamplers_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DescriptorSetLayoutBinding & setImmutableSamplers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & immutableSamplers_ ) VULKAN_HPP_NOEXCEPT - { - descriptorCount = static_cast( immutableSamplers_.size() ); - pImmutableSamplers = immutableSamplers_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDescriptorSetLayoutBinding const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetLayoutBinding &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorSetLayoutBinding const& ) const = default; -#else - bool operator==( DescriptorSetLayoutBinding const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( binding == rhs.binding ) - && ( descriptorType == rhs.descriptorType ) - && ( descriptorCount == rhs.descriptorCount ) - && ( stageFlags == rhs.stageFlags ) - && ( pImmutableSamplers == rhs.pImmutableSamplers ); - } - - bool operator!=( DescriptorSetLayoutBinding const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t binding = {}; - VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; - uint32_t descriptorCount = {}; - VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {}; - const VULKAN_HPP_NAMESPACE::Sampler* pImmutableSamplers = {}; - - }; - static_assert( sizeof( DescriptorSetLayoutBinding ) == sizeof( VkDescriptorSetLayoutBinding ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DescriptorSetLayoutBindingFlagsCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorSetLayoutBindingFlagsCreateInfo(uint32_t bindingCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags* pBindingFlags_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bindingFlags_ ) - : bindingCount( static_cast( bindingFlags_.size() ) ), pBindingFlags( bindingFlags_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutBindingFlagsCreateInfo & operator=( DescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorSetLayoutBindingFlagsCreateInfo & operator=( VkDescriptorSetLayoutBindingFlagsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorSetLayoutBindingFlagsCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DescriptorSetLayoutBindingFlagsCreateInfo & setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT - { - bindingCount = bindingCount_; - return *this; - } - - DescriptorSetLayoutBindingFlagsCreateInfo & setPBindingFlags( const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags* pBindingFlags_ ) VULKAN_HPP_NOEXCEPT - { - pBindingFlags = pBindingFlags_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DescriptorSetLayoutBindingFlagsCreateInfo & setBindingFlags( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bindingFlags_ ) VULKAN_HPP_NOEXCEPT - { - bindingCount = static_cast( bindingFlags_.size() ); - pBindingFlags = bindingFlags_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDescriptorSetLayoutBindingFlagsCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetLayoutBindingFlagsCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorSetLayoutBindingFlagsCreateInfo const& ) const = default; -#else - bool operator==( DescriptorSetLayoutBindingFlagsCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( bindingCount == rhs.bindingCount ) - && ( pBindingFlags == rhs.pBindingFlags ); - } - - bool operator!=( DescriptorSetLayoutBindingFlagsCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutBindingFlagsCreateInfo; - const void* pNext = {}; - uint32_t bindingCount = {}; - const VULKAN_HPP_NAMESPACE::DescriptorBindingFlags* pBindingFlags = {}; - - }; - static_assert( sizeof( DescriptorSetLayoutBindingFlagsCreateInfo ) == sizeof( VkDescriptorSetLayoutBindingFlagsCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DescriptorSetLayoutBindingFlagsCreateInfo; - }; - using DescriptorSetLayoutBindingFlagsCreateInfoEXT = DescriptorSetLayoutBindingFlagsCreateInfo; - - struct DescriptorSetLayoutCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorSetLayoutCreateInfo(VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_ = {}, uint32_t bindingCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding* pBindings_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bindings_ ) - : flags( flags_ ), bindingCount( static_cast( bindings_.size() ) ), pBindings( bindings_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutCreateInfo & operator=( DescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorSetLayoutCreateInfo & operator=( VkDescriptorSetLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorSetLayoutCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DescriptorSetLayoutCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DescriptorSetLayoutCreateInfo & setBindingCount( uint32_t bindingCount_ ) VULKAN_HPP_NOEXCEPT - { - bindingCount = bindingCount_; - return *this; - } - - DescriptorSetLayoutCreateInfo & setPBindings( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding* pBindings_ ) VULKAN_HPP_NOEXCEPT - { - pBindings = pBindings_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DescriptorSetLayoutCreateInfo & setBindings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & bindings_ ) VULKAN_HPP_NOEXCEPT - { - bindingCount = static_cast( bindings_.size() ); - pBindings = bindings_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDescriptorSetLayoutCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorSetLayoutCreateInfo const& ) const = default; -#else - bool operator==( DescriptorSetLayoutCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( bindingCount == rhs.bindingCount ) - && ( pBindings == rhs.pBindings ); - } - - bool operator!=( DescriptorSetLayoutCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateFlags flags = {}; - uint32_t bindingCount = {}; - const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutBinding* pBindings = {}; - - }; - static_assert( sizeof( DescriptorSetLayoutCreateInfo ) == sizeof( VkDescriptorSetLayoutCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DescriptorSetLayoutCreateInfo; - }; - - struct DescriptorSetLayoutSupport - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetLayoutSupport; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport(VULKAN_HPP_NAMESPACE::Bool32 supported_ = {}) VULKAN_HPP_NOEXCEPT - : supported( supported_ ) - {} - - VULKAN_HPP_CONSTEXPR DescriptorSetLayoutSupport( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorSetLayoutSupport( VkDescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT - : DescriptorSetLayoutSupport( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorSetLayoutSupport & operator=( DescriptorSetLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorSetLayoutSupport const& ) const = default; -#else - bool operator==( DescriptorSetLayoutSupport const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( supported == rhs.supported ); - } - - bool operator!=( DescriptorSetLayoutSupport const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetLayoutSupport; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 supported = {}; - - }; - static_assert( sizeof( DescriptorSetLayoutSupport ) == sizeof( VkDescriptorSetLayoutSupport ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DescriptorSetLayoutSupport; - }; - using DescriptorSetLayoutSupportKHR = DescriptorSetLayoutSupport; - - struct DescriptorSetVariableDescriptorCountAllocateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountAllocateInfo(uint32_t descriptorSetCount_ = {}, const uint32_t* pDescriptorCounts_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & descriptorCounts_ ) - : descriptorSetCount( static_cast( descriptorCounts_.size() ) ), pDescriptorCounts( descriptorCounts_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountAllocateInfo & operator=( DescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorSetVariableDescriptorCountAllocateInfo & operator=( VkDescriptorSetVariableDescriptorCountAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorSetVariableDescriptorCountAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DescriptorSetVariableDescriptorCountAllocateInfo & setDescriptorSetCount( uint32_t descriptorSetCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorSetCount = descriptorSetCount_; - return *this; - } - - DescriptorSetVariableDescriptorCountAllocateInfo & setPDescriptorCounts( const uint32_t* pDescriptorCounts_ ) VULKAN_HPP_NOEXCEPT - { - pDescriptorCounts = pDescriptorCounts_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DescriptorSetVariableDescriptorCountAllocateInfo & setDescriptorCounts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & descriptorCounts_ ) VULKAN_HPP_NOEXCEPT - { - descriptorSetCount = static_cast( descriptorCounts_.size() ); - pDescriptorCounts = descriptorCounts_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDescriptorSetVariableDescriptorCountAllocateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDescriptorSetVariableDescriptorCountAllocateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorSetVariableDescriptorCountAllocateInfo const& ) const = default; -#else - bool operator==( DescriptorSetVariableDescriptorCountAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( descriptorSetCount == rhs.descriptorSetCount ) - && ( pDescriptorCounts == rhs.pDescriptorCounts ); - } - - bool operator!=( DescriptorSetVariableDescriptorCountAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountAllocateInfo; - const void* pNext = {}; - uint32_t descriptorSetCount = {}; - const uint32_t* pDescriptorCounts = {}; - - }; - static_assert( sizeof( DescriptorSetVariableDescriptorCountAllocateInfo ) == sizeof( VkDescriptorSetVariableDescriptorCountAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DescriptorSetVariableDescriptorCountAllocateInfo; - }; - using DescriptorSetVariableDescriptorCountAllocateInfoEXT = DescriptorSetVariableDescriptorCountAllocateInfo; - - struct DescriptorSetVariableDescriptorCountLayoutSupport - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport(uint32_t maxVariableDescriptorCount_ = {}) VULKAN_HPP_NOEXCEPT - : maxVariableDescriptorCount( maxVariableDescriptorCount_ ) - {} - - VULKAN_HPP_CONSTEXPR DescriptorSetVariableDescriptorCountLayoutSupport( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorSetVariableDescriptorCountLayoutSupport( VkDescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT - : DescriptorSetVariableDescriptorCountLayoutSupport( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorSetVariableDescriptorCountLayoutSupport & operator=( DescriptorSetVariableDescriptorCountLayoutSupport const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorSetVariableDescriptorCountLayoutSupport const& ) const = default; -#else - bool operator==( DescriptorSetVariableDescriptorCountLayoutSupport const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxVariableDescriptorCount == rhs.maxVariableDescriptorCount ); - } - - bool operator!=( DescriptorSetVariableDescriptorCountLayoutSupport const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorSetVariableDescriptorCountLayoutSupport; - void* pNext = {}; - uint32_t maxVariableDescriptorCount = {}; - - }; - static_assert( sizeof( DescriptorSetVariableDescriptorCountLayoutSupport ) == sizeof( VkDescriptorSetVariableDescriptorCountLayoutSupport ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DescriptorSetVariableDescriptorCountLayoutSupport; - }; - using DescriptorSetVariableDescriptorCountLayoutSupportEXT = DescriptorSetVariableDescriptorCountLayoutSupport; - - struct DescriptorUpdateTemplateEntry - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateEntry(uint32_t dstBinding_ = {}, uint32_t dstArrayElement_ = {}, uint32_t descriptorCount_ = {}, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateEntry & operator=( DescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorUpdateTemplateEntry & operator=( VkDescriptorUpdateTemplateEntry const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorUpdateTemplateEntry & setDstBinding( uint32_t dstBinding_ ) VULKAN_HPP_NOEXCEPT - { - dstBinding = dstBinding_; - return *this; - } - - DescriptorUpdateTemplateEntry & setDstArrayElement( uint32_t dstArrayElement_ ) VULKAN_HPP_NOEXCEPT - { - dstArrayElement = dstArrayElement_; - return *this; - } - - DescriptorUpdateTemplateEntry & setDescriptorCount( uint32_t descriptorCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorCount = descriptorCount_; - return *this; - } - - DescriptorUpdateTemplateEntry & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT - { - descriptorType = descriptorType_; - return *this; - } - - DescriptorUpdateTemplateEntry & setOffset( size_t offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - DescriptorUpdateTemplateEntry & setStride( size_t stride_ ) VULKAN_HPP_NOEXCEPT - { - stride = stride_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorUpdateTemplateEntry const& ) const = default; -#else - bool operator==( DescriptorUpdateTemplateEntry const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( dstBinding == rhs.dstBinding ) - && ( dstArrayElement == rhs.dstArrayElement ) - && ( descriptorCount == rhs.descriptorCount ) - && ( descriptorType == rhs.descriptorType ) - && ( offset == rhs.offset ) - && ( stride == rhs.stride ); - } - - bool operator!=( DescriptorUpdateTemplateEntry const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t dstBinding = {}; - uint32_t dstArrayElement = {}; - uint32_t descriptorCount = {}; - VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; - size_t offset = {}; - size_t stride = {}; - - }; - static_assert( sizeof( DescriptorUpdateTemplateEntry ) == sizeof( VkDescriptorUpdateTemplateEntry ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - using DescriptorUpdateTemplateEntryKHR = DescriptorUpdateTemplateEntry; - - struct DescriptorUpdateTemplateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDescriptorUpdateTemplateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DescriptorUpdateTemplateCreateInfo(VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_ = {}, uint32_t descriptorUpdateEntryCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries_ = {}, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet, VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ = {}, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ = {}, uint32_t set_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & descriptorUpdateEntries_, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet, VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ = {}, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ = {}, uint32_t set_ = {} ) - : flags( flags_ ), descriptorUpdateEntryCount( static_cast( descriptorUpdateEntries_.size() ) ), pDescriptorUpdateEntries( descriptorUpdateEntries_.data() ), templateType( templateType_ ), descriptorSetLayout( descriptorSetLayout_ ), pipelineBindPoint( pipelineBindPoint_ ), pipelineLayout( pipelineLayout_ ), set( set_ ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DescriptorUpdateTemplateCreateInfo & operator=( DescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DescriptorUpdateTemplateCreateInfo & operator=( VkDescriptorUpdateTemplateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntryCount( uint32_t descriptorUpdateEntryCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorUpdateEntryCount = descriptorUpdateEntryCount_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setPDescriptorUpdateEntries( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries_ ) VULKAN_HPP_NOEXCEPT - { - pDescriptorUpdateEntries = pDescriptorUpdateEntries_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DescriptorUpdateTemplateCreateInfo & setDescriptorUpdateEntries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & descriptorUpdateEntries_ ) VULKAN_HPP_NOEXCEPT - { - descriptorUpdateEntryCount = static_cast( descriptorUpdateEntries_.size() ); - pDescriptorUpdateEntries = descriptorUpdateEntries_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DescriptorUpdateTemplateCreateInfo & setTemplateType( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType_ ) VULKAN_HPP_NOEXCEPT - { - templateType = templateType_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout_ ) VULKAN_HPP_NOEXCEPT - { - descriptorSetLayout = descriptorSetLayout_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout_ ) VULKAN_HPP_NOEXCEPT - { - pipelineLayout = pipelineLayout_; - return *this; - } - - DescriptorUpdateTemplateCreateInfo & setSet( uint32_t set_ ) VULKAN_HPP_NOEXCEPT - { - set = set_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DescriptorUpdateTemplateCreateInfo const& ) const = default; -#else - bool operator==( DescriptorUpdateTemplateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( DescriptorUpdateTemplateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDescriptorUpdateTemplateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateFlags flags = {}; - uint32_t descriptorUpdateEntryCount = {}; - const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateEntry* pDescriptorUpdateEntries = {}; - VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType templateType = VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateType::eDescriptorSet; - VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout = {}; - VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; - VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout = {}; - uint32_t set = {}; - - }; - static_assert( sizeof( DescriptorUpdateTemplateCreateInfo ) == sizeof( VkDescriptorUpdateTemplateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DescriptorUpdateTemplateCreateInfo; - }; - using DescriptorUpdateTemplateCreateInfoKHR = DescriptorUpdateTemplateCreateInfo; - - struct DeviceQueueCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceQueueCreateInfo(VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ = {}, uint32_t queueFamilyIndex_ = {}, uint32_t queueCount_ = {}, const float* pQueuePriorities_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_, uint32_t queueFamilyIndex_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queuePriorities_ ) - : flags( flags_ ), queueFamilyIndex( queueFamilyIndex_ ), queueCount( static_cast( queuePriorities_.size() ) ), pQueuePriorities( queuePriorities_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceQueueCreateInfo & operator=( DeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceQueueCreateInfo & operator=( VkDeviceQueueCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceQueueCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceQueueCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DeviceQueueCreateInfo & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndex = queueFamilyIndex_; - return *this; - } - - DeviceQueueCreateInfo & setQueueCount( uint32_t queueCount_ ) VULKAN_HPP_NOEXCEPT - { - queueCount = queueCount_; - return *this; - } - - DeviceQueueCreateInfo & setPQueuePriorities( const float* pQueuePriorities_ ) VULKAN_HPP_NOEXCEPT - { - pQueuePriorities = pQueuePriorities_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceQueueCreateInfo & setQueuePriorities( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queuePriorities_ ) VULKAN_HPP_NOEXCEPT - { - queueCount = static_cast( queuePriorities_.size() ); - pQueuePriorities = queuePriorities_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDeviceQueueCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDeviceQueueCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceQueueCreateInfo const& ) const = default; -#else - bool operator==( DeviceQueueCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( queueFamilyIndex == rhs.queueFamilyIndex ) - && ( queueCount == rhs.queueCount ) - && ( pQueuePriorities == rhs.pQueuePriorities ); - } - - bool operator!=( DeviceQueueCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags = {}; - uint32_t queueFamilyIndex = {}; - uint32_t queueCount = {}; - const float* pQueuePriorities = {}; - - }; - static_assert( sizeof( DeviceQueueCreateInfo ) == sizeof( VkDeviceQueueCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceQueueCreateInfo; - }; - - struct PhysicalDeviceFeatures - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures(VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentBlend_ = {}, VULKAN_HPP_NAMESPACE::Bool32 geometryShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_ = {}, VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_ = {}, VULKAN_HPP_NAMESPACE::Bool32 logicOp_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_ = {}, VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthClamp_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthBounds_ = {}, VULKAN_HPP_NAMESPACE::Bool32 wideLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 largePoints_ = {}, VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiViewport_ = {}, VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_ = {}, VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_ = {}, VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_ = {}, VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_ = {}, VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_ = {}, VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures & operator=( PhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFeatures & operator=( VkPhysicalDeviceFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceFeatures & setRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess_ ) VULKAN_HPP_NOEXCEPT - { - robustBufferAccess = robustBufferAccess_; - return *this; - } - - PhysicalDeviceFeatures & setFullDrawIndexUint32( VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32_ ) VULKAN_HPP_NOEXCEPT - { - fullDrawIndexUint32 = fullDrawIndexUint32_; - return *this; - } - - PhysicalDeviceFeatures & setImageCubeArray( VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray_ ) VULKAN_HPP_NOEXCEPT - { - imageCubeArray = imageCubeArray_; - return *this; - } - - PhysicalDeviceFeatures & setIndependentBlend( VULKAN_HPP_NAMESPACE::Bool32 independentBlend_ ) VULKAN_HPP_NOEXCEPT - { - independentBlend = independentBlend_; - return *this; - } - - PhysicalDeviceFeatures & setGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 geometryShader_ ) VULKAN_HPP_NOEXCEPT - { - geometryShader = geometryShader_; - return *this; - } - - PhysicalDeviceFeatures & setTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 tessellationShader_ ) VULKAN_HPP_NOEXCEPT - { - tessellationShader = tessellationShader_; - return *this; - } - - PhysicalDeviceFeatures & setSampleRateShading( VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading_ ) VULKAN_HPP_NOEXCEPT - { - sampleRateShading = sampleRateShading_; - return *this; - } - - PhysicalDeviceFeatures & setDualSrcBlend( VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend_ ) VULKAN_HPP_NOEXCEPT - { - dualSrcBlend = dualSrcBlend_; - return *this; - } - - PhysicalDeviceFeatures & setLogicOp( VULKAN_HPP_NAMESPACE::Bool32 logicOp_ ) VULKAN_HPP_NOEXCEPT - { - logicOp = logicOp_; - return *this; - } - - PhysicalDeviceFeatures & setMultiDrawIndirect( VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect_ ) VULKAN_HPP_NOEXCEPT - { - multiDrawIndirect = multiDrawIndirect_; - return *this; - } - - PhysicalDeviceFeatures & setDrawIndirectFirstInstance( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance_ ) VULKAN_HPP_NOEXCEPT - { - drawIndirectFirstInstance = drawIndirectFirstInstance_; - return *this; - } - - PhysicalDeviceFeatures & setDepthClamp( VULKAN_HPP_NAMESPACE::Bool32 depthClamp_ ) VULKAN_HPP_NOEXCEPT - { - depthClamp = depthClamp_; - return *this; - } - - PhysicalDeviceFeatures & setDepthBiasClamp( VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT - { - depthBiasClamp = depthBiasClamp_; - return *this; - } - - PhysicalDeviceFeatures & setFillModeNonSolid( VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid_ ) VULKAN_HPP_NOEXCEPT - { - fillModeNonSolid = fillModeNonSolid_; - return *this; - } - - PhysicalDeviceFeatures & setDepthBounds( VULKAN_HPP_NAMESPACE::Bool32 depthBounds_ ) VULKAN_HPP_NOEXCEPT - { - depthBounds = depthBounds_; - return *this; - } - - PhysicalDeviceFeatures & setWideLines( VULKAN_HPP_NAMESPACE::Bool32 wideLines_ ) VULKAN_HPP_NOEXCEPT - { - wideLines = wideLines_; - return *this; - } - - PhysicalDeviceFeatures & setLargePoints( VULKAN_HPP_NAMESPACE::Bool32 largePoints_ ) VULKAN_HPP_NOEXCEPT - { - largePoints = largePoints_; - return *this; - } - - PhysicalDeviceFeatures & setAlphaToOne( VULKAN_HPP_NAMESPACE::Bool32 alphaToOne_ ) VULKAN_HPP_NOEXCEPT - { - alphaToOne = alphaToOne_; - return *this; - } - - PhysicalDeviceFeatures & setMultiViewport( VULKAN_HPP_NAMESPACE::Bool32 multiViewport_ ) VULKAN_HPP_NOEXCEPT - { - multiViewport = multiViewport_; - return *this; - } - - PhysicalDeviceFeatures & setSamplerAnisotropy( VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy_ ) VULKAN_HPP_NOEXCEPT - { - samplerAnisotropy = samplerAnisotropy_; - return *this; - } - - PhysicalDeviceFeatures & setTextureCompressionETC2( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2_ ) VULKAN_HPP_NOEXCEPT - { - textureCompressionETC2 = textureCompressionETC2_; - return *this; - } - - PhysicalDeviceFeatures & setTextureCompressionASTC_LDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR_ ) VULKAN_HPP_NOEXCEPT - { - textureCompressionASTC_LDR = textureCompressionASTC_LDR_; - return *this; - } - - PhysicalDeviceFeatures & setTextureCompressionBC( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC_ ) VULKAN_HPP_NOEXCEPT - { - textureCompressionBC = textureCompressionBC_; - return *this; - } - - PhysicalDeviceFeatures & setOcclusionQueryPrecise( VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise_ ) VULKAN_HPP_NOEXCEPT - { - occlusionQueryPrecise = occlusionQueryPrecise_; - return *this; - } - - PhysicalDeviceFeatures & setPipelineStatisticsQuery( VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery_ ) VULKAN_HPP_NOEXCEPT - { - pipelineStatisticsQuery = pipelineStatisticsQuery_; - return *this; - } - - PhysicalDeviceFeatures & setVertexPipelineStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT - { - vertexPipelineStoresAndAtomics = vertexPipelineStoresAndAtomics_; - return *this; - } - - PhysicalDeviceFeatures & setFragmentStoresAndAtomics( VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics_ ) VULKAN_HPP_NOEXCEPT - { - fragmentStoresAndAtomics = fragmentStoresAndAtomics_; - return *this; - } - - PhysicalDeviceFeatures & setShaderTessellationAndGeometryPointSize( VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize_ ) VULKAN_HPP_NOEXCEPT - { - shaderTessellationAndGeometryPointSize = shaderTessellationAndGeometryPointSize_; - return *this; - } - - PhysicalDeviceFeatures & setShaderImageGatherExtended( VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended_ ) VULKAN_HPP_NOEXCEPT - { - shaderImageGatherExtended = shaderImageGatherExtended_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageExtendedFormats( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageImageExtendedFormats = shaderStorageImageExtendedFormats_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageMultisample( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageImageMultisample = shaderStorageImageMultisample_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageReadWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageImageReadWithoutFormat = shaderStorageImageReadWithoutFormat_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageWriteWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageImageWriteWithoutFormat = shaderStorageImageWriteWithoutFormat_; - return *this; - } - - PhysicalDeviceFeatures & setShaderUniformBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderUniformBufferArrayDynamicIndexing = shaderUniformBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceFeatures & setShaderSampledImageArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderSampledImageArrayDynamicIndexing = shaderSampledImageArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageBufferArrayDynamicIndexing = shaderStorageBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceFeatures & setShaderStorageImageArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageImageArrayDynamicIndexing = shaderStorageImageArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceFeatures & setShaderClipDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance_ ) VULKAN_HPP_NOEXCEPT - { - shaderClipDistance = shaderClipDistance_; - return *this; - } - - PhysicalDeviceFeatures & setShaderCullDistance( VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance_ ) VULKAN_HPP_NOEXCEPT - { - shaderCullDistance = shaderCullDistance_; - return *this; - } - - PhysicalDeviceFeatures & setShaderFloat64( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64_ ) VULKAN_HPP_NOEXCEPT - { - shaderFloat64 = shaderFloat64_; - return *this; - } - - PhysicalDeviceFeatures & setShaderInt64( VULKAN_HPP_NAMESPACE::Bool32 shaderInt64_ ) VULKAN_HPP_NOEXCEPT - { - shaderInt64 = shaderInt64_; - return *this; - } - - PhysicalDeviceFeatures & setShaderInt16( VULKAN_HPP_NAMESPACE::Bool32 shaderInt16_ ) VULKAN_HPP_NOEXCEPT - { - shaderInt16 = shaderInt16_; - return *this; - } - - PhysicalDeviceFeatures & setShaderResourceResidency( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency_ ) VULKAN_HPP_NOEXCEPT - { - shaderResourceResidency = shaderResourceResidency_; - return *this; - } - - PhysicalDeviceFeatures & setShaderResourceMinLod( VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod_ ) VULKAN_HPP_NOEXCEPT - { - shaderResourceMinLod = shaderResourceMinLod_; - return *this; - } - - PhysicalDeviceFeatures & setSparseBinding( VULKAN_HPP_NAMESPACE::Bool32 sparseBinding_ ) VULKAN_HPP_NOEXCEPT - { - sparseBinding = sparseBinding_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidencyBuffer( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer_ ) VULKAN_HPP_NOEXCEPT - { - sparseResidencyBuffer = sparseResidencyBuffer_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidencyImage2D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D_ ) VULKAN_HPP_NOEXCEPT - { - sparseResidencyImage2D = sparseResidencyImage2D_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidencyImage3D( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D_ ) VULKAN_HPP_NOEXCEPT - { - sparseResidencyImage3D = sparseResidencyImage3D_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidency2Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples_ ) VULKAN_HPP_NOEXCEPT - { - sparseResidency2Samples = sparseResidency2Samples_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidency4Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples_ ) VULKAN_HPP_NOEXCEPT - { - sparseResidency4Samples = sparseResidency4Samples_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidency8Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples_ ) VULKAN_HPP_NOEXCEPT - { - sparseResidency8Samples = sparseResidency8Samples_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidency16Samples( VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples_ ) VULKAN_HPP_NOEXCEPT - { - sparseResidency16Samples = sparseResidency16Samples_; - return *this; - } - - PhysicalDeviceFeatures & setSparseResidencyAliased( VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased_ ) VULKAN_HPP_NOEXCEPT - { - sparseResidencyAliased = sparseResidencyAliased_; - return *this; - } - - PhysicalDeviceFeatures & setVariableMultisampleRate( VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate_ ) VULKAN_HPP_NOEXCEPT - { - variableMultisampleRate = variableMultisampleRate_; - return *this; - } - - PhysicalDeviceFeatures & setInheritedQueries( VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries_ ) VULKAN_HPP_NOEXCEPT - { - inheritedQueries = inheritedQueries_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 fullDrawIndexUint32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 imageCubeArray = {}; - VULKAN_HPP_NAMESPACE::Bool32 independentBlend = {}; - VULKAN_HPP_NAMESPACE::Bool32 geometryShader = {}; - VULKAN_HPP_NAMESPACE::Bool32 tessellationShader = {}; - VULKAN_HPP_NAMESPACE::Bool32 sampleRateShading = {}; - VULKAN_HPP_NAMESPACE::Bool32 dualSrcBlend = {}; - VULKAN_HPP_NAMESPACE::Bool32 logicOp = {}; - VULKAN_HPP_NAMESPACE::Bool32 multiDrawIndirect = {}; - VULKAN_HPP_NAMESPACE::Bool32 drawIndirectFirstInstance = {}; - VULKAN_HPP_NAMESPACE::Bool32 depthClamp = {}; - VULKAN_HPP_NAMESPACE::Bool32 depthBiasClamp = {}; - VULKAN_HPP_NAMESPACE::Bool32 fillModeNonSolid = {}; - VULKAN_HPP_NAMESPACE::Bool32 depthBounds = {}; - VULKAN_HPP_NAMESPACE::Bool32 wideLines = {}; - VULKAN_HPP_NAMESPACE::Bool32 largePoints = {}; - VULKAN_HPP_NAMESPACE::Bool32 alphaToOne = {}; - VULKAN_HPP_NAMESPACE::Bool32 multiViewport = {}; - VULKAN_HPP_NAMESPACE::Bool32 samplerAnisotropy = {}; - VULKAN_HPP_NAMESPACE::Bool32 textureCompressionETC2 = {}; - VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_LDR = {}; - VULKAN_HPP_NAMESPACE::Bool32 textureCompressionBC = {}; - VULKAN_HPP_NAMESPACE::Bool32 occlusionQueryPrecise = {}; - VULKAN_HPP_NAMESPACE::Bool32 pipelineStatisticsQuery = {}; - VULKAN_HPP_NAMESPACE::Bool32 vertexPipelineStoresAndAtomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentStoresAndAtomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderTessellationAndGeometryPointSize = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderImageGatherExtended = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageExtendedFormats = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageMultisample = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageReadWithoutFormat = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageWriteWithoutFormat = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderClipDistance = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderCullDistance = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderFloat64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInt64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInt16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderResourceResidency = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderResourceMinLod = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseBinding = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyBuffer = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage2D = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyImage3D = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseResidency2Samples = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseResidency4Samples = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseResidency8Samples = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseResidency16Samples = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseResidencyAliased = {}; - VULKAN_HPP_NAMESPACE::Bool32 variableMultisampleRate = {}; - VULKAN_HPP_NAMESPACE::Bool32 inheritedQueries = {}; - - }; - static_assert( sizeof( PhysicalDeviceFeatures ) == sizeof( VkPhysicalDeviceFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DeviceCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceCreateInfo(VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_ = {}, uint32_t queueCreateInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo* pQueueCreateInfos_ = {}, uint32_t enabledLayerCount_ = {}, const char* const * ppEnabledLayerNames_ = {}, uint32_t enabledExtensionCount_ = {}, const char* const * ppEnabledExtensionNames_ = {}, const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures* pEnabledFeatures_ = {}) VULKAN_HPP_NOEXCEPT - : flags( flags_ ), queueCreateInfoCount( queueCreateInfoCount_ ), pQueueCreateInfos( pQueueCreateInfos_ ), enabledLayerCount( enabledLayerCount_ ), ppEnabledLayerNames( ppEnabledLayerNames_ ), enabledExtensionCount( enabledExtensionCount_ ), ppEnabledExtensionNames( ppEnabledExtensionNames_ ), pEnabledFeatures( pEnabledFeatures_ ) - {} - - VULKAN_HPP_CONSTEXPR 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( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueCreateInfos_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledLayerNames_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledExtensionNames_ = {}, const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures* pEnabledFeatures_ = {} ) - : flags( flags_ ), queueCreateInfoCount( static_cast( queueCreateInfos_.size() ) ), pQueueCreateInfos( queueCreateInfos_.data() ), enabledLayerCount( static_cast( pEnabledLayerNames_.size() ) ), ppEnabledLayerNames( pEnabledLayerNames_.data() ), enabledExtensionCount( static_cast( pEnabledExtensionNames_.size() ) ), ppEnabledExtensionNames( pEnabledExtensionNames_.data() ), pEnabledFeatures( pEnabledFeatures_ ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceCreateInfo & operator=( DeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceCreateInfo & operator=( VkDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DeviceCreateInfo & setQueueCreateInfoCount( uint32_t queueCreateInfoCount_ ) VULKAN_HPP_NOEXCEPT - { - queueCreateInfoCount = queueCreateInfoCount_; - return *this; - } - - DeviceCreateInfo & setPQueueCreateInfos( const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo* pQueueCreateInfos_ ) VULKAN_HPP_NOEXCEPT - { - pQueueCreateInfos = pQueueCreateInfos_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceCreateInfo & setQueueCreateInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueCreateInfos_ ) VULKAN_HPP_NOEXCEPT - { - queueCreateInfoCount = static_cast( queueCreateInfos_.size() ); - pQueueCreateInfos = queueCreateInfos_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DeviceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT - { - enabledLayerCount = enabledLayerCount_; - return *this; - } - - DeviceCreateInfo & setPpEnabledLayerNames( const char* const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT - { - ppEnabledLayerNames = ppEnabledLayerNames_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceCreateInfo & setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT - { - enabledLayerCount = static_cast( pEnabledLayerNames_.size() ); - ppEnabledLayerNames = pEnabledLayerNames_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DeviceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT - { - enabledExtensionCount = enabledExtensionCount_; - return *this; - } - - DeviceCreateInfo & setPpEnabledExtensionNames( const char* const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT - { - ppEnabledExtensionNames = ppEnabledExtensionNames_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceCreateInfo & setPEnabledExtensionNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT - { - enabledExtensionCount = static_cast( pEnabledExtensionNames_.size() ); - ppEnabledExtensionNames = pEnabledExtensionNames_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DeviceCreateInfo & setPEnabledFeatures( const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures* pEnabledFeatures_ ) VULKAN_HPP_NOEXCEPT - { - pEnabledFeatures = pEnabledFeatures_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceCreateInfo const& ) const = default; -#else - 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 ) - && ( enabledLayerCount == rhs.enabledLayerCount ) - && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames ) - && ( enabledExtensionCount == rhs.enabledExtensionCount ) - && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames ) - && ( pEnabledFeatures == rhs.pEnabledFeatures ); - } - - bool operator!=( DeviceCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceCreateFlags flags = {}; - uint32_t queueCreateInfoCount = {}; - const VULKAN_HPP_NAMESPACE::DeviceQueueCreateInfo* pQueueCreateInfos = {}; - uint32_t enabledLayerCount = {}; - const char* const * ppEnabledLayerNames = {}; - uint32_t enabledExtensionCount = {}; - const char* const * ppEnabledExtensionNames = {}; - const VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures* pEnabledFeatures = {}; - - }; - static_assert( sizeof( DeviceCreateInfo ) == sizeof( VkDeviceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceCreateInfo; - }; - - struct DeviceDeviceMemoryReportCreateInfoEXT - { - static const bool allowDuplicate = true; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceDeviceMemoryReportCreateInfoEXT(VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_ = {}, PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback_ = {}, void* pUserData_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceDeviceMemoryReportCreateInfoEXT & operator=( DeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceDeviceMemoryReportCreateInfoEXT & operator=( VkDeviceDeviceMemoryReportCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceDeviceMemoryReportCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceDeviceMemoryReportCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DeviceDeviceMemoryReportCreateInfoEXT & setPfnUserCallback( PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback_ ) VULKAN_HPP_NOEXCEPT - { - pfnUserCallback = pfnUserCallback_; - return *this; - } - - DeviceDeviceMemoryReportCreateInfoEXT & setPUserData( void* pUserData_ ) VULKAN_HPP_NOEXCEPT - { - pUserData = pUserData_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceDeviceMemoryReportCreateInfoEXT const& ) const = default; -#else - bool operator==( DeviceDeviceMemoryReportCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pfnUserCallback == rhs.pfnUserCallback ) - && ( pUserData == rhs.pUserData ); - } - - bool operator!=( DeviceDeviceMemoryReportCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceDeviceMemoryReportCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags = {}; - PFN_vkDeviceMemoryReportCallbackEXT pfnUserCallback = {}; - void* pUserData = {}; - - }; - static_assert( sizeof( DeviceDeviceMemoryReportCreateInfoEXT ) == sizeof( VkDeviceDeviceMemoryReportCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceDeviceMemoryReportCreateInfoEXT; - }; - - struct DeviceDiagnosticsConfigCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV(VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ = {}) VULKAN_HPP_NOEXCEPT - : flags( flags_ ) - {} - - VULKAN_HPP_CONSTEXPR DeviceDiagnosticsConfigCreateInfoNV( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceDiagnosticsConfigCreateInfoNV( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - : DeviceDiagnosticsConfigCreateInfoNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceDiagnosticsConfigCreateInfoNV & operator=( DeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceDiagnosticsConfigCreateInfoNV & operator=( VkDeviceDiagnosticsConfigCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceDiagnosticsConfigCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceDiagnosticsConfigCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceDiagnosticsConfigCreateInfoNV const& ) const = default; -#else - bool operator==( DeviceDiagnosticsConfigCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( DeviceDiagnosticsConfigCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceDiagnosticsConfigCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceDiagnosticsConfigFlagsNV flags = {}; - - }; - static_assert( sizeof( DeviceDiagnosticsConfigCreateInfoNV ) == sizeof( VkDeviceDiagnosticsConfigCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceDiagnosticsConfigCreateInfoNV; - }; - - struct DeviceEventInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceEventInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT(VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug) VULKAN_HPP_NOEXCEPT - : deviceEvent( deviceEvent_ ) - {} - - VULKAN_HPP_CONSTEXPR DeviceEventInfoEXT( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceEventInfoEXT( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : DeviceEventInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceEventInfoEXT & operator=( DeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceEventInfoEXT & operator=( VkDeviceEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceEventInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceEventInfoEXT & setDeviceEvent( VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent_ ) VULKAN_HPP_NOEXCEPT - { - deviceEvent = deviceEvent_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceEventInfoEXT const& ) const = default; -#else - bool operator==( DeviceEventInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceEvent == rhs.deviceEvent ); - } - - bool operator!=( DeviceEventInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceEventInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT deviceEvent = VULKAN_HPP_NAMESPACE::DeviceEventTypeEXT::eDisplayHotplug; - - }; - static_assert( sizeof( DeviceEventInfoEXT ) == sizeof( VkDeviceEventInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceEventInfoEXT; - }; - - struct DeviceGroupBindSparseInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupBindSparseInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceGroupBindSparseInfo(uint32_t resourceDeviceIndex_ = {}, uint32_t memoryDeviceIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceGroupBindSparseInfo & operator=( DeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceGroupBindSparseInfo & operator=( VkDeviceGroupBindSparseInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceGroupBindSparseInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceGroupBindSparseInfo & setResourceDeviceIndex( uint32_t resourceDeviceIndex_ ) VULKAN_HPP_NOEXCEPT - { - resourceDeviceIndex = resourceDeviceIndex_; - return *this; - } - - DeviceGroupBindSparseInfo & setMemoryDeviceIndex( uint32_t memoryDeviceIndex_ ) VULKAN_HPP_NOEXCEPT - { - memoryDeviceIndex = memoryDeviceIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceGroupBindSparseInfo const& ) const = default; -#else - bool operator==( DeviceGroupBindSparseInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( resourceDeviceIndex == rhs.resourceDeviceIndex ) - && ( memoryDeviceIndex == rhs.memoryDeviceIndex ); - } - - bool operator!=( DeviceGroupBindSparseInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupBindSparseInfo; - const void* pNext = {}; - uint32_t resourceDeviceIndex = {}; - uint32_t memoryDeviceIndex = {}; - - }; - static_assert( sizeof( DeviceGroupBindSparseInfo ) == sizeof( VkDeviceGroupBindSparseInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceGroupBindSparseInfo; - }; - using DeviceGroupBindSparseInfoKHR = DeviceGroupBindSparseInfo; - - struct DeviceGroupCommandBufferBeginInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupCommandBufferBeginInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo(uint32_t deviceMask_ = {}) VULKAN_HPP_NOEXCEPT - : deviceMask( deviceMask_ ) - {} - - VULKAN_HPP_CONSTEXPR DeviceGroupCommandBufferBeginInfo( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceGroupCommandBufferBeginInfo( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : DeviceGroupCommandBufferBeginInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceGroupCommandBufferBeginInfo & operator=( DeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceGroupCommandBufferBeginInfo & operator=( VkDeviceGroupCommandBufferBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceGroupCommandBufferBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceGroupCommandBufferBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT - { - deviceMask = deviceMask_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceGroupCommandBufferBeginInfo const& ) const = default; -#else - bool operator==( DeviceGroupCommandBufferBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceMask == rhs.deviceMask ); - } - - bool operator!=( DeviceGroupCommandBufferBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupCommandBufferBeginInfo; - const void* pNext = {}; - uint32_t deviceMask = {}; - - }; - static_assert( sizeof( DeviceGroupCommandBufferBeginInfo ) == sizeof( VkDeviceGroupCommandBufferBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceGroupCommandBufferBeginInfo; - }; - using DeviceGroupCommandBufferBeginInfoKHR = DeviceGroupCommandBufferBeginInfo; - - class DisplayKHR - { - public: - using CType = VkDisplayKHR; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDisplayKHR; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayKHR; - - public: - VULKAN_HPP_CONSTEXPR DisplayKHR() VULKAN_HPP_NOEXCEPT - : m_displayKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DisplayKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_displayKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DisplayKHR( VkDisplayKHR displayKHR ) VULKAN_HPP_NOEXCEPT - : m_displayKHR( displayKHR ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DisplayKHR & operator=(VkDisplayKHR displayKHR) VULKAN_HPP_NOEXCEPT - { - m_displayKHR = displayKHR; - return *this; - } -#endif - - DisplayKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_displayKHR = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayKHR const& ) const = default; -#else - bool operator==( DisplayKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_displayKHR == rhs.m_displayKHR; - } - - bool operator!=(DisplayKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_displayKHR != rhs.m_displayKHR; - } - - bool operator<(DisplayKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_displayKHR < rhs.m_displayKHR; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DisplayKHR ) == sizeof( VkDisplayKHR ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DisplayKHR; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DisplayKHR; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DisplayKHR; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct PerformanceConfigurationAcquireInfoINTEL - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceConfigurationAcquireInfoINTEL; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL(VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ = VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated) VULKAN_HPP_NOEXCEPT - : type( type_ ) - {} - - VULKAN_HPP_CONSTEXPR PerformanceConfigurationAcquireInfoINTEL( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceConfigurationAcquireInfoINTEL( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - : PerformanceConfigurationAcquireInfoINTEL( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PerformanceConfigurationAcquireInfoINTEL & operator=( PerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceConfigurationAcquireInfoINTEL & operator=( VkPerformanceConfigurationAcquireInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PerformanceConfigurationAcquireInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PerformanceConfigurationAcquireInfoINTEL & setType( VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PerformanceConfigurationAcquireInfoINTEL const& ) const = default; -#else - bool operator==( PerformanceConfigurationAcquireInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ); - } - - bool operator!=( PerformanceConfigurationAcquireInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceConfigurationAcquireInfoINTEL; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL type = VULKAN_HPP_NAMESPACE::PerformanceConfigurationTypeINTEL::eCommandQueueMetricsDiscoveryActivated; - - }; - static_assert( sizeof( PerformanceConfigurationAcquireInfoINTEL ) == sizeof( VkPerformanceConfigurationAcquireInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PerformanceConfigurationAcquireInfoINTEL; - }; - - class PerformanceConfigurationINTEL - { - public: - using CType = VkPerformanceConfigurationINTEL; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePerformanceConfigurationINTEL; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; - - public: - VULKAN_HPP_CONSTEXPR PerformanceConfigurationINTEL() VULKAN_HPP_NOEXCEPT - : m_performanceConfigurationINTEL(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR PerformanceConfigurationINTEL( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_performanceConfigurationINTEL(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT PerformanceConfigurationINTEL( VkPerformanceConfigurationINTEL performanceConfigurationINTEL ) VULKAN_HPP_NOEXCEPT - : m_performanceConfigurationINTEL( performanceConfigurationINTEL ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - PerformanceConfigurationINTEL & operator=(VkPerformanceConfigurationINTEL performanceConfigurationINTEL) VULKAN_HPP_NOEXCEPT - { - m_performanceConfigurationINTEL = performanceConfigurationINTEL; - return *this; - } -#endif - - PerformanceConfigurationINTEL & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_performanceConfigurationINTEL = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PerformanceConfigurationINTEL const& ) const = default; -#else - bool operator==( PerformanceConfigurationINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_performanceConfigurationINTEL == rhs.m_performanceConfigurationINTEL; - } - - bool operator!=(PerformanceConfigurationINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_performanceConfigurationINTEL != rhs.m_performanceConfigurationINTEL; - } - - bool operator<(PerformanceConfigurationINTEL const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_performanceConfigurationINTEL < rhs.m_performanceConfigurationINTEL; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL ) == sizeof( VkPerformanceConfigurationINTEL ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL; - }; - - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct MemoryAllocateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryAllocateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryAllocateInfo(VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ = {}, uint32_t memoryTypeIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryAllocateInfo & operator=( MemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryAllocateInfo & operator=( VkMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryAllocateInfo & setAllocationSize( VULKAN_HPP_NAMESPACE::DeviceSize allocationSize_ ) VULKAN_HPP_NOEXCEPT - { - allocationSize = allocationSize_; - return *this; - } - - MemoryAllocateInfo & setMemoryTypeIndex( uint32_t memoryTypeIndex_ ) VULKAN_HPP_NOEXCEPT - { - memoryTypeIndex = memoryTypeIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryAllocateInfo const& ) const = default; -#else - bool operator==( MemoryAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( allocationSize == rhs.allocationSize ) - && ( memoryTypeIndex == rhs.memoryTypeIndex ); - } - - bool operator!=( MemoryAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceSize allocationSize = {}; - uint32_t memoryTypeIndex = {}; - - }; - static_assert( sizeof( MemoryAllocateInfo ) == sizeof( VkMemoryAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryAllocateInfo; - }; - - class DeferredOperationKHR - { - public: - using CType = VkDeferredOperationKHR; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDeferredOperationKHR; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; - - public: - VULKAN_HPP_CONSTEXPR DeferredOperationKHR() VULKAN_HPP_NOEXCEPT - : m_deferredOperationKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DeferredOperationKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_deferredOperationKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DeferredOperationKHR( VkDeferredOperationKHR deferredOperationKHR ) VULKAN_HPP_NOEXCEPT - : m_deferredOperationKHR( deferredOperationKHR ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DeferredOperationKHR & operator=(VkDeferredOperationKHR deferredOperationKHR) VULKAN_HPP_NOEXCEPT - { - m_deferredOperationKHR = deferredOperationKHR; - return *this; - } -#endif - - DeferredOperationKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_deferredOperationKHR = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeferredOperationKHR const& ) const = default; -#else - bool operator==( DeferredOperationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_deferredOperationKHR == rhs.m_deferredOperationKHR; - } - - bool operator!=(DeferredOperationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_deferredOperationKHR != rhs.m_deferredOperationKHR; - } - - bool operator<(DeferredOperationKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_deferredOperationKHR < rhs.m_deferredOperationKHR; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DeferredOperationKHR ) == sizeof( VkDeferredOperationKHR ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DeferredOperationKHR; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DeferredOperationKHR; - }; - - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - class PipelineCache - { - public: - using CType = VkPipelineCache; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePipelineCache; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePipelineCache; - - public: - VULKAN_HPP_CONSTEXPR PipelineCache() VULKAN_HPP_NOEXCEPT - : m_pipelineCache(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR PipelineCache( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_pipelineCache(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT PipelineCache( VkPipelineCache pipelineCache ) VULKAN_HPP_NOEXCEPT - : m_pipelineCache( pipelineCache ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - PipelineCache & operator=(VkPipelineCache pipelineCache) VULKAN_HPP_NOEXCEPT - { - m_pipelineCache = pipelineCache; - return *this; - } -#endif - - PipelineCache & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_pipelineCache = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineCache const& ) const = default; -#else - bool operator==( PipelineCache const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_pipelineCache == rhs.m_pipelineCache; - } - - bool operator!=(PipelineCache const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_pipelineCache != rhs.m_pipelineCache; - } - - bool operator<(PipelineCache const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_pipelineCache < rhs.m_pipelineCache; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::PipelineCache ) == sizeof( VkPipelineCache ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::PipelineCache; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::PipelineCache; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::PipelineCache; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct EventCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eEventCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR EventCreateInfo(VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ = {}) VULKAN_HPP_NOEXCEPT - : flags( flags_ ) - {} - - VULKAN_HPP_CONSTEXPR EventCreateInfo( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - EventCreateInfo( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : EventCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 EventCreateInfo & operator=( EventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - EventCreateInfo & operator=( VkEventCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - EventCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - EventCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::EventCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( EventCreateInfo const& ) const = default; -#else - bool operator==( EventCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( EventCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eEventCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::EventCreateFlags flags = {}; - - }; - static_assert( sizeof( EventCreateInfo ) == sizeof( VkEventCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = EventCreateInfo; - }; - - struct FenceCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FenceCreateInfo(VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ = {}) VULKAN_HPP_NOEXCEPT - : flags( flags_ ) - {} - - VULKAN_HPP_CONSTEXPR FenceCreateInfo( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - FenceCreateInfo( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : FenceCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FenceCreateInfo & operator=( FenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - FenceCreateInfo & operator=( VkFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - FenceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - FenceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::FenceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FenceCreateInfo const& ) const = default; -#else - bool operator==( FenceCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( FenceCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::FenceCreateFlags flags = {}; - - }; - static_assert( sizeof( FenceCreateInfo ) == sizeof( VkFenceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FenceCreateInfo; - }; - - struct FramebufferCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FramebufferCreateInfo(VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageView* pAttachments_ = {}, uint32_t width_ = {}, uint32_t height_ = {}, uint32_t layers_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_, VULKAN_HPP_NAMESPACE::RenderPass renderPass_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_, uint32_t width_ = {}, uint32_t height_ = {}, uint32_t layers_ = {} ) - : flags( flags_ ), renderPass( renderPass_ ), attachmentCount( static_cast( attachments_.size() ) ), pAttachments( attachments_.data() ), width( width_ ), height( height_ ), layers( layers_ ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FramebufferCreateInfo & operator=( FramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - FramebufferCreateInfo & operator=( VkFramebufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - FramebufferCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - FramebufferCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - FramebufferCreateInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT - { - renderPass = renderPass_; - return *this; - } - - FramebufferCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = attachmentCount_; - return *this; - } - - FramebufferCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView* pAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pAttachments = pAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - FramebufferCreateInfo & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = static_cast( attachments_.size() ); - pAttachments = attachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - FramebufferCreateInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT - { - width = width_; - return *this; - } - - FramebufferCreateInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT - { - height = height_; - return *this; - } - - FramebufferCreateInfo & setLayers( uint32_t layers_ ) VULKAN_HPP_NOEXCEPT - { - layers = layers_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FramebufferCreateInfo const& ) const = default; -#else - bool operator==( FramebufferCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( FramebufferCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::FramebufferCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::RenderPass renderPass = {}; - uint32_t attachmentCount = {}; - const VULKAN_HPP_NAMESPACE::ImageView* pAttachments = {}; - uint32_t width = {}; - uint32_t height = {}; - uint32_t layers = {}; - - }; - static_assert( sizeof( FramebufferCreateInfo ) == sizeof( VkFramebufferCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FramebufferCreateInfo; - }; - - struct VertexInputBindingDescription - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR VertexInputBindingDescription(uint32_t binding_ = {}, uint32_t stride_ = {}, VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDescription & operator=( VertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - VertexInputBindingDescription & operator=( VkVertexInputBindingDescription const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - VertexInputBindingDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT - { - binding = binding_; - return *this; - } - - VertexInputBindingDescription & setStride( uint32_t stride_ ) VULKAN_HPP_NOEXCEPT - { - stride = stride_; - return *this; - } - - VertexInputBindingDescription & setInputRate( VULKAN_HPP_NAMESPACE::VertexInputRate inputRate_ ) VULKAN_HPP_NOEXCEPT - { - inputRate = inputRate_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( VertexInputBindingDescription const& ) const = default; -#else - bool operator==( VertexInputBindingDescription const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( binding == rhs.binding ) - && ( stride == rhs.stride ) - && ( inputRate == rhs.inputRate ); - } - - bool operator!=( VertexInputBindingDescription const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t binding = {}; - uint32_t stride = {}; - VULKAN_HPP_NAMESPACE::VertexInputRate inputRate = VULKAN_HPP_NAMESPACE::VertexInputRate::eVertex; - - }; - static_assert( sizeof( VertexInputBindingDescription ) == sizeof( VkVertexInputBindingDescription ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct VertexInputAttributeDescription - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR VertexInputAttributeDescription(uint32_t location_ = {}, uint32_t binding_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 VertexInputAttributeDescription & operator=( VertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - VertexInputAttributeDescription & operator=( VkVertexInputAttributeDescription const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - VertexInputAttributeDescription & setLocation( uint32_t location_ ) VULKAN_HPP_NOEXCEPT - { - location = location_; - return *this; - } - - VertexInputAttributeDescription & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT - { - binding = binding_; - return *this; - } - - VertexInputAttributeDescription & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - VertexInputAttributeDescription & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( VertexInputAttributeDescription const& ) const = default; -#else - bool operator==( VertexInputAttributeDescription const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( location == rhs.location ) - && ( binding == rhs.binding ) - && ( format == rhs.format ) - && ( offset == rhs.offset ); - } - - bool operator!=( VertexInputAttributeDescription const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t location = {}; - uint32_t binding = {}; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - uint32_t offset = {}; - - }; - static_assert( sizeof( VertexInputAttributeDescription ) == sizeof( VkVertexInputAttributeDescription ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineVertexInputStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineVertexInputStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineVertexInputStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_ = {}, uint32_t vertexBindingDescriptionCount_ = {}, const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription* pVertexBindingDescriptions_ = {}, uint32_t vertexAttributeDescriptionCount_ = {}, const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription* pVertexAttributeDescriptions_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & vertexBindingDescriptions_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & vertexAttributeDescriptions_ = {} ) - : flags( flags_ ), vertexBindingDescriptionCount( static_cast( vertexBindingDescriptions_.size() ) ), pVertexBindingDescriptions( vertexBindingDescriptions_.data() ), vertexAttributeDescriptionCount( static_cast( vertexAttributeDescriptions_.size() ) ), pVertexAttributeDescriptions( vertexAttributeDescriptions_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputStateCreateInfo & operator=( PipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineVertexInputStateCreateInfo & operator=( VkPipelineVertexInputStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineVertexInputStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineVertexInputStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineVertexInputStateCreateInfo & setVertexBindingDescriptionCount( uint32_t vertexBindingDescriptionCount_ ) VULKAN_HPP_NOEXCEPT - { - vertexBindingDescriptionCount = vertexBindingDescriptionCount_; - return *this; - } - - PipelineVertexInputStateCreateInfo & setPVertexBindingDescriptions( const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription* pVertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT - { - pVertexBindingDescriptions = pVertexBindingDescriptions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineVertexInputStateCreateInfo & setVertexBindingDescriptions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & vertexBindingDescriptions_ ) VULKAN_HPP_NOEXCEPT - { - vertexBindingDescriptionCount = static_cast( vertexBindingDescriptions_.size() ); - pVertexBindingDescriptions = vertexBindingDescriptions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptionCount( uint32_t vertexAttributeDescriptionCount_ ) VULKAN_HPP_NOEXCEPT - { - vertexAttributeDescriptionCount = vertexAttributeDescriptionCount_; - return *this; - } - - PipelineVertexInputStateCreateInfo & setPVertexAttributeDescriptions( const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription* pVertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT - { - pVertexAttributeDescriptions = pVertexAttributeDescriptions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineVertexInputStateCreateInfo & setVertexAttributeDescriptions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & vertexAttributeDescriptions_ ) VULKAN_HPP_NOEXCEPT - { - vertexAttributeDescriptionCount = static_cast( vertexAttributeDescriptions_.size() ); - pVertexAttributeDescriptions = vertexAttributeDescriptions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineVertexInputStateCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineVertexInputStateCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineVertexInputStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineVertexInputStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( vertexBindingDescriptionCount == rhs.vertexBindingDescriptionCount ) - && ( pVertexBindingDescriptions == rhs.pVertexBindingDescriptions ) - && ( vertexAttributeDescriptionCount == rhs.vertexAttributeDescriptionCount ) - && ( pVertexAttributeDescriptions == rhs.pVertexAttributeDescriptions ); - } - - bool operator!=( PipelineVertexInputStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateFlags flags = {}; - uint32_t vertexBindingDescriptionCount = {}; - const VULKAN_HPP_NAMESPACE::VertexInputBindingDescription* pVertexBindingDescriptions = {}; - uint32_t vertexAttributeDescriptionCount = {}; - const VULKAN_HPP_NAMESPACE::VertexInputAttributeDescription* pVertexAttributeDescriptions = {}; - - }; - static_assert( sizeof( PipelineVertexInputStateCreateInfo ) == sizeof( VkPipelineVertexInputStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineVertexInputStateCreateInfo; - }; - - struct PipelineInputAssemblyStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineInputAssemblyStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineInputAssemblyStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList, VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineInputAssemblyStateCreateInfo & operator=( PipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineInputAssemblyStateCreateInfo & operator=( VkPipelineInputAssemblyStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineInputAssemblyStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineInputAssemblyStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineInputAssemblyStateCreateInfo & setTopology( VULKAN_HPP_NAMESPACE::PrimitiveTopology topology_ ) VULKAN_HPP_NOEXCEPT - { - topology = topology_; - return *this; - } - - PipelineInputAssemblyStateCreateInfo & setPrimitiveRestartEnable( VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable_ ) VULKAN_HPP_NOEXCEPT - { - primitiveRestartEnable = primitiveRestartEnable_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineInputAssemblyStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineInputAssemblyStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( topology == rhs.topology ) - && ( primitiveRestartEnable == rhs.primitiveRestartEnable ); - } - - bool operator!=( PipelineInputAssemblyStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInputAssemblyStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::PrimitiveTopology topology = VULKAN_HPP_NAMESPACE::PrimitiveTopology::ePointList; - VULKAN_HPP_NAMESPACE::Bool32 primitiveRestartEnable = {}; - - }; - static_assert( sizeof( PipelineInputAssemblyStateCreateInfo ) == sizeof( VkPipelineInputAssemblyStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineInputAssemblyStateCreateInfo; - }; - - struct PipelineTessellationStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineTessellationStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineTessellationStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ = {}, uint32_t patchControlPoints_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineTessellationStateCreateInfo & operator=( PipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineTessellationStateCreateInfo & operator=( VkPipelineTessellationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineTessellationStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineTessellationStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineTessellationStateCreateInfo & setPatchControlPoints( uint32_t patchControlPoints_ ) VULKAN_HPP_NOEXCEPT - { - patchControlPoints = patchControlPoints_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineTessellationStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineTessellationStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( patchControlPoints == rhs.patchControlPoints ); - } - - bool operator!=( PipelineTessellationStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateFlags flags = {}; - uint32_t patchControlPoints = {}; - - }; - static_assert( sizeof( PipelineTessellationStateCreateInfo ) == sizeof( VkPipelineTessellationStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineTessellationStateCreateInfo; - }; - - struct PipelineViewportStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineViewportStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_ = {}, uint32_t viewportCount_ = {}, const VULKAN_HPP_NAMESPACE::Viewport* pViewports_ = {}, uint32_t scissorCount_ = {}, const VULKAN_HPP_NAMESPACE::Rect2D* pScissors_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewports_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & scissors_ = {} ) - : flags( flags_ ), viewportCount( static_cast( viewports_.size() ) ), pViewports( viewports_.data() ), scissorCount( static_cast( scissors_.size() ) ), pScissors( scissors_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineViewportStateCreateInfo & operator=( PipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineViewportStateCreateInfo & operator=( VkPipelineViewportStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineViewportStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineViewportStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineViewportStateCreateInfo & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT - { - viewportCount = viewportCount_; - return *this; - } - - PipelineViewportStateCreateInfo & setPViewports( const VULKAN_HPP_NAMESPACE::Viewport* pViewports_ ) VULKAN_HPP_NOEXCEPT - { - pViewports = pViewports_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineViewportStateCreateInfo & setViewports( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewports_ ) VULKAN_HPP_NOEXCEPT - { - viewportCount = static_cast( viewports_.size() ); - pViewports = viewports_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - PipelineViewportStateCreateInfo & setScissorCount( uint32_t scissorCount_ ) VULKAN_HPP_NOEXCEPT - { - scissorCount = scissorCount_; - return *this; - } - - PipelineViewportStateCreateInfo & setPScissors( const VULKAN_HPP_NAMESPACE::Rect2D* pScissors_ ) VULKAN_HPP_NOEXCEPT - { - pScissors = pScissors_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineViewportStateCreateInfo & setScissors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & scissors_ ) VULKAN_HPP_NOEXCEPT - { - scissorCount = static_cast( scissors_.size() ); - pScissors = scissors_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineViewportStateCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportStateCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineViewportStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineViewportStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( viewportCount == rhs.viewportCount ) - && ( pViewports == rhs.pViewports ) - && ( scissorCount == rhs.scissorCount ) - && ( pScissors == rhs.pScissors ); - } - - bool operator!=( PipelineViewportStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateFlags flags = {}; - uint32_t viewportCount = {}; - const VULKAN_HPP_NAMESPACE::Viewport* pViewports = {}; - uint32_t scissorCount = {}; - const VULKAN_HPP_NAMESPACE::Rect2D* pScissors = {}; - - }; - static_assert( sizeof( PipelineViewportStateCreateInfo ) == sizeof( VkPipelineViewportStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineViewportStateCreateInfo; - }; - - struct PipelineRasterizationStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineRasterizationStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable_ = {}, VULKAN_HPP_NAMESPACE::PolygonMode polygonMode_ = VULKAN_HPP_NAMESPACE::PolygonMode::eFill, VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_ = {}, VULKAN_HPP_NAMESPACE::FrontFace frontFace_ = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise, VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable_ = {}, float depthBiasConstantFactor_ = {}, float depthBiasClamp_ = {}, float depthBiasSlopeFactor_ = {}, float lineWidth_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateCreateInfo & operator=( PipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRasterizationStateCreateInfo & operator=( VkPipelineRasterizationStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineRasterizationStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthClampEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable_ ) VULKAN_HPP_NOEXCEPT - { - depthClampEnable = depthClampEnable_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setRasterizerDiscardEnable( VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable_ ) VULKAN_HPP_NOEXCEPT - { - rasterizerDiscardEnable = rasterizerDiscardEnable_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setPolygonMode( VULKAN_HPP_NAMESPACE::PolygonMode polygonMode_ ) VULKAN_HPP_NOEXCEPT - { - polygonMode = polygonMode_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setCullMode( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode_ ) VULKAN_HPP_NOEXCEPT - { - cullMode = cullMode_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setFrontFace( VULKAN_HPP_NAMESPACE::FrontFace frontFace_ ) VULKAN_HPP_NOEXCEPT - { - frontFace = frontFace_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthBiasEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable_ ) VULKAN_HPP_NOEXCEPT - { - depthBiasEnable = depthBiasEnable_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthBiasConstantFactor( float depthBiasConstantFactor_ ) VULKAN_HPP_NOEXCEPT - { - depthBiasConstantFactor = depthBiasConstantFactor_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthBiasClamp( float depthBiasClamp_ ) VULKAN_HPP_NOEXCEPT - { - depthBiasClamp = depthBiasClamp_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setDepthBiasSlopeFactor( float depthBiasSlopeFactor_ ) VULKAN_HPP_NOEXCEPT - { - depthBiasSlopeFactor = depthBiasSlopeFactor_; - return *this; - } - - PipelineRasterizationStateCreateInfo & setLineWidth( float lineWidth_ ) VULKAN_HPP_NOEXCEPT - { - lineWidth = lineWidth_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineRasterizationStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineRasterizationStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PipelineRasterizationStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::Bool32 depthClampEnable = {}; - VULKAN_HPP_NAMESPACE::Bool32 rasterizerDiscardEnable = {}; - VULKAN_HPP_NAMESPACE::PolygonMode polygonMode = VULKAN_HPP_NAMESPACE::PolygonMode::eFill; - VULKAN_HPP_NAMESPACE::CullModeFlags cullMode = {}; - VULKAN_HPP_NAMESPACE::FrontFace frontFace = VULKAN_HPP_NAMESPACE::FrontFace::eCounterClockwise; - VULKAN_HPP_NAMESPACE::Bool32 depthBiasEnable = {}; - float depthBiasConstantFactor = {}; - float depthBiasClamp = {}; - float depthBiasSlopeFactor = {}; - float lineWidth = {}; - - }; - static_assert( sizeof( PipelineRasterizationStateCreateInfo ) == sizeof( VkPipelineRasterizationStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineRasterizationStateCreateInfo; - }; - - struct PipelineMultisampleStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineMultisampleStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineMultisampleStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable_ = {}, float minSampleShading_ = {}, const VULKAN_HPP_NAMESPACE::SampleMask* pSampleMask_ = {}, VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineMultisampleStateCreateInfo & operator=( PipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineMultisampleStateCreateInfo & operator=( VkPipelineMultisampleStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineMultisampleStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setRasterizationSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ ) VULKAN_HPP_NOEXCEPT - { - rasterizationSamples = rasterizationSamples_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setSampleShadingEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable_ ) VULKAN_HPP_NOEXCEPT - { - sampleShadingEnable = sampleShadingEnable_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setMinSampleShading( float minSampleShading_ ) VULKAN_HPP_NOEXCEPT - { - minSampleShading = minSampleShading_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setPSampleMask( const VULKAN_HPP_NAMESPACE::SampleMask* pSampleMask_ ) VULKAN_HPP_NOEXCEPT - { - pSampleMask = pSampleMask_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setAlphaToCoverageEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable_ ) VULKAN_HPP_NOEXCEPT - { - alphaToCoverageEnable = alphaToCoverageEnable_; - return *this; - } - - PipelineMultisampleStateCreateInfo & setAlphaToOneEnable( VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable_ ) VULKAN_HPP_NOEXCEPT - { - alphaToOneEnable = alphaToOneEnable_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineMultisampleStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineMultisampleStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PipelineMultisampleStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineMultisampleStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; - VULKAN_HPP_NAMESPACE::Bool32 sampleShadingEnable = {}; - float minSampleShading = {}; - const VULKAN_HPP_NAMESPACE::SampleMask* pSampleMask = {}; - VULKAN_HPP_NAMESPACE::Bool32 alphaToCoverageEnable = {}; - VULKAN_HPP_NAMESPACE::Bool32 alphaToOneEnable = {}; - - }; - static_assert( sizeof( PipelineMultisampleStateCreateInfo ) == sizeof( VkPipelineMultisampleStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineMultisampleStateCreateInfo; - }; - - struct StencilOpState - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR StencilOpState(VULKAN_HPP_NAMESPACE::StencilOp failOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep, VULKAN_HPP_NAMESPACE::StencilOp passOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep, VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ = VULKAN_HPP_NAMESPACE::StencilOp::eKeep, VULKAN_HPP_NAMESPACE::CompareOp compareOp_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 StencilOpState & operator=( StencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - StencilOpState & operator=( VkStencilOpState const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - StencilOpState & setFailOp( VULKAN_HPP_NAMESPACE::StencilOp failOp_ ) VULKAN_HPP_NOEXCEPT - { - failOp = failOp_; - return *this; - } - - StencilOpState & setPassOp( VULKAN_HPP_NAMESPACE::StencilOp passOp_ ) VULKAN_HPP_NOEXCEPT - { - passOp = passOp_; - return *this; - } - - StencilOpState & setDepthFailOp( VULKAN_HPP_NAMESPACE::StencilOp depthFailOp_ ) VULKAN_HPP_NOEXCEPT - { - depthFailOp = depthFailOp_; - return *this; - } - - StencilOpState & setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT - { - compareOp = compareOp_; - return *this; - } - - StencilOpState & setCompareMask( uint32_t compareMask_ ) VULKAN_HPP_NOEXCEPT - { - compareMask = compareMask_; - return *this; - } - - StencilOpState & setWriteMask( uint32_t writeMask_ ) VULKAN_HPP_NOEXCEPT - { - writeMask = writeMask_; - return *this; - } - - StencilOpState & setReference( uint32_t reference_ ) VULKAN_HPP_NOEXCEPT - { - reference = reference_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( StencilOpState const& ) const = default; -#else - bool operator==( StencilOpState const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( failOp == rhs.failOp ) - && ( passOp == rhs.passOp ) - && ( depthFailOp == rhs.depthFailOp ) - && ( compareOp == rhs.compareOp ) - && ( compareMask == rhs.compareMask ) - && ( writeMask == rhs.writeMask ) - && ( reference == rhs.reference ); - } - - bool operator!=( StencilOpState const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StencilOp failOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep; - VULKAN_HPP_NAMESPACE::StencilOp passOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep; - VULKAN_HPP_NAMESPACE::StencilOp depthFailOp = VULKAN_HPP_NAMESPACE::StencilOp::eKeep; - VULKAN_HPP_NAMESPACE::CompareOp compareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever; - uint32_t compareMask = {}; - uint32_t writeMask = {}; - uint32_t reference = {}; - - }; - static_assert( sizeof( StencilOpState ) == sizeof( VkStencilOpState ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineDepthStencilStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDepthStencilStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineDepthStencilStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable_ = {}, VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever, VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable_ = {}, VULKAN_HPP_NAMESPACE::StencilOpState front_ = {}, VULKAN_HPP_NAMESPACE::StencilOpState back_ = {}, float minDepthBounds_ = {}, float maxDepthBounds_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineDepthStencilStateCreateInfo & operator=( PipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineDepthStencilStateCreateInfo & operator=( VkPipelineDepthStencilStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineDepthStencilStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setDepthTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable_ ) VULKAN_HPP_NOEXCEPT - { - depthTestEnable = depthTestEnable_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setDepthWriteEnable( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable_ ) VULKAN_HPP_NOEXCEPT - { - depthWriteEnable = depthWriteEnable_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setDepthCompareOp( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp_ ) VULKAN_HPP_NOEXCEPT - { - depthCompareOp = depthCompareOp_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setDepthBoundsTestEnable( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable_ ) VULKAN_HPP_NOEXCEPT - { - depthBoundsTestEnable = depthBoundsTestEnable_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setStencilTestEnable( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable_ ) VULKAN_HPP_NOEXCEPT - { - stencilTestEnable = stencilTestEnable_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setFront( VULKAN_HPP_NAMESPACE::StencilOpState const & front_ ) VULKAN_HPP_NOEXCEPT - { - front = front_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setBack( VULKAN_HPP_NAMESPACE::StencilOpState const & back_ ) VULKAN_HPP_NOEXCEPT - { - back = back_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setMinDepthBounds( float minDepthBounds_ ) VULKAN_HPP_NOEXCEPT - { - minDepthBounds = minDepthBounds_; - return *this; - } - - PipelineDepthStencilStateCreateInfo & setMaxDepthBounds( float maxDepthBounds_ ) VULKAN_HPP_NOEXCEPT - { - maxDepthBounds = maxDepthBounds_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineDepthStencilStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineDepthStencilStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PipelineDepthStencilStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDepthStencilStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable = {}; - VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable = {}; - VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever; - VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable = {}; - VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable = {}; - VULKAN_HPP_NAMESPACE::StencilOpState front = {}; - VULKAN_HPP_NAMESPACE::StencilOpState back = {}; - float minDepthBounds = {}; - float maxDepthBounds = {}; - - }; - static_assert( sizeof( PipelineDepthStencilStateCreateInfo ) == sizeof( VkPipelineDepthStencilStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineDepthStencilStateCreateInfo; - }; - - struct PipelineColorBlendAttachmentState - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineColorBlendAttachmentState(VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ = {}, VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ = VULKAN_HPP_NAMESPACE::BlendOp::eAdd, VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ = VULKAN_HPP_NAMESPACE::BlendFactor::eZero, VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ = VULKAN_HPP_NAMESPACE::BlendOp::eAdd, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAttachmentState & operator=( PipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineColorBlendAttachmentState & operator=( VkPipelineColorBlendAttachmentState const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineColorBlendAttachmentState & setBlendEnable( VULKAN_HPP_NAMESPACE::Bool32 blendEnable_ ) VULKAN_HPP_NOEXCEPT - { - blendEnable = blendEnable_; - return *this; - } - - PipelineColorBlendAttachmentState & setSrcColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT - { - srcColorBlendFactor = srcColorBlendFactor_; - return *this; - } - - PipelineColorBlendAttachmentState & setDstColorBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor_ ) VULKAN_HPP_NOEXCEPT - { - dstColorBlendFactor = dstColorBlendFactor_; - return *this; - } - - PipelineColorBlendAttachmentState & setColorBlendOp( VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp_ ) VULKAN_HPP_NOEXCEPT - { - colorBlendOp = colorBlendOp_; - return *this; - } - - PipelineColorBlendAttachmentState & setSrcAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT - { - srcAlphaBlendFactor = srcAlphaBlendFactor_; - return *this; - } - - PipelineColorBlendAttachmentState & setDstAlphaBlendFactor( VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor_ ) VULKAN_HPP_NOEXCEPT - { - dstAlphaBlendFactor = dstAlphaBlendFactor_; - return *this; - } - - PipelineColorBlendAttachmentState & setAlphaBlendOp( VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp_ ) VULKAN_HPP_NOEXCEPT - { - alphaBlendOp = alphaBlendOp_; - return *this; - } - - PipelineColorBlendAttachmentState & setColorWriteMask( VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask_ ) VULKAN_HPP_NOEXCEPT - { - colorWriteMask = colorWriteMask_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineColorBlendAttachmentState const& ) const = default; -#else - bool operator==( PipelineColorBlendAttachmentState const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PipelineColorBlendAttachmentState const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Bool32 blendEnable = {}; - VULKAN_HPP_NAMESPACE::BlendFactor srcColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero; - VULKAN_HPP_NAMESPACE::BlendFactor dstColorBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero; - VULKAN_HPP_NAMESPACE::BlendOp colorBlendOp = VULKAN_HPP_NAMESPACE::BlendOp::eAdd; - VULKAN_HPP_NAMESPACE::BlendFactor srcAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero; - VULKAN_HPP_NAMESPACE::BlendFactor dstAlphaBlendFactor = VULKAN_HPP_NAMESPACE::BlendFactor::eZero; - VULKAN_HPP_NAMESPACE::BlendOp alphaBlendOp = VULKAN_HPP_NAMESPACE::BlendOp::eAdd; - VULKAN_HPP_NAMESPACE::ColorComponentFlags colorWriteMask = {}; - - }; - static_assert( sizeof( PipelineColorBlendAttachmentState ) == sizeof( VkPipelineColorBlendAttachmentState ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineColorBlendStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineColorBlendStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_ = {}, VULKAN_HPP_NAMESPACE::LogicOp logicOp_ = VULKAN_HPP_NAMESPACE::LogicOp::eClear, uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState* pAttachments_ = {}, std::array const& blendConstants_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_, VULKAN_HPP_NAMESPACE::LogicOp logicOp_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_, std::array const& blendConstants_ = {} ) - : flags( flags_ ), logicOpEnable( logicOpEnable_ ), logicOp( logicOp_ ), attachmentCount( static_cast( attachments_.size() ) ), pAttachments( attachments_.data() ), blendConstants( blendConstants_ ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendStateCreateInfo & operator=( PipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineColorBlendStateCreateInfo & operator=( VkPipelineColorBlendStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineColorBlendStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setLogicOpEnable( VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable_ ) VULKAN_HPP_NOEXCEPT - { - logicOpEnable = logicOpEnable_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setLogicOp( VULKAN_HPP_NAMESPACE::LogicOp logicOp_ ) VULKAN_HPP_NOEXCEPT - { - logicOp = logicOp_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = attachmentCount_; - return *this; - } - - PipelineColorBlendStateCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState* pAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pAttachments = pAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineColorBlendStateCreateInfo & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = static_cast( attachments_.size() ); - pAttachments = attachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - PipelineColorBlendStateCreateInfo & setBlendConstants( std::array blendConstants_ ) VULKAN_HPP_NOEXCEPT - { - blendConstants = blendConstants_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineColorBlendStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineColorBlendStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PipelineColorBlendStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::Bool32 logicOpEnable = {}; - VULKAN_HPP_NAMESPACE::LogicOp logicOp = VULKAN_HPP_NAMESPACE::LogicOp::eClear; - uint32_t attachmentCount = {}; - const VULKAN_HPP_NAMESPACE::PipelineColorBlendAttachmentState* pAttachments = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D blendConstants = {}; - - }; - static_assert( sizeof( PipelineColorBlendStateCreateInfo ) == sizeof( VkPipelineColorBlendStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineColorBlendStateCreateInfo; - }; - - struct PipelineDynamicStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDynamicStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineDynamicStateCreateInfo(VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_ = {}, uint32_t dynamicStateCount_ = {}, const VULKAN_HPP_NAMESPACE::DynamicState* pDynamicStates_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & dynamicStates_ ) - : flags( flags_ ), dynamicStateCount( static_cast( dynamicStates_.size() ) ), pDynamicStates( dynamicStates_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineDynamicStateCreateInfo & operator=( PipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineDynamicStateCreateInfo & operator=( VkPipelineDynamicStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineDynamicStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineDynamicStateCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineDynamicStateCreateInfo & setDynamicStateCount( uint32_t dynamicStateCount_ ) VULKAN_HPP_NOEXCEPT - { - dynamicStateCount = dynamicStateCount_; - return *this; - } - - PipelineDynamicStateCreateInfo & setPDynamicStates( const VULKAN_HPP_NAMESPACE::DynamicState* pDynamicStates_ ) VULKAN_HPP_NOEXCEPT - { - pDynamicStates = pDynamicStates_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineDynamicStateCreateInfo & setDynamicStates( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & dynamicStates_ ) VULKAN_HPP_NOEXCEPT - { - dynamicStateCount = static_cast( dynamicStates_.size() ); - pDynamicStates = dynamicStates_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineDynamicStateCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineDynamicStateCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineDynamicStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineDynamicStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( dynamicStateCount == rhs.dynamicStateCount ) - && ( pDynamicStates == rhs.pDynamicStates ); - } - - bool operator!=( PipelineDynamicStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDynamicStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateFlags flags = {}; - uint32_t dynamicStateCount = {}; - const VULKAN_HPP_NAMESPACE::DynamicState* pDynamicStates = {}; - - }; - static_assert( sizeof( PipelineDynamicStateCreateInfo ) == sizeof( VkPipelineDynamicStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineDynamicStateCreateInfo; - }; - - struct GraphicsPipelineCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsPipelineCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo(VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, uint32_t stageCount_ = {}, const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages_ = {}, const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo* pViewportState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo* pRasterizationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo* pMultisampleState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo* pDepthStencilState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo* pColorBlendState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, uint32_t subpass_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & stages_, const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo* pViewportState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo* pRasterizationState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo* pMultisampleState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo* pDepthStencilState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo* pColorBlendState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::RenderPass renderPass_ = {}, uint32_t subpass_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineCreateInfo & operator=( GraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - GraphicsPipelineCreateInfo & operator=( VkGraphicsPipelineCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - GraphicsPipelineCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - GraphicsPipelineCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - GraphicsPipelineCreateInfo & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT - { - stageCount = stageCount_; - return *this; - } - - GraphicsPipelineCreateInfo & setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages_ ) VULKAN_HPP_NOEXCEPT - { - pStages = pStages_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - GraphicsPipelineCreateInfo & setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & stages_ ) VULKAN_HPP_NOEXCEPT - { - stageCount = static_cast( stages_.size() ); - pStages = stages_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - GraphicsPipelineCreateInfo & setPVertexInputState( const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState_ ) VULKAN_HPP_NOEXCEPT - { - pVertexInputState = pVertexInputState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPInputAssemblyState( const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo* pInputAssemblyState_ ) VULKAN_HPP_NOEXCEPT - { - pInputAssemblyState = pInputAssemblyState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPTessellationState( const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState_ ) VULKAN_HPP_NOEXCEPT - { - pTessellationState = pTessellationState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPViewportState( const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo* pViewportState_ ) VULKAN_HPP_NOEXCEPT - { - pViewportState = pViewportState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPRasterizationState( const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo* pRasterizationState_ ) VULKAN_HPP_NOEXCEPT - { - pRasterizationState = pRasterizationState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPMultisampleState( const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo* pMultisampleState_ ) VULKAN_HPP_NOEXCEPT - { - pMultisampleState = pMultisampleState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPDepthStencilState( const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo* pDepthStencilState_ ) VULKAN_HPP_NOEXCEPT - { - pDepthStencilState = pDepthStencilState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPColorBlendState( const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo* pColorBlendState_ ) VULKAN_HPP_NOEXCEPT - { - pColorBlendState = pColorBlendState_; - return *this; - } - - GraphicsPipelineCreateInfo & setPDynamicState( const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState_ ) VULKAN_HPP_NOEXCEPT - { - pDynamicState = pDynamicState_; - return *this; - } - - GraphicsPipelineCreateInfo & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT - { - layout = layout_; - return *this; - } - - GraphicsPipelineCreateInfo & setRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass_ ) VULKAN_HPP_NOEXCEPT - { - renderPass = renderPass_; - return *this; - } - - GraphicsPipelineCreateInfo & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT - { - subpass = subpass_; - return *this; - } - - GraphicsPipelineCreateInfo & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT - { - basePipelineHandle = basePipelineHandle_; - return *this; - } - - GraphicsPipelineCreateInfo & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT - { - basePipelineIndex = basePipelineIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( GraphicsPipelineCreateInfo const& ) const = default; -#else - bool operator==( GraphicsPipelineCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( GraphicsPipelineCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsPipelineCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {}; - uint32_t stageCount = {}; - const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages = {}; - const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState = {}; - const VULKAN_HPP_NAMESPACE::PipelineInputAssemblyStateCreateInfo* pInputAssemblyState = {}; - const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState = {}; - const VULKAN_HPP_NAMESPACE::PipelineViewportStateCreateInfo* pViewportState = {}; - const VULKAN_HPP_NAMESPACE::PipelineRasterizationStateCreateInfo* pRasterizationState = {}; - const VULKAN_HPP_NAMESPACE::PipelineMultisampleStateCreateInfo* pMultisampleState = {}; - const VULKAN_HPP_NAMESPACE::PipelineDepthStencilStateCreateInfo* pDepthStencilState = {}; - const VULKAN_HPP_NAMESPACE::PipelineColorBlendStateCreateInfo* pColorBlendState = {}; - const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState = {}; - VULKAN_HPP_NAMESPACE::PipelineLayout layout = {}; - VULKAN_HPP_NAMESPACE::RenderPass renderPass = {}; - uint32_t subpass = {}; - VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {}; - int32_t basePipelineIndex = {}; - - }; - static_assert( sizeof( GraphicsPipelineCreateInfo ) == sizeof( VkGraphicsPipelineCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = GraphicsPipelineCreateInfo; - }; - - struct ImageCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageCreateInfo(VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ImageType imageType_ = VULKAN_HPP_NAMESPACE::ImageType::e1D, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::Extent3D extent_ = {}, uint32_t mipLevels_ = {}, uint32_t arrayLayers_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::ImageTiling tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = {}, const uint32_t* pQueueFamilyIndices_ = {}, VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_, VULKAN_HPP_NAMESPACE::ImageType imageType_, VULKAN_HPP_NAMESPACE::Format format_, VULKAN_HPP_NAMESPACE::Extent3D extent_, uint32_t mipLevels_, uint32_t arrayLayers_, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_, VULKAN_HPP_NAMESPACE::ImageTiling tiling_, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_, VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageCreateInfo & operator=( ImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageCreateInfo & operator=( VkImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ImageCreateInfo & setImageType( VULKAN_HPP_NAMESPACE::ImageType imageType_ ) VULKAN_HPP_NOEXCEPT - { - imageType = imageType_; - return *this; - } - - ImageCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - ImageCreateInfo & setExtent( VULKAN_HPP_NAMESPACE::Extent3D const & extent_ ) VULKAN_HPP_NOEXCEPT - { - extent = extent_; - return *this; - } - - ImageCreateInfo & setMipLevels( uint32_t mipLevels_ ) VULKAN_HPP_NOEXCEPT - { - mipLevels = mipLevels_; - return *this; - } - - ImageCreateInfo & setArrayLayers( uint32_t arrayLayers_ ) VULKAN_HPP_NOEXCEPT - { - arrayLayers = arrayLayers_; - return *this; - } - - ImageCreateInfo & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT - { - samples = samples_; - return *this; - } - - ImageCreateInfo & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT - { - tiling = tiling_; - return *this; - } - - ImageCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT - { - usage = usage_; - return *this; - } - - ImageCreateInfo & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT - { - sharingMode = sharingMode_; - return *this; - } - - ImageCreateInfo & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndexCount = queueFamilyIndexCount_; - return *this; - } - - ImageCreateInfo & setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT - { - pQueueFamilyIndices = pQueueFamilyIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ImageCreateInfo & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); - pQueueFamilyIndices = queueFamilyIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - ImageCreateInfo & setInitialLayout( VULKAN_HPP_NAMESPACE::ImageLayout initialLayout_ ) VULKAN_HPP_NOEXCEPT - { - initialLayout = initialLayout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageCreateInfo const& ) const = default; -#else - bool operator==( ImageCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( ImageCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::ImageType imageType = VULKAN_HPP_NAMESPACE::ImageType::e1D; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::Extent3D extent = {}; - uint32_t mipLevels = {}; - uint32_t arrayLayers = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; - VULKAN_HPP_NAMESPACE::ImageTiling tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal; - VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; - VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive; - uint32_t queueFamilyIndexCount = {}; - const uint32_t* pQueueFamilyIndices = {}; - VULKAN_HPP_NAMESPACE::ImageLayout initialLayout = VULKAN_HPP_NAMESPACE::ImageLayout::eUndefined; - - }; - static_assert( sizeof( ImageCreateInfo ) == sizeof( VkImageCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageCreateInfo; - }; - - struct ImageViewCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageViewCreateInfo(VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::ImageViewType viewType_ = VULKAN_HPP_NAMESPACE::ImageViewType::e1D, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {}, VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageViewCreateInfo & operator=( ImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageViewCreateInfo & operator=( VkImageViewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageViewCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageViewCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ImageViewCreateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *this; - } - - ImageViewCreateInfo & setViewType( VULKAN_HPP_NAMESPACE::ImageViewType viewType_ ) VULKAN_HPP_NOEXCEPT - { - viewType = viewType_; - return *this; - } - - ImageViewCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - ImageViewCreateInfo & setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT - { - components = components_; - return *this; - } - - ImageViewCreateInfo & setSubresourceRange( VULKAN_HPP_NAMESPACE::ImageSubresourceRange const & subresourceRange_ ) VULKAN_HPP_NOEXCEPT - { - subresourceRange = subresourceRange_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageViewCreateInfo const& ) const = default; -#else - bool operator==( ImageViewCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( ImageViewCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageViewCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::Image image = {}; - VULKAN_HPP_NAMESPACE::ImageViewType viewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::ComponentMapping components = {}; - VULKAN_HPP_NAMESPACE::ImageSubresourceRange subresourceRange = {}; - - }; - static_assert( sizeof( ImageViewCreateInfo ) == sizeof( VkImageViewCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageViewCreateInfo; - }; - - struct IndirectCommandsLayoutTokenNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutTokenNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutTokenNV(VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_ = VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup, uint32_t stream_ = {}, uint32_t offset_ = {}, uint32_t vertexBindingUnit_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_ = {}, uint32_t pushconstantOffset_ = {}, uint32_t pushconstantSize_ = {}, VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_ = {}, uint32_t indexTypeCount_ = {}, const VULKAN_HPP_NAMESPACE::IndexType* pIndexTypes_ = {}, const uint32_t* pIndexTypeValues_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_, uint32_t stream_, uint32_t offset_, uint32_t vertexBindingUnit_, VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_, VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_, VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_, uint32_t pushconstantOffset_, uint32_t pushconstantSize_, VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & indexTypes_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & indexTypeValues_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutTokenNV & operator=( IndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - IndirectCommandsLayoutTokenNV & operator=( VkIndirectCommandsLayoutTokenNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - IndirectCommandsLayoutTokenNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setTokenType( VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType_ ) VULKAN_HPP_NOEXCEPT - { - tokenType = tokenType_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setStream( uint32_t stream_ ) VULKAN_HPP_NOEXCEPT - { - stream = stream_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setVertexBindingUnit( uint32_t vertexBindingUnit_ ) VULKAN_HPP_NOEXCEPT - { - vertexBindingUnit = vertexBindingUnit_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setVertexDynamicStride( VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride_ ) VULKAN_HPP_NOEXCEPT - { - vertexDynamicStride = vertexDynamicStride_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setPushconstantPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout_ ) VULKAN_HPP_NOEXCEPT - { - pushconstantPipelineLayout = pushconstantPipelineLayout_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setPushconstantShaderStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags_ ) VULKAN_HPP_NOEXCEPT - { - pushconstantShaderStageFlags = pushconstantShaderStageFlags_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setPushconstantOffset( uint32_t pushconstantOffset_ ) VULKAN_HPP_NOEXCEPT - { - pushconstantOffset = pushconstantOffset_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setPushconstantSize( uint32_t pushconstantSize_ ) VULKAN_HPP_NOEXCEPT - { - pushconstantSize = pushconstantSize_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setIndirectStateFlags( VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags_ ) VULKAN_HPP_NOEXCEPT - { - indirectStateFlags = indirectStateFlags_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setIndexTypeCount( uint32_t indexTypeCount_ ) VULKAN_HPP_NOEXCEPT - { - indexTypeCount = indexTypeCount_; - return *this; - } - - IndirectCommandsLayoutTokenNV & setPIndexTypes( const VULKAN_HPP_NAMESPACE::IndexType* pIndexTypes_ ) VULKAN_HPP_NOEXCEPT - { - pIndexTypes = pIndexTypes_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - IndirectCommandsLayoutTokenNV & setIndexTypes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & indexTypes_ ) VULKAN_HPP_NOEXCEPT - { - indexTypeCount = static_cast( indexTypes_.size() ); - pIndexTypes = indexTypes_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - IndirectCommandsLayoutTokenNV & setPIndexTypeValues( const uint32_t* pIndexTypeValues_ ) VULKAN_HPP_NOEXCEPT - { - pIndexTypeValues = pIndexTypeValues_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - IndirectCommandsLayoutTokenNV & setIndexTypeValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & indexTypeValues_ ) VULKAN_HPP_NOEXCEPT - { - indexTypeCount = static_cast( indexTypeValues_.size() ); - pIndexTypeValues = indexTypeValues_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkIndirectCommandsLayoutTokenNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkIndirectCommandsLayoutTokenNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( IndirectCommandsLayoutTokenNV const& ) const = default; -#else - bool operator==( IndirectCommandsLayoutTokenNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( IndirectCommandsLayoutTokenNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutTokenNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV tokenType = VULKAN_HPP_NAMESPACE::IndirectCommandsTokenTypeNV::eShaderGroup; - uint32_t stream = {}; - uint32_t offset = {}; - uint32_t vertexBindingUnit = {}; - VULKAN_HPP_NAMESPACE::Bool32 vertexDynamicStride = {}; - VULKAN_HPP_NAMESPACE::PipelineLayout pushconstantPipelineLayout = {}; - VULKAN_HPP_NAMESPACE::ShaderStageFlags pushconstantShaderStageFlags = {}; - uint32_t pushconstantOffset = {}; - uint32_t pushconstantSize = {}; - VULKAN_HPP_NAMESPACE::IndirectStateFlagsNV indirectStateFlags = {}; - uint32_t indexTypeCount = {}; - const VULKAN_HPP_NAMESPACE::IndexType* pIndexTypes = {}; - const uint32_t* pIndexTypeValues = {}; - - }; - static_assert( sizeof( IndirectCommandsLayoutTokenNV ) == sizeof( VkIndirectCommandsLayoutTokenNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = IndirectCommandsLayoutTokenNV; - }; - - struct IndirectCommandsLayoutCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIndirectCommandsLayoutCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR IndirectCommandsLayoutCreateInfoNV(VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ = {}, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, uint32_t tokenCount_ = {}, const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV* pTokens_ = {}, uint32_t streamCount_ = {}, const uint32_t* pStreamStrides_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tokens_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & streamStrides_ = {} ) - : flags( flags_ ), pipelineBindPoint( pipelineBindPoint_ ), tokenCount( static_cast( tokens_.size() ) ), pTokens( tokens_.data() ), streamCount( static_cast( streamStrides_.size() ) ), pStreamStrides( streamStrides_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 IndirectCommandsLayoutCreateInfoNV & operator=( IndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - IndirectCommandsLayoutCreateInfoNV & operator=( VkIndirectCommandsLayoutCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - IndirectCommandsLayoutCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - IndirectCommandsLayoutCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - IndirectCommandsLayoutCreateInfoNV & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - IndirectCommandsLayoutCreateInfoNV & setTokenCount( uint32_t tokenCount_ ) VULKAN_HPP_NOEXCEPT - { - tokenCount = tokenCount_; - return *this; - } - - IndirectCommandsLayoutCreateInfoNV & setPTokens( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV* pTokens_ ) VULKAN_HPP_NOEXCEPT - { - pTokens = pTokens_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - IndirectCommandsLayoutCreateInfoNV & setTokens( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & tokens_ ) VULKAN_HPP_NOEXCEPT - { - tokenCount = static_cast( tokens_.size() ); - pTokens = tokens_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - IndirectCommandsLayoutCreateInfoNV & setStreamCount( uint32_t streamCount_ ) VULKAN_HPP_NOEXCEPT - { - streamCount = streamCount_; - return *this; - } - - IndirectCommandsLayoutCreateInfoNV & setPStreamStrides( const uint32_t* pStreamStrides_ ) VULKAN_HPP_NOEXCEPT - { - pStreamStrides = pStreamStrides_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - IndirectCommandsLayoutCreateInfoNV & setStreamStrides( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & streamStrides_ ) VULKAN_HPP_NOEXCEPT - { - streamCount = static_cast( streamStrides_.size() ); - pStreamStrides = streamStrides_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkIndirectCommandsLayoutCreateInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkIndirectCommandsLayoutCreateInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( IndirectCommandsLayoutCreateInfoNV const& ) const = default; -#else - bool operator==( IndirectCommandsLayoutCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( IndirectCommandsLayoutCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIndirectCommandsLayoutCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutUsageFlagsNV flags = {}; - VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; - uint32_t tokenCount = {}; - const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutTokenNV* pTokens = {}; - uint32_t streamCount = {}; - const uint32_t* pStreamStrides = {}; - - }; - static_assert( sizeof( IndirectCommandsLayoutCreateInfoNV ) == sizeof( VkIndirectCommandsLayoutCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = IndirectCommandsLayoutCreateInfoNV; - }; - - struct PipelineCacheCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCacheCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineCacheCreateInfo(VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_ = {}, size_t initialDataSize_ = {}, const void* pInitialData_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & initialData_ ) - : flags( flags_ ), initialDataSize( initialData_.size() * sizeof(T) ), pInitialData( initialData_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineCacheCreateInfo & operator=( PipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCacheCreateInfo & operator=( VkPipelineCacheCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineCacheCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineCacheCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineCacheCreateInfo & setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT - { - initialDataSize = initialDataSize_; - return *this; - } - - PipelineCacheCreateInfo & setPInitialData( const void* pInitialData_ ) VULKAN_HPP_NOEXCEPT - { - pInitialData = pInitialData_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - template - PipelineCacheCreateInfo & setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & initialData_ ) VULKAN_HPP_NOEXCEPT - { - initialDataSize = initialData_.size() * sizeof(T); - pInitialData = initialData_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineCacheCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCacheCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineCacheCreateInfo const& ) const = default; -#else - bool operator==( PipelineCacheCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( initialDataSize == rhs.initialDataSize ) - && ( pInitialData == rhs.pInitialData ); - } - - bool operator!=( PipelineCacheCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCacheCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCacheCreateFlags flags = {}; - size_t initialDataSize = {}; - const void* pInitialData = {}; - - }; - static_assert( sizeof( PipelineCacheCreateInfo ) == sizeof( VkPipelineCacheCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineCacheCreateInfo; - }; - - struct PushConstantRange - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PushConstantRange(VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PushConstantRange & operator=( PushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PushConstantRange & operator=( VkPushConstantRange const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PushConstantRange & setStageFlags( VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags_ ) VULKAN_HPP_NOEXCEPT - { - stageFlags = stageFlags_; - return *this; - } - - PushConstantRange & setOffset( uint32_t offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - PushConstantRange & setSize( uint32_t size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PushConstantRange const& ) const = default; -#else - bool operator==( PushConstantRange const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( stageFlags == rhs.stageFlags ) - && ( offset == rhs.offset ) - && ( size == rhs.size ); - } - - bool operator!=( PushConstantRange const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags = {}; - uint32_t offset = {}; - uint32_t size = {}; - - }; - static_assert( sizeof( PushConstantRange ) == sizeof( VkPushConstantRange ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineLayoutCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineLayoutCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineLayoutCreateInfo(VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_ = {}, uint32_t setLayoutCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorSetLayout* pSetLayouts_ = {}, uint32_t pushConstantRangeCount_ = {}, const VULKAN_HPP_NAMESPACE::PushConstantRange* pPushConstantRanges_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & setLayouts_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pushConstantRanges_ = {} ) - : flags( flags_ ), setLayoutCount( static_cast( setLayouts_.size() ) ), pSetLayouts( setLayouts_.data() ), pushConstantRangeCount( static_cast( pushConstantRanges_.size() ) ), pPushConstantRanges( pushConstantRanges_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineLayoutCreateInfo & operator=( PipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineLayoutCreateInfo & operator=( VkPipelineLayoutCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineLayoutCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineLayoutCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineLayoutCreateInfo & setSetLayoutCount( uint32_t setLayoutCount_ ) VULKAN_HPP_NOEXCEPT - { - setLayoutCount = setLayoutCount_; - return *this; - } - - PipelineLayoutCreateInfo & setPSetLayouts( const VULKAN_HPP_NAMESPACE::DescriptorSetLayout* pSetLayouts_ ) VULKAN_HPP_NOEXCEPT - { - pSetLayouts = pSetLayouts_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineLayoutCreateInfo & setSetLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & setLayouts_ ) VULKAN_HPP_NOEXCEPT - { - setLayoutCount = static_cast( setLayouts_.size() ); - pSetLayouts = setLayouts_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - PipelineLayoutCreateInfo & setPushConstantRangeCount( uint32_t pushConstantRangeCount_ ) VULKAN_HPP_NOEXCEPT - { - pushConstantRangeCount = pushConstantRangeCount_; - return *this; - } - - PipelineLayoutCreateInfo & setPPushConstantRanges( const VULKAN_HPP_NAMESPACE::PushConstantRange* pPushConstantRanges_ ) VULKAN_HPP_NOEXCEPT - { - pPushConstantRanges = pPushConstantRanges_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineLayoutCreateInfo & setPushConstantRanges( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pushConstantRanges_ ) VULKAN_HPP_NOEXCEPT - { - pushConstantRangeCount = static_cast( pushConstantRanges_.size() ); - pPushConstantRanges = pushConstantRanges_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineLayoutCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineLayoutCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineLayoutCreateInfo const& ) const = default; -#else - bool operator==( PipelineLayoutCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( setLayoutCount == rhs.setLayoutCount ) - && ( pSetLayouts == rhs.pSetLayouts ) - && ( pushConstantRangeCount == rhs.pushConstantRangeCount ) - && ( pPushConstantRanges == rhs.pPushConstantRanges ); - } - - bool operator!=( PipelineLayoutCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineLayoutCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineLayoutCreateFlags flags = {}; - uint32_t setLayoutCount = {}; - const VULKAN_HPP_NAMESPACE::DescriptorSetLayout* pSetLayouts = {}; - uint32_t pushConstantRangeCount = {}; - const VULKAN_HPP_NAMESPACE::PushConstantRange* pPushConstantRanges = {}; - - }; - static_assert( sizeof( PipelineLayoutCreateInfo ) == sizeof( VkPipelineLayoutCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineLayoutCreateInfo; - }; - - struct PrivateDataSlotCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePrivateDataSlotCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfoEXT(VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlagsEXT flags_ = {}) VULKAN_HPP_NOEXCEPT - : flags( flags_ ) - {} - - VULKAN_HPP_CONSTEXPR PrivateDataSlotCreateInfoEXT( PrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PrivateDataSlotCreateInfoEXT( VkPrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PrivateDataSlotCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PrivateDataSlotCreateInfoEXT & operator=( PrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PrivateDataSlotCreateInfoEXT & operator=( VkPrivateDataSlotCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PrivateDataSlotCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PrivateDataSlotCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - - operator VkPrivateDataSlotCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPrivateDataSlotCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PrivateDataSlotCreateInfoEXT const& ) const = default; -#else - bool operator==( PrivateDataSlotCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( PrivateDataSlotCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePrivateDataSlotCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateFlagsEXT flags = {}; - - }; - static_assert( sizeof( PrivateDataSlotCreateInfoEXT ) == sizeof( VkPrivateDataSlotCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PrivateDataSlotCreateInfoEXT; - }; - - class PrivateDataSlotEXT - { - public: - using CType = VkPrivateDataSlotEXT; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePrivateDataSlotEXT; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; - - public: - VULKAN_HPP_CONSTEXPR PrivateDataSlotEXT() VULKAN_HPP_NOEXCEPT - : m_privateDataSlotEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR PrivateDataSlotEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_privateDataSlotEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT PrivateDataSlotEXT( VkPrivateDataSlotEXT privateDataSlotEXT ) VULKAN_HPP_NOEXCEPT - : m_privateDataSlotEXT( privateDataSlotEXT ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - PrivateDataSlotEXT & operator=(VkPrivateDataSlotEXT privateDataSlotEXT) VULKAN_HPP_NOEXCEPT - { - m_privateDataSlotEXT = privateDataSlotEXT; - return *this; - } -#endif - - PrivateDataSlotEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_privateDataSlotEXT = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PrivateDataSlotEXT const& ) const = default; -#else - bool operator==( PrivateDataSlotEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_privateDataSlotEXT == rhs.m_privateDataSlotEXT; - } - - bool operator!=(PrivateDataSlotEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_privateDataSlotEXT != rhs.m_privateDataSlotEXT; - } - - bool operator<(PrivateDataSlotEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_privateDataSlotEXT < rhs.m_privateDataSlotEXT; - } -#endif - - VULKAN_HPP_TYPESAFE_EXPLICIT operator VkPrivateDataSlotEXT() const VULKAN_HPP_NOEXCEPT - { - return m_privateDataSlotEXT; - } - - explicit operator bool() const VULKAN_HPP_NOEXCEPT - { - return m_privateDataSlotEXT != VK_NULL_HANDLE; - } - - bool operator!() const VULKAN_HPP_NOEXCEPT - { - return m_privateDataSlotEXT == VK_NULL_HANDLE; - } - - private: - VkPrivateDataSlotEXT m_privateDataSlotEXT; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT ) == sizeof( VkPrivateDataSlotEXT ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT; - }; - - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct QueryPoolCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR QueryPoolCreateInfo(VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::QueryType queryType_ = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion, uint32_t queryCount_ = {}, VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 QueryPoolCreateInfo & operator=( QueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - QueryPoolCreateInfo & operator=( VkQueryPoolCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - QueryPoolCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - QueryPoolCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - QueryPoolCreateInfo & setQueryType( VULKAN_HPP_NAMESPACE::QueryType queryType_ ) VULKAN_HPP_NOEXCEPT - { - queryType = queryType_; - return *this; - } - - QueryPoolCreateInfo & setQueryCount( uint32_t queryCount_ ) VULKAN_HPP_NOEXCEPT - { - queryCount = queryCount_; - return *this; - } - - QueryPoolCreateInfo & setPipelineStatistics( VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics_ ) VULKAN_HPP_NOEXCEPT - { - pipelineStatistics = pipelineStatistics_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( QueryPoolCreateInfo const& ) const = default; -#else - bool operator==( QueryPoolCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( queryType == rhs.queryType ) - && ( queryCount == rhs.queryCount ) - && ( pipelineStatistics == rhs.pipelineStatistics ); - } - - bool operator!=( QueryPoolCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::QueryPoolCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::QueryType queryType = VULKAN_HPP_NAMESPACE::QueryType::eOcclusion; - uint32_t queryCount = {}; - VULKAN_HPP_NAMESPACE::QueryPipelineStatisticFlags pipelineStatistics = {}; - - }; - static_assert( sizeof( QueryPoolCreateInfo ) == sizeof( VkQueryPoolCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = QueryPoolCreateInfo; - }; - - struct RayTracingShaderGroupCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingShaderGroupCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoKHR(VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral, uint32_t generalShader_ = {}, uint32_t closestHitShader_ = {}, uint32_t anyHitShader_ = {}, uint32_t intersectionShader_ = {}, const void* pShaderGroupCaptureReplayHandle_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoKHR & operator=( RayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RayTracingShaderGroupCreateInfoKHR & operator=( VkRayTracingShaderGroupCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RayTracingShaderGroupCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RayTracingShaderGroupCreateInfoKHR & setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - RayTracingShaderGroupCreateInfoKHR & setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT - { - generalShader = generalShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoKHR & setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT - { - closestHitShader = closestHitShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoKHR & setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT - { - anyHitShader = anyHitShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoKHR & setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT - { - intersectionShader = intersectionShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoKHR & setPShaderGroupCaptureReplayHandle( const void* pShaderGroupCaptureReplayHandle_ ) VULKAN_HPP_NOEXCEPT - { - pShaderGroupCaptureReplayHandle = pShaderGroupCaptureReplayHandle_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RayTracingShaderGroupCreateInfoKHR const& ) const = default; -#else - bool operator==( RayTracingShaderGroupCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( RayTracingShaderGroupCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral; - uint32_t generalShader = {}; - uint32_t closestHitShader = {}; - uint32_t anyHitShader = {}; - uint32_t intersectionShader = {}; - const void* pShaderGroupCaptureReplayHandle = {}; - - }; - static_assert( sizeof( RayTracingShaderGroupCreateInfoKHR ) == sizeof( VkRayTracingShaderGroupCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RayTracingShaderGroupCreateInfoKHR; - }; - - struct PipelineLibraryCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineLibraryCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineLibraryCreateInfoKHR(uint32_t libraryCount_ = {}, const VULKAN_HPP_NAMESPACE::Pipeline* pLibraries_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & libraries_ ) - : libraryCount( static_cast( libraries_.size() ) ), pLibraries( libraries_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineLibraryCreateInfoKHR & operator=( PipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineLibraryCreateInfoKHR & operator=( VkPipelineLibraryCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineLibraryCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineLibraryCreateInfoKHR & setLibraryCount( uint32_t libraryCount_ ) VULKAN_HPP_NOEXCEPT - { - libraryCount = libraryCount_; - return *this; - } - - PipelineLibraryCreateInfoKHR & setPLibraries( const VULKAN_HPP_NAMESPACE::Pipeline* pLibraries_ ) VULKAN_HPP_NOEXCEPT - { - pLibraries = pLibraries_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineLibraryCreateInfoKHR & setLibraries( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & libraries_ ) VULKAN_HPP_NOEXCEPT - { - libraryCount = static_cast( libraries_.size() ); - pLibraries = libraries_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineLibraryCreateInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineLibraryCreateInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineLibraryCreateInfoKHR const& ) const = default; -#else - bool operator==( PipelineLibraryCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( libraryCount == rhs.libraryCount ) - && ( pLibraries == rhs.pLibraries ); - } - - bool operator!=( PipelineLibraryCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineLibraryCreateInfoKHR; - const void* pNext = {}; - uint32_t libraryCount = {}; - const VULKAN_HPP_NAMESPACE::Pipeline* pLibraries = {}; - - }; - static_assert( sizeof( PipelineLibraryCreateInfoKHR ) == sizeof( VkPipelineLibraryCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineLibraryCreateInfoKHR; - }; - - struct RayTracingPipelineInterfaceCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RayTracingPipelineInterfaceCreateInfoKHR(uint32_t maxPipelineRayPayloadSize_ = {}, uint32_t maxPipelineRayHitAttributeSize_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineInterfaceCreateInfoKHR & operator=( RayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RayTracingPipelineInterfaceCreateInfoKHR & operator=( VkRayTracingPipelineInterfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RayTracingPipelineInterfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RayTracingPipelineInterfaceCreateInfoKHR & setMaxPipelineRayPayloadSize( uint32_t maxPipelineRayPayloadSize_ ) VULKAN_HPP_NOEXCEPT - { - maxPipelineRayPayloadSize = maxPipelineRayPayloadSize_; - return *this; - } - - RayTracingPipelineInterfaceCreateInfoKHR & setMaxPipelineRayHitAttributeSize( uint32_t maxPipelineRayHitAttributeSize_ ) VULKAN_HPP_NOEXCEPT - { - maxPipelineRayHitAttributeSize = maxPipelineRayHitAttributeSize_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RayTracingPipelineInterfaceCreateInfoKHR const& ) const = default; -#else - bool operator==( RayTracingPipelineInterfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxPipelineRayPayloadSize == rhs.maxPipelineRayPayloadSize ) - && ( maxPipelineRayHitAttributeSize == rhs.maxPipelineRayHitAttributeSize ); - } - - bool operator!=( RayTracingPipelineInterfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineInterfaceCreateInfoKHR; - const void* pNext = {}; - uint32_t maxPipelineRayPayloadSize = {}; - uint32_t maxPipelineRayHitAttributeSize = {}; - - }; - static_assert( sizeof( RayTracingPipelineInterfaceCreateInfoKHR ) == sizeof( VkRayTracingPipelineInterfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RayTracingPipelineInterfaceCreateInfoKHR; - }; - - struct RayTracingPipelineCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingPipelineCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoKHR(VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, uint32_t stageCount_ = {}, const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages_ = {}, uint32_t groupCount_ = {}, const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR* pGroups_ = {}, uint32_t maxPipelineRayRecursionDepth_ = {}, const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR* pLibraryInfo_ = {}, const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & stages_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & groups_ = {}, uint32_t maxPipelineRayRecursionDepth_ = {}, const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR* pLibraryInfo_ = {}, const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface_ = {}, const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoKHR & operator=( RayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RayTracingPipelineCreateInfoKHR & operator=( VkRayTracingPipelineCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RayTracingPipelineCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT - { - stageCount = stageCount_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages_ ) VULKAN_HPP_NOEXCEPT - { - pStages = pStages_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RayTracingPipelineCreateInfoKHR & setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & stages_ ) VULKAN_HPP_NOEXCEPT - { - stageCount = static_cast( stages_.size() ); - pStages = stages_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RayTracingPipelineCreateInfoKHR & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT - { - groupCount = groupCount_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR* pGroups_ ) VULKAN_HPP_NOEXCEPT - { - pGroups = pGroups_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RayTracingPipelineCreateInfoKHR & setGroups( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & groups_ ) VULKAN_HPP_NOEXCEPT - { - groupCount = static_cast( groups_.size() ); - pGroups = groups_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RayTracingPipelineCreateInfoKHR & setMaxPipelineRayRecursionDepth( uint32_t maxPipelineRayRecursionDepth_ ) VULKAN_HPP_NOEXCEPT - { - maxPipelineRayRecursionDepth = maxPipelineRayRecursionDepth_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setPLibraryInfo( const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR* pLibraryInfo_ ) VULKAN_HPP_NOEXCEPT - { - pLibraryInfo = pLibraryInfo_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setPLibraryInterface( const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface_ ) VULKAN_HPP_NOEXCEPT - { - pLibraryInterface = pLibraryInterface_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setPDynamicState( const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState_ ) VULKAN_HPP_NOEXCEPT - { - pDynamicState = pDynamicState_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT - { - layout = layout_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT - { - basePipelineHandle = basePipelineHandle_; - return *this; - } - - RayTracingPipelineCreateInfoKHR & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT - { - basePipelineIndex = basePipelineIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RayTracingPipelineCreateInfoKHR const& ) const = default; -#else - bool operator==( RayTracingPipelineCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( RayTracingPipelineCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {}; - uint32_t stageCount = {}; - const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages = {}; - uint32_t groupCount = {}; - const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoKHR* pGroups = {}; - uint32_t maxPipelineRayRecursionDepth = {}; - const VULKAN_HPP_NAMESPACE::PipelineLibraryCreateInfoKHR* pLibraryInfo = {}; - const VULKAN_HPP_NAMESPACE::RayTracingPipelineInterfaceCreateInfoKHR* pLibraryInterface = {}; - const VULKAN_HPP_NAMESPACE::PipelineDynamicStateCreateInfo* pDynamicState = {}; - VULKAN_HPP_NAMESPACE::PipelineLayout layout = {}; - VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {}; - int32_t basePipelineIndex = {}; - - }; - static_assert( sizeof( RayTracingPipelineCreateInfoKHR ) == sizeof( VkRayTracingPipelineCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RayTracingPipelineCreateInfoKHR; - }; - - struct RayTracingShaderGroupCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingShaderGroupCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RayTracingShaderGroupCreateInfoNV(VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral, uint32_t generalShader_ = {}, uint32_t closestHitShader_ = {}, uint32_t anyHitShader_ = {}, uint32_t intersectionShader_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RayTracingShaderGroupCreateInfoNV & operator=( RayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RayTracingShaderGroupCreateInfoNV & operator=( VkRayTracingShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setType( VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setGeneralShader( uint32_t generalShader_ ) VULKAN_HPP_NOEXCEPT - { - generalShader = generalShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setClosestHitShader( uint32_t closestHitShader_ ) VULKAN_HPP_NOEXCEPT - { - closestHitShader = closestHitShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setAnyHitShader( uint32_t anyHitShader_ ) VULKAN_HPP_NOEXCEPT - { - anyHitShader = anyHitShader_; - return *this; - } - - RayTracingShaderGroupCreateInfoNV & setIntersectionShader( uint32_t intersectionShader_ ) VULKAN_HPP_NOEXCEPT - { - intersectionShader = intersectionShader_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RayTracingShaderGroupCreateInfoNV const& ) const = default; -#else - bool operator==( RayTracingShaderGroupCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( type == rhs.type ) - && ( generalShader == rhs.generalShader ) - && ( closestHitShader == rhs.closestHitShader ) - && ( anyHitShader == rhs.anyHitShader ) - && ( intersectionShader == rhs.intersectionShader ); - } - - bool operator!=( RayTracingShaderGroupCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingShaderGroupCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR type = VULKAN_HPP_NAMESPACE::RayTracingShaderGroupTypeKHR::eGeneral; - uint32_t generalShader = {}; - uint32_t closestHitShader = {}; - uint32_t anyHitShader = {}; - uint32_t intersectionShader = {}; - - }; - static_assert( sizeof( RayTracingShaderGroupCreateInfoNV ) == sizeof( VkRayTracingShaderGroupCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RayTracingShaderGroupCreateInfoNV; - }; - - struct RayTracingPipelineCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRayTracingPipelineCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RayTracingPipelineCreateInfoNV(VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ = {}, uint32_t stageCount_ = {}, const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages_ = {}, uint32_t groupCount_ = {}, const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV* pGroups_ = {}, uint32_t maxRecursionDepth_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & stages_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & groups_ = {}, uint32_t maxRecursionDepth_ = {}, VULKAN_HPP_NAMESPACE::PipelineLayout layout_ = {}, VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ = {}, int32_t basePipelineIndex_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RayTracingPipelineCreateInfoNV & operator=( RayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RayTracingPipelineCreateInfoNV & operator=( VkRayTracingPipelineCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RayTracingPipelineCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT - { - stageCount = stageCount_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages_ ) VULKAN_HPP_NOEXCEPT - { - pStages = pStages_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RayTracingPipelineCreateInfoNV & setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & stages_ ) VULKAN_HPP_NOEXCEPT - { - stageCount = static_cast( stages_.size() ); - pStages = stages_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RayTracingPipelineCreateInfoNV & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT - { - groupCount = groupCount_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setPGroups( const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV* pGroups_ ) VULKAN_HPP_NOEXCEPT - { - pGroups = pGroups_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RayTracingPipelineCreateInfoNV & setGroups( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & groups_ ) VULKAN_HPP_NOEXCEPT - { - groupCount = static_cast( groups_.size() ); - pGroups = groups_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RayTracingPipelineCreateInfoNV & setMaxRecursionDepth( uint32_t maxRecursionDepth_ ) VULKAN_HPP_NOEXCEPT - { - maxRecursionDepth = maxRecursionDepth_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setLayout( VULKAN_HPP_NAMESPACE::PipelineLayout layout_ ) VULKAN_HPP_NOEXCEPT - { - layout = layout_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setBasePipelineHandle( VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle_ ) VULKAN_HPP_NOEXCEPT - { - basePipelineHandle = basePipelineHandle_; - return *this; - } - - RayTracingPipelineCreateInfoNV & setBasePipelineIndex( int32_t basePipelineIndex_ ) VULKAN_HPP_NOEXCEPT - { - basePipelineIndex = basePipelineIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RayTracingPipelineCreateInfoNV const& ) const = default; -#else - bool operator==( RayTracingPipelineCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( RayTracingPipelineCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRayTracingPipelineCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCreateFlags flags = {}; - uint32_t stageCount = {}; - const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages = {}; - uint32_t groupCount = {}; - const VULKAN_HPP_NAMESPACE::RayTracingShaderGroupCreateInfoNV* pGroups = {}; - uint32_t maxRecursionDepth = {}; - VULKAN_HPP_NAMESPACE::PipelineLayout layout = {}; - VULKAN_HPP_NAMESPACE::Pipeline basePipelineHandle = {}; - int32_t basePipelineIndex = {}; - - }; - static_assert( sizeof( RayTracingPipelineCreateInfoNV ) == sizeof( VkRayTracingPipelineCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RayTracingPipelineCreateInfoNV; - }; - - struct SubpassDescription - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubpassDescription(VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ = {}, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, uint32_t inputAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference* pInputAttachments_ = {}, uint32_t colorAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference* pColorAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference* pResolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference* pDepthStencilAttachment_ = {}, uint32_t preserveAttachmentCount_ = {}, const uint32_t* 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( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & inputAttachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & colorAttachments_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & resolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference* pDepthStencilAttachment_ = {}, VULKAN_HPP_NAMESPACE::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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubpassDescription & operator=( SubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassDescription & operator=( VkSubpassDescription const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubpassDescription & setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - SubpassDescription & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - SubpassDescription & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - inputAttachmentCount = inputAttachmentCount_; - return *this; - } - - SubpassDescription & setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference* pInputAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pInputAttachments = pInputAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubpassDescription & setInputAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT - { - inputAttachmentCount = static_cast( inputAttachments_.size() ); - pInputAttachments = inputAttachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubpassDescription & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - colorAttachmentCount = colorAttachmentCount_; - return *this; - } - - SubpassDescription & setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference* pColorAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pColorAttachments = pColorAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubpassDescription & setColorAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT - { - colorAttachmentCount = static_cast( colorAttachments_.size() ); - pColorAttachments = colorAttachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubpassDescription & setPResolveAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference* pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pResolveAttachments = pResolveAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubpassDescription & setResolveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT - { - colorAttachmentCount = static_cast( resolveAttachments_.size() ); - pResolveAttachments = resolveAttachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubpassDescription & setPDepthStencilAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference* pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT - { - pDepthStencilAttachment = pDepthStencilAttachment_; - return *this; - } - - SubpassDescription & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - preserveAttachmentCount = preserveAttachmentCount_; - return *this; - } - - SubpassDescription & setPPreserveAttachments( const uint32_t* pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pPreserveAttachments = pPreserveAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubpassDescription & setPreserveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT - { - preserveAttachmentCount = static_cast( preserveAttachments_.size() ); - pPreserveAttachments = preserveAttachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSubpassDescription const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSubpassDescription &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubpassDescription const& ) const = default; -#else - bool operator==( SubpassDescription const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SubpassDescription const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags = {}; - VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; - uint32_t inputAttachmentCount = {}; - const VULKAN_HPP_NAMESPACE::AttachmentReference* pInputAttachments = {}; - uint32_t colorAttachmentCount = {}; - const VULKAN_HPP_NAMESPACE::AttachmentReference* pColorAttachments = {}; - const VULKAN_HPP_NAMESPACE::AttachmentReference* pResolveAttachments = {}; - const VULKAN_HPP_NAMESPACE::AttachmentReference* pDepthStencilAttachment = {}; - uint32_t preserveAttachmentCount = {}; - const uint32_t* pPreserveAttachments = {}; - - }; - static_assert( sizeof( SubpassDescription ) == sizeof( VkSubpassDescription ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SubpassDependency - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubpassDependency(uint32_t srcSubpass_ = {}, uint32_t dstSubpass_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubpassDependency & operator=( SubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassDependency & operator=( VkSubpassDependency const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubpassDependency & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT - { - srcSubpass = srcSubpass_; - return *this; - } - - SubpassDependency & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT - { - dstSubpass = dstSubpass_; - return *this; - } - - SubpassDependency & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT - { - srcStageMask = srcStageMask_; - return *this; - } - - SubpassDependency & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT - { - dstStageMask = dstStageMask_; - return *this; - } - - SubpassDependency & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - srcAccessMask = srcAccessMask_; - return *this; - } - - SubpassDependency & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - dstAccessMask = dstAccessMask_; - return *this; - } - - SubpassDependency & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT - { - dependencyFlags = dependencyFlags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubpassDependency const& ) const = default; -#else - bool operator==( SubpassDependency const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( srcSubpass == rhs.srcSubpass ) - && ( dstSubpass == rhs.dstSubpass ) - && ( srcStageMask == rhs.srcStageMask ) - && ( dstStageMask == rhs.dstStageMask ) - && ( srcAccessMask == rhs.srcAccessMask ) - && ( dstAccessMask == rhs.dstAccessMask ) - && ( dependencyFlags == rhs.dependencyFlags ); - } - - bool operator!=( SubpassDependency const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t srcSubpass = {}; - uint32_t dstSubpass = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; - VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags = {}; - - }; - static_assert( sizeof( SubpassDependency ) == sizeof( VkSubpassDependency ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct RenderPassCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RenderPassCreateInfo(VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ = {}, uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentDescription* pAttachments_ = {}, uint32_t subpassCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassDescription* pSubpasses_ = {}, uint32_t dependencyCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassDependency* pDependencies_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & subpasses_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & dependencies_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo & operator=( RenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassCreateInfo & operator=( VkRenderPassCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RenderPassCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RenderPassCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - RenderPassCreateInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = attachmentCount_; - return *this; - } - - RenderPassCreateInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription* pAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pAttachments = pAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassCreateInfo & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = static_cast( attachments_.size() ); - pAttachments = attachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RenderPassCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT - { - subpassCount = subpassCount_; - return *this; - } - - RenderPassCreateInfo & setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription* pSubpasses_ ) VULKAN_HPP_NOEXCEPT - { - pSubpasses = pSubpasses_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassCreateInfo & setSubpasses( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & subpasses_ ) VULKAN_HPP_NOEXCEPT - { - subpassCount = static_cast( subpasses_.size() ); - pSubpasses = subpasses_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RenderPassCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT - { - dependencyCount = dependencyCount_; - return *this; - } - - RenderPassCreateInfo & setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency* pDependencies_ ) VULKAN_HPP_NOEXCEPT - { - pDependencies = pDependencies_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassCreateInfo & setDependencies( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & dependencies_ ) VULKAN_HPP_NOEXCEPT - { - dependencyCount = static_cast( dependencies_.size() ); - pDependencies = dependencies_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkRenderPassCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPassCreateInfo const& ) const = default; -#else - bool operator==( RenderPassCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( RenderPassCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags = {}; - uint32_t attachmentCount = {}; - const VULKAN_HPP_NAMESPACE::AttachmentDescription* pAttachments = {}; - uint32_t subpassCount = {}; - const VULKAN_HPP_NAMESPACE::SubpassDescription* pSubpasses = {}; - uint32_t dependencyCount = {}; - const VULKAN_HPP_NAMESPACE::SubpassDependency* pDependencies = {}; - - }; - static_assert( sizeof( RenderPassCreateInfo ) == sizeof( VkRenderPassCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RenderPassCreateInfo; - }; - - struct SubpassDescription2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDescription2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubpassDescription2(VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ = {}, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, uint32_t viewMask_ = {}, uint32_t inputAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2* pInputAttachments_ = {}, uint32_t colorAttachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2* pColorAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2* pResolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2* pDepthStencilAttachment_ = {}, uint32_t preserveAttachmentCount_ = {}, const uint32_t* pPreserveAttachments_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_, VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_, uint32_t viewMask_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & inputAttachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & colorAttachments_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & resolveAttachments_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentReference2* pDepthStencilAttachment_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & preserveAttachments_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubpassDescription2 & operator=( SubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassDescription2 & operator=( VkSubpassDescription2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubpassDescription2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SubpassDescription2 & setFlags( VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - SubpassDescription2 & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - SubpassDescription2 & setViewMask( uint32_t viewMask_ ) VULKAN_HPP_NOEXCEPT - { - viewMask = viewMask_; - return *this; - } - - SubpassDescription2 & setInputAttachmentCount( uint32_t inputAttachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - inputAttachmentCount = inputAttachmentCount_; - return *this; - } - - SubpassDescription2 & setPInputAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2* pInputAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pInputAttachments = pInputAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubpassDescription2 & setInputAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & inputAttachments_ ) VULKAN_HPP_NOEXCEPT - { - inputAttachmentCount = static_cast( inputAttachments_.size() ); - pInputAttachments = inputAttachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubpassDescription2 & setColorAttachmentCount( uint32_t colorAttachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - colorAttachmentCount = colorAttachmentCount_; - return *this; - } - - SubpassDescription2 & setPColorAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2* pColorAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pColorAttachments = pColorAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubpassDescription2 & setColorAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & colorAttachments_ ) VULKAN_HPP_NOEXCEPT - { - colorAttachmentCount = static_cast( colorAttachments_.size() ); - pColorAttachments = colorAttachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubpassDescription2 & setPResolveAttachments( const VULKAN_HPP_NAMESPACE::AttachmentReference2* pResolveAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pResolveAttachments = pResolveAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubpassDescription2 & setResolveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & resolveAttachments_ ) VULKAN_HPP_NOEXCEPT - { - colorAttachmentCount = static_cast( resolveAttachments_.size() ); - pResolveAttachments = resolveAttachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubpassDescription2 & setPDepthStencilAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2* pDepthStencilAttachment_ ) VULKAN_HPP_NOEXCEPT - { - pDepthStencilAttachment = pDepthStencilAttachment_; - return *this; - } - - SubpassDescription2 & setPreserveAttachmentCount( uint32_t preserveAttachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - preserveAttachmentCount = preserveAttachmentCount_; - return *this; - } - - SubpassDescription2 & setPPreserveAttachments( const uint32_t* pPreserveAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pPreserveAttachments = pPreserveAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubpassDescription2 & setPreserveAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & preserveAttachments_ ) VULKAN_HPP_NOEXCEPT - { - preserveAttachmentCount = static_cast( preserveAttachments_.size() ); - pPreserveAttachments = preserveAttachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSubpassDescription2 const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSubpassDescription2 &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubpassDescription2 const& ) const = default; -#else - bool operator==( SubpassDescription2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SubpassDescription2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescription2; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SubpassDescriptionFlags flags = {}; - VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; - uint32_t viewMask = {}; - uint32_t inputAttachmentCount = {}; - const VULKAN_HPP_NAMESPACE::AttachmentReference2* pInputAttachments = {}; - uint32_t colorAttachmentCount = {}; - const VULKAN_HPP_NAMESPACE::AttachmentReference2* pColorAttachments = {}; - const VULKAN_HPP_NAMESPACE::AttachmentReference2* pResolveAttachments = {}; - const VULKAN_HPP_NAMESPACE::AttachmentReference2* pDepthStencilAttachment = {}; - uint32_t preserveAttachmentCount = {}; - const uint32_t* pPreserveAttachments = {}; - - }; - static_assert( sizeof( SubpassDescription2 ) == sizeof( VkSubpassDescription2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SubpassDescription2; - }; - using SubpassDescription2KHR = SubpassDescription2; - - struct SubpassDependency2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDependency2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubpassDependency2(uint32_t srcSubpass_ = {}, uint32_t dstSubpass_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ = {}, VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ = {}, VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ = {}, int32_t viewOffset_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubpassDependency2 & operator=( SubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassDependency2 & operator=( VkSubpassDependency2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubpassDependency2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SubpassDependency2 & setSrcSubpass( uint32_t srcSubpass_ ) VULKAN_HPP_NOEXCEPT - { - srcSubpass = srcSubpass_; - return *this; - } - - SubpassDependency2 & setDstSubpass( uint32_t dstSubpass_ ) VULKAN_HPP_NOEXCEPT - { - dstSubpass = dstSubpass_; - return *this; - } - - SubpassDependency2 & setSrcStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask_ ) VULKAN_HPP_NOEXCEPT - { - srcStageMask = srcStageMask_; - return *this; - } - - SubpassDependency2 & setDstStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask_ ) VULKAN_HPP_NOEXCEPT - { - dstStageMask = dstStageMask_; - return *this; - } - - SubpassDependency2 & setSrcAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - srcAccessMask = srcAccessMask_; - return *this; - } - - SubpassDependency2 & setDstAccessMask( VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask_ ) VULKAN_HPP_NOEXCEPT - { - dstAccessMask = dstAccessMask_; - return *this; - } - - SubpassDependency2 & setDependencyFlags( VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags_ ) VULKAN_HPP_NOEXCEPT - { - dependencyFlags = dependencyFlags_; - return *this; - } - - SubpassDependency2 & setViewOffset( int32_t viewOffset_ ) VULKAN_HPP_NOEXCEPT - { - viewOffset = viewOffset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubpassDependency2 const& ) const = default; -#else - bool operator==( SubpassDependency2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SubpassDependency2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDependency2; - const void* pNext = {}; - uint32_t srcSubpass = {}; - uint32_t dstSubpass = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags srcAccessMask = {}; - VULKAN_HPP_NAMESPACE::AccessFlags dstAccessMask = {}; - VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags = {}; - int32_t viewOffset = {}; - - }; - static_assert( sizeof( SubpassDependency2 ) == sizeof( VkSubpassDependency2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SubpassDependency2; - }; - using SubpassDependency2KHR = SubpassDependency2; - - struct RenderPassCreateInfo2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassCreateInfo2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RenderPassCreateInfo2(VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ = {}, uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentDescription2* pAttachments_ = {}, uint32_t subpassCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassDescription2* pSubpasses_ = {}, uint32_t dependencyCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassDependency2* pDependencies_ = {}, uint32_t correlatedViewMaskCount_ = {}, const uint32_t* pCorrelatedViewMasks_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & subpasses_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & dependencies_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & correlatedViewMasks_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RenderPassCreateInfo2 & operator=( RenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassCreateInfo2 & operator=( VkRenderPassCreateInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RenderPassCreateInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RenderPassCreateInfo2 & setFlags( VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - RenderPassCreateInfo2 & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = attachmentCount_; - return *this; - } - - RenderPassCreateInfo2 & setPAttachments( const VULKAN_HPP_NAMESPACE::AttachmentDescription2* pAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pAttachments = pAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassCreateInfo2 & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = static_cast( attachments_.size() ); - pAttachments = attachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RenderPassCreateInfo2 & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT - { - subpassCount = subpassCount_; - return *this; - } - - RenderPassCreateInfo2 & setPSubpasses( const VULKAN_HPP_NAMESPACE::SubpassDescription2* pSubpasses_ ) VULKAN_HPP_NOEXCEPT - { - pSubpasses = pSubpasses_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassCreateInfo2 & setSubpasses( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & subpasses_ ) VULKAN_HPP_NOEXCEPT - { - subpassCount = static_cast( subpasses_.size() ); - pSubpasses = subpasses_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RenderPassCreateInfo2 & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT - { - dependencyCount = dependencyCount_; - return *this; - } - - RenderPassCreateInfo2 & setPDependencies( const VULKAN_HPP_NAMESPACE::SubpassDependency2* pDependencies_ ) VULKAN_HPP_NOEXCEPT - { - pDependencies = pDependencies_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassCreateInfo2 & setDependencies( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & dependencies_ ) VULKAN_HPP_NOEXCEPT - { - dependencyCount = static_cast( dependencies_.size() ); - pDependencies = dependencies_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RenderPassCreateInfo2 & setCorrelatedViewMaskCount( uint32_t correlatedViewMaskCount_ ) VULKAN_HPP_NOEXCEPT - { - correlatedViewMaskCount = correlatedViewMaskCount_; - return *this; - } - - RenderPassCreateInfo2 & setPCorrelatedViewMasks( const uint32_t* pCorrelatedViewMasks_ ) VULKAN_HPP_NOEXCEPT - { - pCorrelatedViewMasks = pCorrelatedViewMasks_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassCreateInfo2 & setCorrelatedViewMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & correlatedViewMasks_ ) VULKAN_HPP_NOEXCEPT - { - correlatedViewMaskCount = static_cast( correlatedViewMasks_.size() ); - pCorrelatedViewMasks = correlatedViewMasks_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkRenderPassCreateInfo2 const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassCreateInfo2 &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPassCreateInfo2 const& ) const = default; -#else - bool operator==( RenderPassCreateInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( RenderPassCreateInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassCreateInfo2; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::RenderPassCreateFlags flags = {}; - uint32_t attachmentCount = {}; - const VULKAN_HPP_NAMESPACE::AttachmentDescription2* pAttachments = {}; - uint32_t subpassCount = {}; - const VULKAN_HPP_NAMESPACE::SubpassDescription2* pSubpasses = {}; - uint32_t dependencyCount = {}; - const VULKAN_HPP_NAMESPACE::SubpassDependency2* pDependencies = {}; - uint32_t correlatedViewMaskCount = {}; - const uint32_t* pCorrelatedViewMasks = {}; - - }; - static_assert( sizeof( RenderPassCreateInfo2 ) == sizeof( VkRenderPassCreateInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RenderPassCreateInfo2; - }; - using RenderPassCreateInfo2KHR = RenderPassCreateInfo2; - - struct SamplerCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SamplerCreateInfo(VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::Filter magFilter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, VULKAN_HPP_NAMESPACE::Filter minFilter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode_ = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest, VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_ = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat, VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_ = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat, VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_ = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat, float mipLodBias_ = {}, VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable_ = {}, float maxAnisotropy_ = {}, VULKAN_HPP_NAMESPACE::Bool32 compareEnable_ = {}, VULKAN_HPP_NAMESPACE::CompareOp compareOp_ = VULKAN_HPP_NAMESPACE::CompareOp::eNever, float minLod_ = {}, float maxLod_ = {}, VULKAN_HPP_NAMESPACE::BorderColor borderColor_ = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack, VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SamplerCreateInfo & operator=( SamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SamplerCreateInfo & operator=( VkSamplerCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SamplerCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SamplerCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - SamplerCreateInfo & setMagFilter( VULKAN_HPP_NAMESPACE::Filter magFilter_ ) VULKAN_HPP_NOEXCEPT - { - magFilter = magFilter_; - return *this; - } - - SamplerCreateInfo & setMinFilter( VULKAN_HPP_NAMESPACE::Filter minFilter_ ) VULKAN_HPP_NOEXCEPT - { - minFilter = minFilter_; - return *this; - } - - SamplerCreateInfo & setMipmapMode( VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode_ ) VULKAN_HPP_NOEXCEPT - { - mipmapMode = mipmapMode_; - return *this; - } - - SamplerCreateInfo & setAddressModeU( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU_ ) VULKAN_HPP_NOEXCEPT - { - addressModeU = addressModeU_; - return *this; - } - - SamplerCreateInfo & setAddressModeV( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV_ ) VULKAN_HPP_NOEXCEPT - { - addressModeV = addressModeV_; - return *this; - } - - SamplerCreateInfo & setAddressModeW( VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW_ ) VULKAN_HPP_NOEXCEPT - { - addressModeW = addressModeW_; - return *this; - } - - SamplerCreateInfo & setMipLodBias( float mipLodBias_ ) VULKAN_HPP_NOEXCEPT - { - mipLodBias = mipLodBias_; - return *this; - } - - SamplerCreateInfo & setAnisotropyEnable( VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable_ ) VULKAN_HPP_NOEXCEPT - { - anisotropyEnable = anisotropyEnable_; - return *this; - } - - SamplerCreateInfo & setMaxAnisotropy( float maxAnisotropy_ ) VULKAN_HPP_NOEXCEPT - { - maxAnisotropy = maxAnisotropy_; - return *this; - } - - SamplerCreateInfo & setCompareEnable( VULKAN_HPP_NAMESPACE::Bool32 compareEnable_ ) VULKAN_HPP_NOEXCEPT - { - compareEnable = compareEnable_; - return *this; - } - - SamplerCreateInfo & setCompareOp( VULKAN_HPP_NAMESPACE::CompareOp compareOp_ ) VULKAN_HPP_NOEXCEPT - { - compareOp = compareOp_; - return *this; - } - - SamplerCreateInfo & setMinLod( float minLod_ ) VULKAN_HPP_NOEXCEPT - { - minLod = minLod_; - return *this; - } - - SamplerCreateInfo & setMaxLod( float maxLod_ ) VULKAN_HPP_NOEXCEPT - { - maxLod = maxLod_; - return *this; - } - - SamplerCreateInfo & setBorderColor( VULKAN_HPP_NAMESPACE::BorderColor borderColor_ ) VULKAN_HPP_NOEXCEPT - { - borderColor = borderColor_; - return *this; - } - - SamplerCreateInfo & setUnnormalizedCoordinates( VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates_ ) VULKAN_HPP_NOEXCEPT - { - unnormalizedCoordinates = unnormalizedCoordinates_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SamplerCreateInfo const& ) const = default; -#else - bool operator==( SamplerCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SamplerCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SamplerCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::Filter magFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest; - VULKAN_HPP_NAMESPACE::Filter minFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest; - VULKAN_HPP_NAMESPACE::SamplerMipmapMode mipmapMode = VULKAN_HPP_NAMESPACE::SamplerMipmapMode::eNearest; - VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeU = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat; - VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeV = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat; - VULKAN_HPP_NAMESPACE::SamplerAddressMode addressModeW = VULKAN_HPP_NAMESPACE::SamplerAddressMode::eRepeat; - float mipLodBias = {}; - VULKAN_HPP_NAMESPACE::Bool32 anisotropyEnable = {}; - float maxAnisotropy = {}; - VULKAN_HPP_NAMESPACE::Bool32 compareEnable = {}; - VULKAN_HPP_NAMESPACE::CompareOp compareOp = VULKAN_HPP_NAMESPACE::CompareOp::eNever; - float minLod = {}; - float maxLod = {}; - VULKAN_HPP_NAMESPACE::BorderColor borderColor = VULKAN_HPP_NAMESPACE::BorderColor::eFloatTransparentBlack; - VULKAN_HPP_NAMESPACE::Bool32 unnormalizedCoordinates = {}; - - }; - static_assert( sizeof( SamplerCreateInfo ) == sizeof( VkSamplerCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SamplerCreateInfo; - }; - - struct SamplerYcbcrConversionCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionCreateInfo(VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity, VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_ = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull, VULKAN_HPP_NAMESPACE::ComponentMapping components_ = {}, VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset_ = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven, VULKAN_HPP_NAMESPACE::Filter chromaFilter_ = VULKAN_HPP_NAMESPACE::Filter::eNearest, VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionCreateInfo & operator=( SamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SamplerYcbcrConversionCreateInfo & operator=( VkSamplerYcbcrConversionCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SamplerYcbcrConversionCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setYcbcrModel( VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel_ ) VULKAN_HPP_NOEXCEPT - { - ycbcrModel = ycbcrModel_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setYcbcrRange( VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange_ ) VULKAN_HPP_NOEXCEPT - { - ycbcrRange = ycbcrRange_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setComponents( VULKAN_HPP_NAMESPACE::ComponentMapping const & components_ ) VULKAN_HPP_NOEXCEPT - { - components = components_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setXChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset_ ) VULKAN_HPP_NOEXCEPT - { - xChromaOffset = xChromaOffset_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setYChromaOffset( VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset_ ) VULKAN_HPP_NOEXCEPT - { - yChromaOffset = yChromaOffset_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setChromaFilter( VULKAN_HPP_NAMESPACE::Filter chromaFilter_ ) VULKAN_HPP_NOEXCEPT - { - chromaFilter = chromaFilter_; - return *this; - } - - SamplerYcbcrConversionCreateInfo & setForceExplicitReconstruction( VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction_ ) VULKAN_HPP_NOEXCEPT - { - forceExplicitReconstruction = forceExplicitReconstruction_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SamplerYcbcrConversionCreateInfo const& ) const = default; -#else - bool operator==( SamplerYcbcrConversionCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SamplerYcbcrConversionCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion ycbcrModel = VULKAN_HPP_NAMESPACE::SamplerYcbcrModelConversion::eRgbIdentity; - VULKAN_HPP_NAMESPACE::SamplerYcbcrRange ycbcrRange = VULKAN_HPP_NAMESPACE::SamplerYcbcrRange::eItuFull; - VULKAN_HPP_NAMESPACE::ComponentMapping components = {}; - VULKAN_HPP_NAMESPACE::ChromaLocation xChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; - VULKAN_HPP_NAMESPACE::ChromaLocation yChromaOffset = VULKAN_HPP_NAMESPACE::ChromaLocation::eCositedEven; - VULKAN_HPP_NAMESPACE::Filter chromaFilter = VULKAN_HPP_NAMESPACE::Filter::eNearest; - VULKAN_HPP_NAMESPACE::Bool32 forceExplicitReconstruction = {}; - - }; - static_assert( sizeof( SamplerYcbcrConversionCreateInfo ) == sizeof( VkSamplerYcbcrConversionCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SamplerYcbcrConversionCreateInfo; - }; - using SamplerYcbcrConversionCreateInfoKHR = SamplerYcbcrConversionCreateInfo; - - class SamplerYcbcrConversion - { - public: - using CType = VkSamplerYcbcrConversion; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSamplerYcbcrConversion; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSamplerYcbcrConversion; - - public: - VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion() VULKAN_HPP_NOEXCEPT - : m_samplerYcbcrConversion(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR SamplerYcbcrConversion( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_samplerYcbcrConversion(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT SamplerYcbcrConversion( VkSamplerYcbcrConversion samplerYcbcrConversion ) VULKAN_HPP_NOEXCEPT - : m_samplerYcbcrConversion( samplerYcbcrConversion ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - SamplerYcbcrConversion & operator=(VkSamplerYcbcrConversion samplerYcbcrConversion) VULKAN_HPP_NOEXCEPT - { - m_samplerYcbcrConversion = samplerYcbcrConversion; - return *this; - } -#endif - - SamplerYcbcrConversion & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_samplerYcbcrConversion = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SamplerYcbcrConversion const& ) const = default; -#else - bool operator==( SamplerYcbcrConversion const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_samplerYcbcrConversion == rhs.m_samplerYcbcrConversion; - } - - bool operator!=(SamplerYcbcrConversion const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_samplerYcbcrConversion != rhs.m_samplerYcbcrConversion; - } - - bool operator<(SamplerYcbcrConversion const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_samplerYcbcrConversion < rhs.m_samplerYcbcrConversion; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ) == sizeof( VkSamplerYcbcrConversion ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - using SamplerYcbcrConversionKHR = SamplerYcbcrConversion; - - struct SemaphoreCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo(VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ = {}) VULKAN_HPP_NOEXCEPT - : flags( flags_ ) - {} - - VULKAN_HPP_CONSTEXPR SemaphoreCreateInfo( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SemaphoreCreateInfo( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : SemaphoreCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SemaphoreCreateInfo & operator=( SemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SemaphoreCreateInfo & operator=( VkSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SemaphoreCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SemaphoreCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SemaphoreCreateInfo const& ) const = default; -#else - bool operator==( SemaphoreCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( SemaphoreCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SemaphoreCreateFlags flags = {}; - - }; - static_assert( sizeof( SemaphoreCreateInfo ) == sizeof( VkSemaphoreCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SemaphoreCreateInfo; - }; - - struct ShaderModuleCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderModuleCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ShaderModuleCreateInfo(VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_ = {}, size_t codeSize_ = {}, const uint32_t* pCode_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & code_ ) - : flags( flags_ ), codeSize( code_.size() * 4 ), pCode( code_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ShaderModuleCreateInfo & operator=( ShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ShaderModuleCreateInfo & operator=( VkShaderModuleCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ShaderModuleCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ShaderModuleCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ShaderModuleCreateInfo & setCodeSize( size_t codeSize_ ) VULKAN_HPP_NOEXCEPT - { - codeSize = codeSize_; - return *this; - } - - ShaderModuleCreateInfo & setPCode( const uint32_t* pCode_ ) VULKAN_HPP_NOEXCEPT - { - pCode = pCode_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ShaderModuleCreateInfo & setCode( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & code_ ) VULKAN_HPP_NOEXCEPT - { - codeSize = code_.size() * 4; - pCode = code_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkShaderModuleCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkShaderModuleCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ShaderModuleCreateInfo const& ) const = default; -#else - bool operator==( ShaderModuleCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( codeSize == rhs.codeSize ) - && ( pCode == rhs.pCode ); - } - - bool operator!=( ShaderModuleCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eShaderModuleCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ShaderModuleCreateFlags flags = {}; - size_t codeSize = {}; - const uint32_t* pCode = {}; - - }; - static_assert( sizeof( ShaderModuleCreateInfo ) == sizeof( VkShaderModuleCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ShaderModuleCreateInfo; - }; - - class SurfaceKHR - { - public: - using CType = VkSurfaceKHR; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eSurfaceKHR; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eSurfaceKHR; - - public: - VULKAN_HPP_CONSTEXPR SurfaceKHR() VULKAN_HPP_NOEXCEPT - : m_surfaceKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR SurfaceKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_surfaceKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT SurfaceKHR( VkSurfaceKHR surfaceKHR ) VULKAN_HPP_NOEXCEPT - : m_surfaceKHR( surfaceKHR ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - SurfaceKHR & operator=(VkSurfaceKHR surfaceKHR) VULKAN_HPP_NOEXCEPT - { - m_surfaceKHR = surfaceKHR; - return *this; - } -#endif - - SurfaceKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_surfaceKHR = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceKHR const& ) const = default; -#else - bool operator==( SurfaceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_surfaceKHR == rhs.m_surfaceKHR; - } - - bool operator!=(SurfaceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_surfaceKHR != rhs.m_surfaceKHR; - } - - bool operator<(SurfaceKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_surfaceKHR < rhs.m_surfaceKHR; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::SurfaceKHR ) == sizeof( VkSurfaceKHR ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::SurfaceKHR; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::SurfaceKHR; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::SurfaceKHR; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct SwapchainCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SwapchainCreateInfoKHR(VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_ = {}, VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ = {}, uint32_t minImageCount_ = {}, VULKAN_HPP_NAMESPACE::Format imageFormat_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_ = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear, VULKAN_HPP_NAMESPACE::Extent2D imageExtent_ = {}, uint32_t imageArrayLayers_ = {}, VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ = {}, VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = {}, const uint32_t* pQueueFamilyIndices_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque, VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate, VULKAN_HPP_NAMESPACE::Bool32 clipped_ = {}, VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_, VULKAN_HPP_NAMESPACE::SurfaceKHR surface_, uint32_t minImageCount_, VULKAN_HPP_NAMESPACE::Format imageFormat_, VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_, VULKAN_HPP_NAMESPACE::Extent2D imageExtent_, uint32_t imageArrayLayers_, VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_, VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque, VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate, VULKAN_HPP_NAMESPACE::Bool32 clipped_ = {}, VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SwapchainCreateInfoKHR & operator=( SwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SwapchainCreateInfoKHR & operator=( VkSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SwapchainCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SwapchainCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - SwapchainCreateInfoKHR & setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT - { - surface = surface_; - return *this; - } - - SwapchainCreateInfoKHR & setMinImageCount( uint32_t minImageCount_ ) VULKAN_HPP_NOEXCEPT - { - minImageCount = minImageCount_; - return *this; - } - - SwapchainCreateInfoKHR & setImageFormat( VULKAN_HPP_NAMESPACE::Format imageFormat_ ) VULKAN_HPP_NOEXCEPT - { - imageFormat = imageFormat_; - return *this; - } - - SwapchainCreateInfoKHR & setImageColorSpace( VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace_ ) VULKAN_HPP_NOEXCEPT - { - imageColorSpace = imageColorSpace_; - return *this; - } - - SwapchainCreateInfoKHR & setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT - { - imageExtent = imageExtent_; - return *this; - } - - SwapchainCreateInfoKHR & setImageArrayLayers( uint32_t imageArrayLayers_ ) VULKAN_HPP_NOEXCEPT - { - imageArrayLayers = imageArrayLayers_; - return *this; - } - - SwapchainCreateInfoKHR & setImageUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage_ ) VULKAN_HPP_NOEXCEPT - { - imageUsage = imageUsage_; - return *this; - } - - SwapchainCreateInfoKHR & setImageSharingMode( VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode_ ) VULKAN_HPP_NOEXCEPT - { - imageSharingMode = imageSharingMode_; - return *this; - } - - SwapchainCreateInfoKHR & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndexCount = queueFamilyIndexCount_; - return *this; - } - - SwapchainCreateInfoKHR & setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT - { - pQueueFamilyIndices = pQueueFamilyIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SwapchainCreateInfoKHR & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); - pQueueFamilyIndices = queueFamilyIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SwapchainCreateInfoKHR & setPreTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform_ ) VULKAN_HPP_NOEXCEPT - { - preTransform = preTransform_; - return *this; - } - - SwapchainCreateInfoKHR & setCompositeAlpha( VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha_ ) VULKAN_HPP_NOEXCEPT - { - compositeAlpha = compositeAlpha_; - return *this; - } - - SwapchainCreateInfoKHR & setPresentMode( VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode_ ) VULKAN_HPP_NOEXCEPT - { - presentMode = presentMode_; - return *this; - } - - SwapchainCreateInfoKHR & setClipped( VULKAN_HPP_NAMESPACE::Bool32 clipped_ ) VULKAN_HPP_NOEXCEPT - { - clipped = clipped_; - return *this; - } - - SwapchainCreateInfoKHR & setOldSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain_ ) VULKAN_HPP_NOEXCEPT - { - oldSwapchain = oldSwapchain_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SwapchainCreateInfoKHR const& ) const = default; -#else - bool operator==( SwapchainCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SwapchainCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SwapchainCreateFlagsKHR flags = {}; - VULKAN_HPP_NAMESPACE::SurfaceKHR surface = {}; - uint32_t minImageCount = {}; - VULKAN_HPP_NAMESPACE::Format imageFormat = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::ColorSpaceKHR imageColorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear; - VULKAN_HPP_NAMESPACE::Extent2D imageExtent = {}; - uint32_t imageArrayLayers = {}; - VULKAN_HPP_NAMESPACE::ImageUsageFlags imageUsage = {}; - VULKAN_HPP_NAMESPACE::SharingMode imageSharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive; - uint32_t queueFamilyIndexCount = {}; - const uint32_t* pQueueFamilyIndices = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR preTransform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; - VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR compositeAlpha = VULKAN_HPP_NAMESPACE::CompositeAlphaFlagBitsKHR::eOpaque; - VULKAN_HPP_NAMESPACE::PresentModeKHR presentMode = VULKAN_HPP_NAMESPACE::PresentModeKHR::eImmediate; - VULKAN_HPP_NAMESPACE::Bool32 clipped = {}; - VULKAN_HPP_NAMESPACE::SwapchainKHR oldSwapchain = {}; - - }; - static_assert( sizeof( SwapchainCreateInfoKHR ) == sizeof( VkSwapchainCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SwapchainCreateInfoKHR; - }; - - struct ValidationCacheCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationCacheCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ValidationCacheCreateInfoEXT(VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_ = {}, size_t initialDataSize_ = {}, const void* pInitialData_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & initialData_ ) - : flags( flags_ ), initialDataSize( initialData_.size() * sizeof(T) ), pInitialData( initialData_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ValidationCacheCreateInfoEXT & operator=( ValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ValidationCacheCreateInfoEXT & operator=( VkValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ValidationCacheCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ValidationCacheCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ValidationCacheCreateInfoEXT & setInitialDataSize( size_t initialDataSize_ ) VULKAN_HPP_NOEXCEPT - { - initialDataSize = initialDataSize_; - return *this; - } - - ValidationCacheCreateInfoEXT & setPInitialData( const void* pInitialData_ ) VULKAN_HPP_NOEXCEPT - { - pInitialData = pInitialData_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - template - ValidationCacheCreateInfoEXT & setInitialData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & initialData_ ) VULKAN_HPP_NOEXCEPT - { - initialDataSize = initialData_.size() * sizeof(T); - pInitialData = initialData_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkValidationCacheCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkValidationCacheCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ValidationCacheCreateInfoEXT const& ) const = default; -#else - bool operator==( ValidationCacheCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( initialDataSize == rhs.initialDataSize ) - && ( pInitialData == rhs.pInitialData ); - } - - bool operator!=( ValidationCacheCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationCacheCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ValidationCacheCreateFlagsEXT flags = {}; - size_t initialDataSize = {}; - const void* pInitialData = {}; - - }; - static_assert( sizeof( ValidationCacheCreateInfoEXT ) == sizeof( VkValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ValidationCacheCreateInfoEXT; - }; - - class ValidationCacheEXT - { - public: - using CType = VkValidationCacheEXT; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eValidationCacheEXT; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eValidationCacheEXT; - - public: - VULKAN_HPP_CONSTEXPR ValidationCacheEXT() VULKAN_HPP_NOEXCEPT - : m_validationCacheEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR ValidationCacheEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_validationCacheEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT ValidationCacheEXT( VkValidationCacheEXT validationCacheEXT ) VULKAN_HPP_NOEXCEPT - : m_validationCacheEXT( validationCacheEXT ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - ValidationCacheEXT & operator=(VkValidationCacheEXT validationCacheEXT) VULKAN_HPP_NOEXCEPT - { - m_validationCacheEXT = validationCacheEXT; - return *this; - } -#endif - - ValidationCacheEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_validationCacheEXT = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ValidationCacheEXT const& ) const = default; -#else - bool operator==( ValidationCacheEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_validationCacheEXT == rhs.m_validationCacheEXT; - } - - bool operator!=(ValidationCacheEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_validationCacheEXT != rhs.m_validationCacheEXT; - } - - bool operator<(ValidationCacheEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_validationCacheEXT < rhs.m_validationCacheEXT; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::ValidationCacheEXT ) == sizeof( VkValidationCacheEXT ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::ValidationCacheEXT; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::ValidationCacheEXT; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::ValidationCacheEXT; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct DisplayPowerInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPowerInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT(VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff) VULKAN_HPP_NOEXCEPT - : powerState( powerState_ ) - {} - - VULKAN_HPP_CONSTEXPR DisplayPowerInfoEXT( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayPowerInfoEXT( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : DisplayPowerInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayPowerInfoEXT & operator=( DisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayPowerInfoEXT & operator=( VkDisplayPowerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DisplayPowerInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DisplayPowerInfoEXT & setPowerState( VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState_ ) VULKAN_HPP_NOEXCEPT - { - powerState = powerState_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayPowerInfoEXT const& ) const = default; -#else - bool operator==( DisplayPowerInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( powerState == rhs.powerState ); - } - - bool operator!=( DisplayPowerInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPowerInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT powerState = VULKAN_HPP_NAMESPACE::DisplayPowerStateEXT::eOff; - - }; - static_assert( sizeof( DisplayPowerInfoEXT ) == sizeof( VkDisplayPowerInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayPowerInfoEXT; - }; - - struct MappedMemoryRange - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMappedMemoryRange; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MappedMemoryRange(VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MappedMemoryRange & operator=( MappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MappedMemoryRange & operator=( VkMappedMemoryRange const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MappedMemoryRange & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MappedMemoryRange & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *this; - } - - MappedMemoryRange & setOffset( VULKAN_HPP_NAMESPACE::DeviceSize offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - MappedMemoryRange & setSize( VULKAN_HPP_NAMESPACE::DeviceSize size_ ) VULKAN_HPP_NOEXCEPT - { - size = size_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MappedMemoryRange const& ) const = default; -#else - bool operator==( MappedMemoryRange const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memory == rhs.memory ) - && ( offset == rhs.offset ) - && ( size == rhs.size ); - } - - bool operator!=( MappedMemoryRange const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMappedMemoryRange; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - - }; - static_assert( sizeof( MappedMemoryRange ) == sizeof( VkMappedMemoryRange ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MappedMemoryRange; - }; - - struct MemoryRequirements - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryRequirements(VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryRequirements & operator=( MemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryRequirements const& ) const = default; -#else - bool operator==( MemoryRequirements const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( size == rhs.size ) - && ( alignment == rhs.alignment ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( MemoryRequirements const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - VULKAN_HPP_NAMESPACE::DeviceSize alignment = {}; - uint32_t memoryTypeBits = {}; - - }; - static_assert( sizeof( MemoryRequirements ) == sizeof( VkMemoryRequirements ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct MemoryRequirements2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryRequirements2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryRequirements2(VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements_ = {}) VULKAN_HPP_NOEXCEPT - : memoryRequirements( memoryRequirements_ ) - {} - - VULKAN_HPP_CONSTEXPR MemoryRequirements2( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryRequirements2( VkMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT - : MemoryRequirements2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryRequirements2 & operator=( MemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryRequirements2 const& ) const = default; -#else - bool operator==( MemoryRequirements2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryRequirements == rhs.memoryRequirements ); - } - - bool operator!=( MemoryRequirements2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryRequirements2; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements = {}; - - }; - static_assert( sizeof( MemoryRequirements2 ) == sizeof( VkMemoryRequirements2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryRequirements2; - }; - using MemoryRequirements2KHR = MemoryRequirements2; - - struct DeviceGroupPresentCapabilitiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupPresentCapabilitiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR(std::array const& presentMask_ = {}, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentCapabilitiesKHR & operator=( DeviceGroupPresentCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceGroupPresentCapabilitiesKHR const& ) const = default; -#else - bool operator==( DeviceGroupPresentCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( presentMask == rhs.presentMask ) - && ( modes == rhs.modes ); - } - - bool operator!=( DeviceGroupPresentCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentCapabilitiesKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D presentMask = {}; - VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {}; - - }; - static_assert( sizeof( DeviceGroupPresentCapabilitiesKHR ) == sizeof( VkDeviceGroupPresentCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceGroupPresentCapabilitiesKHR; - }; - - struct PhysicalDeviceSurfaceInfo2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSurfaceInfo2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR(VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ = {}) VULKAN_HPP_NOEXCEPT - : surface( surface_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceSurfaceInfo2KHR( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSurfaceInfo2KHR( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceSurfaceInfo2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSurfaceInfo2KHR & operator=( PhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSurfaceInfo2KHR & operator=( VkPhysicalDeviceSurfaceInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceSurfaceInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSurfaceInfo2KHR & setSurface( VULKAN_HPP_NAMESPACE::SurfaceKHR surface_ ) VULKAN_HPP_NOEXCEPT - { - surface = surface_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSurfaceInfo2KHR const& ) const = default; -#else - bool operator==( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( surface == rhs.surface ); - } - - bool operator!=( PhysicalDeviceSurfaceInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSurfaceInfo2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SurfaceKHR surface = {}; - - }; - static_assert( sizeof( PhysicalDeviceSurfaceInfo2KHR ) == sizeof( VkPhysicalDeviceSurfaceInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSurfaceInfo2KHR; - }; - - struct DeviceMemoryOpaqueCaptureAddressInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo(VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}) VULKAN_HPP_NOEXCEPT - : memory( memory_ ) - {} - - VULKAN_HPP_CONSTEXPR DeviceMemoryOpaqueCaptureAddressInfo( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceMemoryOpaqueCaptureAddressInfo( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : DeviceMemoryOpaqueCaptureAddressInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOpaqueCaptureAddressInfo & operator=( DeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceMemoryOpaqueCaptureAddressInfo & operator=( VkDeviceMemoryOpaqueCaptureAddressInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceMemoryOpaqueCaptureAddressInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceMemoryOpaqueCaptureAddressInfo & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceMemoryOpaqueCaptureAddressInfo const& ) const = default; -#else - bool operator==( DeviceMemoryOpaqueCaptureAddressInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memory == rhs.memory ); - } - - bool operator!=( DeviceMemoryOpaqueCaptureAddressInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOpaqueCaptureAddressInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - - }; - static_assert( sizeof( DeviceMemoryOpaqueCaptureAddressInfo ) == sizeof( VkDeviceMemoryOpaqueCaptureAddressInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceMemoryOpaqueCaptureAddressInfo; - }; - using DeviceMemoryOpaqueCaptureAddressInfoKHR = DeviceMemoryOpaqueCaptureAddressInfo; - - struct PresentInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PresentInfoKHR(uint32_t waitSemaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores_ = {}, uint32_t swapchainCount_ = {}, const VULKAN_HPP_NAMESPACE::SwapchainKHR* pSwapchains_ = {}, const uint32_t* pImageIndices_ = {}, VULKAN_HPP_NAMESPACE::Result* pResults_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & swapchains_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageIndices_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & results_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PresentInfoKHR & operator=( PresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PresentInfoKHR & operator=( VkPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PresentInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PresentInfoKHR & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreCount = waitSemaphoreCount_; - return *this; - } - - PresentInfoKHR & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - pWaitSemaphores = pWaitSemaphores_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PresentInfoKHR & setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreCount = static_cast( waitSemaphores_.size() ); - pWaitSemaphores = waitSemaphores_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - PresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = swapchainCount_; - return *this; - } - - PresentInfoKHR & setPSwapchains( const VULKAN_HPP_NAMESPACE::SwapchainKHR* pSwapchains_ ) VULKAN_HPP_NOEXCEPT - { - pSwapchains = pSwapchains_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PresentInfoKHR & setSwapchains( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & swapchains_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = static_cast( swapchains_.size() ); - pSwapchains = swapchains_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - PresentInfoKHR & setPImageIndices( const uint32_t* pImageIndices_ ) VULKAN_HPP_NOEXCEPT - { - pImageIndices = pImageIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PresentInfoKHR & setImageIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & imageIndices_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = static_cast( imageIndices_.size() ); - pImageIndices = imageIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - PresentInfoKHR & setPResults( VULKAN_HPP_NAMESPACE::Result* pResults_ ) VULKAN_HPP_NOEXCEPT - { - pResults = pResults_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PresentInfoKHR & setResults( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & results_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = static_cast( results_.size() ); - pResults = results_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPresentInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPresentInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PresentInfoKHR const& ) const = default; -#else - bool operator==( PresentInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PresentInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentInfoKHR; - const void* pNext = {}; - uint32_t waitSemaphoreCount = {}; - const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores = {}; - uint32_t swapchainCount = {}; - const VULKAN_HPP_NAMESPACE::SwapchainKHR* pSwapchains = {}; - const uint32_t* pImageIndices = {}; - VULKAN_HPP_NAMESPACE::Result* pResults = {}; - - }; - static_assert( sizeof( PresentInfoKHR ) == sizeof( VkPresentInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PresentInfoKHR; - }; - - struct SubmitInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubmitInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubmitInfo(uint32_t waitSemaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores_ = {}, const VULKAN_HPP_NAMESPACE::PipelineStageFlags* pWaitDstStageMask_ = {}, uint32_t commandBufferCount_ = {}, const VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers_ = {}, uint32_t signalSemaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore* pSignalSemaphores_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitDstStageMask_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & commandBuffers_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphores_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubmitInfo & operator=( SubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubmitInfo & operator=( VkSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubmitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreCount = waitSemaphoreCount_; - return *this; - } - - SubmitInfo & setPWaitSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - pWaitSemaphores = pWaitSemaphores_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubmitInfo & setWaitSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreCount = static_cast( waitSemaphores_.size() ); - pWaitSemaphores = waitSemaphores_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubmitInfo & setPWaitDstStageMask( const VULKAN_HPP_NAMESPACE::PipelineStageFlags* pWaitDstStageMask_ ) VULKAN_HPP_NOEXCEPT - { - pWaitDstStageMask = pWaitDstStageMask_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubmitInfo & setWaitDstStageMask( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitDstStageMask_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreCount = static_cast( waitDstStageMask_.size() ); - pWaitDstStageMask = waitDstStageMask_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT - { - commandBufferCount = commandBufferCount_; - return *this; - } - - SubmitInfo & setPCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers_ ) VULKAN_HPP_NOEXCEPT - { - pCommandBuffers = pCommandBuffers_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubmitInfo & setCommandBuffers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & commandBuffers_ ) VULKAN_HPP_NOEXCEPT - { - commandBufferCount = static_cast( commandBuffers_.size() ); - pCommandBuffers = commandBuffers_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreCount = signalSemaphoreCount_; - return *this; - } - - SubmitInfo & setPSignalSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore* pSignalSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - pSignalSemaphores = pSignalSemaphores_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubmitInfo & setSignalSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreCount = static_cast( signalSemaphores_.size() ); - pSignalSemaphores = signalSemaphores_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSubmitInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSubmitInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubmitInfo const& ) const = default; -#else - bool operator==( SubmitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SubmitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubmitInfo; - const void* pNext = {}; - uint32_t waitSemaphoreCount = {}; - const VULKAN_HPP_NAMESPACE::Semaphore* pWaitSemaphores = {}; - const VULKAN_HPP_NAMESPACE::PipelineStageFlags* pWaitDstStageMask = {}; - uint32_t commandBufferCount = {}; - const VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers = {}; - uint32_t signalSemaphoreCount = {}; - const VULKAN_HPP_NAMESPACE::Semaphore* pSignalSemaphores = {}; - - }; - static_assert( sizeof( SubmitInfo ) == sizeof( VkSubmitInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SubmitInfo; - }; - - struct SemaphoreSubmitInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSubmitInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfoKHR(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, uint64_t value_ = {}, VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask_ = {}, uint32_t deviceIndex_ = {}) VULKAN_HPP_NOEXCEPT - : semaphore( semaphore_ ), value( value_ ), stageMask( stageMask_ ), deviceIndex( deviceIndex_ ) - {} - - VULKAN_HPP_CONSTEXPR SemaphoreSubmitInfoKHR( SemaphoreSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SemaphoreSubmitInfoKHR( VkSemaphoreSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : SemaphoreSubmitInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SemaphoreSubmitInfoKHR & operator=( SemaphoreSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SemaphoreSubmitInfoKHR & operator=( VkSemaphoreSubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SemaphoreSubmitInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SemaphoreSubmitInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT - { - semaphore = semaphore_; - return *this; - } - - SemaphoreSubmitInfoKHR & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT - { - value = value_; - return *this; - } - - SemaphoreSubmitInfoKHR & setStageMask( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask_ ) VULKAN_HPP_NOEXCEPT - { - stageMask = stageMask_; - return *this; - } - - SemaphoreSubmitInfoKHR & setDeviceIndex( uint32_t deviceIndex_ ) VULKAN_HPP_NOEXCEPT - { - deviceIndex = deviceIndex_; - return *this; - } - - - operator VkSemaphoreSubmitInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSemaphoreSubmitInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SemaphoreSubmitInfoKHR const& ) const = default; -#else - bool operator==( SemaphoreSubmitInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( value == rhs.value ) - && ( stageMask == rhs.stageMask ) - && ( deviceIndex == rhs.deviceIndex ); - } - - bool operator!=( SemaphoreSubmitInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSubmitInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; - uint64_t value = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask = {}; - uint32_t deviceIndex = {}; - - }; - static_assert( sizeof( SemaphoreSubmitInfoKHR ) == sizeof( VkSemaphoreSubmitInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SemaphoreSubmitInfoKHR; - }; - - struct SubmitInfo2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubmitInfo2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubmitInfo2KHR(VULKAN_HPP_NAMESPACE::SubmitFlagsKHR flags_ = {}, uint32_t waitSemaphoreInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR* pWaitSemaphoreInfos_ = {}, uint32_t commandBufferInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR* pCommandBufferInfos_ = {}, uint32_t signalSemaphoreInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR* pSignalSemaphoreInfos_ = {}) VULKAN_HPP_NOEXCEPT - : flags( flags_ ), waitSemaphoreInfoCount( waitSemaphoreInfoCount_ ), pWaitSemaphoreInfos( pWaitSemaphoreInfos_ ), commandBufferInfoCount( commandBufferInfoCount_ ), pCommandBufferInfos( pCommandBufferInfos_ ), signalSemaphoreInfoCount( signalSemaphoreInfoCount_ ), pSignalSemaphoreInfos( pSignalSemaphoreInfos_ ) - {} - - VULKAN_HPP_CONSTEXPR SubmitInfo2KHR( SubmitInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubmitInfo2KHR( VkSubmitInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : SubmitInfo2KHR( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubmitInfo2KHR( VULKAN_HPP_NAMESPACE::SubmitFlagsKHR flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreInfos_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & commandBufferInfos_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreInfos_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubmitInfo2KHR & operator=( SubmitInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubmitInfo2KHR & operator=( VkSubmitInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubmitInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SubmitInfo2KHR & setFlags( VULKAN_HPP_NAMESPACE::SubmitFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - SubmitInfo2KHR & setWaitSemaphoreInfoCount( uint32_t waitSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreInfoCount = waitSemaphoreInfoCount_; - return *this; - } - - SubmitInfo2KHR & setPWaitSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR* pWaitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT - { - pWaitSemaphoreInfos = pWaitSemaphoreInfos_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubmitInfo2KHR & setWaitSemaphoreInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreInfoCount = static_cast( waitSemaphoreInfos_.size() ); - pWaitSemaphoreInfos = waitSemaphoreInfos_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubmitInfo2KHR & setCommandBufferInfoCount( uint32_t commandBufferInfoCount_ ) VULKAN_HPP_NOEXCEPT - { - commandBufferInfoCount = commandBufferInfoCount_; - return *this; - } - - SubmitInfo2KHR & setPCommandBufferInfos( const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR* pCommandBufferInfos_ ) VULKAN_HPP_NOEXCEPT - { - pCommandBufferInfos = pCommandBufferInfos_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubmitInfo2KHR & setCommandBufferInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & commandBufferInfos_ ) VULKAN_HPP_NOEXCEPT - { - commandBufferInfoCount = static_cast( commandBufferInfos_.size() ); - pCommandBufferInfos = commandBufferInfos_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SubmitInfo2KHR & setSignalSemaphoreInfoCount( uint32_t signalSemaphoreInfoCount_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreInfoCount = signalSemaphoreInfoCount_; - return *this; - } - - SubmitInfo2KHR & setPSignalSemaphoreInfos( const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR* pSignalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT - { - pSignalSemaphoreInfos = pSignalSemaphoreInfos_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SubmitInfo2KHR & setSignalSemaphoreInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreInfos_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreInfoCount = static_cast( signalSemaphoreInfos_.size() ); - pSignalSemaphoreInfos = signalSemaphoreInfos_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSubmitInfo2KHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSubmitInfo2KHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubmitInfo2KHR const& ) const = default; -#else - bool operator==( SubmitInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SubmitInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubmitInfo2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SubmitFlagsKHR flags = {}; - uint32_t waitSemaphoreInfoCount = {}; - const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR* pWaitSemaphoreInfos = {}; - uint32_t commandBufferInfoCount = {}; - const VULKAN_HPP_NAMESPACE::CommandBufferSubmitInfoKHR* pCommandBufferInfos = {}; - uint32_t signalSemaphoreInfoCount = {}; - const VULKAN_HPP_NAMESPACE::SemaphoreSubmitInfoKHR* pSignalSemaphoreInfos = {}; - - }; - static_assert( sizeof( SubmitInfo2KHR ) == sizeof( VkSubmitInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SubmitInfo2KHR; - }; - - class Queue - { - public: - using CType = VkQueue; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eQueue; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eQueue; - - public: - VULKAN_HPP_CONSTEXPR Queue() VULKAN_HPP_NOEXCEPT - : m_queue(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Queue( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_queue(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Queue( VkQueue queue ) VULKAN_HPP_NOEXCEPT - : m_queue( queue ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Queue & operator=(VkQueue queue) VULKAN_HPP_NOEXCEPT - { - m_queue = queue; - return *this; - } -#endif - - Queue & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_queue = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Queue const& ) const = default; -#else - bool operator==( Queue const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_queue == rhs.m_queue; - } - - bool operator!=(Queue const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_queue != rhs.m_queue; - } - - bool operator<(Queue const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_queue < rhs.m_queue; - } -#endif - - - template - void getCheckpointData2NV( uint32_t* pCheckpointDataCount, VULKAN_HPP_NAMESPACE::CheckpointData2NV* pCheckpointData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getCheckpointData2NV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = CheckpointData2NVAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getCheckpointData2NV( CheckpointData2NVAllocator & checkpointData2NVAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getCheckpointDataNV( uint32_t* pCheckpointDataCount, VULKAN_HPP_NAMESPACE::CheckpointDataNV* pCheckpointData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getCheckpointDataNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = CheckpointDataNVAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getCheckpointDataNV( CheckpointDataNVAllocator & checkpointDataNVAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pLabelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result bindSparse( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindSparseInfo* pBindInfo, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type bindSparse( ArrayProxy const & bindInfo, VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void endDebugUtilsLabelEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pLabelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR* pPresentInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result presentKHR( const PresentInfoKHR & presentInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD Result submit( uint32_t submitCount, const VULKAN_HPP_NAMESPACE::SubmitInfo* pSubmits, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type submit( ArrayProxy const & submits, VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result submit2KHR( uint32_t submitCount, const VULKAN_HPP_NAMESPACE::SubmitInfo2KHR* pSubmits, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type submit2KHR( ArrayProxy const & submits, VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - 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*/ - - - VULKAN_HPP_TYPESAFE_EXPLICIT 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Queue ) == sizeof( VkQueue ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Queue; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Queue; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Queue; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct DeviceQueueInfo2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueInfo2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceQueueInfo2(VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ = {}, uint32_t queueFamilyIndex_ = {}, uint32_t queueIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceQueueInfo2 & operator=( DeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceQueueInfo2 & operator=( VkDeviceQueueInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceQueueInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceQueueInfo2 & setFlags( VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DeviceQueueInfo2 & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndex = queueFamilyIndex_; - return *this; - } - - DeviceQueueInfo2 & setQueueIndex( uint32_t queueIndex_ ) VULKAN_HPP_NOEXCEPT - { - queueIndex = queueIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceQueueInfo2 const& ) const = default; -#else - bool operator==( DeviceQueueInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( queueFamilyIndex == rhs.queueFamilyIndex ) - && ( queueIndex == rhs.queueIndex ); - } - - bool operator!=( DeviceQueueInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueInfo2; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceQueueCreateFlags flags = {}; - uint32_t queueFamilyIndex = {}; - uint32_t queueIndex = {}; - - }; - static_assert( sizeof( DeviceQueueInfo2 ) == sizeof( VkDeviceQueueInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceQueueInfo2; - }; - - struct FenceGetFdInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceGetFdInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FenceGetFdInfoKHR(VULKAN_HPP_NAMESPACE::Fence fence_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FenceGetFdInfoKHR & operator=( FenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - FenceGetFdInfoKHR & operator=( VkFenceGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - FenceGetFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - FenceGetFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT - { - fence = fence_; - return *this; - } - - FenceGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FenceGetFdInfoKHR const& ) const = default; -#else - bool operator==( FenceGetFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fence == rhs.fence ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( FenceGetFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetFdInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Fence fence = {}; - VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( FenceGetFdInfoKHR ) == sizeof( VkFenceGetFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FenceGetFdInfoKHR; - }; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct FenceGetWin32HandleInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFenceGetWin32HandleInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FenceGetWin32HandleInfoKHR(VULKAN_HPP_NAMESPACE::Fence fence_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FenceGetWin32HandleInfoKHR & operator=( FenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - FenceGetWin32HandleInfoKHR & operator=( VkFenceGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - FenceGetWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - FenceGetWin32HandleInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT - { - fence = fence_; - return *this; - } - - FenceGetWin32HandleInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FenceGetWin32HandleInfoKHR const& ) const = default; -#else - bool operator==( FenceGetWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fence == rhs.fence ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( FenceGetWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFenceGetWin32HandleInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Fence fence = {}; - VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( FenceGetWin32HandleInfoKHR ) == sizeof( VkFenceGetWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FenceGetWin32HandleInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct GeneratedCommandsMemoryRequirementsInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR GeneratedCommandsMemoryRequirementsInfoNV(VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics, VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ = {}, uint32_t maxSequencesCount_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 GeneratedCommandsMemoryRequirementsInfoNV & operator=( GeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - GeneratedCommandsMemoryRequirementsInfoNV & operator=( VkGeneratedCommandsMemoryRequirementsInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - GeneratedCommandsMemoryRequirementsInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - GeneratedCommandsMemoryRequirementsInfoNV & setPipelineBindPoint( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint_ ) VULKAN_HPP_NOEXCEPT - { - pipelineBindPoint = pipelineBindPoint_; - return *this; - } - - GeneratedCommandsMemoryRequirementsInfoNV & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT - { - pipeline = pipeline_; - return *this; - } - - GeneratedCommandsMemoryRequirementsInfoNV & setIndirectCommandsLayout( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout_ ) VULKAN_HPP_NOEXCEPT - { - indirectCommandsLayout = indirectCommandsLayout_; - return *this; - } - - GeneratedCommandsMemoryRequirementsInfoNV & setMaxSequencesCount( uint32_t maxSequencesCount_ ) VULKAN_HPP_NOEXCEPT - { - maxSequencesCount = maxSequencesCount_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( GeneratedCommandsMemoryRequirementsInfoNV const& ) const = default; -#else - bool operator==( GeneratedCommandsMemoryRequirementsInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipelineBindPoint == rhs.pipelineBindPoint ) - && ( pipeline == rhs.pipeline ) - && ( indirectCommandsLayout == rhs.indirectCommandsLayout ) - && ( maxSequencesCount == rhs.maxSequencesCount ); - } - - bool operator!=( GeneratedCommandsMemoryRequirementsInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGeneratedCommandsMemoryRequirementsInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint = VULKAN_HPP_NAMESPACE::PipelineBindPoint::eGraphics; - VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; - VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout = {}; - uint32_t maxSequencesCount = {}; - - }; - static_assert( sizeof( GeneratedCommandsMemoryRequirementsInfoNV ) == sizeof( VkGeneratedCommandsMemoryRequirementsInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = GeneratedCommandsMemoryRequirementsInfoNV; - }; - - struct ImageDrmFormatModifierPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDrmFormatModifierPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT(uint64_t drmFormatModifier_ = {}) VULKAN_HPP_NOEXCEPT - : drmFormatModifier( drmFormatModifier_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierPropertiesEXT( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageDrmFormatModifierPropertiesEXT( VkImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageDrmFormatModifierPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierPropertiesEXT & operator=( ImageDrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageDrmFormatModifierPropertiesEXT const& ) const = default; -#else - bool operator==( ImageDrmFormatModifierPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifier == rhs.drmFormatModifier ); - } - - bool operator!=( ImageDrmFormatModifierPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierPropertiesEXT; - void* pNext = {}; - uint64_t drmFormatModifier = {}; - - }; - static_assert( sizeof( ImageDrmFormatModifierPropertiesEXT ) == sizeof( VkImageDrmFormatModifierPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageDrmFormatModifierPropertiesEXT; - }; - - struct ImageMemoryRequirementsInfo2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageMemoryRequirementsInfo2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2(VULKAN_HPP_NAMESPACE::Image image_ = {}) VULKAN_HPP_NOEXCEPT - : image( image_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageMemoryRequirementsInfo2( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageMemoryRequirementsInfo2( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageMemoryRequirementsInfo2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageMemoryRequirementsInfo2 & operator=( ImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageMemoryRequirementsInfo2 & operator=( VkImageMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageMemoryRequirementsInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageMemoryRequirementsInfo2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageMemoryRequirementsInfo2 const& ) const = default; -#else - bool operator==( ImageMemoryRequirementsInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ); - } - - bool operator!=( ImageMemoryRequirementsInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageMemoryRequirementsInfo2; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Image image = {}; - - }; - static_assert( sizeof( ImageMemoryRequirementsInfo2 ) == sizeof( VkImageMemoryRequirementsInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageMemoryRequirementsInfo2; - }; - using ImageMemoryRequirementsInfo2KHR = ImageMemoryRequirementsInfo2; - - struct SparseImageFormatProperties - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SparseImageFormatProperties(VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ = {}, VULKAN_HPP_NAMESPACE::Extent3D imageGranularity_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SparseImageFormatProperties & operator=( SparseImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SparseImageFormatProperties const& ) const = default; -#else - bool operator==( SparseImageFormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( aspectMask == rhs.aspectMask ) - && ( imageGranularity == rhs.imageGranularity ) - && ( flags == rhs.flags ); - } - - bool operator!=( SparseImageFormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; - VULKAN_HPP_NAMESPACE::Extent3D imageGranularity = {}; - VULKAN_HPP_NAMESPACE::SparseImageFormatFlags flags = {}; - - }; - static_assert( sizeof( SparseImageFormatProperties ) == sizeof( VkSparseImageFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SparseImageMemoryRequirements - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements(VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties_ = {}, uint32_t imageMipTailFirstLod_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailSize_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailOffset_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryRequirements & operator=( SparseImageMemoryRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SparseImageMemoryRequirements const& ) const = default; -#else - bool operator==( SparseImageMemoryRequirements const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( formatProperties == rhs.formatProperties ) - && ( imageMipTailFirstLod == rhs.imageMipTailFirstLod ) - && ( imageMipTailSize == rhs.imageMipTailSize ) - && ( imageMipTailOffset == rhs.imageMipTailOffset ) - && ( imageMipTailStride == rhs.imageMipTailStride ); - } - - bool operator!=( SparseImageMemoryRequirements const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::SparseImageFormatProperties formatProperties = {}; - uint32_t imageMipTailFirstLod = {}; - VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailSize = {}; - VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailOffset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize imageMipTailStride = {}; - - }; - static_assert( sizeof( SparseImageMemoryRequirements ) == sizeof( VkSparseImageMemoryRequirements ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageSparseMemoryRequirementsInfo2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageSparseMemoryRequirementsInfo2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2(VULKAN_HPP_NAMESPACE::Image image_ = {}) VULKAN_HPP_NOEXCEPT - : image( image_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageSparseMemoryRequirementsInfo2( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageSparseMemoryRequirementsInfo2( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageSparseMemoryRequirementsInfo2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageSparseMemoryRequirementsInfo2 & operator=( ImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageSparseMemoryRequirementsInfo2 & operator=( VkImageSparseMemoryRequirementsInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageSparseMemoryRequirementsInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageSparseMemoryRequirementsInfo2 & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageSparseMemoryRequirementsInfo2 const& ) const = default; -#else - bool operator==( ImageSparseMemoryRequirementsInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ); - } - - bool operator!=( ImageSparseMemoryRequirementsInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSparseMemoryRequirementsInfo2; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Image image = {}; - - }; - static_assert( sizeof( ImageSparseMemoryRequirementsInfo2 ) == sizeof( VkImageSparseMemoryRequirementsInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageSparseMemoryRequirementsInfo2; - }; - using ImageSparseMemoryRequirementsInfo2KHR = ImageSparseMemoryRequirementsInfo2; - - struct SparseImageMemoryRequirements2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSparseImageMemoryRequirements2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2(VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements_ = {}) VULKAN_HPP_NOEXCEPT - : memoryRequirements( memoryRequirements_ ) - {} - - VULKAN_HPP_CONSTEXPR SparseImageMemoryRequirements2( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SparseImageMemoryRequirements2( VkSparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT - : SparseImageMemoryRequirements2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SparseImageMemoryRequirements2 & operator=( SparseImageMemoryRequirements2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SparseImageMemoryRequirements2 const& ) const = default; -#else - bool operator==( SparseImageMemoryRequirements2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryRequirements == rhs.memoryRequirements ); - } - - bool operator!=( SparseImageMemoryRequirements2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSparseImageMemoryRequirements2; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements memoryRequirements = {}; - - }; - static_assert( sizeof( SparseImageMemoryRequirements2 ) == sizeof( VkSparseImageMemoryRequirements2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SparseImageMemoryRequirements2; - }; - using SparseImageMemoryRequirements2KHR = SparseImageMemoryRequirements2; - - struct SubresourceLayout - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubresourceLayout(VULKAN_HPP_NAMESPACE::DeviceSize offset_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize rowPitch_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubresourceLayout & operator=( SubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubresourceLayout & operator=( VkSubresourceLayout const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubresourceLayout const& ) const = default; -#else - bool operator==( SubresourceLayout const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( offset == rhs.offset ) - && ( size == rhs.size ) - && ( rowPitch == rhs.rowPitch ) - && ( arrayPitch == rhs.arrayPitch ) - && ( depthPitch == rhs.depthPitch ); - } - - bool operator!=( SubresourceLayout const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DeviceSize offset = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - VULKAN_HPP_NAMESPACE::DeviceSize rowPitch = {}; - VULKAN_HPP_NAMESPACE::DeviceSize arrayPitch = {}; - VULKAN_HPP_NAMESPACE::DeviceSize depthPitch = {}; - - }; - static_assert( sizeof( SubresourceLayout ) == sizeof( VkSubresourceLayout ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ImageViewAddressPropertiesNVX - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewAddressPropertiesNVX; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageViewAddressPropertiesNVX(VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageViewAddressPropertiesNVX & operator=( ImageViewAddressPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageViewAddressPropertiesNVX const& ) const = default; -#else - bool operator==( ImageViewAddressPropertiesNVX const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceAddress == rhs.deviceAddress ) - && ( size == rhs.size ); - } - - bool operator!=( ImageViewAddressPropertiesNVX const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewAddressPropertiesNVX; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceAddress deviceAddress = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - - }; - static_assert( sizeof( ImageViewAddressPropertiesNVX ) == sizeof( VkImageViewAddressPropertiesNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageViewAddressPropertiesNVX; - }; - - struct ImageViewHandleInfoNVX - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewHandleInfoNVX; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageViewHandleInfoNVX(VULKAN_HPP_NAMESPACE::ImageView imageView_ = {}, VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler, VULKAN_HPP_NAMESPACE::Sampler sampler_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageViewHandleInfoNVX & operator=( ImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageViewHandleInfoNVX & operator=( VkImageViewHandleInfoNVX const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageViewHandleInfoNVX & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageViewHandleInfoNVX & setImageView( VULKAN_HPP_NAMESPACE::ImageView imageView_ ) VULKAN_HPP_NOEXCEPT - { - imageView = imageView_; - return *this; - } - - ImageViewHandleInfoNVX & setDescriptorType( VULKAN_HPP_NAMESPACE::DescriptorType descriptorType_ ) VULKAN_HPP_NOEXCEPT - { - descriptorType = descriptorType_; - return *this; - } - - ImageViewHandleInfoNVX & setSampler( VULKAN_HPP_NAMESPACE::Sampler sampler_ ) VULKAN_HPP_NOEXCEPT - { - sampler = sampler_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageViewHandleInfoNVX const& ) const = default; -#else - bool operator==( ImageViewHandleInfoNVX const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imageView == rhs.imageView ) - && ( descriptorType == rhs.descriptorType ) - && ( sampler == rhs.sampler ); - } - - bool operator!=( ImageViewHandleInfoNVX const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewHandleInfoNVX; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageView imageView = {}; - VULKAN_HPP_NAMESPACE::DescriptorType descriptorType = VULKAN_HPP_NAMESPACE::DescriptorType::eSampler; - VULKAN_HPP_NAMESPACE::Sampler sampler = {}; - - }; - static_assert( sizeof( ImageViewHandleInfoNVX ) == sizeof( VkImageViewHandleInfoNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageViewHandleInfoNVX; - }; - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct MemoryGetAndroidHardwareBufferInfoANDROID - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID(VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}) VULKAN_HPP_NOEXCEPT - : memory( memory_ ) - {} - - VULKAN_HPP_CONSTEXPR MemoryGetAndroidHardwareBufferInfoANDROID( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryGetAndroidHardwareBufferInfoANDROID( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT - : MemoryGetAndroidHardwareBufferInfoANDROID( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryGetAndroidHardwareBufferInfoANDROID & operator=( MemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryGetAndroidHardwareBufferInfoANDROID & operator=( VkMemoryGetAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryGetAndroidHardwareBufferInfoANDROID & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryGetAndroidHardwareBufferInfoANDROID & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryGetAndroidHardwareBufferInfoANDROID const& ) const = default; -#else - bool operator==( MemoryGetAndroidHardwareBufferInfoANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memory == rhs.memory ); - } - - bool operator!=( MemoryGetAndroidHardwareBufferInfoANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetAndroidHardwareBufferInfoANDROID; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - - }; - static_assert( sizeof( MemoryGetAndroidHardwareBufferInfoANDROID ) == sizeof( VkMemoryGetAndroidHardwareBufferInfoANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryGetAndroidHardwareBufferInfoANDROID; - }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - struct MemoryGetFdInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetFdInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryGetFdInfoKHR(VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryGetFdInfoKHR & operator=( MemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryGetFdInfoKHR & operator=( VkMemoryGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryGetFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryGetFdInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *this; - } - - MemoryGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryGetFdInfoKHR const& ) const = default; -#else - bool operator==( MemoryGetFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memory == rhs.memory ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( MemoryGetFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetFdInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( MemoryGetFdInfoKHR ) == sizeof( VkMemoryGetFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryGetFdInfoKHR; - }; - - struct MemoryFdPropertiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryFdPropertiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR(uint32_t memoryTypeBits_ = {}) VULKAN_HPP_NOEXCEPT - : memoryTypeBits( memoryTypeBits_ ) - {} - - VULKAN_HPP_CONSTEXPR MemoryFdPropertiesKHR( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryFdPropertiesKHR( VkMemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : MemoryFdPropertiesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryFdPropertiesKHR & operator=( MemoryFdPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryFdPropertiesKHR const& ) const = default; -#else - bool operator==( MemoryFdPropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( MemoryFdPropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryFdPropertiesKHR; - void* pNext = {}; - uint32_t memoryTypeBits = {}; - - }; - static_assert( sizeof( MemoryFdPropertiesKHR ) == sizeof( VkMemoryFdPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryFdPropertiesKHR; - }; - - struct MemoryHostPointerPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryHostPointerPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT(uint32_t memoryTypeBits_ = {}) VULKAN_HPP_NOEXCEPT - : memoryTypeBits( memoryTypeBits_ ) - {} - - VULKAN_HPP_CONSTEXPR MemoryHostPointerPropertiesEXT( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryHostPointerPropertiesEXT( VkMemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : MemoryHostPointerPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryHostPointerPropertiesEXT & operator=( MemoryHostPointerPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryHostPointerPropertiesEXT const& ) const = default; -#else - bool operator==( MemoryHostPointerPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( MemoryHostPointerPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryHostPointerPropertiesEXT; - void* pNext = {}; - uint32_t memoryTypeBits = {}; - - }; - static_assert( sizeof( MemoryHostPointerPropertiesEXT ) == sizeof( VkMemoryHostPointerPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryHostPointerPropertiesEXT; - }; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct MemoryGetWin32HandleInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryGetWin32HandleInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryGetWin32HandleInfoKHR(VULKAN_HPP_NAMESPACE::DeviceMemory memory_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryGetWin32HandleInfoKHR & operator=( MemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryGetWin32HandleInfoKHR & operator=( VkMemoryGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryGetWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryGetWin32HandleInfoKHR & setMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory_ ) VULKAN_HPP_NOEXCEPT - { - memory = memory_; - return *this; - } - - MemoryGetWin32HandleInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryGetWin32HandleInfoKHR const& ) const = default; -#else - bool operator==( MemoryGetWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memory == rhs.memory ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( MemoryGetWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryGetWin32HandleInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceMemory memory = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( MemoryGetWin32HandleInfoKHR ) == sizeof( VkMemoryGetWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryGetWin32HandleInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct MemoryWin32HandlePropertiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryWin32HandlePropertiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR(uint32_t memoryTypeBits_ = {}) VULKAN_HPP_NOEXCEPT - : memoryTypeBits( memoryTypeBits_ ) - {} - - VULKAN_HPP_CONSTEXPR MemoryWin32HandlePropertiesKHR( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryWin32HandlePropertiesKHR( VkMemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : MemoryWin32HandlePropertiesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryWin32HandlePropertiesKHR & operator=( MemoryWin32HandlePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryWin32HandlePropertiesKHR const& ) const = default; -#else - bool operator==( MemoryWin32HandlePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryTypeBits == rhs.memoryTypeBits ); - } - - bool operator!=( MemoryWin32HandlePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryWin32HandlePropertiesKHR; - void* pNext = {}; - uint32_t memoryTypeBits = {}; - - }; - static_assert( sizeof( MemoryWin32HandlePropertiesKHR ) == sizeof( VkMemoryWin32HandlePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryWin32HandlePropertiesKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct PastPresentationTimingGOOGLE - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PastPresentationTimingGOOGLE & operator=( PastPresentationTimingGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PastPresentationTimingGOOGLE const& ) const = default; -#else - bool operator==( PastPresentationTimingGOOGLE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( presentID == rhs.presentID ) - && ( desiredPresentTime == rhs.desiredPresentTime ) - && ( actualPresentTime == rhs.actualPresentTime ) - && ( earliestPresentTime == rhs.earliestPresentTime ) - && ( presentMargin == rhs.presentMargin ); - } - - 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 = {}; - - }; - static_assert( sizeof( PastPresentationTimingGOOGLE ) == sizeof( VkPastPresentationTimingGOOGLE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - union PerformanceValueDataINTEL - { - PerformanceValueDataINTEL( VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL const& rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL ) ); - } - - PerformanceValueDataINTEL( uint32_t value32_ = {} ) - : value32( value32_ ) - {} - - PerformanceValueDataINTEL( uint64_t value64_ ) - : value64( value64_ ) - {} - - PerformanceValueDataINTEL( float valueFloat_ ) - : valueFloat( valueFloat_ ) - {} - - PerformanceValueDataINTEL( const char* valueString_ ) - : valueString( valueString_ ) - {} - - PerformanceValueDataINTEL & setValue32( uint32_t value32_ ) VULKAN_HPP_NOEXCEPT - { - value32 = value32_; - return *this; - } - - PerformanceValueDataINTEL & setValue64( uint64_t value64_ ) VULKAN_HPP_NOEXCEPT - { - value64 = value64_; - return *this; - } - - PerformanceValueDataINTEL & setValueFloat( float valueFloat_ ) VULKAN_HPP_NOEXCEPT - { - valueFloat = valueFloat_; - return *this; - } - - PerformanceValueDataINTEL & setValueBool( VULKAN_HPP_NAMESPACE::Bool32 valueBool_ ) VULKAN_HPP_NOEXCEPT - { - valueBool = valueBool_; - return *this; - } - - PerformanceValueDataINTEL & setValueString( const char* valueString_ ) VULKAN_HPP_NOEXCEPT - { - valueString = valueString_; - return *this; - } - - VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL & operator=( VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL ) ); - return *this; - } - - 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; - VULKAN_HPP_NAMESPACE::Bool32 valueBool; - const char* valueString; -#else - uint32_t value32; - uint64_t value64; - float valueFloat; - VkBool32 valueBool; - const char* valueString; -#endif /*VULKAN_HPP_HAS_UNRESTRICTED_UNIONS*/ - }; - - struct PerformanceValueINTEL - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - PerformanceValueINTEL(VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type_ = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32, VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data_ = {}) VULKAN_HPP_NOEXCEPT - : type( type_ ), data( data_ ) - {} - - PerformanceValueINTEL( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceValueINTEL( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - : PerformanceValueINTEL( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - PerformanceValueINTEL & operator=( PerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceValueINTEL & operator=( VkPerformanceValueINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PerformanceValueINTEL & setType( VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - PerformanceValueINTEL & setData( VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL const & data_ ) VULKAN_HPP_NOEXCEPT - { - data = data_; - return *this; - } - - - operator VkPerformanceValueINTEL const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPerformanceValueINTEL &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL type = VULKAN_HPP_NAMESPACE::PerformanceValueTypeINTEL::eUint32; - VULKAN_HPP_NAMESPACE::PerformanceValueDataINTEL data = {}; - - }; - static_assert( sizeof( PerformanceValueINTEL ) == sizeof( VkPerformanceValueINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineExecutableInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutableInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineExecutableInfoKHR(VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}, uint32_t executableIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInfoKHR & operator=( PipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineExecutableInfoKHR & operator=( VkPipelineExecutableInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineExecutableInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineExecutableInfoKHR & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT - { - pipeline = pipeline_; - return *this; - } - - PipelineExecutableInfoKHR & setExecutableIndex( uint32_t executableIndex_ ) VULKAN_HPP_NOEXCEPT - { - executableIndex = executableIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineExecutableInfoKHR const& ) const = default; -#else - bool operator==( PipelineExecutableInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipeline == rhs.pipeline ) - && ( executableIndex == rhs.executableIndex ); - } - - bool operator!=( PipelineExecutableInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; - uint32_t executableIndex = {}; - - }; - static_assert( sizeof( PipelineExecutableInfoKHR ) == sizeof( VkPipelineExecutableInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineExecutableInfoKHR; - }; - - struct PipelineExecutableInternalRepresentationKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutableInternalRepresentationKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInternalRepresentationKHR(std::array const& name_ = {}, std::array const& description_ = {}, VULKAN_HPP_NAMESPACE::Bool32 isText_ = {}, size_t dataSize_ = {}, void* pData_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - template - PipelineExecutableInternalRepresentationKHR( std::array const& name_, std::array const& description_, VULKAN_HPP_NAMESPACE::Bool32 isText_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) - : name( name_ ), description( description_ ), isText( isText_ ), dataSize( data_.size() * sizeof(T) ), pData( data_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineExecutableInternalRepresentationKHR & operator=( PipelineExecutableInternalRepresentationKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineExecutableInternalRepresentationKHR const& ) const = default; -#else - bool operator==( PipelineExecutableInternalRepresentationKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( name == rhs.name ) - && ( description == rhs.description ) - && ( isText == rhs.isText ) - && ( dataSize == rhs.dataSize ) - && ( pData == rhs.pData ); - } - - bool operator!=( PipelineExecutableInternalRepresentationKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableInternalRepresentationKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; - VULKAN_HPP_NAMESPACE::Bool32 isText = {}; - size_t dataSize = {}; - void* pData = {}; - - }; - static_assert( sizeof( PipelineExecutableInternalRepresentationKHR ) == sizeof( VkPipelineExecutableInternalRepresentationKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineExecutableInternalRepresentationKHR; - }; - - struct PipelineInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineInfoKHR(VULKAN_HPP_NAMESPACE::Pipeline pipeline_ = {}) VULKAN_HPP_NOEXCEPT - : pipeline( pipeline_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineInfoKHR( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineInfoKHR( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineInfoKHR & operator=( PipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineInfoKHR & operator=( VkPipelineInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineInfoKHR & setPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline_ ) VULKAN_HPP_NOEXCEPT - { - pipeline = pipeline_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineInfoKHR const& ) const = default; -#else - bool operator==( PipelineInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipeline == rhs.pipeline ); - } - - bool operator!=( PipelineInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Pipeline pipeline = {}; - - }; - static_assert( sizeof( PipelineInfoKHR ) == sizeof( VkPipelineInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineInfoKHR; - }; - - struct PipelineExecutablePropertiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutablePropertiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR(VULKAN_HPP_NAMESPACE::ShaderStageFlags stages_ = {}, std::array const& name_ = {}, std::array const& description_ = {}, uint32_t subgroupSize_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineExecutablePropertiesKHR & operator=( PipelineExecutablePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineExecutablePropertiesKHR const& ) const = default; -#else - bool operator==( PipelineExecutablePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stages == rhs.stages ) - && ( name == rhs.name ) - && ( description == rhs.description ) - && ( subgroupSize == rhs.subgroupSize ); - } - - bool operator!=( PipelineExecutablePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutablePropertiesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ShaderStageFlags stages = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; - uint32_t subgroupSize = {}; - - }; - static_assert( sizeof( PipelineExecutablePropertiesKHR ) == sizeof( VkPipelineExecutablePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineExecutablePropertiesKHR; - }; - - union PipelineExecutableStatisticValueKHR - { - PipelineExecutableStatisticValueKHR( VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR const& rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR ) ); - } - - PipelineExecutableStatisticValueKHR( VULKAN_HPP_NAMESPACE::Bool32 b32_ = {} ) - : b32( b32_ ) - {} - - PipelineExecutableStatisticValueKHR( int64_t i64_ ) - : i64( i64_ ) - {} - - PipelineExecutableStatisticValueKHR( uint64_t u64_ ) - : u64( u64_ ) - {} - - PipelineExecutableStatisticValueKHR( double f64_ ) - : f64( f64_ ) - {} - - PipelineExecutableStatisticValueKHR & setB32( VULKAN_HPP_NAMESPACE::Bool32 b32_ ) VULKAN_HPP_NOEXCEPT - { - b32 = b32_; - return *this; - } - - PipelineExecutableStatisticValueKHR & setI64( int64_t i64_ ) VULKAN_HPP_NOEXCEPT - { - i64 = i64_; - return *this; - } - - PipelineExecutableStatisticValueKHR & setU64( uint64_t u64_ ) VULKAN_HPP_NOEXCEPT - { - u64 = u64_; - return *this; - } - - PipelineExecutableStatisticValueKHR & setF64( double f64_ ) VULKAN_HPP_NOEXCEPT - { - f64 = f64_; - return *this; - } - - VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR & operator=( VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR ) ); - return *this; - } - - operator VkPipelineExecutableStatisticValueKHR const&() const - { - return *reinterpret_cast(this); - } - - operator VkPipelineExecutableStatisticValueKHR &() - { - return *reinterpret_cast(this); - } - -#ifdef VULKAN_HPP_HAS_UNRESTRICTED_UNIONS - VULKAN_HPP_NAMESPACE::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*/ - }; - - struct PipelineExecutableStatisticKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineExecutableStatisticKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - PipelineExecutableStatisticKHR(std::array const& name_ = {}, std::array const& description_ = {}, VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR format_ = VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32, VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR value_ = {}) VULKAN_HPP_NOEXCEPT - : name( name_ ), description( description_ ), format( format_ ), value( value_ ) - {} - - PipelineExecutableStatisticKHR( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineExecutableStatisticKHR( VkPipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineExecutableStatisticKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - PipelineExecutableStatisticKHR & operator=( PipelineExecutableStatisticKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineExecutableStatisticKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; - VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR format = VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticFormatKHR::eBool32; - VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticValueKHR value = {}; - - }; - static_assert( sizeof( PipelineExecutableStatisticKHR ) == sizeof( VkPipelineExecutableStatisticKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineExecutableStatisticKHR; - }; - - struct RefreshCycleDurationGOOGLE - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RefreshCycleDurationGOOGLE & operator=( RefreshCycleDurationGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RefreshCycleDurationGOOGLE const& ) const = default; -#else - bool operator==( RefreshCycleDurationGOOGLE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( refreshDuration == rhs.refreshDuration ); - } - - bool operator!=( RefreshCycleDurationGOOGLE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint64_t refreshDuration = {}; - - }; - static_assert( sizeof( RefreshCycleDurationGOOGLE ) == sizeof( VkRefreshCycleDurationGOOGLE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SemaphoreGetFdInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreGetFdInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SemaphoreGetFdInfoKHR(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SemaphoreGetFdInfoKHR & operator=( SemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SemaphoreGetFdInfoKHR & operator=( VkSemaphoreGetFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SemaphoreGetFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SemaphoreGetFdInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT - { - semaphore = semaphore_; - return *this; - } - - SemaphoreGetFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SemaphoreGetFdInfoKHR const& ) const = default; -#else - bool operator==( SemaphoreGetFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( SemaphoreGetFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetFdInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; - VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( SemaphoreGetFdInfoKHR ) == sizeof( VkSemaphoreGetFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SemaphoreGetFdInfoKHR; - }; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct SemaphoreGetWin32HandleInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreGetWin32HandleInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SemaphoreGetWin32HandleInfoKHR(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SemaphoreGetWin32HandleInfoKHR & operator=( SemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SemaphoreGetWin32HandleInfoKHR & operator=( VkSemaphoreGetWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SemaphoreGetWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SemaphoreGetWin32HandleInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT - { - semaphore = semaphore_; - return *this; - } - - SemaphoreGetWin32HandleInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SemaphoreGetWin32HandleInfoKHR const& ) const = default; -#else - bool operator==( SemaphoreGetWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( SemaphoreGetWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreGetWin32HandleInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; - VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( SemaphoreGetWin32HandleInfoKHR ) == sizeof( VkSemaphoreGetWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SemaphoreGetWin32HandleInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct ImportFenceFdInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportFenceFdInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImportFenceFdInfoKHR(VULKAN_HPP_NAMESPACE::Fence fence_ = {}, VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd, int fd_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImportFenceFdInfoKHR & operator=( ImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportFenceFdInfoKHR & operator=( VkImportFenceFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImportFenceFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImportFenceFdInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT - { - fence = fence_; - return *this; - } - - ImportFenceFdInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ImportFenceFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *this; - } - - ImportFenceFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT - { - fd = fd_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImportFenceFdInfoKHR const& ) const = default; -#else - bool operator==( ImportFenceFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fence == rhs.fence ) - && ( flags == rhs.flags ) - && ( handleType == rhs.handleType ) - && ( fd == rhs.fd ); - } - - bool operator!=( ImportFenceFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceFdInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Fence fence = {}; - VULKAN_HPP_NAMESPACE::FenceImportFlags flags = {}; - VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; - int fd = {}; - - }; - static_assert( sizeof( ImportFenceFdInfoKHR ) == sizeof( VkImportFenceFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImportFenceFdInfoKHR; - }; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ImportFenceWin32HandleInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportFenceWin32HandleInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImportFenceWin32HandleInfoKHR(VULKAN_HPP_NAMESPACE::Fence fence_ = {}, VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd, HANDLE handle_ = {}, LPCWSTR name_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImportFenceWin32HandleInfoKHR & operator=( ImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportFenceWin32HandleInfoKHR & operator=( VkImportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImportFenceWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setFence( VULKAN_HPP_NAMESPACE::Fence fence_ ) VULKAN_HPP_NOEXCEPT - { - fence = fence_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::FenceImportFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT - { - handle = handle_; - return *this; - } - - ImportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT - { - name = name_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImportFenceWin32HandleInfoKHR const& ) const = default; -#else - bool operator==( ImportFenceWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fence == rhs.fence ) - && ( flags == rhs.flags ) - && ( handleType == rhs.handleType ) - && ( handle == rhs.handle ) - && ( name == rhs.name ); - } - - bool operator!=( ImportFenceWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportFenceWin32HandleInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Fence fence = {}; - VULKAN_HPP_NAMESPACE::FenceImportFlags flags = {}; - VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; - HANDLE handle = {}; - LPCWSTR name = {}; - - }; - static_assert( sizeof( ImportFenceWin32HandleInfoKHR ) == sizeof( VkImportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImportFenceWin32HandleInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct ImportSemaphoreFdInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportSemaphoreFdInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImportSemaphoreFdInfoKHR(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, int fd_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreFdInfoKHR & operator=( ImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportSemaphoreFdInfoKHR & operator=( VkImportSemaphoreFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImportSemaphoreFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImportSemaphoreFdInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT - { - semaphore = semaphore_; - return *this; - } - - ImportSemaphoreFdInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ImportSemaphoreFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *this; - } - - ImportSemaphoreFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT - { - fd = fd_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImportSemaphoreFdInfoKHR const& ) const = default; -#else - bool operator==( ImportSemaphoreFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( flags == rhs.flags ) - && ( handleType == rhs.handleType ) - && ( fd == rhs.fd ); - } - - bool operator!=( ImportSemaphoreFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreFdInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; - VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags = {}; - VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; - int fd = {}; - - }; - static_assert( sizeof( ImportSemaphoreFdInfoKHR ) == sizeof( VkImportSemaphoreFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImportSemaphoreFdInfoKHR; - }; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ImportSemaphoreWin32HandleInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportSemaphoreWin32HandleInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImportSemaphoreWin32HandleInfoKHR(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd, HANDLE handle_ = {}, LPCWSTR name_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImportSemaphoreWin32HandleInfoKHR & operator=( ImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportSemaphoreWin32HandleInfoKHR & operator=( VkImportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT - { - semaphore = semaphore_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT - { - handle = handle_; - return *this; - } - - ImportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT - { - name = name_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImportSemaphoreWin32HandleInfoKHR const& ) const = default; -#else - bool operator==( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( flags == rhs.flags ) - && ( handleType == rhs.handleType ) - && ( handle == rhs.handle ) - && ( name == rhs.name ); - } - - bool operator!=( ImportSemaphoreWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportSemaphoreWin32HandleInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; - VULKAN_HPP_NAMESPACE::SemaphoreImportFlags flags = {}; - VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; - HANDLE handle = {}; - LPCWSTR name = {}; - - }; - static_assert( sizeof( ImportSemaphoreWin32HandleInfoKHR ) == sizeof( VkImportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImportSemaphoreWin32HandleInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct InitializePerformanceApiInfoINTEL - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eInitializePerformanceApiInfoINTEL; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL(void* pUserData_ = {}) VULKAN_HPP_NOEXCEPT - : pUserData( pUserData_ ) - {} - - VULKAN_HPP_CONSTEXPR InitializePerformanceApiInfoINTEL( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - InitializePerformanceApiInfoINTEL( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - : InitializePerformanceApiInfoINTEL( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 InitializePerformanceApiInfoINTEL & operator=( InitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - InitializePerformanceApiInfoINTEL & operator=( VkInitializePerformanceApiInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - InitializePerformanceApiInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - InitializePerformanceApiInfoINTEL & setPUserData( void* pUserData_ ) VULKAN_HPP_NOEXCEPT - { - pUserData = pUserData_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( InitializePerformanceApiInfoINTEL const& ) const = default; -#else - bool operator==( InitializePerformanceApiInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pUserData == rhs.pUserData ); - } - - bool operator!=( InitializePerformanceApiInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eInitializePerformanceApiInfoINTEL; - const void* pNext = {}; - void* pUserData = {}; - - }; - static_assert( sizeof( InitializePerformanceApiInfoINTEL ) == sizeof( VkInitializePerformanceApiInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = InitializePerformanceApiInfoINTEL; - }; - - struct DisplayEventInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayEventInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT(VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut) VULKAN_HPP_NOEXCEPT - : displayEvent( displayEvent_ ) - {} - - VULKAN_HPP_CONSTEXPR DisplayEventInfoEXT( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayEventInfoEXT( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : DisplayEventInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayEventInfoEXT & operator=( DisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayEventInfoEXT & operator=( VkDisplayEventInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DisplayEventInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DisplayEventInfoEXT & setDisplayEvent( VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent_ ) VULKAN_HPP_NOEXCEPT - { - displayEvent = displayEvent_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayEventInfoEXT const& ) const = default; -#else - bool operator==( DisplayEventInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( displayEvent == rhs.displayEvent ); - } - - bool operator!=( DisplayEventInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayEventInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT displayEvent = VULKAN_HPP_NAMESPACE::DisplayEventTypeEXT::eFirstPixelOut; - - }; - static_assert( sizeof( DisplayEventInfoEXT ) == sizeof( VkDisplayEventInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayEventInfoEXT; - }; - - struct XYColorEXT - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 XYColorEXT & operator=( XYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - XYColorEXT & operator=( VkXYColorEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - XYColorEXT & setX( float x_ ) VULKAN_HPP_NOEXCEPT - { - x = x_; - return *this; - } - - XYColorEXT & setY( float y_ ) VULKAN_HPP_NOEXCEPT - { - y = y_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( XYColorEXT const& ) const = default; -#else - bool operator==( XYColorEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( x == rhs.x ) - && ( y == rhs.y ); - } - - bool operator!=( XYColorEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - float x = {}; - float y = {}; - - }; - static_assert( sizeof( XYColorEXT ) == sizeof( VkXYColorEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct HdrMetadataEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHdrMetadataEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR HdrMetadataEXT(VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed_ = {}, VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen_ = {}, VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryBlue_ = {}, VULKAN_HPP_NAMESPACE::XYColorEXT whitePoint_ = {}, float maxLuminance_ = {}, float minLuminance_ = {}, float maxContentLightLevel_ = {}, float maxFrameAverageLightLevel_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 HdrMetadataEXT & operator=( HdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - HdrMetadataEXT & operator=( VkHdrMetadataEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - HdrMetadataEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - HdrMetadataEXT & setDisplayPrimaryRed( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryRed_ ) VULKAN_HPP_NOEXCEPT - { - displayPrimaryRed = displayPrimaryRed_; - return *this; - } - - HdrMetadataEXT & setDisplayPrimaryGreen( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryGreen_ ) VULKAN_HPP_NOEXCEPT - { - displayPrimaryGreen = displayPrimaryGreen_; - return *this; - } - - HdrMetadataEXT & setDisplayPrimaryBlue( VULKAN_HPP_NAMESPACE::XYColorEXT const & displayPrimaryBlue_ ) VULKAN_HPP_NOEXCEPT - { - displayPrimaryBlue = displayPrimaryBlue_; - return *this; - } - - HdrMetadataEXT & setWhitePoint( VULKAN_HPP_NAMESPACE::XYColorEXT const & whitePoint_ ) VULKAN_HPP_NOEXCEPT - { - whitePoint = whitePoint_; - return *this; - } - - HdrMetadataEXT & setMaxLuminance( float maxLuminance_ ) VULKAN_HPP_NOEXCEPT - { - maxLuminance = maxLuminance_; - return *this; - } - - HdrMetadataEXT & setMinLuminance( float minLuminance_ ) VULKAN_HPP_NOEXCEPT - { - minLuminance = minLuminance_; - return *this; - } - - HdrMetadataEXT & setMaxContentLightLevel( float maxContentLightLevel_ ) VULKAN_HPP_NOEXCEPT - { - maxContentLightLevel = maxContentLightLevel_; - return *this; - } - - HdrMetadataEXT & setMaxFrameAverageLightLevel( float maxFrameAverageLightLevel_ ) VULKAN_HPP_NOEXCEPT - { - maxFrameAverageLightLevel = maxFrameAverageLightLevel_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( HdrMetadataEXT const& ) const = default; -#else - bool operator==( HdrMetadataEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( HdrMetadataEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHdrMetadataEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryRed = {}; - VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryGreen = {}; - VULKAN_HPP_NAMESPACE::XYColorEXT displayPrimaryBlue = {}; - VULKAN_HPP_NAMESPACE::XYColorEXT whitePoint = {}; - float maxLuminance = {}; - float minLuminance = {}; - float maxContentLightLevel = {}; - float maxFrameAverageLightLevel = {}; - - }; - static_assert( sizeof( HdrMetadataEXT ) == sizeof( VkHdrMetadataEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = HdrMetadataEXT; - }; - - struct SemaphoreSignalInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreSignalInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SemaphoreSignalInfo(VULKAN_HPP_NAMESPACE::Semaphore semaphore_ = {}, uint64_t value_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SemaphoreSignalInfo & operator=( SemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SemaphoreSignalInfo & operator=( VkSemaphoreSignalInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SemaphoreSignalInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SemaphoreSignalInfo & setSemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore_ ) VULKAN_HPP_NOEXCEPT - { - semaphore = semaphore_; - return *this; - } - - SemaphoreSignalInfo & setValue( uint64_t value_ ) VULKAN_HPP_NOEXCEPT - { - value = value_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SemaphoreSignalInfo const& ) const = default; -#else - bool operator==( SemaphoreSignalInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphore == rhs.semaphore ) - && ( value == rhs.value ); - } - - bool operator!=( SemaphoreSignalInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreSignalInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Semaphore semaphore = {}; - uint64_t value = {}; - - }; - static_assert( sizeof( SemaphoreSignalInfo ) == sizeof( VkSemaphoreSignalInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SemaphoreSignalInfo; - }; - using SemaphoreSignalInfoKHR = SemaphoreSignalInfo; - - struct SemaphoreWaitInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreWaitInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SemaphoreWaitInfo(VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_ = {}, uint32_t semaphoreCount_ = {}, const VULKAN_HPP_NAMESPACE::Semaphore* pSemaphores_ = {}, const uint64_t* pValues_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & semaphores_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & values_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SemaphoreWaitInfo & operator=( SemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SemaphoreWaitInfo & operator=( VkSemaphoreWaitInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SemaphoreWaitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SemaphoreWaitInfo & setFlags( VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - SemaphoreWaitInfo & setSemaphoreCount( uint32_t semaphoreCount_ ) VULKAN_HPP_NOEXCEPT - { - semaphoreCount = semaphoreCount_; - return *this; - } - - SemaphoreWaitInfo & setPSemaphores( const VULKAN_HPP_NAMESPACE::Semaphore* pSemaphores_ ) VULKAN_HPP_NOEXCEPT - { - pSemaphores = pSemaphores_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SemaphoreWaitInfo & setSemaphores( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & semaphores_ ) VULKAN_HPP_NOEXCEPT - { - semaphoreCount = static_cast( semaphores_.size() ); - pSemaphores = semaphores_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - SemaphoreWaitInfo & setPValues( const uint64_t* pValues_ ) VULKAN_HPP_NOEXCEPT - { - pValues = pValues_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - SemaphoreWaitInfo & setValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & values_ ) VULKAN_HPP_NOEXCEPT - { - semaphoreCount = static_cast( values_.size() ); - pValues = values_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkSemaphoreWaitInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSemaphoreWaitInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SemaphoreWaitInfo const& ) const = default; -#else - bool operator==( SemaphoreWaitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( semaphoreCount == rhs.semaphoreCount ) - && ( pSemaphores == rhs.pSemaphores ) - && ( pValues == rhs.pValues ); - } - - bool operator!=( SemaphoreWaitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreWaitInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SemaphoreWaitFlags flags = {}; - uint32_t semaphoreCount = {}; - const VULKAN_HPP_NAMESPACE::Semaphore* pSemaphores = {}; - const uint64_t* pValues = {}; - - }; - static_assert( sizeof( SemaphoreWaitInfo ) == sizeof( VkSemaphoreWaitInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SemaphoreWaitInfo; - }; - using SemaphoreWaitInfoKHR = SemaphoreWaitInfo; - -#ifndef VULKAN_HPP_NO_SMART_HANDLE - class Device; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueAccelerationStructureKHR = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueAccelerationStructureNV = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueBuffer = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueBufferView = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = PoolFree; }; - using UniqueCommandBuffer = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueCommandPool = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDeferredOperationKHR = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDescriptorPool = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = PoolFree; }; - using UniqueDescriptorSet = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDescriptorSetLayout = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDescriptorUpdateTemplate = UniqueHandle; - using UniqueDescriptorUpdateTemplateKHR = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectFree; }; - using UniqueDeviceMemory = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueEvent = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueFence = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueFramebuffer = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueImage = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueImageView = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueIndirectCommandsLayoutNV = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniquePipeline = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniquePipelineCache = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniquePipelineLayout = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniquePrivateDataSlotEXT = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueQueryPool = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueRenderPass = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSampler = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSamplerYcbcrConversion = UniqueHandle; - using UniqueSamplerYcbcrConversionKHR = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSemaphore = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueShaderModule = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSwapchainKHR = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueValidationCacheEXT = UniqueHandle; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ - - class Device - { - public: - using CType = VkDevice; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDevice; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDevice; - - public: - VULKAN_HPP_CONSTEXPR Device() VULKAN_HPP_NOEXCEPT - : m_device(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Device( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_device(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Device( VkDevice device ) VULKAN_HPP_NOEXCEPT - : m_device( device ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Device & operator=(VkDevice device) VULKAN_HPP_NOEXCEPT - { - m_device = device; - return *this; - } -#endif - - Device & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_device = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Device const& ) const = default; -#else - bool operator==( Device const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_device == rhs.m_device; - } - - bool operator!=(Device const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_device != rhs.m_device; - } - - bool operator<(Device const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_device < rhs.m_device; - } -#endif - - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result acquireFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type acquireFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - - template - VULKAN_HPP_NODISCARD Result acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD ResultValue acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result acquireNextImageKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, uint64_t timeout, VULKAN_HPP_NAMESPACE::Semaphore semaphore, VULKAN_HPP_NAMESPACE::Fence fence, uint32_t* pImageIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD ResultValue acquireNextImageKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, uint64_t timeout, VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result acquirePerformanceConfigurationINTEL( const VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL* pConfiguration, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type acquirePerformanceConfigurationINTEL( const PerformanceConfigurationAcquireInfoINTEL & acquireInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type acquirePerformanceConfigurationINTELUnique( const PerformanceConfigurationAcquireInfoINTEL & acquireInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type acquireProfilingLockKHR( const AcquireProfilingLockInfoKHR & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result allocateCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo* pAllocateInfo, VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = CommandBufferAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, CommandBufferAllocator & commandBufferAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template >> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType, CommandBufferAllocator>>::type allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template >, typename B = CommandBufferAllocator, typename std::enable_if>::value, int>::type = 0> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType, CommandBufferAllocator>>::type allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, CommandBufferAllocator & commandBufferAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result allocateDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo* pAllocateInfo, VULKAN_HPP_NAMESPACE::DescriptorSet* pDescriptorSets, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = DescriptorSetAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, DescriptorSetAllocator & descriptorSetAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template >> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType, DescriptorSetAllocator>>::type allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template >, typename B = DescriptorSetAllocator, typename std::enable_if>::value, int>::type = 0> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType, DescriptorSetAllocator>>::type allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, DescriptorSetAllocator & descriptorSetAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result allocateMemory( const VULKAN_HPP_NAMESPACE::MemoryAllocateInfo* pAllocateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DeviceMemory* pMemory, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result bindAccelerationStructureMemoryNV( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV* pBindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result bindBufferMemory( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type bindBufferMemory( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD Result bindBufferMemory2( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo* pBindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - template - VULKAN_HPP_NODISCARD Result bindBufferMemory2KHR( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo* pBindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result bindImageMemory( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type bindImageMemory( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD Result bindImageMemory2( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo* pBindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - template - VULKAN_HPP_NODISCARD Result bindImageMemory2KHR( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo* pBindInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - VULKAN_HPP_NODISCARD Result buildAccelerationStructuresKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, uint32_t infoCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR* pInfos, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR* const * ppBuildRangeInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result buildAccelerationStructuresKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, 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*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result compileDeferredNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t shader, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type compileDeferredNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t shader, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD Result copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const CopyAccelerationStructureInfoKHR & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const CopyAccelerationStructureToMemoryInfoKHR & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const CopyMemoryToAccelerationStructureInfoKHR & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructure, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createAccelerationStructureKHR( const AccelerationStructureCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createAccelerationStructureKHRUnique( const AccelerationStructureCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::AccelerationStructureNV* pAccelerationStructure, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type createAccelerationStructureNV( const AccelerationStructureCreateInfoNV & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type createAccelerationStructureNVUnique( const AccelerationStructureCreateInfoNV & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createBuffer( const VULKAN_HPP_NAMESPACE::BufferCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Buffer* pBuffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createBuffer( const BufferCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createBufferUnique( const BufferCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createBufferView( const VULKAN_HPP_NAMESPACE::BufferViewCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::BufferView* pView, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createBufferView( const BufferViewCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createCommandPool( const VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::CommandPool* pCommandPool, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createCommandPool( const CommandPoolCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, uint32_t createInfoCount, const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Pipeline* pPipelines, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD ResultValue> createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PipelineAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD ResultValue> createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD ResultValue createComputePipeline( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template >> - VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> createComputePipelinesUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template >, typename B = PipelineAllocator, typename std::enable_if>::value, int>::type = 0> - VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> createComputePipelinesUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD ResultValue> createComputePipelineUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createDeferredOperationKHR( const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DeferredOperationKHR* pDeferredOperation, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type createDeferredOperationKHR( Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type createDeferredOperationKHRUnique( Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createDescriptorPool( const VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DescriptorPool* pDescriptorPool, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createDescriptorSetLayout( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DescriptorSetLayout* pSetLayout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createDescriptorUpdateTemplate( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createDescriptorUpdateTemplateUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD Result createDescriptorUpdateTemplateKHR( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createEvent( const VULKAN_HPP_NAMESPACE::EventCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Event* pEvent, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createEvent( const EventCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createEventUnique( const EventCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createFence( const VULKAN_HPP_NAMESPACE::FenceCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Fence* pFence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createFence( const FenceCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createFenceUnique( const FenceCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createFramebuffer( const VULKAN_HPP_NAMESPACE::FramebufferCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Framebuffer* pFramebuffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createFramebuffer( const FramebufferCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, uint32_t createInfoCount, const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Pipeline* pPipelines, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD ResultValue> createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PipelineAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD ResultValue> createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD ResultValue createGraphicsPipeline( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template >> - VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> createGraphicsPipelinesUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template >, typename B = PipelineAllocator, typename std::enable_if>::value, int>::type = 0> - VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> createGraphicsPipelinesUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD ResultValue> createGraphicsPipelineUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createImage( const VULKAN_HPP_NAMESPACE::ImageCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Image* pImage, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createImage( const ImageCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createImageUnique( const ImageCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createImageView( const VULKAN_HPP_NAMESPACE::ImageViewCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::ImageView* pView, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createImageView( const ImageViewCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createIndirectCommandsLayoutNV( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV* pIndirectCommandsLayout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createIndirectCommandsLayoutNV( const IndirectCommandsLayoutCreateInfoNV & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createIndirectCommandsLayoutNVUnique( const IndirectCommandsLayoutCreateInfoNV & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createPipelineCache( const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::PipelineCache* pPipelineCache, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createPipelineLayout( const VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::PipelineLayout* pPipelineLayout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createPrivateDataSlotEXT( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT* pPrivateDataSlot, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type createPrivateDataSlotEXT( const PrivateDataSlotCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type createPrivateDataSlotEXTUnique( const PrivateDataSlotCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createQueryPool( const VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::QueryPool* pQueryPool, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createQueryPool( const QueryPoolCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createRayTracingPipelinesKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, uint32_t createInfoCount, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Pipeline* pPipelines, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD ResultValue> createRayTracingPipelinesKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PipelineAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD ResultValue> createRayTracingPipelinesKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD ResultValue createRayTracingPipelineKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template >> - VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> createRayTracingPipelinesKHRUnique( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template >, typename B = PipelineAllocator, typename std::enable_if>::value, int>::type = 0> - VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> createRayTracingPipelinesKHRUnique( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD ResultValue> createRayTracingPipelineKHRUnique( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createRayTracingPipelinesNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, uint32_t createInfoCount, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Pipeline* pPipelines, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD ResultValue> createRayTracingPipelinesNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PipelineAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD ResultValue> createRayTracingPipelinesNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD ResultValue createRayTracingPipelineNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template >> - VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> createRayTracingPipelinesNVUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template >, typename B = PipelineAllocator, typename std::enable_if>::value, int>::type = 0> - VULKAN_HPP_NODISCARD ResultValue, PipelineAllocator>> createRayTracingPipelinesNVUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD ResultValue> createRayTracingPipelineNVUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::RenderPass* pRenderPass, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createRenderPass( const RenderPassCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::RenderPass* pRenderPass, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createRenderPass2( const RenderPassCreateInfo2 & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createRenderPass2Unique( const RenderPassCreateInfo2 & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD Result createRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::RenderPass* pRenderPass, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createRenderPass2KHR( const RenderPassCreateInfo2 & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createRenderPass2KHRUnique( const RenderPassCreateInfo2 & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createSampler( const VULKAN_HPP_NAMESPACE::SamplerCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Sampler* pSampler, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createSampler( const SamplerCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createSamplerUnique( const SamplerCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createSamplerYcbcrConversion( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion* pYcbcrConversion, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createSamplerYcbcrConversionUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD Result createSamplerYcbcrConversionKHR( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion* pYcbcrConversion, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Semaphore* pSemaphore, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createSemaphore( const SemaphoreCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createShaderModule( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::ShaderModule* pShaderModule, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createSharedSwapchainsKHR( uint32_t swapchainCount, const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SwapchainKHR* pSwapchains, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type createSharedSwapchainsKHR( ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = SwapchainKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type createSharedSwapchainsKHR( ArrayProxy const & createInfos, Optional allocator, SwapchainKHRAllocator & swapchainKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createSharedSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template >> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType, SwapchainKHRAllocator>>::type createSharedSwapchainsKHRUnique( ArrayProxy const & createInfos, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template >, typename B = SwapchainKHRAllocator, typename std::enable_if>::value, int>::type = 0> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType, SwapchainKHRAllocator>>::type createSharedSwapchainsKHRUnique( ArrayProxy const & createInfos, Optional allocator, SwapchainKHRAllocator & swapchainKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type createSharedSwapchainKHRUnique( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SwapchainKHR* pSwapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createValidationCacheEXT( const VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::ValidationCacheEXT* pValidationCache, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT* pNameInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT* pTagInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result deferredOperationJoinKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD Result deferredOperationJoinKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - void destroyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::Buffer buffer, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::Buffer buffer, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::BufferView bufferView, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::BufferView bufferView, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::CommandPool commandPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::CommandPool commandPool, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyDeferredOperationKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDeferredOperationKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyEvent( VULKAN_HPP_NAMESPACE::Event event, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyEvent( VULKAN_HPP_NAMESPACE::Event event VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::Event event, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::Event event, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyFence( VULKAN_HPP_NAMESPACE::Fence fence, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyFence( VULKAN_HPP_NAMESPACE::Fence fence VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::Fence fence, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::Fence fence, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyImage( VULKAN_HPP_NAMESPACE::Image image, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyImage( VULKAN_HPP_NAMESPACE::Image image VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::Image image, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::Image image, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyImageView( VULKAN_HPP_NAMESPACE::ImageView imageView, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyImageView( VULKAN_HPP_NAMESPACE::ImageView imageView VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::ImageView imageView, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::ImageView imageView, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyIndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyIndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::Pipeline pipeline, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::Pipeline pipeline, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::QueryPool queryPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::QueryPool queryPool, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::RenderPass renderPass, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::RenderPass renderPass, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroySampler( VULKAN_HPP_NAMESPACE::Sampler sampler, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySampler( VULKAN_HPP_NAMESPACE::Sampler sampler VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::Sampler sampler, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::Sampler sampler, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroySamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroySemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::Semaphore semaphore, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::Semaphore semaphore, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyShaderModule( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyShaderModule( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroySwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyValidationCacheEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyValidationCacheEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result waitIdle( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - 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*/ - - - - template - VULKAN_HPP_NODISCARD Result displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT* pDisplayPowerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result flushMappedMemoryRanges( uint32_t memoryRangeCount, const VULKAN_HPP_NAMESPACE::MappedMemoryRange* pMemoryRanges, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void freeCommandBuffers( VULKAN_HPP_NAMESPACE::CommandPool commandPool, uint32_t commandBufferCount, const VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void freeCommandBuffers( VULKAN_HPP_NAMESPACE::CommandPool commandPool, ArrayProxy const & commandBuffers, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void free( VULKAN_HPP_NAMESPACE::CommandPool commandPool, uint32_t commandBufferCount, const VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void free( VULKAN_HPP_NAMESPACE::CommandPool commandPool, ArrayProxy const & commandBuffers, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - Result freeDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, uint32_t descriptorSetCount, const VULKAN_HPP_NAMESPACE::DescriptorSet* pDescriptorSets, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type freeDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, ArrayProxy const & descriptorSets, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - Result free( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, uint32_t descriptorSetCount, const VULKAN_HPP_NAMESPACE::DescriptorSet* pDescriptorSets, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type free( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, ArrayProxy const & descriptorSets, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void freeMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void freeMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void free( VULKAN_HPP_NAMESPACE::DeviceMemory memory, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void free( VULKAN_HPP_NAMESPACE::DeviceMemory memory, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR* pSizeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, const AccelerationStructureBuildGeometryInfoKHR & buildInfo, ArrayProxy const & maxPrimitiveCounts VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - DeviceAddress getAccelerationStructureAddressKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - DeviceAddress getAccelerationStructureAddressKHR( const AccelerationStructureDeviceAddressInfoKHR & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::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 - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, ArrayProxy const &data, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, size_t dataSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getAccelerationStructureMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR* pMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - VULKAN_HPP_NODISCARD Result getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer* buffer, VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - - template - DeviceAddress getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - DeviceAddress getBufferAddress( const BufferDeviceAddressInfo & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - DeviceAddress getBufferAddressEXT( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - DeviceAddress getBufferAddressEXT( const BufferDeviceAddressInfo & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - DeviceAddress getBufferAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - DeviceAddress getBufferAddressKHR( const BufferDeviceAddressInfo & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getBufferMemoryRequirements( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::MemoryRequirements* pMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getBufferMemoryRequirements( VULKAN_HPP_NAMESPACE::Buffer buffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - uint64_t getBufferOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - uint64_t getBufferOpaqueCaptureAddress( const BufferDeviceAddressInfo & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - uint64_t getBufferOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - uint64_t getBufferOpaqueCaptureAddressKHR( const BufferDeviceAddressInfo & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getCalibratedTimestampsEXT( uint32_t timestampCount, const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT* 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 - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getCalibratedTimestampsEXT( ArrayProxy const ×tampInfos, ArrayProxy const ×tamps, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType, uint64_t>>::type getCalibratedTimestampsEXT( ArrayProxy const & timestampInfos, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = Uint64_tAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType, uint64_t>>::type getCalibratedTimestampsEXT( ArrayProxy const & timestampInfos, Uint64_tAllocator & uint64_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - uint32_t getDeferredOperationMaxConcurrencyKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result getDeferredOperationResultKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD Result getDeferredOperationResultKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - void getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo* pCreateInfo, VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport* pSupport, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo* pCreateInfo, VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport* pSupport, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getAccelerationStructureCompatibilityKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR* pVersionInfo, VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR* pCompatibility, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR getAccelerationStructureCompatibilityKHR( const AccelerationStructureVersionInfoKHR & versionInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::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*/ - - template - void getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::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*/ - - - template - VULKAN_HPP_NODISCARD Result getGroupPresentCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getGroupPresentCapabilitiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result getGroupSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getGroupSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD Result getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getMemoryCommitment( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize* pCommittedMemoryInBytes, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::DeviceSize getMemoryCommitment( VULKAN_HPP_NAMESPACE::DeviceMemory memory, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - uint64_t getMemoryOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - uint64_t getMemoryOpaqueCaptureAddress( const DeviceMemoryOpaqueCaptureAddressInfo & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - uint64_t getMemoryOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - uint64_t getMemoryOpaqueCaptureAddressKHR( const DeviceMemoryOpaqueCaptureAddressInfo & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - PFN_vkVoidFunction getProcAddr( const char* pName, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - PFN_vkVoidFunction getProcAddr( const std::string & name, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, VULKAN_HPP_NAMESPACE::Queue* pQueue, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::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*/ - - - template - void getQueue2( const VULKAN_HPP_NAMESPACE::DeviceQueueInfo2* pQueueInfo, VULKAN_HPP_NAMESPACE::Queue* pQueue, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Queue getQueue2( const DeviceQueueInfo2 & queueInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result getEventStatus( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD Result getEventStatus( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD Result getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result getFenceStatus( VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD Result getFenceStatus( VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - void getGeneratedCommandsMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getGeneratedCommandsMemoryRequirementsNV( const GeneratedCommandsMemoryRequirementsInfoNV & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getGeneratedCommandsMemoryRequirementsNV( const GeneratedCommandsMemoryRequirementsInfoNV & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getImageDrmFormatModifierPropertiesEXT( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type getImageDrmFormatModifierPropertiesEXT( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getImageMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::MemoryRequirements* pMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements getImageMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MemoryRequirements2 getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, uint32_t* pSparseMemoryRequirementCount, VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements* pSparseMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = SparseImageMemoryRequirementsAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, SparseImageMemoryRequirementsAllocator & sparseImageMemoryRequirementsAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = SparseImageMemoryRequirements2Allocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getImageSparseMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = SparseImageMemoryRequirements2Allocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getImageSubresourceLayout( VULKAN_HPP_NAMESPACE::Image image, const VULKAN_HPP_NAMESPACE::ImageSubresource* pSubresource, VULKAN_HPP_NAMESPACE::SubresourceLayout* pLayout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::SubresourceLayout getImageSubresourceLayout( VULKAN_HPP_NAMESPACE::Image image, const ImageSubresource & subresource, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getImageViewAddressNVX( VULKAN_HPP_NAMESPACE::ImageView imageView, VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getImageViewAddressNVX( VULKAN_HPP_NAMESPACE::ImageView imageView, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - uint32_t getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX* pInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - uint32_t getImageViewHandleNVX( const ImageViewHandleInfoNVX & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - VULKAN_HPP_NODISCARD Result getMemoryAndroidHardwareBufferANDROID( const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - - template - VULKAN_HPP_NODISCARD Result getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, int fd, VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR* pMemoryFdProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::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*/ - - - template - VULKAN_HPP_NODISCARD Result getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE* pPresentationTimings, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PastPresentationTimingGOOGLEAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, PastPresentationTimingGOOGLEAllocator & pastPresentationTimingGOOGLEAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter, VULKAN_HPP_NAMESPACE::PerformanceValueINTEL* pValue, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getPipelineCacheData( VULKAN_HPP_NAMESPACE::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 - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = Uint8_tAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, Uint8_tAllocator & uint8_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getPipelineExecutableInternalRepresentationsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR* pInternalRepresentations, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PipelineExecutableInternalRepresentationKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo, PipelineExecutableInternalRepresentationKHRAllocator & pipelineExecutableInternalRepresentationKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PipelineExecutablePropertiesKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo, PipelineExecutablePropertiesKHRAllocator & pipelineExecutablePropertiesKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getPipelineExecutableStatisticsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR* pStatistics, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PipelineExecutableStatisticKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo, PipelineExecutableStatisticKHRAllocator & pipelineExecutableStatisticKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, uint64_t* pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD uint64_t getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy const &data, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD ResultValue> getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD ResultValue getQueryPoolResult( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::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 - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy const &data, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getRayTracingCaptureReplayShaderGroupHandleKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::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 - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy const &data, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getRayTracingShaderGroupHandleKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD Result getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::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 - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy const &data, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getRayTracingShaderGroupHandleNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - DeviceSize getRayTracingShaderGroupStackSizeKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - VULKAN_HPP_NODISCARD Result getRefreshCycleDurationGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE* pDisplayTimingProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getRefreshCycleDurationGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getRenderAreaGranularity( VULKAN_HPP_NAMESPACE::RenderPass renderPass, VULKAN_HPP_NAMESPACE::Extent2D* pGranularity, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::Extent2D getRenderAreaGranularity( VULKAN_HPP_NAMESPACE::RenderPass renderPass, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSemaphoreCounterValue( VULKAN_HPP_NAMESPACE::Semaphore semaphore, uint64_t* pValue, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSemaphoreCounterValue( VULKAN_HPP_NAMESPACE::Semaphore semaphore, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD Result getSemaphoreCounterValueKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore, uint64_t* pValue, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSemaphoreCounterValueKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result getSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD Result getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, VULKAN_HPP_NAMESPACE::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 - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = Uint8_tAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, Uint8_tAllocator & uint8_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSwapchainCounterEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSwapchainCounterEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VULKAN_HPP_NAMESPACE::Image* pSwapchainImages, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = ImageAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, ImageAllocator & imageAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result getSwapchainStatusKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD Result getSwapchainStatusKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD Result getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::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 - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = Uint8_tAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, Uint8_tAllocator & uint8_tAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR* pImportFenceFdInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result importFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD Result importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result importSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD Result initializePerformanceApiINTEL( const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL* pInitializeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type initializePerformanceApiINTEL( const InitializePerformanceApiInfoINTEL & initializeInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const VULKAN_HPP_NAMESPACE::MappedMemoryRange* pMemoryRanges, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - VULKAN_HPP_NODISCARD Result mapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::DeviceSize size, VULKAN_HPP_NAMESPACE::MemoryMapFlags flags, void** ppData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type mapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::DeviceSize size, VULKAN_HPP_NAMESPACE::MemoryMapFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result mergePipelineCaches( VULKAN_HPP_NAMESPACE::PipelineCache dstCache, uint32_t srcCacheCount, const VULKAN_HPP_NAMESPACE::PipelineCache* pSrcCaches, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type mergePipelineCaches( VULKAN_HPP_NAMESPACE::PipelineCache dstCache, ArrayProxy const & srcCaches, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result mergeValidationCachesEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT dstCache, uint32_t srcCacheCount, const VULKAN_HPP_NAMESPACE::ValidationCacheEXT* pSrcCaches, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type mergeValidationCachesEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT dstCache, ArrayProxy const & srcCaches, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result registerEventEXT( const VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT* pDeviceEventInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Fence* pFence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type registerEventEXTUnique( const DeviceEventInfoEXT & deviceEventInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, const VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT* pDisplayEventInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Fence* pFence, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type registerDisplayEventEXTUnique( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result releaseFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type releaseFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result releasePerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type releasePerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result release( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type release( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - void releaseProfilingLockKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result resetCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - typename ResultValueType::type resetCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result resetDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - typename ResultValueType::type resetDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result resetEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - typename ResultValueType::type resetEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD Result resetFences( uint32_t fenceCount, const VULKAN_HPP_NAMESPACE::Fence* pFences, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type resetFences( ArrayProxy const & fences, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - template - void resetQueryPoolEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - VULKAN_HPP_NODISCARD Result setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT* pNameInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT* pTagInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result setEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type setEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - void setHdrMetadataEXT( uint32_t swapchainCount, const VULKAN_HPP_NAMESPACE::SwapchainKHR* pSwapchains, const VULKAN_HPP_NAMESPACE::HdrMetadataEXT* pMetadata, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - void setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::SwapchainKHR swapChain, VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, uint64_t data, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - typename ResultValueType::type setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, uint64_t data, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD Result signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo* pSignalInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type signalSemaphore( const SemaphoreSignalInfo & signalInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD Result signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo* pSignalInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type signalSemaphoreKHR( const SemaphoreSignalInfo & signalInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void trimCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - template - void trimCommandPoolKHR( VULKAN_HPP_NAMESPACE::CommandPool commandPool, VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void uninitializePerformanceApiINTEL( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void unmapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void updateDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - template - void updateDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - - - template - void updateDescriptorSets( uint32_t descriptorWriteCount, const VULKAN_HPP_NAMESPACE::WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VULKAN_HPP_NAMESPACE::CopyDescriptorSet* pDescriptorCopies, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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*/ - - - template - VULKAN_HPP_NODISCARD Result waitForFences( uint32_t fenceCount, const VULKAN_HPP_NAMESPACE::Fence* pFences, VULKAN_HPP_NAMESPACE::Bool32 waitAll, uint64_t timeout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result waitForFences( ArrayProxy const & fences, VULKAN_HPP_NAMESPACE::Bool32 waitAll, uint64_t timeout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo* pWaitInfo, uint64_t timeout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result waitSemaphores( const SemaphoreWaitInfo & waitInfo, uint64_t timeout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD Result waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo* pWaitInfo, uint64_t timeout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result waitSemaphoresKHR( const SemaphoreWaitInfo & waitInfo, uint64_t timeout, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructures, VULKAN_HPP_NAMESPACE::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 - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type writeAccelerationStructuresPropertiesKHR( ArrayProxy const &accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, ArrayProxy const &data, size_t stride, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, size_t dataSize, size_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type writeAccelerationStructuresPropertyKHR( ArrayProxy const & accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, size_t stride, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - VULKAN_HPP_TYPESAFE_EXPLICIT 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Device ) == sizeof( VkDevice ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Device; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Device; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Device; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct DisplayModeParametersKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayModeParametersKHR(VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayModeParametersKHR & operator=( DisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayModeParametersKHR & operator=( VkDisplayModeParametersKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DisplayModeParametersKHR & setVisibleRegion( VULKAN_HPP_NAMESPACE::Extent2D const & visibleRegion_ ) VULKAN_HPP_NOEXCEPT - { - visibleRegion = visibleRegion_; - return *this; - } - - DisplayModeParametersKHR & setRefreshRate( uint32_t refreshRate_ ) VULKAN_HPP_NOEXCEPT - { - refreshRate = refreshRate_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayModeParametersKHR const& ) const = default; -#else - bool operator==( DisplayModeParametersKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( visibleRegion == rhs.visibleRegion ) - && ( refreshRate == rhs.refreshRate ); - } - - bool operator!=( DisplayModeParametersKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Extent2D visibleRegion = {}; - uint32_t refreshRate = {}; - - }; - static_assert( sizeof( DisplayModeParametersKHR ) == sizeof( VkDisplayModeParametersKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayModeCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayModeCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayModeCreateInfoKHR(VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_ = {}, VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayModeCreateInfoKHR & operator=( DisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayModeCreateInfoKHR & operator=( VkDisplayModeCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DisplayModeCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DisplayModeCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DisplayModeCreateInfoKHR & setParameters( VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR const & parameters_ ) VULKAN_HPP_NOEXCEPT - { - parameters = parameters_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayModeCreateInfoKHR const& ) const = default; -#else - bool operator==( DisplayModeCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( parameters == rhs.parameters ); - } - - bool operator!=( DisplayModeCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DisplayModeCreateFlagsKHR flags = {}; - VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters = {}; - - }; - static_assert( sizeof( DisplayModeCreateInfoKHR ) == sizeof( VkDisplayModeCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayModeCreateInfoKHR; - }; - - class DisplayModeKHR - { - public: - using CType = VkDisplayModeKHR; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDisplayModeKHR; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDisplayModeKHR; - - public: - VULKAN_HPP_CONSTEXPR DisplayModeKHR() VULKAN_HPP_NOEXCEPT - : m_displayModeKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DisplayModeKHR( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_displayModeKHR(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DisplayModeKHR( VkDisplayModeKHR displayModeKHR ) VULKAN_HPP_NOEXCEPT - : m_displayModeKHR( displayModeKHR ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DisplayModeKHR & operator=(VkDisplayModeKHR displayModeKHR) VULKAN_HPP_NOEXCEPT - { - m_displayModeKHR = displayModeKHR; - return *this; - } -#endif - - DisplayModeKHR & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_displayModeKHR = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayModeKHR const& ) const = default; -#else - bool operator==( DisplayModeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_displayModeKHR == rhs.m_displayModeKHR; - } - - bool operator!=(DisplayModeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_displayModeKHR != rhs.m_displayModeKHR; - } - - bool operator<(DisplayModeKHR const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_displayModeKHR < rhs.m_displayModeKHR; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DisplayModeKHR ) == sizeof( VkDisplayModeKHR ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DisplayModeKHR; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DisplayModeKHR; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DisplayModeKHR; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct ExtensionProperties - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExtensionProperties & operator=( ExtensionProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExtensionProperties const& ) const = default; -#else - bool operator==( ExtensionProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( extensionName == rhs.extensionName ) - && ( specVersion == rhs.specVersion ); - } - - bool operator!=( ExtensionProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ArrayWrapper1D extensionName = {}; - uint32_t specVersion = {}; - - }; - static_assert( sizeof( ExtensionProperties ) == sizeof( VkExtensionProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct LayerProperties - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 LayerProperties & operator=( LayerProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( LayerProperties const& ) const = default; -#else - bool operator==( LayerProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( layerName == rhs.layerName ) - && ( specVersion == rhs.specVersion ) - && ( implementationVersion == rhs.implementationVersion ) - && ( description == rhs.description ); - } - - bool operator!=( LayerProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ArrayWrapper1D layerName = {}; - uint32_t specVersion = {}; - uint32_t implementationVersion = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; - - }; - static_assert( sizeof( LayerProperties ) == sizeof( VkLayerProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PerformanceCounterKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR(VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR unit_ = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric, VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR scope_ = VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer, VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage_ = VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32, std::array const& uuid_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PerformanceCounterKHR & operator=( PerformanceCounterKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PerformanceCounterKHR const& ) const = default; -#else - bool operator==( PerformanceCounterKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( unit == rhs.unit ) - && ( scope == rhs.scope ) - && ( storage == rhs.storage ) - && ( uuid == rhs.uuid ); - } - - bool operator!=( PerformanceCounterKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR unit = VULKAN_HPP_NAMESPACE::PerformanceCounterUnitKHR::eGeneric; - VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR scope = VULKAN_HPP_NAMESPACE::PerformanceCounterScopeKHR::eCommandBuffer; - VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR storage = VULKAN_HPP_NAMESPACE::PerformanceCounterStorageKHR::eInt32; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D uuid = {}; - - }; - static_assert( sizeof( PerformanceCounterKHR ) == sizeof( VkPerformanceCounterKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PerformanceCounterKHR; - }; - - struct PerformanceCounterDescriptionKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceCounterDescriptionKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR(VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags_ = {}, std::array const& name_ = {}, std::array const& category_ = {}, std::array const& description_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PerformanceCounterDescriptionKHR & operator=( PerformanceCounterDescriptionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PerformanceCounterDescriptionKHR const& ) const = default; -#else - bool operator==( PerformanceCounterDescriptionKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( name == rhs.name ) - && ( category == rhs.category ) - && ( description == rhs.description ); - } - - bool operator!=( PerformanceCounterDescriptionKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceCounterDescriptionKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionFlagsKHR flags = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D category = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; - - }; - static_assert( sizeof( PerformanceCounterDescriptionKHR ) == sizeof( VkPerformanceCounterDescriptionKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PerformanceCounterDescriptionKHR; - }; - - struct DisplayModePropertiesKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayModePropertiesKHR(VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayModePropertiesKHR & operator=( DisplayModePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayModePropertiesKHR const& ) const = default; -#else - bool operator==( DisplayModePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( displayMode == rhs.displayMode ) - && ( parameters == rhs.parameters ); - } - - bool operator!=( DisplayModePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode = {}; - VULKAN_HPP_NAMESPACE::DisplayModeParametersKHR parameters = {}; - - }; - static_assert( sizeof( DisplayModePropertiesKHR ) == sizeof( VkDisplayModePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayModeProperties2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayModeProperties2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR(VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties_ = {}) VULKAN_HPP_NOEXCEPT - : displayModeProperties( displayModeProperties_ ) - {} - - VULKAN_HPP_CONSTEXPR DisplayModeProperties2KHR( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayModeProperties2KHR( VkDisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : DisplayModeProperties2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayModeProperties2KHR & operator=( DisplayModeProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayModeProperties2KHR const& ) const = default; -#else - bool operator==( DisplayModeProperties2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( displayModeProperties == rhs.displayModeProperties ); - } - - bool operator!=( DisplayModeProperties2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayModeProperties2KHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR displayModeProperties = {}; - - }; - static_assert( sizeof( DisplayModeProperties2KHR ) == sizeof( VkDisplayModeProperties2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayModeProperties2KHR; - }; - - struct DisplayPlaneInfo2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneInfo2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayPlaneInfo2KHR(VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ = {}, uint32_t planeIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayPlaneInfo2KHR & operator=( DisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayPlaneInfo2KHR & operator=( VkDisplayPlaneInfo2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DisplayPlaneInfo2KHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DisplayPlaneInfo2KHR & setMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode_ ) VULKAN_HPP_NOEXCEPT - { - mode = mode_; - return *this; - } - - DisplayPlaneInfo2KHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT - { - planeIndex = planeIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayPlaneInfo2KHR const& ) const = default; -#else - bool operator==( DisplayPlaneInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( mode == rhs.mode ) - && ( planeIndex == rhs.planeIndex ); - } - - bool operator!=( DisplayPlaneInfo2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneInfo2KHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DisplayModeKHR mode = {}; - uint32_t planeIndex = {}; - - }; - static_assert( sizeof( DisplayPlaneInfo2KHR ) == sizeof( VkDisplayPlaneInfo2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayPlaneInfo2KHR; - }; - - struct DisplayPlaneCapabilitiesKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilitiesKHR(VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha_ = {}, VULKAN_HPP_NAMESPACE::Offset2D minSrcPosition_ = {}, VULKAN_HPP_NAMESPACE::Offset2D maxSrcPosition_ = {}, VULKAN_HPP_NAMESPACE::Extent2D minSrcExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxSrcExtent_ = {}, VULKAN_HPP_NAMESPACE::Offset2D minDstPosition_ = {}, VULKAN_HPP_NAMESPACE::Offset2D maxDstPosition_ = {}, VULKAN_HPP_NAMESPACE::Extent2D minDstExtent_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayPlaneCapabilitiesKHR & operator=( DisplayPlaneCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayPlaneCapabilitiesKHR const& ) const = default; -#else - bool operator==( DisplayPlaneCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( DisplayPlaneCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagsKHR supportedAlpha = {}; - VULKAN_HPP_NAMESPACE::Offset2D minSrcPosition = {}; - VULKAN_HPP_NAMESPACE::Offset2D maxSrcPosition = {}; - VULKAN_HPP_NAMESPACE::Extent2D minSrcExtent = {}; - VULKAN_HPP_NAMESPACE::Extent2D maxSrcExtent = {}; - VULKAN_HPP_NAMESPACE::Offset2D minDstPosition = {}; - VULKAN_HPP_NAMESPACE::Offset2D maxDstPosition = {}; - VULKAN_HPP_NAMESPACE::Extent2D minDstExtent = {}; - VULKAN_HPP_NAMESPACE::Extent2D maxDstExtent = {}; - - }; - static_assert( sizeof( DisplayPlaneCapabilitiesKHR ) == sizeof( VkDisplayPlaneCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayPlaneCapabilities2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneCapabilities2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR(VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities_ = {}) VULKAN_HPP_NOEXCEPT - : capabilities( capabilities_ ) - {} - - VULKAN_HPP_CONSTEXPR DisplayPlaneCapabilities2KHR( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayPlaneCapabilities2KHR( VkDisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : DisplayPlaneCapabilities2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayPlaneCapabilities2KHR & operator=( DisplayPlaneCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayPlaneCapabilities2KHR const& ) const = default; -#else - bool operator==( DisplayPlaneCapabilities2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( capabilities == rhs.capabilities ); - } - - bool operator!=( DisplayPlaneCapabilities2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneCapabilities2KHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities = {}; - - }; - static_assert( sizeof( DisplayPlaneCapabilities2KHR ) == sizeof( VkDisplayPlaneCapabilities2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayPlaneCapabilities2KHR; - }; - - struct DisplayPlanePropertiesKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayPlanePropertiesKHR(VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayPlanePropertiesKHR & operator=( DisplayPlanePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayPlanePropertiesKHR const& ) const = default; -#else - bool operator==( DisplayPlanePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( currentDisplay == rhs.currentDisplay ) - && ( currentStackIndex == rhs.currentStackIndex ); - } - - bool operator!=( DisplayPlanePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DisplayKHR currentDisplay = {}; - uint32_t currentStackIndex = {}; - - }; - static_assert( sizeof( DisplayPlanePropertiesKHR ) == sizeof( VkDisplayPlanePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayPlaneProperties2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPlaneProperties2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR(VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties_ = {}) VULKAN_HPP_NOEXCEPT - : displayPlaneProperties( displayPlaneProperties_ ) - {} - - VULKAN_HPP_CONSTEXPR DisplayPlaneProperties2KHR( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayPlaneProperties2KHR( VkDisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : DisplayPlaneProperties2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayPlaneProperties2KHR & operator=( DisplayPlaneProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayPlaneProperties2KHR const& ) const = default; -#else - bool operator==( DisplayPlaneProperties2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( displayPlaneProperties == rhs.displayPlaneProperties ); - } - - bool operator!=( DisplayPlaneProperties2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPlaneProperties2KHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR displayPlaneProperties = {}; - - }; - static_assert( sizeof( DisplayPlaneProperties2KHR ) == sizeof( VkDisplayPlaneProperties2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayPlaneProperties2KHR; - }; - - struct DisplayPropertiesKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayPropertiesKHR(VULKAN_HPP_NAMESPACE::DisplayKHR display_ = {}, const char* displayName_ = {}, VULKAN_HPP_NAMESPACE::Extent2D physicalDimensions_ = {}, VULKAN_HPP_NAMESPACE::Extent2D physicalResolution_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_ = {}, VULKAN_HPP_NAMESPACE::Bool32 planeReorderPossible_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayPropertiesKHR & operator=( DisplayPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayPropertiesKHR const& ) const = default; -#else - bool operator==( DisplayPropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( display == rhs.display ) - && ( displayName == rhs.displayName ) - && ( 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 ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DisplayKHR display = {}; - const char* displayName = {}; - VULKAN_HPP_NAMESPACE::Extent2D physicalDimensions = {}; - VULKAN_HPP_NAMESPACE::Extent2D physicalResolution = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms = {}; - VULKAN_HPP_NAMESPACE::Bool32 planeReorderPossible = {}; - VULKAN_HPP_NAMESPACE::Bool32 persistentContent = {}; - - }; - static_assert( sizeof( DisplayPropertiesKHR ) == sizeof( VkDisplayPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayProperties2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayProperties2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayProperties2KHR(VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties_ = {}) VULKAN_HPP_NOEXCEPT - : displayProperties( displayProperties_ ) - {} - - VULKAN_HPP_CONSTEXPR DisplayProperties2KHR( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayProperties2KHR( VkDisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : DisplayProperties2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayProperties2KHR & operator=( DisplayProperties2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayProperties2KHR const& ) const = default; -#else - bool operator==( DisplayProperties2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( displayProperties == rhs.displayProperties ); - } - - bool operator!=( DisplayProperties2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayProperties2KHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR displayProperties = {}; - - }; - static_assert( sizeof( DisplayProperties2KHR ) == sizeof( VkDisplayProperties2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayProperties2KHR; - }; - - struct PhysicalDeviceExternalBufferInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalBufferInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalBufferInfo(VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalBufferInfo & operator=( PhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExternalBufferInfo & operator=( VkPhysicalDeviceExternalBufferInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceExternalBufferInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExternalBufferInfo & setFlags( VULKAN_HPP_NAMESPACE::BufferCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PhysicalDeviceExternalBufferInfo & setUsage( VULKAN_HPP_NAMESPACE::BufferUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT - { - usage = usage_; - return *this; - } - - PhysicalDeviceExternalBufferInfo & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceExternalBufferInfo const& ) const = default; -#else - bool operator==( PhysicalDeviceExternalBufferInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( usage == rhs.usage ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( PhysicalDeviceExternalBufferInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalBufferInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::BufferCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::BufferUsageFlags usage = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( PhysicalDeviceExternalBufferInfo ) == sizeof( VkPhysicalDeviceExternalBufferInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceExternalBufferInfo; - }; - using PhysicalDeviceExternalBufferInfoKHR = PhysicalDeviceExternalBufferInfo; - - struct ExternalMemoryProperties - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalMemoryProperties(VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags externalMemoryFeatures_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalMemoryProperties & operator=( ExternalMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalMemoryProperties const& ) const = default; -#else - bool operator==( ExternalMemoryProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( externalMemoryFeatures == rhs.externalMemoryFeatures ) - && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) - && ( compatibleHandleTypes == rhs.compatibleHandleTypes ); - } - - bool operator!=( ExternalMemoryProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlags externalMemoryFeatures = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags exportFromImportedHandleTypes = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags compatibleHandleTypes = {}; - - }; - static_assert( sizeof( ExternalMemoryProperties ) == sizeof( VkExternalMemoryProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - using ExternalMemoryPropertiesKHR = ExternalMemoryProperties; - - struct ExternalBufferProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalBufferProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalBufferProperties(VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {}) VULKAN_HPP_NOEXCEPT - : externalMemoryProperties( externalMemoryProperties_ ) - {} - - VULKAN_HPP_CONSTEXPR ExternalBufferProperties( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalBufferProperties( VkExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT - : ExternalBufferProperties( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalBufferProperties & operator=( ExternalBufferProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalBufferProperties const& ) const = default; -#else - bool operator==( ExternalBufferProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( externalMemoryProperties == rhs.externalMemoryProperties ); - } - - bool operator!=( ExternalBufferProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalBufferProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {}; - - }; - static_assert( sizeof( ExternalBufferProperties ) == sizeof( VkExternalBufferProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExternalBufferProperties; - }; - using ExternalBufferPropertiesKHR = ExternalBufferProperties; - - struct PhysicalDeviceExternalFenceInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalFenceInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo(VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : handleType( handleType_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalFenceInfo( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExternalFenceInfo( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceExternalFenceInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalFenceInfo & operator=( PhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExternalFenceInfo & operator=( VkPhysicalDeviceExternalFenceInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceExternalFenceInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExternalFenceInfo & setHandleType( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceExternalFenceInfo const& ) const = default; -#else - bool operator==( PhysicalDeviceExternalFenceInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( PhysicalDeviceExternalFenceInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalFenceInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( PhysicalDeviceExternalFenceInfo ) == sizeof( VkPhysicalDeviceExternalFenceInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceExternalFenceInfo; - }; - using PhysicalDeviceExternalFenceInfoKHR = PhysicalDeviceExternalFenceInfo; - - struct ExternalFenceProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFenceProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalFenceProperties(VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags externalFenceFeatures_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalFenceProperties & operator=( ExternalFenceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalFenceProperties const& ) const = default; -#else - bool operator==( ExternalFenceProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) - && ( compatibleHandleTypes == rhs.compatibleHandleTypes ) - && ( externalFenceFeatures == rhs.externalFenceFeatures ); - } - - bool operator!=( ExternalFenceProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFenceProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags exportFromImportedHandleTypes = {}; - VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags compatibleHandleTypes = {}; - VULKAN_HPP_NAMESPACE::ExternalFenceFeatureFlags externalFenceFeatures = {}; - - }; - static_assert( sizeof( ExternalFenceProperties ) == sizeof( VkExternalFenceProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExternalFenceProperties; - }; - using ExternalFencePropertiesKHR = ExternalFenceProperties; - - struct ImageFormatProperties - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageFormatProperties(VULKAN_HPP_NAMESPACE::Extent3D maxExtent_ = {}, uint32_t maxMipLevels_ = {}, uint32_t maxArrayLayers_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageFormatProperties & operator=( ImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageFormatProperties const& ) const = default; -#else - bool operator==( ImageFormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( maxExtent == rhs.maxExtent ) - && ( maxMipLevels == rhs.maxMipLevels ) - && ( maxArrayLayers == rhs.maxArrayLayers ) - && ( sampleCounts == rhs.sampleCounts ) - && ( maxResourceSize == rhs.maxResourceSize ); - } - - bool operator!=( ImageFormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Extent3D maxExtent = {}; - uint32_t maxMipLevels = {}; - uint32_t maxArrayLayers = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {}; - VULKAN_HPP_NAMESPACE::DeviceSize maxResourceSize = {}; - - }; - static_assert( sizeof( ImageFormatProperties ) == sizeof( VkImageFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ExternalImageFormatPropertiesNV - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalImageFormatPropertiesNV(VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV externalMemoryFeatures_ = {}, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalImageFormatPropertiesNV & operator=( ExternalImageFormatPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalImageFormatPropertiesNV const& ) const = default; -#else - bool operator==( ExternalImageFormatPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( imageFormatProperties == rhs.imageFormatProperties ) - && ( externalMemoryFeatures == rhs.externalMemoryFeatures ) - && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) - && ( compatibleHandleTypes == rhs.compatibleHandleTypes ); - } - - bool operator!=( ExternalImageFormatPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryFeatureFlagsNV externalMemoryFeatures = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV exportFromImportedHandleTypes = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV compatibleHandleTypes = {}; - - }; - static_assert( sizeof( ExternalImageFormatPropertiesNV ) == sizeof( VkExternalImageFormatPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceExternalSemaphoreInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalSemaphoreInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo(VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : handleType( handleType_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalSemaphoreInfo( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExternalSemaphoreInfo( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceExternalSemaphoreInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalSemaphoreInfo & operator=( PhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExternalSemaphoreInfo & operator=( VkPhysicalDeviceExternalSemaphoreInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceExternalSemaphoreInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExternalSemaphoreInfo & setHandleType( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceExternalSemaphoreInfo const& ) const = default; -#else - bool operator==( PhysicalDeviceExternalSemaphoreInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( PhysicalDeviceExternalSemaphoreInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalSemaphoreInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( PhysicalDeviceExternalSemaphoreInfo ) == sizeof( VkPhysicalDeviceExternalSemaphoreInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceExternalSemaphoreInfo; - }; - using PhysicalDeviceExternalSemaphoreInfoKHR = PhysicalDeviceExternalSemaphoreInfo; - - struct ExternalSemaphoreProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalSemaphoreProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalSemaphoreProperties(VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes_ = {}, VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags externalSemaphoreFeatures_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalSemaphoreProperties & operator=( ExternalSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalSemaphoreProperties const& ) const = default; -#else - bool operator==( ExternalSemaphoreProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( exportFromImportedHandleTypes == rhs.exportFromImportedHandleTypes ) - && ( compatibleHandleTypes == rhs.compatibleHandleTypes ) - && ( externalSemaphoreFeatures == rhs.externalSemaphoreFeatures ); - } - - bool operator!=( ExternalSemaphoreProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalSemaphoreProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags exportFromImportedHandleTypes = {}; - VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags compatibleHandleTypes = {}; - VULKAN_HPP_NAMESPACE::ExternalSemaphoreFeatureFlags externalSemaphoreFeatures = {}; - - }; - static_assert( sizeof( ExternalSemaphoreProperties ) == sizeof( VkExternalSemaphoreProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExternalSemaphoreProperties; - }; - using ExternalSemaphorePropertiesKHR = ExternalSemaphoreProperties; - - struct PhysicalDeviceFeatures2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFeatures2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2(VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features_ = {}) VULKAN_HPP_NOEXCEPT - : features( features_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceFeatures2( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFeatures2( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceFeatures2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFeatures2 & operator=( PhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFeatures2 & operator=( VkPhysicalDeviceFeatures2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceFeatures2 & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFeatures2 & setFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures const & features_ ) VULKAN_HPP_NOEXCEPT - { - features = features_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFeatures2 const& ) const = default; -#else - bool operator==( PhysicalDeviceFeatures2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( features == rhs.features ); - } - - bool operator!=( PhysicalDeviceFeatures2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFeatures2; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features = {}; - - }; - static_assert( sizeof( PhysicalDeviceFeatures2 ) == sizeof( VkPhysicalDeviceFeatures2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFeatures2; - }; - using PhysicalDeviceFeatures2KHR = PhysicalDeviceFeatures2; - - struct FormatProperties - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FormatProperties(VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures_ = {}, VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FormatProperties & operator=( FormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FormatProperties const& ) const = default; -#else - bool operator==( FormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( linearTilingFeatures == rhs.linearTilingFeatures ) - && ( optimalTilingFeatures == rhs.optimalTilingFeatures ) - && ( bufferFeatures == rhs.bufferFeatures ); - } - - bool operator!=( FormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::FormatFeatureFlags linearTilingFeatures = {}; - VULKAN_HPP_NAMESPACE::FormatFeatureFlags optimalTilingFeatures = {}; - VULKAN_HPP_NAMESPACE::FormatFeatureFlags bufferFeatures = {}; - - }; - static_assert( sizeof( FormatProperties ) == sizeof( VkFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct FormatProperties2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFormatProperties2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FormatProperties2(VULKAN_HPP_NAMESPACE::FormatProperties formatProperties_ = {}) VULKAN_HPP_NOEXCEPT - : formatProperties( formatProperties_ ) - {} - - VULKAN_HPP_CONSTEXPR FormatProperties2( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - FormatProperties2( VkFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT - : FormatProperties2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FormatProperties2 & operator=( FormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FormatProperties2 const& ) const = default; -#else - bool operator==( FormatProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( formatProperties == rhs.formatProperties ); - } - - bool operator!=( FormatProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFormatProperties2; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::FormatProperties formatProperties = {}; - - }; - static_assert( sizeof( FormatProperties2 ) == sizeof( VkFormatProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FormatProperties2; - }; - using FormatProperties2KHR = FormatProperties2; - - struct PhysicalDeviceFragmentShadingRateKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateKHR(VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts_ = {}, VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateKHR & operator=( PhysicalDeviceFragmentShadingRateKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentShadingRateKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentShadingRateKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sampleCounts == rhs.sampleCounts ) - && ( fragmentSize == rhs.fragmentSize ); - } - - bool operator!=( PhysicalDeviceFragmentShadingRateKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags sampleCounts = {}; - VULKAN_HPP_NAMESPACE::Extent2D fragmentSize = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentShadingRateKHR ) == sizeof( VkPhysicalDeviceFragmentShadingRateKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentShadingRateKHR; - }; - - struct PhysicalDeviceImageFormatInfo2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageFormatInfo2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceImageFormatInfo2(VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::ImageType type_ = VULKAN_HPP_NAMESPACE::ImageType::e1D, VULKAN_HPP_NAMESPACE::ImageTiling tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageFormatInfo2 & operator=( PhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceImageFormatInfo2 & operator=( VkPhysicalDeviceImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT - { - tiling = tiling_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT - { - usage = usage_; - return *this; - } - - PhysicalDeviceImageFormatInfo2 & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceImageFormatInfo2 const& ) const = default; -#else - bool operator==( PhysicalDeviceImageFormatInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( format == rhs.format ) - && ( type == rhs.type ) - && ( tiling == rhs.tiling ) - && ( usage == rhs.usage ) - && ( flags == rhs.flags ); - } - - bool operator!=( PhysicalDeviceImageFormatInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageFormatInfo2; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::ImageType type = VULKAN_HPP_NAMESPACE::ImageType::e1D; - VULKAN_HPP_NAMESPACE::ImageTiling tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal; - VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; - VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {}; - - }; - static_assert( sizeof( PhysicalDeviceImageFormatInfo2 ) == sizeof( VkPhysicalDeviceImageFormatInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceImageFormatInfo2; - }; - using PhysicalDeviceImageFormatInfo2KHR = PhysicalDeviceImageFormatInfo2; - - struct ImageFormatProperties2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageFormatProperties2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageFormatProperties2(VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties_ = {}) VULKAN_HPP_NOEXCEPT - : imageFormatProperties( imageFormatProperties_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageFormatProperties2( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageFormatProperties2( VkImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageFormatProperties2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageFormatProperties2 & operator=( ImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageFormatProperties2 const& ) const = default; -#else - bool operator==( ImageFormatProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imageFormatProperties == rhs.imageFormatProperties ); - } - - bool operator!=( ImageFormatProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatProperties2; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageFormatProperties imageFormatProperties = {}; - - }; - static_assert( sizeof( ImageFormatProperties2 ) == sizeof( VkImageFormatProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageFormatProperties2; - }; - using ImageFormatProperties2KHR = ImageFormatProperties2; - - struct MemoryType - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryType(VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryType & operator=( MemoryType const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryType const& ) const = default; -#else - bool operator==( MemoryType const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( propertyFlags == rhs.propertyFlags ) - && ( heapIndex == rhs.heapIndex ); - } - - bool operator!=( MemoryType const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::MemoryPropertyFlags propertyFlags = {}; - uint32_t heapIndex = {}; - - }; - static_assert( sizeof( MemoryType ) == sizeof( VkMemoryType ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct MemoryHeap - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryHeap(VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryHeap & operator=( MemoryHeap const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryHeap const& ) const = default; -#else - bool operator==( MemoryHeap const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( size == rhs.size ) - && ( flags == rhs.flags ); - } - - bool operator!=( MemoryHeap const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - VULKAN_HPP_NAMESPACE::MemoryHeapFlags flags = {}; - - }; - static_assert( sizeof( MemoryHeap ) == sizeof( VkMemoryHeap ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceMemoryProperties - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties & operator=( PhysicalDeviceMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMemoryProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceMemoryProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( memoryTypeCount == rhs.memoryTypeCount ) - && ( memoryTypes == rhs.memoryTypes ) - && ( memoryHeapCount == rhs.memoryHeapCount ) - && ( memoryHeaps == rhs.memoryHeaps ); - } - - bool operator!=( PhysicalDeviceMemoryProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t memoryTypeCount = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D memoryTypes = {}; - uint32_t memoryHeapCount = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D memoryHeaps = {}; - - }; - static_assert( sizeof( PhysicalDeviceMemoryProperties ) == sizeof( VkPhysicalDeviceMemoryProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceMemoryProperties2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryProperties2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2(VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryProperties2 & operator=( PhysicalDeviceMemoryProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMemoryProperties2 const& ) const = default; -#else - bool operator==( PhysicalDeviceMemoryProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryProperties == rhs.memoryProperties ); - } - - bool operator!=( PhysicalDeviceMemoryProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryProperties2; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties = {}; - - }; - static_assert( sizeof( PhysicalDeviceMemoryProperties2 ) == sizeof( VkPhysicalDeviceMemoryProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMemoryProperties2; - }; - using PhysicalDeviceMemoryProperties2KHR = PhysicalDeviceMemoryProperties2; - - struct MultisamplePropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMultisamplePropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT(VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize_ = {}) VULKAN_HPP_NOEXCEPT - : maxSampleLocationGridSize( maxSampleLocationGridSize_ ) - {} - - VULKAN_HPP_CONSTEXPR MultisamplePropertiesEXT( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MultisamplePropertiesEXT( VkMultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : MultisamplePropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MultisamplePropertiesEXT & operator=( MultisamplePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MultisamplePropertiesEXT const& ) const = default; -#else - bool operator==( MultisamplePropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ); - } - - bool operator!=( MultisamplePropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMultisamplePropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize = {}; - - }; - static_assert( sizeof( MultisamplePropertiesEXT ) == sizeof( VkMultisamplePropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MultisamplePropertiesEXT; - }; - - struct PhysicalDeviceLimits - { - - -#if !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_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize bufferImageGranularity_ = {}, VULKAN_HPP_NAMESPACE::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_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize minTexelBufferOffsetAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize minUniformBufferOffsetAlignment_ = {}, VULKAN_HPP_NAMESPACE::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_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferColorSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferDepthSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferStencilSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferNoAttachmentsSampleCounts_ = {}, uint32_t maxColorAttachments_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageColorSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageIntegerSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageDepthSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageStencilSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags storageImageSampleCounts_ = {}, uint32_t maxSampleMaskWords_ = {}, VULKAN_HPP_NAMESPACE::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_ = {}, VULKAN_HPP_NAMESPACE::Bool32 strictLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 standardSampleLocations_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyOffsetAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyRowPitchAlignment_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLimits & operator=( PhysicalDeviceLimits const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceLimits const& ) const = default; -#else - bool operator==( PhysicalDeviceLimits const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - 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 = {}; - VULKAN_HPP_NAMESPACE::DeviceSize bufferImageGranularity = {}; - VULKAN_HPP_NAMESPACE::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 = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxComputeWorkGroupCount = {}; - uint32_t maxComputeWorkGroupInvocations = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxComputeWorkGroupSize = {}; - uint32_t subPixelPrecisionBits = {}; - uint32_t subTexelPrecisionBits = {}; - uint32_t mipmapPrecisionBits = {}; - uint32_t maxDrawIndexedIndexValue = {}; - uint32_t maxDrawIndirectCount = {}; - float maxSamplerLodBias = {}; - float maxSamplerAnisotropy = {}; - uint32_t maxViewports = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxViewportDimensions = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D viewportBoundsRange = {}; - uint32_t viewportSubPixelBits = {}; - size_t minMemoryMapAlignment = {}; - VULKAN_HPP_NAMESPACE::DeviceSize minTexelBufferOffsetAlignment = {}; - VULKAN_HPP_NAMESPACE::DeviceSize minUniformBufferOffsetAlignment = {}; - VULKAN_HPP_NAMESPACE::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 = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferColorSampleCounts = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferDepthSampleCounts = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferStencilSampleCounts = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferNoAttachmentsSampleCounts = {}; - uint32_t maxColorAttachments = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageColorSampleCounts = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageIntegerSampleCounts = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageDepthSampleCounts = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags sampledImageStencilSampleCounts = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags storageImageSampleCounts = {}; - uint32_t maxSampleMaskWords = {}; - VULKAN_HPP_NAMESPACE::Bool32 timestampComputeAndGraphics = {}; - float timestampPeriod = {}; - uint32_t maxClipDistances = {}; - uint32_t maxCullDistances = {}; - uint32_t maxCombinedClipAndCullDistances = {}; - uint32_t discreteQueuePriorities = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D pointSizeRange = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D lineWidthRange = {}; - float pointSizeGranularity = {}; - float lineWidthGranularity = {}; - VULKAN_HPP_NAMESPACE::Bool32 strictLines = {}; - VULKAN_HPP_NAMESPACE::Bool32 standardSampleLocations = {}; - VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyOffsetAlignment = {}; - VULKAN_HPP_NAMESPACE::DeviceSize optimalBufferCopyRowPitchAlignment = {}; - VULKAN_HPP_NAMESPACE::DeviceSize nonCoherentAtomSize = {}; - - }; - static_assert( sizeof( PhysicalDeviceLimits ) == sizeof( VkPhysicalDeviceLimits ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceSparseProperties - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseProperties(VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape_ = {}, VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape_ = {}, VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape_ = {}, VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseProperties & operator=( PhysicalDeviceSparseProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSparseProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceSparseProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( residencyStandard2DBlockShape == rhs.residencyStandard2DBlockShape ) - && ( residencyStandard2DMultisampleBlockShape == rhs.residencyStandard2DMultisampleBlockShape ) - && ( residencyStandard3DBlockShape == rhs.residencyStandard3DBlockShape ) - && ( residencyAlignedMipSize == rhs.residencyAlignedMipSize ) - && ( residencyNonResidentStrict == rhs.residencyNonResidentStrict ); - } - - bool operator!=( PhysicalDeviceSparseProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DBlockShape = {}; - VULKAN_HPP_NAMESPACE::Bool32 residencyStandard2DMultisampleBlockShape = {}; - VULKAN_HPP_NAMESPACE::Bool32 residencyStandard3DBlockShape = {}; - VULKAN_HPP_NAMESPACE::Bool32 residencyAlignedMipSize = {}; - VULKAN_HPP_NAMESPACE::Bool32 residencyNonResidentStrict = {}; - - }; - static_assert( sizeof( PhysicalDeviceSparseProperties ) == sizeof( VkPhysicalDeviceSparseProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceProperties - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties(uint32_t apiVersion_ = {}, uint32_t driverVersion_ = {}, uint32_t vendorID_ = {}, uint32_t deviceID_ = {}, VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType_ = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther, std::array const& deviceName_ = {}, std::array const& pipelineCacheUUID_ = {}, VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits limits_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties & operator=( PhysicalDeviceProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceProperties const& ) const = default; -#else - 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 ) - && ( deviceName == rhs.deviceName ) - && ( pipelineCacheUUID == rhs.pipelineCacheUUID ) - && ( limits == rhs.limits ) - && ( sparseProperties == rhs.sparseProperties ); - } - - bool operator!=( PhysicalDeviceProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t apiVersion = {}; - uint32_t driverVersion = {}; - uint32_t vendorID = {}; - uint32_t deviceID = {}; - VULKAN_HPP_NAMESPACE::PhysicalDeviceType deviceType = VULKAN_HPP_NAMESPACE::PhysicalDeviceType::eOther; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceName = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D pipelineCacheUUID = {}; - VULKAN_HPP_NAMESPACE::PhysicalDeviceLimits limits = {}; - VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseProperties sparseProperties = {}; - - }; - static_assert( sizeof( PhysicalDeviceProperties ) == sizeof( VkPhysicalDeviceProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PhysicalDeviceProperties2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProperties2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2(VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProperties2 & operator=( PhysicalDeviceProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceProperties2 const& ) const = default; -#else - bool operator==( PhysicalDeviceProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( properties == rhs.properties ); - } - - bool operator!=( PhysicalDeviceProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProperties2; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties = {}; - - }; - static_assert( sizeof( PhysicalDeviceProperties2 ) == sizeof( VkPhysicalDeviceProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceProperties2; - }; - using PhysicalDeviceProperties2KHR = PhysicalDeviceProperties2; - - struct QueryPoolPerformanceCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolPerformanceCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR QueryPoolPerformanceCreateInfoKHR(uint32_t queueFamilyIndex_ = {}, uint32_t counterIndexCount_ = {}, const uint32_t* pCounterIndices_ = {}) VULKAN_HPP_NOEXCEPT - : 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_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & counterIndices_ ) - : queueFamilyIndex( queueFamilyIndex_ ), counterIndexCount( static_cast( counterIndices_.size() ) ), pCounterIndices( counterIndices_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceCreateInfoKHR & operator=( QueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - QueryPoolPerformanceCreateInfoKHR & operator=( VkQueryPoolPerformanceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - QueryPoolPerformanceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - QueryPoolPerformanceCreateInfoKHR & setQueueFamilyIndex( uint32_t queueFamilyIndex_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndex = queueFamilyIndex_; - return *this; - } - - QueryPoolPerformanceCreateInfoKHR & setCounterIndexCount( uint32_t counterIndexCount_ ) VULKAN_HPP_NOEXCEPT - { - counterIndexCount = counterIndexCount_; - return *this; - } - - QueryPoolPerformanceCreateInfoKHR & setPCounterIndices( const uint32_t* pCounterIndices_ ) VULKAN_HPP_NOEXCEPT - { - pCounterIndices = pCounterIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - QueryPoolPerformanceCreateInfoKHR & setCounterIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & counterIndices_ ) VULKAN_HPP_NOEXCEPT - { - counterIndexCount = static_cast( counterIndices_.size() ); - pCounterIndices = counterIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkQueryPoolPerformanceCreateInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkQueryPoolPerformanceCreateInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( QueryPoolPerformanceCreateInfoKHR const& ) const = default; -#else - bool operator==( QueryPoolPerformanceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( queueFamilyIndex == rhs.queueFamilyIndex ) - && ( counterIndexCount == rhs.counterIndexCount ) - && ( pCounterIndices == rhs.pCounterIndices ); - } - - bool operator!=( QueryPoolPerformanceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolPerformanceCreateInfoKHR; - const void* pNext = {}; - uint32_t queueFamilyIndex = {}; - uint32_t counterIndexCount = {}; - const uint32_t* pCounterIndices = {}; - - }; - static_assert( sizeof( QueryPoolPerformanceCreateInfoKHR ) == sizeof( VkQueryPoolPerformanceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = QueryPoolPerformanceCreateInfoKHR; - }; - - struct QueueFamilyProperties - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR QueueFamilyProperties(VULKAN_HPP_NAMESPACE::QueueFlags queueFlags_ = {}, uint32_t queueCount_ = {}, uint32_t timestampValidBits_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 QueueFamilyProperties & operator=( QueueFamilyProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( QueueFamilyProperties const& ) const = default; -#else - bool operator==( QueueFamilyProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( queueFlags == rhs.queueFlags ) - && ( queueCount == rhs.queueCount ) - && ( timestampValidBits == rhs.timestampValidBits ) - && ( minImageTransferGranularity == rhs.minImageTransferGranularity ); - } - - bool operator!=( QueueFamilyProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::QueueFlags queueFlags = {}; - uint32_t queueCount = {}; - uint32_t timestampValidBits = {}; - VULKAN_HPP_NAMESPACE::Extent3D minImageTransferGranularity = {}; - - }; - static_assert( sizeof( QueueFamilyProperties ) == sizeof( VkQueueFamilyProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct QueueFamilyProperties2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyProperties2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR QueueFamilyProperties2(VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties_ = {}) VULKAN_HPP_NOEXCEPT - : queueFamilyProperties( queueFamilyProperties_ ) - {} - - VULKAN_HPP_CONSTEXPR QueueFamilyProperties2( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - QueueFamilyProperties2( VkQueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT - : QueueFamilyProperties2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 QueueFamilyProperties2 & operator=( QueueFamilyProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( QueueFamilyProperties2 const& ) const = default; -#else - bool operator==( QueueFamilyProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( queueFamilyProperties == rhs.queueFamilyProperties ); - } - - bool operator!=( QueueFamilyProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyProperties2; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::QueueFamilyProperties queueFamilyProperties = {}; - - }; - static_assert( sizeof( QueueFamilyProperties2 ) == sizeof( VkQueueFamilyProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = QueueFamilyProperties2; - }; - using QueueFamilyProperties2KHR = QueueFamilyProperties2; - - struct PhysicalDeviceSparseImageFormatInfo2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSparseImageFormatInfo2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSparseImageFormatInfo2(VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::ImageType type_ = VULKAN_HPP_NAMESPACE::ImageType::e1D, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, VULKAN_HPP_NAMESPACE::ImageTiling tiling_ = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSparseImageFormatInfo2 & operator=( PhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSparseImageFormatInfo2 & operator=( VkPhysicalDeviceSparseImageFormatInfo2 const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setType( VULKAN_HPP_NAMESPACE::ImageType type_ ) VULKAN_HPP_NOEXCEPT - { - type = type_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setSamples( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples_ ) VULKAN_HPP_NOEXCEPT - { - samples = samples_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT - { - usage = usage_; - return *this; - } - - PhysicalDeviceSparseImageFormatInfo2 & setTiling( VULKAN_HPP_NAMESPACE::ImageTiling tiling_ ) VULKAN_HPP_NOEXCEPT - { - tiling = tiling_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSparseImageFormatInfo2 const& ) const = default; -#else - bool operator==( PhysicalDeviceSparseImageFormatInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( format == rhs.format ) - && ( type == rhs.type ) - && ( samples == rhs.samples ) - && ( usage == rhs.usage ) - && ( tiling == rhs.tiling ); - } - - bool operator!=( PhysicalDeviceSparseImageFormatInfo2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSparseImageFormatInfo2; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::ImageType type = VULKAN_HPP_NAMESPACE::ImageType::e1D; - VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; - VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; - VULKAN_HPP_NAMESPACE::ImageTiling tiling = VULKAN_HPP_NAMESPACE::ImageTiling::eOptimal; - - }; - static_assert( sizeof( PhysicalDeviceSparseImageFormatInfo2 ) == sizeof( VkPhysicalDeviceSparseImageFormatInfo2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSparseImageFormatInfo2; - }; - using PhysicalDeviceSparseImageFormatInfo2KHR = PhysicalDeviceSparseImageFormatInfo2; - - struct SparseImageFormatProperties2 - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSparseImageFormatProperties2; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2(VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties_ = {}) VULKAN_HPP_NOEXCEPT - : properties( properties_ ) - {} - - VULKAN_HPP_CONSTEXPR SparseImageFormatProperties2( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SparseImageFormatProperties2( VkSparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT - : SparseImageFormatProperties2( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SparseImageFormatProperties2 & operator=( SparseImageFormatProperties2 const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SparseImageFormatProperties2 const& ) const = default; -#else - bool operator==( SparseImageFormatProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( properties == rhs.properties ); - } - - bool operator!=( SparseImageFormatProperties2 const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSparseImageFormatProperties2; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::SparseImageFormatProperties properties = {}; - - }; - static_assert( sizeof( SparseImageFormatProperties2 ) == sizeof( VkSparseImageFormatProperties2 ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SparseImageFormatProperties2; - }; - using SparseImageFormatProperties2KHR = SparseImageFormatProperties2; - - struct FramebufferMixedSamplesCombinationNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferMixedSamplesCombinationNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FramebufferMixedSamplesCombinationNV(VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge, VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::SampleCountFlags depthStencilSamples_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags colorSamples_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FramebufferMixedSamplesCombinationNV & operator=( FramebufferMixedSamplesCombinationNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FramebufferMixedSamplesCombinationNV const& ) const = default; -#else - bool operator==( FramebufferMixedSamplesCombinationNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( coverageReductionMode == rhs.coverageReductionMode ) - && ( rasterizationSamples == rhs.rasterizationSamples ) - && ( depthStencilSamples == rhs.depthStencilSamples ) - && ( colorSamples == rhs.colorSamples ); - } - - bool operator!=( FramebufferMixedSamplesCombinationNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferMixedSamplesCombinationNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge; - VULKAN_HPP_NAMESPACE::SampleCountFlagBits rasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; - VULKAN_HPP_NAMESPACE::SampleCountFlags depthStencilSamples = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags colorSamples = {}; - - }; - static_assert( sizeof( FramebufferMixedSamplesCombinationNV ) == sizeof( VkFramebufferMixedSamplesCombinationNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FramebufferMixedSamplesCombinationNV; - }; - - struct SurfaceCapabilities2EXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilities2EXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SurfaceCapabilities2EXT(uint32_t minImageCount_ = {}, uint32_t maxImageCount_ = {}, VULKAN_HPP_NAMESPACE::Extent2D currentExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D minImageExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent_ = {}, uint32_t maxImageArrayLayers_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha_ = {}, VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags_ = {}, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT supportedSurfaceCounters_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilities2EXT & operator=( SurfaceCapabilities2EXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceCapabilities2EXT const& ) const = default; -#else - bool operator==( SurfaceCapabilities2EXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SurfaceCapabilities2EXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2EXT; - void* pNext = {}; - uint32_t minImageCount = {}; - uint32_t maxImageCount = {}; - VULKAN_HPP_NAMESPACE::Extent2D currentExtent = {}; - VULKAN_HPP_NAMESPACE::Extent2D minImageExtent = {}; - VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent = {}; - uint32_t maxImageArrayLayers = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; - VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha = {}; - VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags = {}; - VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT supportedSurfaceCounters = {}; - - }; - static_assert( sizeof( SurfaceCapabilities2EXT ) == sizeof( VkSurfaceCapabilities2EXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SurfaceCapabilities2EXT; - }; - - struct SurfaceCapabilitiesKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesKHR(uint32_t minImageCount_ = {}, uint32_t maxImageCount_ = {}, VULKAN_HPP_NAMESPACE::Extent2D currentExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D minImageExtent_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent_ = {}, uint32_t maxImageArrayLayers_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesKHR & operator=( SurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceCapabilitiesKHR const& ) const = default; -#else - bool operator==( SurfaceCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( SurfaceCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t minImageCount = {}; - uint32_t maxImageCount = {}; - VULKAN_HPP_NAMESPACE::Extent2D currentExtent = {}; - VULKAN_HPP_NAMESPACE::Extent2D minImageExtent = {}; - VULKAN_HPP_NAMESPACE::Extent2D maxImageExtent = {}; - uint32_t maxImageArrayLayers = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagsKHR supportedTransforms = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR currentTransform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; - VULKAN_HPP_NAMESPACE::CompositeAlphaFlagsKHR supportedCompositeAlpha = {}; - VULKAN_HPP_NAMESPACE::ImageUsageFlags supportedUsageFlags = {}; - - }; - static_assert( sizeof( SurfaceCapabilitiesKHR ) == sizeof( VkSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SurfaceCapabilities2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilities2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR(VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities_ = {}) VULKAN_HPP_NOEXCEPT - : surfaceCapabilities( surfaceCapabilities_ ) - {} - - VULKAN_HPP_CONSTEXPR SurfaceCapabilities2KHR( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceCapabilities2KHR( VkSurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : SurfaceCapabilities2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilities2KHR & operator=( SurfaceCapabilities2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceCapabilities2KHR const& ) const = default; -#else - bool operator==( SurfaceCapabilities2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( surfaceCapabilities == rhs.surfaceCapabilities ); - } - - bool operator!=( SurfaceCapabilities2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilities2KHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities = {}; - - }; - static_assert( sizeof( SurfaceCapabilities2KHR ) == sizeof( VkSurfaceCapabilities2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SurfaceCapabilities2KHR; - }; - - struct SurfaceFormatKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SurfaceFormatKHR(VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined, VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SurfaceFormatKHR & operator=( SurfaceFormatKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceFormatKHR const& ) const = default; -#else - bool operator==( SurfaceFormatKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( format == rhs.format ) - && ( colorSpace == rhs.colorSpace ); - } - - bool operator!=( SurfaceFormatKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - VULKAN_HPP_NAMESPACE::ColorSpaceKHR colorSpace = VULKAN_HPP_NAMESPACE::ColorSpaceKHR::eSrgbNonlinear; - - }; - static_assert( sizeof( SurfaceFormatKHR ) == sizeof( VkSurfaceFormatKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SurfaceFormat2KHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceFormat2KHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR(VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat_ = {}) VULKAN_HPP_NOEXCEPT - : surfaceFormat( surfaceFormat_ ) - {} - - VULKAN_HPP_CONSTEXPR SurfaceFormat2KHR( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceFormat2KHR( VkSurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT - : SurfaceFormat2KHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SurfaceFormat2KHR & operator=( SurfaceFormat2KHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceFormat2KHR const& ) const = default; -#else - bool operator==( SurfaceFormat2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( surfaceFormat == rhs.surfaceFormat ); - } - - bool operator!=( SurfaceFormat2KHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFormat2KHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::SurfaceFormatKHR surfaceFormat = {}; - - }; - static_assert( sizeof( SurfaceFormat2KHR ) == sizeof( VkSurfaceFormat2KHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SurfaceFormat2KHR; - }; - - struct PhysicalDeviceToolPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceToolPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolPropertiesEXT(std::array const& name_ = {}, std::array const& version_ = {}, VULKAN_HPP_NAMESPACE::ToolPurposeFlagsEXT purposes_ = {}, std::array const& description_ = {}, std::array const& layer_ = {}) VULKAN_HPP_NOEXCEPT - : name( name_ ), version( version_ ), purposes( purposes_ ), description( description_ ), layer( layer_ ) - {} - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolPropertiesEXT( PhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceToolPropertiesEXT( VkPhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceToolPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceToolPropertiesEXT & operator=( PhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceToolPropertiesEXT & operator=( VkPhysicalDeviceToolPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - - operator VkPhysicalDeviceToolPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceToolPropertiesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceToolPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceToolPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( name == rhs.name ) - && ( version == rhs.version ) - && ( purposes == rhs.purposes ) - && ( description == rhs.description ) - && ( layer == rhs.layer ); - } - - bool operator!=( PhysicalDeviceToolPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceToolPropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D name = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D version = {}; - VULKAN_HPP_NAMESPACE::ToolPurposeFlagsEXT purposes = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D description = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D layer = {}; - - }; - static_assert( sizeof( PhysicalDeviceToolPropertiesEXT ) == sizeof( VkPhysicalDeviceToolPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceToolPropertiesEXT; - }; - -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDevice = UniqueHandle; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ - - class PhysicalDevice - { - public: - using CType = VkPhysicalDevice; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::ePhysicalDevice; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::ePhysicalDevice; - - public: - VULKAN_HPP_CONSTEXPR PhysicalDevice() VULKAN_HPP_NOEXCEPT - : m_physicalDevice(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDevice( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_physicalDevice(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT PhysicalDevice( VkPhysicalDevice physicalDevice ) VULKAN_HPP_NOEXCEPT - : m_physicalDevice( physicalDevice ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - PhysicalDevice & operator=(VkPhysicalDevice physicalDevice) VULKAN_HPP_NOEXCEPT - { - m_physicalDevice = physicalDevice; - return *this; - } -#endif - - PhysicalDevice & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_physicalDevice = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevice const& ) const = default; -#else - bool operator==( PhysicalDevice const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_physicalDevice == rhs.m_physicalDevice; - } - - bool operator!=(PhysicalDevice const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_physicalDevice != rhs.m_physicalDevice; - } - - bool operator<(PhysicalDevice const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_physicalDevice < rhs.m_physicalDevice; - } -#endif - - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD Result acquireWinrtDisplayNV( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type acquireWinrtDisplayNV( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - template - VULKAN_HPP_NODISCARD Result acquireXlibDisplayEXT( Display* dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type acquireXlibDisplayEXT( Display & dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - - - template - VULKAN_HPP_NODISCARD Result createDevice( const VULKAN_HPP_NAMESPACE::DeviceCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Device* pDevice, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createDevice( const DeviceCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createDeviceUnique( const DeviceCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createDisplayModeKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, const VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DisplayModeKHR* pMode, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createDisplayModeKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createDisplayModeKHRUnique( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::ExtensionProperties* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateDeviceExtensionProperties( Optional layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = ExtensionPropertiesAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateDeviceExtensionProperties( Optional layerName, ExtensionPropertiesAllocator & extensionPropertiesAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result enumerateDeviceLayerProperties( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::LayerProperties* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateDeviceLayerProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = LayerPropertiesAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateDeviceLayerProperties( LayerPropertiesAllocator & layerPropertiesAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, uint32_t* pCounterCount, VULKAN_HPP_NAMESPACE::PerformanceCounterKHR* pCounters, VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR* pCounterDescriptions, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, ArrayProxy const &counters, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = Allocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, ArrayProxy const &counters, Allocator const& vectorAllocator, Dispatch const &d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename PerformanceCounterDescriptionKHRAllocator = std::allocator, typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType, std::vector>>::type enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename PerformanceCounterDescriptionKHRAllocator = std::allocator, typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B1 = PerformanceCounterKHRAllocator, typename B2 = PerformanceCounterDescriptionKHRAllocator, typename std::enable_if::value && std::is_same::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType, std::vector>>::type enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, PerformanceCounterKHRAllocator & performanceCounterKHRAllocator, PerformanceCounterDescriptionKHRAllocator & performanceCounterDescriptionKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = DisplayModeProperties2KHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, DisplayModeProperties2KHRAllocator & displayModeProperties2KHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = DisplayModePropertiesKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, DisplayModePropertiesKHRAllocator & displayModePropertiesKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getDisplayPlaneCapabilities2KHR( const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR* pDisplayPlaneInfo, VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR* pCapabilities, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getDisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode, uint32_t planeIndex, VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR* pCapabilities, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getDisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode, uint32_t planeIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, VULKAN_HPP_NAMESPACE::DisplayKHR* pDisplays, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = DisplayKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, DisplayKHRAllocator & displayKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getCalibrateableTimeDomainsEXT( uint32_t* pTimeDomainCount, VULKAN_HPP_NAMESPACE::TimeDomainEXT* pTimeDomains, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getCalibrateableTimeDomainsEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = TimeDomainEXTAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getCalibrateableTimeDomainsEXT( TimeDomainEXTAllocator & timeDomainEXTAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getCooperativeMatrixPropertiesNV( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getCooperativeMatrixPropertiesNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = CooperativeMatrixPropertiesNVAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getCooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNVAllocator & cooperativeMatrixPropertiesNVAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - template - 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 - template - 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*/ - - - template - VULKAN_HPP_NODISCARD Result getDisplayPlaneProperties2KHR( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlaneProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = DisplayPlaneProperties2KHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlaneProperties2KHR( DisplayPlaneProperties2KHRAllocator & displayPlaneProperties2KHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlanePropertiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = DisplayPlanePropertiesKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPlanePropertiesKHR( DisplayPlanePropertiesKHRAllocator & displayPlanePropertiesKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getDisplayProperties2KHR( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayProperties2KHR* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = DisplayProperties2KHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayProperties2KHR( DisplayProperties2KHRAllocator & displayProperties2KHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getDisplayPropertiesKHR( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPropertiesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = DisplayPropertiesKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getDisplayPropertiesKHR( DisplayPropertiesKHRAllocator & displayPropertiesKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getExternalBufferProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VULKAN_HPP_NAMESPACE::ExternalBufferProperties* pExternalBufferProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getExternalBufferPropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VULKAN_HPP_NAMESPACE::ExternalBufferProperties* pExternalBufferProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalBufferProperties getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getExternalFenceProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VULKAN_HPP_NAMESPACE::ExternalFenceProperties* pExternalFenceProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getExternalFencePropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VULKAN_HPP_NAMESPACE::ExternalFenceProperties* pExternalFenceProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalFenceProperties getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getExternalImageFormatPropertiesNV( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::ImageTiling tiling, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType, VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV* pExternalImageFormatProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getExternalImageFormatPropertiesNV( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::ImageTiling tiling, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getExternalSemaphoreProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getExternalSemaphorePropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures* pFeatures, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures getFeatures( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getFeatures2( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2* pFeatures, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getFeatures2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getFeatures2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2* pFeatures, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 getFeatures2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getFeatures2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::FormatProperties* pFormatProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties getFormatProperties( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::FormatProperties2* pFormatProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2 getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::FormatProperties2* pFormatProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::FormatProperties2 getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getFragmentShadingRatesKHR( uint32_t* pFragmentShadingRateCount, VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getFragmentShadingRatesKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PhysicalDeviceFragmentShadingRateKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getFragmentShadingRatesKHR( PhysicalDeviceFragmentShadingRateKHRAllocator & physicalDeviceFragmentShadingRateKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::ImageTiling tiling, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, VULKAN_HPP_NAMESPACE::ImageFormatProperties* pImageFormatProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::ImageTiling tiling, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2* pImageFormatInfo, VULKAN_HPP_NAMESPACE::ImageFormatProperties2* pImageFormatProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD Result getImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2* pImageFormatInfo, VULKAN_HPP_NAMESPACE::ImageFormatProperties2* pImageFormatProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getMemoryProperties( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties* pMemoryProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties getMemoryProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getMemoryProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 getMemoryProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getMemoryProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getMemoryProperties2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 getMemoryProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getMemoryProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT* pMultisampleProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, uint32_t* pRectCount, VULKAN_HPP_NAMESPACE::Rect2D* pRects, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = Rect2DAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Rect2DAllocator & rect2DAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getProperties( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties getProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 getProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getProperties2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 getProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; - template - VULKAN_HPP_NODISCARD StructureChain getProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getQueueFamilyPerformanceQueryPassesKHR( const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD uint32_t getQueueFamilyPerformanceQueryPassesKHR( const QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, VULKAN_HPP_NAMESPACE::QueueFamilyProperties* pQueueFamilyProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = QueueFamilyPropertiesAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties( QueueFamilyPropertiesAllocator & queueFamilyPropertiesAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getQueueFamilyProperties2( uint32_t* pQueueFamilyPropertyCount, VULKAN_HPP_NAMESPACE::QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = QueueFamilyProperties2Allocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = StructureChainAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2( StructureChainAllocator & structureChainAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, VULKAN_HPP_NAMESPACE::QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = QueueFamilyProperties2Allocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2KHR( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2KHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = StructureChainAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getQueueFamilyProperties2KHR( StructureChainAllocator & structureChainAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_SCREEN_QNX - template - 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 - template - 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*/ - - - template - void getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageTiling tiling, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::SparseImageFormatProperties* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageTiling tiling, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = SparseImageFormatPropertiesAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageTiling tiling, SparseImageFormatPropertiesAllocator & sparseImageFormatPropertiesAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void getSparseImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = SparseImageFormatProperties2Allocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - void getSparseImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD std::vector getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = SparseImageFormatProperties2Allocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD std::vector getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSupportedFramebufferMixedSamplesCombinationsNV( uint32_t* pCombinationCount, VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV* pCombinations, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSupportedFramebufferMixedSamplesCombinationsNV( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = FramebufferMixedSamplesCombinationNVAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSupportedFramebufferMixedSamplesCombinationsNV( FramebufferMixedSamplesCombinationNVAllocator & framebufferMixedSamplesCombinationNVAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT* pSurfaceCapabilities, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR* pSurfaceCapabilities, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType>::type getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR* pSurfaceCapabilities, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR* pSurfaceFormats, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = SurfaceFormat2KHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, SurfaceFormat2KHRAllocator & surfaceFormat2KHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, uint32_t* pSurfaceFormatCount, VULKAN_HPP_NAMESPACE::SurfaceFormatKHR* pSurfaceFormats, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = SurfaceFormatKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, SurfaceFormatKHRAllocator & surfaceFormatKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VULKAN_HPP_NAMESPACE::PresentModeKHR* pPresentModes, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PresentModeKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, PresentModeKHRAllocator & presentModeKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD Result getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, uint32_t* pPresentModeCount, VULKAN_HPP_NAMESPACE::PresentModeKHR* pPresentModes, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PresentModeKHRAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, PresentModeKHRAllocator & presentModeKHRAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface, VULKAN_HPP_NAMESPACE::Bool32* pSupported, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result getToolPropertiesEXT( uint32_t* pToolCount, VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT* pToolProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getToolPropertiesEXT( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PhysicalDeviceToolPropertiesEXTAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type getToolPropertiesEXT( PhysicalDeviceToolPropertiesEXTAllocator & physicalDeviceToolPropertiesEXTAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - template - 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 - template - 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*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - Bool32 getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - -#ifdef VK_USE_PLATFORM_XCB_KHR - template - 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 - template - 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*/ - - -#ifdef VK_USE_PLATFORM_XLIB_KHR - template - 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 - template - 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*/ - - -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - template - VULKAN_HPP_NODISCARD Result getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, VULKAN_HPP_NAMESPACE::DisplayKHR* pDisplay, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE 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*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result getWinrtDisplayNV( uint32_t deviceRelativeId, VULKAN_HPP_NAMESPACE::DisplayKHR* pDisplay, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type getWinrtDisplayNV( uint32_t deviceRelativeId, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE 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*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - Result releaseDisplayEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#else - template - typename ResultValueType::type releaseDisplayEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - VULKAN_HPP_TYPESAFE_EXPLICIT 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::PhysicalDevice ) == sizeof( VkPhysicalDevice ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::PhysicalDevice; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::PhysicalDevice; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::PhysicalDevice; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - struct DeviceGroupDeviceCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupDeviceCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceGroupDeviceCreateInfo(uint32_t physicalDeviceCount_ = {}, const VULKAN_HPP_NAMESPACE::PhysicalDevice* pPhysicalDevices_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & physicalDevices_ ) - : physicalDeviceCount( static_cast( physicalDevices_.size() ) ), pPhysicalDevices( physicalDevices_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceGroupDeviceCreateInfo & operator=( DeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceGroupDeviceCreateInfo & operator=( VkDeviceGroupDeviceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceGroupDeviceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceGroupDeviceCreateInfo & setPhysicalDeviceCount( uint32_t physicalDeviceCount_ ) VULKAN_HPP_NOEXCEPT - { - physicalDeviceCount = physicalDeviceCount_; - return *this; - } - - DeviceGroupDeviceCreateInfo & setPPhysicalDevices( const VULKAN_HPP_NAMESPACE::PhysicalDevice* pPhysicalDevices_ ) VULKAN_HPP_NOEXCEPT - { - pPhysicalDevices = pPhysicalDevices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceGroupDeviceCreateInfo & setPhysicalDevices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & physicalDevices_ ) VULKAN_HPP_NOEXCEPT - { - physicalDeviceCount = static_cast( physicalDevices_.size() ); - pPhysicalDevices = physicalDevices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDeviceGroupDeviceCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupDeviceCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceGroupDeviceCreateInfo const& ) const = default; -#else - bool operator==( DeviceGroupDeviceCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( physicalDeviceCount == rhs.physicalDeviceCount ) - && ( pPhysicalDevices == rhs.pPhysicalDevices ); - } - - bool operator!=( DeviceGroupDeviceCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupDeviceCreateInfo; - const void* pNext = {}; - uint32_t physicalDeviceCount = {}; - const VULKAN_HPP_NAMESPACE::PhysicalDevice* pPhysicalDevices = {}; - - }; - static_assert( sizeof( DeviceGroupDeviceCreateInfo ) == sizeof( VkDeviceGroupDeviceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceGroupDeviceCreateInfo; - }; - using DeviceGroupDeviceCreateInfoKHR = DeviceGroupDeviceCreateInfo; - - struct DeviceGroupPresentInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupPresentInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceGroupPresentInfoKHR(uint32_t swapchainCount_ = {}, const uint32_t* pDeviceMasks_ = {}, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceMasks_, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal ) - : swapchainCount( static_cast( deviceMasks_.size() ) ), pDeviceMasks( deviceMasks_.data() ), mode( mode_ ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceGroupPresentInfoKHR & operator=( DeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceGroupPresentInfoKHR & operator=( VkDeviceGroupPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceGroupPresentInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceGroupPresentInfoKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = swapchainCount_; - return *this; - } - - DeviceGroupPresentInfoKHR & setPDeviceMasks( const uint32_t* pDeviceMasks_ ) VULKAN_HPP_NOEXCEPT - { - pDeviceMasks = pDeviceMasks_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceGroupPresentInfoKHR & setDeviceMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceMasks_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = static_cast( deviceMasks_.size() ); - pDeviceMasks = deviceMasks_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DeviceGroupPresentInfoKHR & setMode( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode_ ) VULKAN_HPP_NOEXCEPT - { - mode = mode_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceGroupPresentInfoKHR const& ) const = default; -#else - bool operator==( DeviceGroupPresentInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchainCount == rhs.swapchainCount ) - && ( pDeviceMasks == rhs.pDeviceMasks ) - && ( mode == rhs.mode ); - } - - bool operator!=( DeviceGroupPresentInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupPresentInfoKHR; - const void* pNext = {}; - uint32_t swapchainCount = {}; - const uint32_t* pDeviceMasks = {}; - VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR mode = VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagBitsKHR::eLocal; - - }; - static_assert( sizeof( DeviceGroupPresentInfoKHR ) == sizeof( VkDeviceGroupPresentInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceGroupPresentInfoKHR; - }; - - struct DeviceGroupRenderPassBeginInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupRenderPassBeginInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceGroupRenderPassBeginInfo(uint32_t deviceMask_ = {}, uint32_t deviceRenderAreaCount_ = {}, const VULKAN_HPP_NAMESPACE::Rect2D* pDeviceRenderAreas_ = {}) VULKAN_HPP_NOEXCEPT - : 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_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceRenderAreas_ ) - : deviceMask( deviceMask_ ), deviceRenderAreaCount( static_cast( deviceRenderAreas_.size() ) ), pDeviceRenderAreas( deviceRenderAreas_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceGroupRenderPassBeginInfo & operator=( DeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceGroupRenderPassBeginInfo & operator=( VkDeviceGroupRenderPassBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceGroupRenderPassBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceGroupRenderPassBeginInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT - { - deviceMask = deviceMask_; - return *this; - } - - DeviceGroupRenderPassBeginInfo & setDeviceRenderAreaCount( uint32_t deviceRenderAreaCount_ ) VULKAN_HPP_NOEXCEPT - { - deviceRenderAreaCount = deviceRenderAreaCount_; - return *this; - } - - DeviceGroupRenderPassBeginInfo & setPDeviceRenderAreas( const VULKAN_HPP_NAMESPACE::Rect2D* pDeviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT - { - pDeviceRenderAreas = pDeviceRenderAreas_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceGroupRenderPassBeginInfo & setDeviceRenderAreas( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & deviceRenderAreas_ ) VULKAN_HPP_NOEXCEPT - { - deviceRenderAreaCount = static_cast( deviceRenderAreas_.size() ); - pDeviceRenderAreas = deviceRenderAreas_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDeviceGroupRenderPassBeginInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupRenderPassBeginInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceGroupRenderPassBeginInfo const& ) const = default; -#else - bool operator==( DeviceGroupRenderPassBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceMask == rhs.deviceMask ) - && ( deviceRenderAreaCount == rhs.deviceRenderAreaCount ) - && ( pDeviceRenderAreas == rhs.pDeviceRenderAreas ); - } - - bool operator!=( DeviceGroupRenderPassBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupRenderPassBeginInfo; - const void* pNext = {}; - uint32_t deviceMask = {}; - uint32_t deviceRenderAreaCount = {}; - const VULKAN_HPP_NAMESPACE::Rect2D* pDeviceRenderAreas = {}; - - }; - static_assert( sizeof( DeviceGroupRenderPassBeginInfo ) == sizeof( VkDeviceGroupRenderPassBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceGroupRenderPassBeginInfo; - }; - using DeviceGroupRenderPassBeginInfoKHR = DeviceGroupRenderPassBeginInfo; - - struct DeviceGroupSubmitInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupSubmitInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceGroupSubmitInfo(uint32_t waitSemaphoreCount_ = {}, const uint32_t* pWaitSemaphoreDeviceIndices_ = {}, uint32_t commandBufferCount_ = {}, const uint32_t* pCommandBufferDeviceMasks_ = {}, uint32_t signalSemaphoreCount_ = {}, const uint32_t* pSignalSemaphoreDeviceIndices_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreDeviceIndices_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & commandBufferDeviceMasks_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreDeviceIndices_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceGroupSubmitInfo & operator=( DeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceGroupSubmitInfo & operator=( VkDeviceGroupSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceGroupSubmitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceGroupSubmitInfo & setWaitSemaphoreCount( uint32_t waitSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreCount = waitSemaphoreCount_; - return *this; - } - - DeviceGroupSubmitInfo & setPWaitSemaphoreDeviceIndices( const uint32_t* pWaitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - pWaitSemaphoreDeviceIndices = pWaitSemaphoreDeviceIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceGroupSubmitInfo & setWaitSemaphoreDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreCount = static_cast( waitSemaphoreDeviceIndices_.size() ); - pWaitSemaphoreDeviceIndices = waitSemaphoreDeviceIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DeviceGroupSubmitInfo & setCommandBufferCount( uint32_t commandBufferCount_ ) VULKAN_HPP_NOEXCEPT - { - commandBufferCount = commandBufferCount_; - return *this; - } - - DeviceGroupSubmitInfo & setPCommandBufferDeviceMasks( const uint32_t* pCommandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT - { - pCommandBufferDeviceMasks = pCommandBufferDeviceMasks_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceGroupSubmitInfo & setCommandBufferDeviceMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & commandBufferDeviceMasks_ ) VULKAN_HPP_NOEXCEPT - { - commandBufferCount = static_cast( commandBufferDeviceMasks_.size() ); - pCommandBufferDeviceMasks = commandBufferDeviceMasks_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - DeviceGroupSubmitInfo & setSignalSemaphoreCount( uint32_t signalSemaphoreCount_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreCount = signalSemaphoreCount_; - return *this; - } - - DeviceGroupSubmitInfo & setPSignalSemaphoreDeviceIndices( const uint32_t* pSignalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - pSignalSemaphoreDeviceIndices = pSignalSemaphoreDeviceIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DeviceGroupSubmitInfo & setSignalSemaphoreDeviceIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreDeviceIndices_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreCount = static_cast( signalSemaphoreDeviceIndices_.size() ); - pSignalSemaphoreDeviceIndices = signalSemaphoreDeviceIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkDeviceGroupSubmitInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDeviceGroupSubmitInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceGroupSubmitInfo const& ) const = default; -#else - bool operator==( DeviceGroupSubmitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( DeviceGroupSubmitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSubmitInfo; - const void* pNext = {}; - uint32_t waitSemaphoreCount = {}; - const uint32_t* pWaitSemaphoreDeviceIndices = {}; - uint32_t commandBufferCount = {}; - const uint32_t* pCommandBufferDeviceMasks = {}; - uint32_t signalSemaphoreCount = {}; - const uint32_t* pSignalSemaphoreDeviceIndices = {}; - - }; - static_assert( sizeof( DeviceGroupSubmitInfo ) == sizeof( VkDeviceGroupSubmitInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceGroupSubmitInfo; - }; - using DeviceGroupSubmitInfoKHR = DeviceGroupSubmitInfo; - - struct DeviceGroupSwapchainCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceGroupSwapchainCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR(VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ = {}) VULKAN_HPP_NOEXCEPT - : modes( modes_ ) - {} - - VULKAN_HPP_CONSTEXPR DeviceGroupSwapchainCreateInfoKHR( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceGroupSwapchainCreateInfoKHR( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : DeviceGroupSwapchainCreateInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceGroupSwapchainCreateInfoKHR & operator=( DeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceGroupSwapchainCreateInfoKHR & operator=( VkDeviceGroupSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceGroupSwapchainCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceGroupSwapchainCreateInfoKHR & setModes( VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes_ ) VULKAN_HPP_NOEXCEPT - { - modes = modes_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceGroupSwapchainCreateInfoKHR const& ) const = default; -#else - bool operator==( DeviceGroupSwapchainCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( modes == rhs.modes ); - } - - bool operator!=( DeviceGroupSwapchainCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceGroupSwapchainCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes = {}; - - }; - static_assert( sizeof( DeviceGroupSwapchainCreateInfoKHR ) == sizeof( VkDeviceGroupSwapchainCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceGroupSwapchainCreateInfoKHR; - }; - - struct DeviceMemoryOverallocationCreateInfoAMD - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD(VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ = VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault) VULKAN_HPP_NOEXCEPT - : overallocationBehavior( overallocationBehavior_ ) - {} - - VULKAN_HPP_CONSTEXPR DeviceMemoryOverallocationCreateInfoAMD( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceMemoryOverallocationCreateInfoAMD( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT - : DeviceMemoryOverallocationCreateInfoAMD( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceMemoryOverallocationCreateInfoAMD & operator=( DeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceMemoryOverallocationCreateInfoAMD & operator=( VkDeviceMemoryOverallocationCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceMemoryOverallocationCreateInfoAMD & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceMemoryOverallocationCreateInfoAMD & setOverallocationBehavior( VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior_ ) VULKAN_HPP_NOEXCEPT - { - overallocationBehavior = overallocationBehavior_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceMemoryOverallocationCreateInfoAMD const& ) const = default; -#else - bool operator==( DeviceMemoryOverallocationCreateInfoAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( overallocationBehavior == rhs.overallocationBehavior ); - } - - bool operator!=( DeviceMemoryOverallocationCreateInfoAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryOverallocationCreateInfoAMD; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD overallocationBehavior = VULKAN_HPP_NAMESPACE::MemoryOverallocationBehaviorAMD::eDefault; - - }; - static_assert( sizeof( DeviceMemoryOverallocationCreateInfoAMD ) == sizeof( VkDeviceMemoryOverallocationCreateInfoAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceMemoryOverallocationCreateInfoAMD; - }; - - struct DeviceMemoryReportCallbackDataEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceMemoryReportCallbackDataEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceMemoryReportCallbackDataEXT(VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags_ = {}, VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type_ = VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate, uint64_t memoryObjectId_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize size_ = {}, VULKAN_HPP_NAMESPACE::ObjectType objectType_ = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown, uint64_t objectHandle_ = {}, uint32_t heapIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceMemoryReportCallbackDataEXT & operator=( DeviceMemoryReportCallbackDataEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceMemoryReportCallbackDataEXT const& ) const = default; -#else - bool operator==( DeviceMemoryReportCallbackDataEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( DeviceMemoryReportCallbackDataEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceMemoryReportCallbackDataEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceMemoryReportFlagsEXT flags = {}; - VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT type = VULKAN_HPP_NAMESPACE::DeviceMemoryReportEventTypeEXT::eAllocate; - uint64_t memoryObjectId = {}; - VULKAN_HPP_NAMESPACE::DeviceSize size = {}; - VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eUnknown; - uint64_t objectHandle = {}; - uint32_t heapIndex = {}; - - }; - static_assert( sizeof( DeviceMemoryReportCallbackDataEXT ) == sizeof( VkDeviceMemoryReportCallbackDataEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceMemoryReportCallbackDataEXT; - }; - - struct DevicePrivateDataCreateInfoEXT - { - static const bool allowDuplicate = true; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDevicePrivateDataCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfoEXT(uint32_t privateDataSlotRequestCount_ = {}) VULKAN_HPP_NOEXCEPT - : privateDataSlotRequestCount( privateDataSlotRequestCount_ ) - {} - - VULKAN_HPP_CONSTEXPR DevicePrivateDataCreateInfoEXT( DevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DevicePrivateDataCreateInfoEXT( VkDevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : DevicePrivateDataCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DevicePrivateDataCreateInfoEXT & operator=( DevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DevicePrivateDataCreateInfoEXT & operator=( VkDevicePrivateDataCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DevicePrivateDataCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DevicePrivateDataCreateInfoEXT & setPrivateDataSlotRequestCount( uint32_t privateDataSlotRequestCount_ ) VULKAN_HPP_NOEXCEPT - { - privateDataSlotRequestCount = privateDataSlotRequestCount_; - return *this; - } - - - operator VkDevicePrivateDataCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDevicePrivateDataCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DevicePrivateDataCreateInfoEXT const& ) const = default; -#else - bool operator==( DevicePrivateDataCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( privateDataSlotRequestCount == rhs.privateDataSlotRequestCount ); - } - - bool operator!=( DevicePrivateDataCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDevicePrivateDataCreateInfoEXT; - const void* pNext = {}; - uint32_t privateDataSlotRequestCount = {}; - - }; - static_assert( sizeof( DevicePrivateDataCreateInfoEXT ) == sizeof( VkDevicePrivateDataCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DevicePrivateDataCreateInfoEXT; - }; - - struct DeviceQueueGlobalPriorityCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DeviceQueueGlobalPriorityCreateInfoEXT(VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT globalPriority_ = VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow) VULKAN_HPP_NOEXCEPT - : globalPriority( globalPriority_ ) - {} - - VULKAN_HPP_CONSTEXPR DeviceQueueGlobalPriorityCreateInfoEXT( DeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceQueueGlobalPriorityCreateInfoEXT( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : DeviceQueueGlobalPriorityCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DeviceQueueGlobalPriorityCreateInfoEXT & operator=( DeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DeviceQueueGlobalPriorityCreateInfoEXT & operator=( VkDeviceQueueGlobalPriorityCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DeviceQueueGlobalPriorityCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DeviceQueueGlobalPriorityCreateInfoEXT & setGlobalPriority( VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT globalPriority_ ) VULKAN_HPP_NOEXCEPT - { - globalPriority = globalPriority_; - return *this; - } - - - operator VkDeviceQueueGlobalPriorityCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkDeviceQueueGlobalPriorityCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DeviceQueueGlobalPriorityCreateInfoEXT const& ) const = default; -#else - bool operator==( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( globalPriority == rhs.globalPriority ); - } - - bool operator!=( DeviceQueueGlobalPriorityCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDeviceQueueGlobalPriorityCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT globalPriority = VULKAN_HPP_NAMESPACE::QueueGlobalPriorityEXT::eLow; - - }; - static_assert( sizeof( DeviceQueueGlobalPriorityCreateInfoEXT ) == sizeof( VkDeviceQueueGlobalPriorityCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DeviceQueueGlobalPriorityCreateInfoEXT; - }; - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - struct DirectFBSurfaceCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDirectfbSurfaceCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DirectFBSurfaceCreateInfoEXT(VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_ = {}, IDirectFB* dfb_ = {}, IDirectFBSurface* surface_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DirectFBSurfaceCreateInfoEXT & operator=( DirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DirectFBSurfaceCreateInfoEXT & operator=( VkDirectFBSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DirectFBSurfaceCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DirectFBSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DirectFBSurfaceCreateInfoEXT & setDfb( IDirectFB* dfb_ ) VULKAN_HPP_NOEXCEPT - { - dfb = dfb_; - return *this; - } - - DirectFBSurfaceCreateInfoEXT & setSurface( IDirectFBSurface* surface_ ) VULKAN_HPP_NOEXCEPT - { - surface = surface_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DirectFBSurfaceCreateInfoEXT const& ) const = default; -#else - bool operator==( DirectFBSurfaceCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( dfb == rhs.dfb ) - && ( surface == rhs.surface ); - } - - bool operator!=( DirectFBSurfaceCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDirectfbSurfaceCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateFlagsEXT flags = {}; - IDirectFB* dfb = {}; - IDirectFBSurface* surface = {}; - - }; - static_assert( sizeof( DirectFBSurfaceCreateInfoEXT ) == sizeof( VkDirectFBSurfaceCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DirectFBSurfaceCreateInfoEXT; - }; -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - - struct DispatchIndirectCommand - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DispatchIndirectCommand & operator=( DispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DispatchIndirectCommand & operator=( VkDispatchIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DispatchIndirectCommand & setX( uint32_t x_ ) VULKAN_HPP_NOEXCEPT - { - x = x_; - return *this; - } - - DispatchIndirectCommand & setY( uint32_t y_ ) VULKAN_HPP_NOEXCEPT - { - y = y_; - return *this; - } - - DispatchIndirectCommand & setZ( uint32_t z_ ) VULKAN_HPP_NOEXCEPT - { - z = z_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DispatchIndirectCommand const& ) const = default; -#else - bool operator==( DispatchIndirectCommand const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( x == rhs.x ) - && ( y == rhs.y ) - && ( z == rhs.z ); - } - - bool operator!=( DispatchIndirectCommand const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t x = {}; - uint32_t y = {}; - uint32_t z = {}; - - }; - static_assert( sizeof( DispatchIndirectCommand ) == sizeof( VkDispatchIndirectCommand ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DisplayNativeHdrSurfaceCapabilitiesAMD - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD(VULKAN_HPP_NAMESPACE::Bool32 localDimmingSupport_ = {}) VULKAN_HPP_NOEXCEPT - : localDimmingSupport( localDimmingSupport_ ) - {} - - VULKAN_HPP_CONSTEXPR DisplayNativeHdrSurfaceCapabilitiesAMD( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayNativeHdrSurfaceCapabilitiesAMD( VkDisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT - : DisplayNativeHdrSurfaceCapabilitiesAMD( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayNativeHdrSurfaceCapabilitiesAMD & operator=( DisplayNativeHdrSurfaceCapabilitiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayNativeHdrSurfaceCapabilitiesAMD const& ) const = default; -#else - bool operator==( DisplayNativeHdrSurfaceCapabilitiesAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( localDimmingSupport == rhs.localDimmingSupport ); - } - - bool operator!=( DisplayNativeHdrSurfaceCapabilitiesAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayNativeHdrSurfaceCapabilitiesAMD; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 localDimmingSupport = {}; - - }; - static_assert( sizeof( DisplayNativeHdrSurfaceCapabilitiesAMD ) == sizeof( VkDisplayNativeHdrSurfaceCapabilitiesAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayNativeHdrSurfaceCapabilitiesAMD; - }; - - struct DisplayPresentInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplayPresentInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplayPresentInfoKHR(VULKAN_HPP_NAMESPACE::Rect2D srcRect_ = {}, VULKAN_HPP_NAMESPACE::Rect2D dstRect_ = {}, VULKAN_HPP_NAMESPACE::Bool32 persistent_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplayPresentInfoKHR & operator=( DisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplayPresentInfoKHR & operator=( VkDisplayPresentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DisplayPresentInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DisplayPresentInfoKHR & setSrcRect( VULKAN_HPP_NAMESPACE::Rect2D const & srcRect_ ) VULKAN_HPP_NOEXCEPT - { - srcRect = srcRect_; - return *this; - } - - DisplayPresentInfoKHR & setDstRect( VULKAN_HPP_NAMESPACE::Rect2D const & dstRect_ ) VULKAN_HPP_NOEXCEPT - { - dstRect = dstRect_; - return *this; - } - - DisplayPresentInfoKHR & setPersistent( VULKAN_HPP_NAMESPACE::Bool32 persistent_ ) VULKAN_HPP_NOEXCEPT - { - persistent = persistent_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplayPresentInfoKHR const& ) const = default; -#else - bool operator==( DisplayPresentInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcRect == rhs.srcRect ) - && ( dstRect == rhs.dstRect ) - && ( persistent == rhs.persistent ); - } - - bool operator!=( DisplayPresentInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplayPresentInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Rect2D srcRect = {}; - VULKAN_HPP_NAMESPACE::Rect2D dstRect = {}; - VULKAN_HPP_NAMESPACE::Bool32 persistent = {}; - - }; - static_assert( sizeof( DisplayPresentInfoKHR ) == sizeof( VkDisplayPresentInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplayPresentInfoKHR; - }; - - struct DisplaySurfaceCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDisplaySurfaceCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DisplaySurfaceCreateInfoKHR(VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_ = {}, VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ = {}, uint32_t planeIndex_ = {}, uint32_t planeStackIndex_ = {}, VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity, float globalAlpha_ = {}, VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ = VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque, VULKAN_HPP_NAMESPACE::Extent2D imageExtent_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DisplaySurfaceCreateInfoKHR & operator=( DisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DisplaySurfaceCreateInfoKHR & operator=( VkDisplaySurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DisplaySurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setDisplayMode( VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode_ ) VULKAN_HPP_NOEXCEPT - { - displayMode = displayMode_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setPlaneIndex( uint32_t planeIndex_ ) VULKAN_HPP_NOEXCEPT - { - planeIndex = planeIndex_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setPlaneStackIndex( uint32_t planeStackIndex_ ) VULKAN_HPP_NOEXCEPT - { - planeStackIndex = planeStackIndex_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT - { - transform = transform_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setGlobalAlpha( float globalAlpha_ ) VULKAN_HPP_NOEXCEPT - { - globalAlpha = globalAlpha_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setAlphaMode( VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode_ ) VULKAN_HPP_NOEXCEPT - { - alphaMode = alphaMode_; - return *this; - } - - DisplaySurfaceCreateInfoKHR & setImageExtent( VULKAN_HPP_NAMESPACE::Extent2D const & imageExtent_ ) VULKAN_HPP_NOEXCEPT - { - imageExtent = imageExtent_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DisplaySurfaceCreateInfoKHR const& ) const = default; -#else - bool operator==( DisplaySurfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( DisplaySurfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDisplaySurfaceCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateFlagsKHR flags = {}; - VULKAN_HPP_NAMESPACE::DisplayModeKHR displayMode = {}; - uint32_t planeIndex = {}; - uint32_t planeStackIndex = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; - float globalAlpha = {}; - VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR alphaMode = VULKAN_HPP_NAMESPACE::DisplayPlaneAlphaFlagBitsKHR::eOpaque; - VULKAN_HPP_NAMESPACE::Extent2D imageExtent = {}; - - }; - static_assert( sizeof( DisplaySurfaceCreateInfoKHR ) == sizeof( VkDisplaySurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DisplaySurfaceCreateInfoKHR; - }; - - struct DrawIndexedIndirectCommand - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DrawIndexedIndirectCommand & operator=( DrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DrawIndexedIndirectCommand & operator=( VkDrawIndexedIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DrawIndexedIndirectCommand & setIndexCount( uint32_t indexCount_ ) VULKAN_HPP_NOEXCEPT - { - indexCount = indexCount_; - return *this; - } - - DrawIndexedIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT - { - instanceCount = instanceCount_; - return *this; - } - - DrawIndexedIndirectCommand & setFirstIndex( uint32_t firstIndex_ ) VULKAN_HPP_NOEXCEPT - { - firstIndex = firstIndex_; - return *this; - } - - DrawIndexedIndirectCommand & setVertexOffset( int32_t vertexOffset_ ) VULKAN_HPP_NOEXCEPT - { - vertexOffset = vertexOffset_; - return *this; - } - - DrawIndexedIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT - { - firstInstance = firstInstance_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DrawIndexedIndirectCommand const& ) const = default; -#else - bool operator==( DrawIndexedIndirectCommand const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( indexCount == rhs.indexCount ) - && ( instanceCount == rhs.instanceCount ) - && ( firstIndex == rhs.firstIndex ) - && ( vertexOffset == rhs.vertexOffset ) - && ( firstInstance == rhs.firstInstance ); - } - - 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 = {}; - - }; - static_assert( sizeof( DrawIndexedIndirectCommand ) == sizeof( VkDrawIndexedIndirectCommand ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DrawIndirectCommand - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DrawIndirectCommand & operator=( DrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DrawIndirectCommand & operator=( VkDrawIndirectCommand const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DrawIndirectCommand & setVertexCount( uint32_t vertexCount_ ) VULKAN_HPP_NOEXCEPT - { - vertexCount = vertexCount_; - return *this; - } - - DrawIndirectCommand & setInstanceCount( uint32_t instanceCount_ ) VULKAN_HPP_NOEXCEPT - { - instanceCount = instanceCount_; - return *this; - } - - DrawIndirectCommand & setFirstVertex( uint32_t firstVertex_ ) VULKAN_HPP_NOEXCEPT - { - firstVertex = firstVertex_; - return *this; - } - - DrawIndirectCommand & setFirstInstance( uint32_t firstInstance_ ) VULKAN_HPP_NOEXCEPT - { - firstInstance = firstInstance_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DrawIndirectCommand const& ) const = default; -#else - bool operator==( DrawIndirectCommand const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( vertexCount == rhs.vertexCount ) - && ( instanceCount == rhs.instanceCount ) - && ( firstVertex == rhs.firstVertex ) - && ( firstInstance == rhs.firstInstance ); - } - - 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 = {}; - - }; - static_assert( sizeof( DrawIndirectCommand ) == sizeof( VkDrawIndirectCommand ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DrawMeshTasksIndirectCommandNV - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DrawMeshTasksIndirectCommandNV & operator=( DrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - DrawMeshTasksIndirectCommandNV & operator=( VkDrawMeshTasksIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - DrawMeshTasksIndirectCommandNV & setTaskCount( uint32_t taskCount_ ) VULKAN_HPP_NOEXCEPT - { - taskCount = taskCount_; - return *this; - } - - DrawMeshTasksIndirectCommandNV & setFirstTask( uint32_t firstTask_ ) VULKAN_HPP_NOEXCEPT - { - firstTask = firstTask_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DrawMeshTasksIndirectCommandNV const& ) const = default; -#else - bool operator==( DrawMeshTasksIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( taskCount == rhs.taskCount ) - && ( firstTask == rhs.firstTask ); - } - - bool operator!=( DrawMeshTasksIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t taskCount = {}; - uint32_t firstTask = {}; - - }; - static_assert( sizeof( DrawMeshTasksIndirectCommandNV ) == sizeof( VkDrawMeshTasksIndirectCommandNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DrmFormatModifierPropertiesEXT - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesEXT(uint64_t drmFormatModifier_ = {}, uint32_t drmFormatModifierPlaneCount_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DrmFormatModifierPropertiesEXT & operator=( DrmFormatModifierPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DrmFormatModifierPropertiesEXT const& ) const = default; -#else - bool operator==( DrmFormatModifierPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( drmFormatModifier == rhs.drmFormatModifier ) - && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) - && ( drmFormatModifierTilingFeatures == rhs.drmFormatModifierTilingFeatures ); - } - - bool operator!=( DrmFormatModifierPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint64_t drmFormatModifier = {}; - uint32_t drmFormatModifierPlaneCount = {}; - VULKAN_HPP_NAMESPACE::FormatFeatureFlags drmFormatModifierTilingFeatures = {}; - - }; - static_assert( sizeof( DrmFormatModifierPropertiesEXT ) == sizeof( VkDrmFormatModifierPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct DrmFormatModifierPropertiesListEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eDrmFormatModifierPropertiesListEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR DrmFormatModifierPropertiesListEXT(uint32_t drmFormatModifierCount_ = {}, VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - DrmFormatModifierPropertiesListEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & drmFormatModifierProperties_ ) - : drmFormatModifierCount( static_cast( drmFormatModifierProperties_.size() ) ), pDrmFormatModifierProperties( drmFormatModifierProperties_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 DrmFormatModifierPropertiesListEXT & operator=( DrmFormatModifierPropertiesListEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DrmFormatModifierPropertiesListEXT const& ) const = default; -#else - bool operator==( DrmFormatModifierPropertiesListEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) - && ( pDrmFormatModifierProperties == rhs.pDrmFormatModifierProperties ); - } - - bool operator!=( DrmFormatModifierPropertiesListEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eDrmFormatModifierPropertiesListEXT; - void* pNext = {}; - uint32_t drmFormatModifierCount = {}; - VULKAN_HPP_NAMESPACE::DrmFormatModifierPropertiesEXT* pDrmFormatModifierProperties = {}; - - }; - static_assert( sizeof( DrmFormatModifierPropertiesListEXT ) == sizeof( VkDrmFormatModifierPropertiesListEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = DrmFormatModifierPropertiesListEXT; - }; - - struct ExportFenceCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportFenceCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo(VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ = {}) VULKAN_HPP_NOEXCEPT - : handleTypes( handleTypes_ ) - {} - - VULKAN_HPP_CONSTEXPR ExportFenceCreateInfo( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportFenceCreateInfo( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : ExportFenceCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExportFenceCreateInfo & operator=( ExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportFenceCreateInfo & operator=( VkExportFenceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExportFenceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExportFenceCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT - { - handleTypes = handleTypes_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExportFenceCreateInfo const& ) const = default; -#else - bool operator==( ExportFenceCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExportFenceCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalFenceHandleTypeFlags handleTypes = {}; - - }; - static_assert( sizeof( ExportFenceCreateInfo ) == sizeof( VkExportFenceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExportFenceCreateInfo; - }; - using ExportFenceCreateInfoKHR = ExportFenceCreateInfo; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ExportFenceWin32HandleInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportFenceWin32HandleInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExportFenceWin32HandleInfoKHR(const SECURITY_ATTRIBUTES* pAttributes_ = {}, DWORD dwAccess_ = {}, LPCWSTR name_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExportFenceWin32HandleInfoKHR & operator=( ExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportFenceWin32HandleInfoKHR & operator=( VkExportFenceWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExportFenceWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExportFenceWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ ) VULKAN_HPP_NOEXCEPT - { - pAttributes = pAttributes_; - return *this; - } - - ExportFenceWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT - { - dwAccess = dwAccess_; - return *this; - } - - ExportFenceWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT - { - name = name_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExportFenceWin32HandleInfoKHR const& ) const = default; -#else - bool operator==( ExportFenceWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pAttributes == rhs.pAttributes ) - && ( dwAccess == rhs.dwAccess ) - && ( name == rhs.name ); - } - - bool operator!=( ExportFenceWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportFenceWin32HandleInfoKHR; - const void* pNext = {}; - const SECURITY_ATTRIBUTES* pAttributes = {}; - DWORD dwAccess = {}; - LPCWSTR name = {}; - - }; - static_assert( sizeof( ExportFenceWin32HandleInfoKHR ) == sizeof( VkExportFenceWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExportFenceWin32HandleInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct ExportMemoryAllocateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryAllocateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {}) VULKAN_HPP_NOEXCEPT - : handleTypes( handleTypes_ ) - {} - - VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfo( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportMemoryAllocateInfo( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : ExportMemoryAllocateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfo & operator=( ExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportMemoryAllocateInfo & operator=( VkExportMemoryAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExportMemoryAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExportMemoryAllocateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT - { - handleTypes = handleTypes_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExportMemoryAllocateInfo const& ) const = default; -#else - bool operator==( ExportMemoryAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExportMemoryAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryAllocateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {}; - - }; - static_assert( sizeof( ExportMemoryAllocateInfo ) == sizeof( VkExportMemoryAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExportMemoryAllocateInfo; - }; - using ExportMemoryAllocateInfoKHR = ExportMemoryAllocateInfo; - - struct ExportMemoryAllocateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryAllocateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {}) VULKAN_HPP_NOEXCEPT - : handleTypes( handleTypes_ ) - {} - - VULKAN_HPP_CONSTEXPR ExportMemoryAllocateInfoNV( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportMemoryAllocateInfoNV( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - : ExportMemoryAllocateInfoNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExportMemoryAllocateInfoNV & operator=( ExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportMemoryAllocateInfoNV & operator=( VkExportMemoryAllocateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExportMemoryAllocateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExportMemoryAllocateInfoNV & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT - { - handleTypes = handleTypes_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExportMemoryAllocateInfoNV const& ) const = default; -#else - bool operator==( ExportMemoryAllocateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExportMemoryAllocateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryAllocateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {}; - - }; - static_assert( sizeof( ExportMemoryAllocateInfoNV ) == sizeof( VkExportMemoryAllocateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExportMemoryAllocateInfoNV; - }; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ExportMemoryWin32HandleInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryWin32HandleInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoKHR(const SECURITY_ATTRIBUTES* pAttributes_ = {}, DWORD dwAccess_ = {}, LPCWSTR name_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoKHR & operator=( ExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportMemoryWin32HandleInfoKHR & operator=( VkExportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExportMemoryWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExportMemoryWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ ) VULKAN_HPP_NOEXCEPT - { - pAttributes = pAttributes_; - return *this; - } - - ExportMemoryWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT - { - dwAccess = dwAccess_; - return *this; - } - - ExportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT - { - name = name_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExportMemoryWin32HandleInfoKHR const& ) const = default; -#else - bool operator==( ExportMemoryWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pAttributes == rhs.pAttributes ) - && ( dwAccess == rhs.dwAccess ) - && ( name == rhs.name ); - } - - bool operator!=( ExportMemoryWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryWin32HandleInfoKHR; - const void* pNext = {}; - const SECURITY_ATTRIBUTES* pAttributes = {}; - DWORD dwAccess = {}; - LPCWSTR name = {}; - - }; - static_assert( sizeof( ExportMemoryWin32HandleInfoKHR ) == sizeof( VkExportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExportMemoryWin32HandleInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ExportMemoryWin32HandleInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportMemoryWin32HandleInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExportMemoryWin32HandleInfoNV(const SECURITY_ATTRIBUTES* pAttributes_ = {}, DWORD dwAccess_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExportMemoryWin32HandleInfoNV & operator=( ExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportMemoryWin32HandleInfoNV & operator=( VkExportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExportMemoryWin32HandleInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExportMemoryWin32HandleInfoNV & setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ ) VULKAN_HPP_NOEXCEPT - { - pAttributes = pAttributes_; - return *this; - } - - ExportMemoryWin32HandleInfoNV & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT - { - dwAccess = dwAccess_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExportMemoryWin32HandleInfoNV const& ) const = default; -#else - bool operator==( ExportMemoryWin32HandleInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pAttributes == rhs.pAttributes ) - && ( dwAccess == rhs.dwAccess ); - } - - bool operator!=( ExportMemoryWin32HandleInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportMemoryWin32HandleInfoNV; - const void* pNext = {}; - const SECURITY_ATTRIBUTES* pAttributes = {}; - DWORD dwAccess = {}; - - }; - static_assert( sizeof( ExportMemoryWin32HandleInfoNV ) == sizeof( VkExportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExportMemoryWin32HandleInfoNV; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct ExportSemaphoreCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportSemaphoreCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo(VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ = {}) VULKAN_HPP_NOEXCEPT - : handleTypes( handleTypes_ ) - {} - - VULKAN_HPP_CONSTEXPR ExportSemaphoreCreateInfo( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportSemaphoreCreateInfo( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : ExportSemaphoreCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreCreateInfo & operator=( ExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportSemaphoreCreateInfo & operator=( VkExportSemaphoreCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExportSemaphoreCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExportSemaphoreCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT - { - handleTypes = handleTypes_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExportSemaphoreCreateInfo const& ) const = default; -#else - bool operator==( ExportSemaphoreCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExportSemaphoreCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalSemaphoreHandleTypeFlags handleTypes = {}; - - }; - static_assert( sizeof( ExportSemaphoreCreateInfo ) == sizeof( VkExportSemaphoreCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExportSemaphoreCreateInfo; - }; - using ExportSemaphoreCreateInfoKHR = ExportSemaphoreCreateInfo; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ExportSemaphoreWin32HandleInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExportSemaphoreWin32HandleInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExportSemaphoreWin32HandleInfoKHR(const SECURITY_ATTRIBUTES* pAttributes_ = {}, DWORD dwAccess_ = {}, LPCWSTR name_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExportSemaphoreWin32HandleInfoKHR & operator=( ExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExportSemaphoreWin32HandleInfoKHR & operator=( VkExportSemaphoreWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExportSemaphoreWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExportSemaphoreWin32HandleInfoKHR & setPAttributes( const SECURITY_ATTRIBUTES* pAttributes_ ) VULKAN_HPP_NOEXCEPT - { - pAttributes = pAttributes_; - return *this; - } - - ExportSemaphoreWin32HandleInfoKHR & setDwAccess( DWORD dwAccess_ ) VULKAN_HPP_NOEXCEPT - { - dwAccess = dwAccess_; - return *this; - } - - ExportSemaphoreWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT - { - name = name_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExportSemaphoreWin32HandleInfoKHR const& ) const = default; -#else - bool operator==( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pAttributes == rhs.pAttributes ) - && ( dwAccess == rhs.dwAccess ) - && ( name == rhs.name ); - } - - bool operator!=( ExportSemaphoreWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExportSemaphoreWin32HandleInfoKHR; - const void* pNext = {}; - const SECURITY_ATTRIBUTES* pAttributes = {}; - DWORD dwAccess = {}; - LPCWSTR name = {}; - - }; - static_assert( sizeof( ExportSemaphoreWin32HandleInfoKHR ) == sizeof( VkExportSemaphoreWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExportSemaphoreWin32HandleInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct ExternalFormatANDROID - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalFormatANDROID; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalFormatANDROID(uint64_t externalFormat_ = {}) VULKAN_HPP_NOEXCEPT - : externalFormat( externalFormat_ ) - {} - - VULKAN_HPP_CONSTEXPR ExternalFormatANDROID( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalFormatANDROID( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT - : ExternalFormatANDROID( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalFormatANDROID & operator=( ExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalFormatANDROID & operator=( VkExternalFormatANDROID const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExternalFormatANDROID & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExternalFormatANDROID & setExternalFormat( uint64_t externalFormat_ ) VULKAN_HPP_NOEXCEPT - { - externalFormat = externalFormat_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalFormatANDROID const& ) const = default; -#else - bool operator==( ExternalFormatANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( externalFormat == rhs.externalFormat ); - } - - bool operator!=( ExternalFormatANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalFormatANDROID; - void* pNext = {}; - uint64_t externalFormat = {}; - - }; - static_assert( sizeof( ExternalFormatANDROID ) == sizeof( VkExternalFormatANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExternalFormatANDROID; - }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - struct ExternalImageFormatProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalImageFormatProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties(VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties_ = {}) VULKAN_HPP_NOEXCEPT - : externalMemoryProperties( externalMemoryProperties_ ) - {} - - VULKAN_HPP_CONSTEXPR ExternalImageFormatProperties( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalImageFormatProperties( VkExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT - : ExternalImageFormatProperties( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalImageFormatProperties & operator=( ExternalImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalImageFormatProperties const& ) const = default; -#else - bool operator==( ExternalImageFormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( externalMemoryProperties == rhs.externalMemoryProperties ); - } - - bool operator!=( ExternalImageFormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalImageFormatProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryProperties externalMemoryProperties = {}; - - }; - static_assert( sizeof( ExternalImageFormatProperties ) == sizeof( VkExternalImageFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExternalImageFormatProperties; - }; - using ExternalImageFormatPropertiesKHR = ExternalImageFormatProperties; - - struct ExternalMemoryBufferCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryBufferCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {}) VULKAN_HPP_NOEXCEPT - : handleTypes( handleTypes_ ) - {} - - VULKAN_HPP_CONSTEXPR ExternalMemoryBufferCreateInfo( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalMemoryBufferCreateInfo( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : ExternalMemoryBufferCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalMemoryBufferCreateInfo & operator=( ExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalMemoryBufferCreateInfo & operator=( VkExternalMemoryBufferCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExternalMemoryBufferCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExternalMemoryBufferCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT - { - handleTypes = handleTypes_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalMemoryBufferCreateInfo const& ) const = default; -#else - bool operator==( ExternalMemoryBufferCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExternalMemoryBufferCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryBufferCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {}; - - }; - static_assert( sizeof( ExternalMemoryBufferCreateInfo ) == sizeof( VkExternalMemoryBufferCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExternalMemoryBufferCreateInfo; - }; - using ExternalMemoryBufferCreateInfoKHR = ExternalMemoryBufferCreateInfo; - - struct ExternalMemoryImageCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryImageCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ = {}) VULKAN_HPP_NOEXCEPT - : handleTypes( handleTypes_ ) - {} - - VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfo( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalMemoryImageCreateInfo( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : ExternalMemoryImageCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfo & operator=( ExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalMemoryImageCreateInfo & operator=( VkExternalMemoryImageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExternalMemoryImageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExternalMemoryImageCreateInfo & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes_ ) VULKAN_HPP_NOEXCEPT - { - handleTypes = handleTypes_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalMemoryImageCreateInfo const& ) const = default; -#else - bool operator==( ExternalMemoryImageCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExternalMemoryImageCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryImageCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlags handleTypes = {}; - - }; - static_assert( sizeof( ExternalMemoryImageCreateInfo ) == sizeof( VkExternalMemoryImageCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExternalMemoryImageCreateInfo; - }; - using ExternalMemoryImageCreateInfoKHR = ExternalMemoryImageCreateInfo; - - struct ExternalMemoryImageCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eExternalMemoryImageCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ = {}) VULKAN_HPP_NOEXCEPT - : handleTypes( handleTypes_ ) - {} - - VULKAN_HPP_CONSTEXPR ExternalMemoryImageCreateInfoNV( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalMemoryImageCreateInfoNV( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - : ExternalMemoryImageCreateInfoNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ExternalMemoryImageCreateInfoNV & operator=( ExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ExternalMemoryImageCreateInfoNV & operator=( VkExternalMemoryImageCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ExternalMemoryImageCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ExternalMemoryImageCreateInfoNV & setHandleTypes( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes_ ) VULKAN_HPP_NOEXCEPT - { - handleTypes = handleTypes_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ExternalMemoryImageCreateInfoNV const& ) const = default; -#else - bool operator==( ExternalMemoryImageCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleTypes == rhs.handleTypes ); - } - - bool operator!=( ExternalMemoryImageCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eExternalMemoryImageCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleTypes = {}; - - }; - static_assert( sizeof( ExternalMemoryImageCreateInfoNV ) == sizeof( VkExternalMemoryImageCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ExternalMemoryImageCreateInfoNV; - }; - - struct FilterCubicImageViewImageFormatPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FilterCubicImageViewImageFormatPropertiesEXT(VULKAN_HPP_NAMESPACE::Bool32 filterCubic_ = {}, VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FilterCubicImageViewImageFormatPropertiesEXT & operator=( FilterCubicImageViewImageFormatPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FilterCubicImageViewImageFormatPropertiesEXT const& ) const = default; -#else - bool operator==( FilterCubicImageViewImageFormatPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( filterCubic == rhs.filterCubic ) - && ( filterCubicMinmax == rhs.filterCubicMinmax ); - } - - bool operator!=( FilterCubicImageViewImageFormatPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFilterCubicImageViewImageFormatPropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 filterCubic = {}; - VULKAN_HPP_NAMESPACE::Bool32 filterCubicMinmax = {}; - - }; - static_assert( sizeof( FilterCubicImageViewImageFormatPropertiesEXT ) == sizeof( VkFilterCubicImageViewImageFormatPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FilterCubicImageViewImageFormatPropertiesEXT; - }; - - struct FragmentShadingRateAttachmentInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFragmentShadingRateAttachmentInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FragmentShadingRateAttachmentInfoKHR(const VULKAN_HPP_NAMESPACE::AttachmentReference2* pFragmentShadingRateAttachment_ = {}, VULKAN_HPP_NAMESPACE::Extent2D shadingRateAttachmentTexelSize_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FragmentShadingRateAttachmentInfoKHR & operator=( FragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - FragmentShadingRateAttachmentInfoKHR & operator=( VkFragmentShadingRateAttachmentInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - FragmentShadingRateAttachmentInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - FragmentShadingRateAttachmentInfoKHR & setPFragmentShadingRateAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2* pFragmentShadingRateAttachment_ ) VULKAN_HPP_NOEXCEPT - { - pFragmentShadingRateAttachment = pFragmentShadingRateAttachment_; - return *this; - } - - FragmentShadingRateAttachmentInfoKHR & setShadingRateAttachmentTexelSize( VULKAN_HPP_NAMESPACE::Extent2D const & shadingRateAttachmentTexelSize_ ) VULKAN_HPP_NOEXCEPT - { - shadingRateAttachmentTexelSize = shadingRateAttachmentTexelSize_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FragmentShadingRateAttachmentInfoKHR const& ) const = default; -#else - bool operator==( FragmentShadingRateAttachmentInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pFragmentShadingRateAttachment == rhs.pFragmentShadingRateAttachment ) - && ( shadingRateAttachmentTexelSize == rhs.shadingRateAttachmentTexelSize ); - } - - bool operator!=( FragmentShadingRateAttachmentInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFragmentShadingRateAttachmentInfoKHR; - const void* pNext = {}; - const VULKAN_HPP_NAMESPACE::AttachmentReference2* pFragmentShadingRateAttachment = {}; - VULKAN_HPP_NAMESPACE::Extent2D shadingRateAttachmentTexelSize = {}; - - }; - static_assert( sizeof( FragmentShadingRateAttachmentInfoKHR ) == sizeof( VkFragmentShadingRateAttachmentInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FragmentShadingRateAttachmentInfoKHR; - }; - - struct FramebufferAttachmentImageInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferAttachmentImageInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FramebufferAttachmentImageInfo(VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ = {}, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}, uint32_t width_ = {}, uint32_t height_ = {}, uint32_t layerCount_ = {}, uint32_t viewFormatCount_ = {}, const VULKAN_HPP_NAMESPACE::Format* pViewFormats_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_, uint32_t width_, uint32_t height_, uint32_t layerCount_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewFormats_ ) - : flags( flags_ ), usage( usage_ ), width( width_ ), height( height_ ), layerCount( layerCount_ ), viewFormatCount( static_cast( viewFormats_.size() ) ), pViewFormats( viewFormats_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentImageInfo & operator=( FramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - FramebufferAttachmentImageInfo & operator=( VkFramebufferAttachmentImageInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - FramebufferAttachmentImageInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - FramebufferAttachmentImageInfo & setFlags( VULKAN_HPP_NAMESPACE::ImageCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - FramebufferAttachmentImageInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT - { - usage = usage_; - return *this; - } - - FramebufferAttachmentImageInfo & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT - { - width = width_; - return *this; - } - - FramebufferAttachmentImageInfo & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT - { - height = height_; - return *this; - } - - FramebufferAttachmentImageInfo & setLayerCount( uint32_t layerCount_ ) VULKAN_HPP_NOEXCEPT - { - layerCount = layerCount_; - return *this; - } - - FramebufferAttachmentImageInfo & setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT - { - viewFormatCount = viewFormatCount_; - return *this; - } - - FramebufferAttachmentImageInfo & setPViewFormats( const VULKAN_HPP_NAMESPACE::Format* pViewFormats_ ) VULKAN_HPP_NOEXCEPT - { - pViewFormats = pViewFormats_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - FramebufferAttachmentImageInfo & setViewFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewFormats_ ) VULKAN_HPP_NOEXCEPT - { - viewFormatCount = static_cast( viewFormats_.size() ); - pViewFormats = viewFormats_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkFramebufferAttachmentImageInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkFramebufferAttachmentImageInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FramebufferAttachmentImageInfo const& ) const = default; -#else - bool operator==( FramebufferAttachmentImageInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( FramebufferAttachmentImageInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentImageInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageCreateFlags flags = {}; - VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; - uint32_t width = {}; - uint32_t height = {}; - uint32_t layerCount = {}; - uint32_t viewFormatCount = {}; - const VULKAN_HPP_NAMESPACE::Format* pViewFormats = {}; - - }; - static_assert( sizeof( FramebufferAttachmentImageInfo ) == sizeof( VkFramebufferAttachmentImageInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FramebufferAttachmentImageInfo; - }; - using FramebufferAttachmentImageInfoKHR = FramebufferAttachmentImageInfo; - - struct FramebufferAttachmentsCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eFramebufferAttachmentsCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR FramebufferAttachmentsCreateInfo(uint32_t attachmentImageInfoCount_ = {}, const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo* pAttachmentImageInfos_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachmentImageInfos_ ) - : attachmentImageInfoCount( static_cast( attachmentImageInfos_.size() ) ), pAttachmentImageInfos( attachmentImageInfos_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 FramebufferAttachmentsCreateInfo & operator=( FramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - FramebufferAttachmentsCreateInfo & operator=( VkFramebufferAttachmentsCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - FramebufferAttachmentsCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - FramebufferAttachmentsCreateInfo & setAttachmentImageInfoCount( uint32_t attachmentImageInfoCount_ ) VULKAN_HPP_NOEXCEPT - { - attachmentImageInfoCount = attachmentImageInfoCount_; - return *this; - } - - FramebufferAttachmentsCreateInfo & setPAttachmentImageInfos( const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo* pAttachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT - { - pAttachmentImageInfos = pAttachmentImageInfos_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - FramebufferAttachmentsCreateInfo & setAttachmentImageInfos( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachmentImageInfos_ ) VULKAN_HPP_NOEXCEPT - { - attachmentImageInfoCount = static_cast( attachmentImageInfos_.size() ); - pAttachmentImageInfos = attachmentImageInfos_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkFramebufferAttachmentsCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkFramebufferAttachmentsCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( FramebufferAttachmentsCreateInfo const& ) const = default; -#else - bool operator==( FramebufferAttachmentsCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( attachmentImageInfoCount == rhs.attachmentImageInfoCount ) - && ( pAttachmentImageInfos == rhs.pAttachmentImageInfos ); - } - - bool operator!=( FramebufferAttachmentsCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eFramebufferAttachmentsCreateInfo; - const void* pNext = {}; - uint32_t attachmentImageInfoCount = {}; - const VULKAN_HPP_NAMESPACE::FramebufferAttachmentImageInfo* pAttachmentImageInfos = {}; - - }; - static_assert( sizeof( FramebufferAttachmentsCreateInfo ) == sizeof( VkFramebufferAttachmentsCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = FramebufferAttachmentsCreateInfo; - }; - using FramebufferAttachmentsCreateInfoKHR = FramebufferAttachmentsCreateInfo; - - struct GraphicsShaderGroupCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsShaderGroupCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR GraphicsShaderGroupCreateInfoNV(uint32_t stageCount_ = {}, const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages_ = {}, const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & stages_, const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState_ = {}, const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState_ = {} ) - : stageCount( static_cast( stages_.size() ) ), pStages( stages_.data() ), pVertexInputState( pVertexInputState_ ), pTessellationState( pTessellationState_ ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 GraphicsShaderGroupCreateInfoNV & operator=( GraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - GraphicsShaderGroupCreateInfoNV & operator=( VkGraphicsShaderGroupCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - GraphicsShaderGroupCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - GraphicsShaderGroupCreateInfoNV & setStageCount( uint32_t stageCount_ ) VULKAN_HPP_NOEXCEPT - { - stageCount = stageCount_; - return *this; - } - - GraphicsShaderGroupCreateInfoNV & setPStages( const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages_ ) VULKAN_HPP_NOEXCEPT - { - pStages = pStages_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - GraphicsShaderGroupCreateInfoNV & setStages( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & stages_ ) VULKAN_HPP_NOEXCEPT - { - stageCount = static_cast( stages_.size() ); - pStages = stages_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - GraphicsShaderGroupCreateInfoNV & setPVertexInputState( const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState_ ) VULKAN_HPP_NOEXCEPT - { - pVertexInputState = pVertexInputState_; - return *this; - } - - GraphicsShaderGroupCreateInfoNV & setPTessellationState( const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState_ ) VULKAN_HPP_NOEXCEPT - { - pTessellationState = pTessellationState_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( GraphicsShaderGroupCreateInfoNV const& ) const = default; -#else - bool operator==( GraphicsShaderGroupCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stageCount == rhs.stageCount ) - && ( pStages == rhs.pStages ) - && ( pVertexInputState == rhs.pVertexInputState ) - && ( pTessellationState == rhs.pTessellationState ); - } - - bool operator!=( GraphicsShaderGroupCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsShaderGroupCreateInfoNV; - const void* pNext = {}; - uint32_t stageCount = {}; - const VULKAN_HPP_NAMESPACE::PipelineShaderStageCreateInfo* pStages = {}; - const VULKAN_HPP_NAMESPACE::PipelineVertexInputStateCreateInfo* pVertexInputState = {}; - const VULKAN_HPP_NAMESPACE::PipelineTessellationStateCreateInfo* pTessellationState = {}; - - }; - static_assert( sizeof( GraphicsShaderGroupCreateInfoNV ) == sizeof( VkGraphicsShaderGroupCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = GraphicsShaderGroupCreateInfoNV; - }; - - struct GraphicsPipelineShaderGroupsCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR GraphicsPipelineShaderGroupsCreateInfoNV(uint32_t groupCount_ = {}, const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV* pGroups_ = {}, uint32_t pipelineCount_ = {}, const VULKAN_HPP_NAMESPACE::Pipeline* pPipelines_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & groups_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pipelines_ = {} ) - : groupCount( static_cast( groups_.size() ) ), pGroups( groups_.data() ), pipelineCount( static_cast( pipelines_.size() ) ), pPipelines( pipelines_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 GraphicsPipelineShaderGroupsCreateInfoNV & operator=( GraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - GraphicsPipelineShaderGroupsCreateInfoNV & operator=( VkGraphicsPipelineShaderGroupsCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - GraphicsPipelineShaderGroupsCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - GraphicsPipelineShaderGroupsCreateInfoNV & setGroupCount( uint32_t groupCount_ ) VULKAN_HPP_NOEXCEPT - { - groupCount = groupCount_; - return *this; - } - - GraphicsPipelineShaderGroupsCreateInfoNV & setPGroups( const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV* pGroups_ ) VULKAN_HPP_NOEXCEPT - { - pGroups = pGroups_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - GraphicsPipelineShaderGroupsCreateInfoNV & setGroups( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & groups_ ) VULKAN_HPP_NOEXCEPT - { - groupCount = static_cast( groups_.size() ); - pGroups = groups_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - GraphicsPipelineShaderGroupsCreateInfoNV & setPipelineCount( uint32_t pipelineCount_ ) VULKAN_HPP_NOEXCEPT - { - pipelineCount = pipelineCount_; - return *this; - } - - GraphicsPipelineShaderGroupsCreateInfoNV & setPPipelines( const VULKAN_HPP_NAMESPACE::Pipeline* pPipelines_ ) VULKAN_HPP_NOEXCEPT - { - pPipelines = pPipelines_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - GraphicsPipelineShaderGroupsCreateInfoNV & setPipelines( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pipelines_ ) VULKAN_HPP_NOEXCEPT - { - pipelineCount = static_cast( pipelines_.size() ); - pPipelines = pipelines_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkGraphicsPipelineShaderGroupsCreateInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkGraphicsPipelineShaderGroupsCreateInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( GraphicsPipelineShaderGroupsCreateInfoNV const& ) const = default; -#else - bool operator==( GraphicsPipelineShaderGroupsCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( groupCount == rhs.groupCount ) - && ( pGroups == rhs.pGroups ) - && ( pipelineCount == rhs.pipelineCount ) - && ( pPipelines == rhs.pPipelines ); - } - - bool operator!=( GraphicsPipelineShaderGroupsCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eGraphicsPipelineShaderGroupsCreateInfoNV; - const void* pNext = {}; - uint32_t groupCount = {}; - const VULKAN_HPP_NAMESPACE::GraphicsShaderGroupCreateInfoNV* pGroups = {}; - uint32_t pipelineCount = {}; - const VULKAN_HPP_NAMESPACE::Pipeline* pPipelines = {}; - - }; - static_assert( sizeof( GraphicsPipelineShaderGroupsCreateInfoNV ) == sizeof( VkGraphicsPipelineShaderGroupsCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = GraphicsPipelineShaderGroupsCreateInfoNV; - }; - - struct HeadlessSurfaceCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eHeadlessSurfaceCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT(VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ = {}) VULKAN_HPP_NOEXCEPT - : flags( flags_ ) - {} - - VULKAN_HPP_CONSTEXPR HeadlessSurfaceCreateInfoEXT( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - HeadlessSurfaceCreateInfoEXT( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : HeadlessSurfaceCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 HeadlessSurfaceCreateInfoEXT & operator=( HeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - HeadlessSurfaceCreateInfoEXT & operator=( VkHeadlessSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - HeadlessSurfaceCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - HeadlessSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( HeadlessSurfaceCreateInfoEXT const& ) const = default; -#else - bool operator==( HeadlessSurfaceCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ); - } - - bool operator!=( HeadlessSurfaceCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eHeadlessSurfaceCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateFlagsEXT flags = {}; - - }; - static_assert( sizeof( HeadlessSurfaceCreateInfoEXT ) == sizeof( VkHeadlessSurfaceCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = HeadlessSurfaceCreateInfoEXT; - }; - -#ifdef VK_USE_PLATFORM_IOS_MVK - struct IOSSurfaceCreateInfoMVK - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eIosSurfaceCreateInfoMVK; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR IOSSurfaceCreateInfoMVK(VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ = {}, const void* pView_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 IOSSurfaceCreateInfoMVK & operator=( IOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - IOSSurfaceCreateInfoMVK & operator=( VkIOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - IOSSurfaceCreateInfoMVK & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - IOSSurfaceCreateInfoMVK & setFlags( VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - IOSSurfaceCreateInfoMVK & setPView( const void* pView_ ) VULKAN_HPP_NOEXCEPT - { - pView = pView_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( IOSSurfaceCreateInfoMVK const& ) const = default; -#else - bool operator==( IOSSurfaceCreateInfoMVK const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pView == rhs.pView ); - } - - bool operator!=( IOSSurfaceCreateInfoMVK const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eIosSurfaceCreateInfoMVK; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::IOSSurfaceCreateFlagsMVK flags = {}; - const void* pView = {}; - - }; - static_assert( sizeof( IOSSurfaceCreateInfoMVK ) == sizeof( VkIOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = IOSSurfaceCreateInfoMVK; - }; -#endif /*VK_USE_PLATFORM_IOS_MVK*/ - - struct ImageDrmFormatModifierExplicitCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierExplicitCreateInfoEXT(uint64_t drmFormatModifier_ = {}, uint32_t drmFormatModifierPlaneCount_ = {}, const VULKAN_HPP_NAMESPACE::SubresourceLayout* pPlaneLayouts_ = {}) VULKAN_HPP_NOEXCEPT - : 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_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & planeLayouts_ ) - : drmFormatModifier( drmFormatModifier_ ), drmFormatModifierPlaneCount( static_cast( planeLayouts_.size() ) ), pPlaneLayouts( planeLayouts_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( ImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageDrmFormatModifierExplicitCreateInfoEXT & operator=( VkImageDrmFormatModifierExplicitCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageDrmFormatModifierExplicitCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT - { - drmFormatModifier = drmFormatModifier_; - return *this; - } - - ImageDrmFormatModifierExplicitCreateInfoEXT & setDrmFormatModifierPlaneCount( uint32_t drmFormatModifierPlaneCount_ ) VULKAN_HPP_NOEXCEPT - { - drmFormatModifierPlaneCount = drmFormatModifierPlaneCount_; - return *this; - } - - ImageDrmFormatModifierExplicitCreateInfoEXT & setPPlaneLayouts( const VULKAN_HPP_NAMESPACE::SubresourceLayout* pPlaneLayouts_ ) VULKAN_HPP_NOEXCEPT - { - pPlaneLayouts = pPlaneLayouts_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ImageDrmFormatModifierExplicitCreateInfoEXT & setPlaneLayouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & planeLayouts_ ) VULKAN_HPP_NOEXCEPT - { - drmFormatModifierPlaneCount = static_cast( planeLayouts_.size() ); - pPlaneLayouts = planeLayouts_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkImageDrmFormatModifierExplicitCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkImageDrmFormatModifierExplicitCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageDrmFormatModifierExplicitCreateInfoEXT const& ) const = default; -#else - bool operator==( ImageDrmFormatModifierExplicitCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifier == rhs.drmFormatModifier ) - && ( drmFormatModifierPlaneCount == rhs.drmFormatModifierPlaneCount ) - && ( pPlaneLayouts == rhs.pPlaneLayouts ); - } - - bool operator!=( ImageDrmFormatModifierExplicitCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierExplicitCreateInfoEXT; - const void* pNext = {}; - uint64_t drmFormatModifier = {}; - uint32_t drmFormatModifierPlaneCount = {}; - const VULKAN_HPP_NAMESPACE::SubresourceLayout* pPlaneLayouts = {}; - - }; - static_assert( sizeof( ImageDrmFormatModifierExplicitCreateInfoEXT ) == sizeof( VkImageDrmFormatModifierExplicitCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageDrmFormatModifierExplicitCreateInfoEXT; - }; - - struct ImageDrmFormatModifierListCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageDrmFormatModifierListCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageDrmFormatModifierListCreateInfoEXT(uint32_t drmFormatModifierCount_ = {}, const uint64_t* pDrmFormatModifiers_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & drmFormatModifiers_ ) - : drmFormatModifierCount( static_cast( drmFormatModifiers_.size() ) ), pDrmFormatModifiers( drmFormatModifiers_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageDrmFormatModifierListCreateInfoEXT & operator=( ImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageDrmFormatModifierListCreateInfoEXT & operator=( VkImageDrmFormatModifierListCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageDrmFormatModifierListCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifierCount( uint32_t drmFormatModifierCount_ ) VULKAN_HPP_NOEXCEPT - { - drmFormatModifierCount = drmFormatModifierCount_; - return *this; - } - - ImageDrmFormatModifierListCreateInfoEXT & setPDrmFormatModifiers( const uint64_t* pDrmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT - { - pDrmFormatModifiers = pDrmFormatModifiers_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ImageDrmFormatModifierListCreateInfoEXT & setDrmFormatModifiers( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & drmFormatModifiers_ ) VULKAN_HPP_NOEXCEPT - { - drmFormatModifierCount = static_cast( drmFormatModifiers_.size() ); - pDrmFormatModifiers = drmFormatModifiers_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkImageDrmFormatModifierListCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkImageDrmFormatModifierListCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageDrmFormatModifierListCreateInfoEXT const& ) const = default; -#else - bool operator==( ImageDrmFormatModifierListCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifierCount == rhs.drmFormatModifierCount ) - && ( pDrmFormatModifiers == rhs.pDrmFormatModifiers ); - } - - bool operator!=( ImageDrmFormatModifierListCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageDrmFormatModifierListCreateInfoEXT; - const void* pNext = {}; - uint32_t drmFormatModifierCount = {}; - const uint64_t* pDrmFormatModifiers = {}; - - }; - static_assert( sizeof( ImageDrmFormatModifierListCreateInfoEXT ) == sizeof( VkImageDrmFormatModifierListCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageDrmFormatModifierListCreateInfoEXT; - }; - - struct ImageFormatListCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageFormatListCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageFormatListCreateInfo(uint32_t viewFormatCount_ = {}, const VULKAN_HPP_NAMESPACE::Format* pViewFormats_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewFormats_ ) - : viewFormatCount( static_cast( viewFormats_.size() ) ), pViewFormats( viewFormats_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageFormatListCreateInfo & operator=( ImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageFormatListCreateInfo & operator=( VkImageFormatListCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageFormatListCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageFormatListCreateInfo & setViewFormatCount( uint32_t viewFormatCount_ ) VULKAN_HPP_NOEXCEPT - { - viewFormatCount = viewFormatCount_; - return *this; - } - - ImageFormatListCreateInfo & setPViewFormats( const VULKAN_HPP_NAMESPACE::Format* pViewFormats_ ) VULKAN_HPP_NOEXCEPT - { - pViewFormats = pViewFormats_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ImageFormatListCreateInfo & setViewFormats( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewFormats_ ) VULKAN_HPP_NOEXCEPT - { - viewFormatCount = static_cast( viewFormats_.size() ); - pViewFormats = viewFormats_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkImageFormatListCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkImageFormatListCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageFormatListCreateInfo const& ) const = default; -#else - bool operator==( ImageFormatListCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( viewFormatCount == rhs.viewFormatCount ) - && ( pViewFormats == rhs.pViewFormats ); - } - - bool operator!=( ImageFormatListCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageFormatListCreateInfo; - const void* pNext = {}; - uint32_t viewFormatCount = {}; - const VULKAN_HPP_NAMESPACE::Format* pViewFormats = {}; - - }; - static_assert( sizeof( ImageFormatListCreateInfo ) == sizeof( VkImageFormatListCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageFormatListCreateInfo; - }; - using ImageFormatListCreateInfoKHR = ImageFormatListCreateInfo; - -#ifdef VK_USE_PLATFORM_FUCHSIA - struct ImagePipeSurfaceCreateInfoFUCHSIA - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImagePipeSurfaceCreateInfoFUCHSIA(VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ = {}, zx_handle_t imagePipeHandle_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImagePipeSurfaceCreateInfoFUCHSIA & operator=( ImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImagePipeSurfaceCreateInfoFUCHSIA & operator=( VkImagePipeSurfaceCreateInfoFUCHSIA const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImagePipeSurfaceCreateInfoFUCHSIA & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImagePipeSurfaceCreateInfoFUCHSIA & setFlags( VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ImagePipeSurfaceCreateInfoFUCHSIA & setImagePipeHandle( zx_handle_t imagePipeHandle_ ) VULKAN_HPP_NOEXCEPT - { - imagePipeHandle = imagePipeHandle_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImagePipeSurfaceCreateInfoFUCHSIA const& ) const = default; -#else - 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 ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImagepipeSurfaceCreateInfoFUCHSIA; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateFlagsFUCHSIA flags = {}; - zx_handle_t imagePipeHandle = {}; - - }; - static_assert( sizeof( ImagePipeSurfaceCreateInfoFUCHSIA ) == sizeof( VkImagePipeSurfaceCreateInfoFUCHSIA ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImagePipeSurfaceCreateInfoFUCHSIA; - }; -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - - struct ImagePlaneMemoryRequirementsInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImagePlaneMemoryRequirementsInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImagePlaneMemoryRequirementsInfo(VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor) VULKAN_HPP_NOEXCEPT - : planeAspect( planeAspect_ ) - {} - - VULKAN_HPP_CONSTEXPR ImagePlaneMemoryRequirementsInfo( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImagePlaneMemoryRequirementsInfo( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : ImagePlaneMemoryRequirementsInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImagePlaneMemoryRequirementsInfo & operator=( ImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImagePlaneMemoryRequirementsInfo & operator=( VkImagePlaneMemoryRequirementsInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImagePlaneMemoryRequirementsInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImagePlaneMemoryRequirementsInfo & setPlaneAspect( VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect_ ) VULKAN_HPP_NOEXCEPT - { - planeAspect = planeAspect_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImagePlaneMemoryRequirementsInfo const& ) const = default; -#else - bool operator==( ImagePlaneMemoryRequirementsInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( planeAspect == rhs.planeAspect ); - } - - bool operator!=( ImagePlaneMemoryRequirementsInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImagePlaneMemoryRequirementsInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageAspectFlagBits planeAspect = VULKAN_HPP_NAMESPACE::ImageAspectFlagBits::eColor; - - }; - static_assert( sizeof( ImagePlaneMemoryRequirementsInfo ) == sizeof( VkImagePlaneMemoryRequirementsInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImagePlaneMemoryRequirementsInfo; - }; - using ImagePlaneMemoryRequirementsInfoKHR = ImagePlaneMemoryRequirementsInfo; - - struct ImageStencilUsageCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageStencilUsageCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo(VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ = {}) VULKAN_HPP_NOEXCEPT - : stencilUsage( stencilUsage_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageStencilUsageCreateInfo( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageStencilUsageCreateInfo( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageStencilUsageCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageStencilUsageCreateInfo & operator=( ImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageStencilUsageCreateInfo & operator=( VkImageStencilUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageStencilUsageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageStencilUsageCreateInfo & setStencilUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage_ ) VULKAN_HPP_NOEXCEPT - { - stencilUsage = stencilUsage_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageStencilUsageCreateInfo const& ) const = default; -#else - bool operator==( ImageStencilUsageCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( stencilUsage == rhs.stencilUsage ); - } - - bool operator!=( ImageStencilUsageCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageStencilUsageCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageUsageFlags stencilUsage = {}; - - }; - static_assert( sizeof( ImageStencilUsageCreateInfo ) == sizeof( VkImageStencilUsageCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageStencilUsageCreateInfo; - }; - using ImageStencilUsageCreateInfoEXT = ImageStencilUsageCreateInfo; - - struct ImageSwapchainCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageSwapchainCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR(VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ = {}) VULKAN_HPP_NOEXCEPT - : swapchain( swapchain_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageSwapchainCreateInfoKHR( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageSwapchainCreateInfoKHR( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageSwapchainCreateInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageSwapchainCreateInfoKHR & operator=( ImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageSwapchainCreateInfoKHR & operator=( VkImageSwapchainCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageSwapchainCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageSwapchainCreateInfoKHR & setSwapchain( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain_ ) VULKAN_HPP_NOEXCEPT - { - swapchain = swapchain_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageSwapchainCreateInfoKHR const& ) const = default; -#else - bool operator==( ImageSwapchainCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchain == rhs.swapchain ); - } - - bool operator!=( ImageSwapchainCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageSwapchainCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain = {}; - - }; - static_assert( sizeof( ImageSwapchainCreateInfoKHR ) == sizeof( VkImageSwapchainCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageSwapchainCreateInfoKHR; - }; - - struct ImageViewASTCDecodeModeEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewAstcDecodeModeEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT(VULKAN_HPP_NAMESPACE::Format decodeMode_ = VULKAN_HPP_NAMESPACE::Format::eUndefined) VULKAN_HPP_NOEXCEPT - : decodeMode( decodeMode_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageViewASTCDecodeModeEXT( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageViewASTCDecodeModeEXT( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageViewASTCDecodeModeEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageViewASTCDecodeModeEXT & operator=( ImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageViewASTCDecodeModeEXT & operator=( VkImageViewASTCDecodeModeEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageViewASTCDecodeModeEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageViewASTCDecodeModeEXT & setDecodeMode( VULKAN_HPP_NAMESPACE::Format decodeMode_ ) VULKAN_HPP_NOEXCEPT - { - decodeMode = decodeMode_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageViewASTCDecodeModeEXT const& ) const = default; -#else - bool operator==( ImageViewASTCDecodeModeEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( decodeMode == rhs.decodeMode ); - } - - bool operator!=( ImageViewASTCDecodeModeEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewAstcDecodeModeEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Format decodeMode = VULKAN_HPP_NAMESPACE::Format::eUndefined; - - }; - static_assert( sizeof( ImageViewASTCDecodeModeEXT ) == sizeof( VkImageViewASTCDecodeModeEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageViewASTCDecodeModeEXT; - }; - - struct ImageViewUsageCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImageViewUsageCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo(VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ = {}) VULKAN_HPP_NOEXCEPT - : usage( usage_ ) - {} - - VULKAN_HPP_CONSTEXPR ImageViewUsageCreateInfo( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageViewUsageCreateInfo( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : ImageViewUsageCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImageViewUsageCreateInfo & operator=( ImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImageViewUsageCreateInfo & operator=( VkImageViewUsageCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImageViewUsageCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImageViewUsageCreateInfo & setUsage( VULKAN_HPP_NAMESPACE::ImageUsageFlags usage_ ) VULKAN_HPP_NOEXCEPT - { - usage = usage_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImageViewUsageCreateInfo const& ) const = default; -#else - bool operator==( ImageViewUsageCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( usage == rhs.usage ); - } - - bool operator!=( ImageViewUsageCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImageViewUsageCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageUsageFlags usage = {}; - - }; - static_assert( sizeof( ImageViewUsageCreateInfo ) == sizeof( VkImageViewUsageCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImageViewUsageCreateInfo; - }; - using ImageViewUsageCreateInfoKHR = ImageViewUsageCreateInfo; - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - struct ImportAndroidHardwareBufferInfoANDROID - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportAndroidHardwareBufferInfoANDROID; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID(struct AHardwareBuffer* buffer_ = {}) VULKAN_HPP_NOEXCEPT - : buffer( buffer_ ) - {} - - VULKAN_HPP_CONSTEXPR ImportAndroidHardwareBufferInfoANDROID( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportAndroidHardwareBufferInfoANDROID( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT - : ImportAndroidHardwareBufferInfoANDROID( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImportAndroidHardwareBufferInfoANDROID & operator=( ImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportAndroidHardwareBufferInfoANDROID & operator=( VkImportAndroidHardwareBufferInfoANDROID const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImportAndroidHardwareBufferInfoANDROID & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImportAndroidHardwareBufferInfoANDROID & setBuffer( struct AHardwareBuffer* buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImportAndroidHardwareBufferInfoANDROID const& ) const = default; -#else - bool operator==( ImportAndroidHardwareBufferInfoANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( ImportAndroidHardwareBufferInfoANDROID const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportAndroidHardwareBufferInfoANDROID; - const void* pNext = {}; - struct AHardwareBuffer* buffer = {}; - - }; - static_assert( sizeof( ImportAndroidHardwareBufferInfoANDROID ) == sizeof( VkImportAndroidHardwareBufferInfoANDROID ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImportAndroidHardwareBufferInfoANDROID; - }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - struct ImportMemoryFdInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryFdInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImportMemoryFdInfoKHR(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, int fd_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImportMemoryFdInfoKHR & operator=( ImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportMemoryFdInfoKHR & operator=( VkImportMemoryFdInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImportMemoryFdInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImportMemoryFdInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *this; - } - - ImportMemoryFdInfoKHR & setFd( int fd_ ) VULKAN_HPP_NOEXCEPT - { - fd = fd_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImportMemoryFdInfoKHR const& ) const = default; -#else - bool operator==( ImportMemoryFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ) - && ( fd == rhs.fd ); - } - - bool operator!=( ImportMemoryFdInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryFdInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; - int fd = {}; - - }; - static_assert( sizeof( ImportMemoryFdInfoKHR ) == sizeof( VkImportMemoryFdInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImportMemoryFdInfoKHR; - }; - - struct ImportMemoryHostPointerInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryHostPointerInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImportMemoryHostPointerInfoEXT(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, void* pHostPointer_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImportMemoryHostPointerInfoEXT & operator=( ImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportMemoryHostPointerInfoEXT & operator=( VkImportMemoryHostPointerInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImportMemoryHostPointerInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImportMemoryHostPointerInfoEXT & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *this; - } - - ImportMemoryHostPointerInfoEXT & setPHostPointer( void* pHostPointer_ ) VULKAN_HPP_NOEXCEPT - { - pHostPointer = pHostPointer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImportMemoryHostPointerInfoEXT const& ) const = default; -#else - bool operator==( ImportMemoryHostPointerInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ) - && ( pHostPointer == rhs.pHostPointer ); - } - - bool operator!=( ImportMemoryHostPointerInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryHostPointerInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; - void* pHostPointer = {}; - - }; - static_assert( sizeof( ImportMemoryHostPointerInfoEXT ) == sizeof( VkImportMemoryHostPointerInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImportMemoryHostPointerInfoEXT; - }; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ImportMemoryWin32HandleInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryWin32HandleInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoKHR(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd, HANDLE handle_ = {}, LPCWSTR name_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoKHR & operator=( ImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportMemoryWin32HandleInfoKHR & operator=( VkImportMemoryWin32HandleInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImportMemoryWin32HandleInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImportMemoryWin32HandleInfoKHR & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *this; - } - - ImportMemoryWin32HandleInfoKHR & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT - { - handle = handle_; - return *this; - } - - ImportMemoryWin32HandleInfoKHR & setName( LPCWSTR name_ ) VULKAN_HPP_NOEXCEPT - { - name = name_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImportMemoryWin32HandleInfoKHR const& ) const = default; -#else - bool operator==( ImportMemoryWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ) - && ( handle == rhs.handle ) - && ( name == rhs.name ); - } - - bool operator!=( ImportMemoryWin32HandleInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryWin32HandleInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; - HANDLE handle = {}; - LPCWSTR name = {}; - - }; - static_assert( sizeof( ImportMemoryWin32HandleInfoKHR ) == sizeof( VkImportMemoryWin32HandleInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImportMemoryWin32HandleInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct ImportMemoryWin32HandleInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eImportMemoryWin32HandleInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ImportMemoryWin32HandleInfoNV(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ = {}, HANDLE handle_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ImportMemoryWin32HandleInfoNV & operator=( ImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ImportMemoryWin32HandleInfoNV & operator=( VkImportMemoryWin32HandleInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ImportMemoryWin32HandleInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ImportMemoryWin32HandleInfoNV & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *this; - } - - ImportMemoryWin32HandleInfoNV & setHandle( HANDLE handle_ ) VULKAN_HPP_NOEXCEPT - { - handle = handle_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ImportMemoryWin32HandleInfoNV const& ) const = default; -#else - bool operator==( ImportMemoryWin32HandleInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ) - && ( handle == rhs.handle ); - } - - bool operator!=( ImportMemoryWin32HandleInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eImportMemoryWin32HandleInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType = {}; - HANDLE handle = {}; - - }; - static_assert( sizeof( ImportMemoryWin32HandleInfoNV ) == sizeof( VkImportMemoryWin32HandleInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ImportMemoryWin32HandleInfoNV; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct InputAttachmentAspectReference - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR InputAttachmentAspectReference(uint32_t subpass_ = {}, uint32_t inputAttachmentIndex_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 InputAttachmentAspectReference & operator=( InputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - InputAttachmentAspectReference & operator=( VkInputAttachmentAspectReference const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - InputAttachmentAspectReference & setSubpass( uint32_t subpass_ ) VULKAN_HPP_NOEXCEPT - { - subpass = subpass_; - return *this; - } - - InputAttachmentAspectReference & setInputAttachmentIndex( uint32_t inputAttachmentIndex_ ) VULKAN_HPP_NOEXCEPT - { - inputAttachmentIndex = inputAttachmentIndex_; - return *this; - } - - InputAttachmentAspectReference & setAspectMask( VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask_ ) VULKAN_HPP_NOEXCEPT - { - aspectMask = aspectMask_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( InputAttachmentAspectReference const& ) const = default; -#else - bool operator==( InputAttachmentAspectReference const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( subpass == rhs.subpass ) - && ( inputAttachmentIndex == rhs.inputAttachmentIndex ) - && ( aspectMask == rhs.aspectMask ); - } - - bool operator!=( InputAttachmentAspectReference const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t subpass = {}; - uint32_t inputAttachmentIndex = {}; - VULKAN_HPP_NAMESPACE::ImageAspectFlags aspectMask = {}; - - }; - static_assert( sizeof( InputAttachmentAspectReference ) == sizeof( VkInputAttachmentAspectReference ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - using InputAttachmentAspectReferenceKHR = InputAttachmentAspectReference; - - struct InstanceCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eInstanceCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR InstanceCreateInfo(VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_ = {}, const VULKAN_HPP_NAMESPACE::ApplicationInfo* pApplicationInfo_ = {}, uint32_t enabledLayerCount_ = {}, const char* const * ppEnabledLayerNames_ = {}, uint32_t enabledExtensionCount_ = {}, const char* const * ppEnabledExtensionNames_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_, const VULKAN_HPP_NAMESPACE::ApplicationInfo* pApplicationInfo_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledLayerNames_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledExtensionNames_ = {} ) - : flags( flags_ ), pApplicationInfo( pApplicationInfo_ ), enabledLayerCount( static_cast( pEnabledLayerNames_.size() ) ), ppEnabledLayerNames( pEnabledLayerNames_.data() ), enabledExtensionCount( static_cast( pEnabledExtensionNames_.size() ) ), ppEnabledExtensionNames( pEnabledExtensionNames_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 InstanceCreateInfo & operator=( InstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - InstanceCreateInfo & operator=( VkInstanceCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - InstanceCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - InstanceCreateInfo & setFlags( VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - InstanceCreateInfo & setPApplicationInfo( const VULKAN_HPP_NAMESPACE::ApplicationInfo* pApplicationInfo_ ) VULKAN_HPP_NOEXCEPT - { - pApplicationInfo = pApplicationInfo_; - return *this; - } - - InstanceCreateInfo & setEnabledLayerCount( uint32_t enabledLayerCount_ ) VULKAN_HPP_NOEXCEPT - { - enabledLayerCount = enabledLayerCount_; - return *this; - } - - InstanceCreateInfo & setPpEnabledLayerNames( const char* const * ppEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT - { - ppEnabledLayerNames = ppEnabledLayerNames_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - InstanceCreateInfo & setPEnabledLayerNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledLayerNames_ ) VULKAN_HPP_NOEXCEPT - { - enabledLayerCount = static_cast( pEnabledLayerNames_.size() ); - ppEnabledLayerNames = pEnabledLayerNames_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - InstanceCreateInfo & setEnabledExtensionCount( uint32_t enabledExtensionCount_ ) VULKAN_HPP_NOEXCEPT - { - enabledExtensionCount = enabledExtensionCount_; - return *this; - } - - InstanceCreateInfo & setPpEnabledExtensionNames( const char* const * ppEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT - { - ppEnabledExtensionNames = ppEnabledExtensionNames_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - InstanceCreateInfo & setPEnabledExtensionNames( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pEnabledExtensionNames_ ) VULKAN_HPP_NOEXCEPT - { - enabledExtensionCount = static_cast( pEnabledExtensionNames_.size() ); - ppEnabledExtensionNames = pEnabledExtensionNames_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkInstanceCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkInstanceCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( InstanceCreateInfo const& ) const = default; -#else - 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 ) - && ( ppEnabledLayerNames == rhs.ppEnabledLayerNames ) - && ( enabledExtensionCount == rhs.enabledExtensionCount ) - && ( ppEnabledExtensionNames == rhs.ppEnabledExtensionNames ); - } - - bool operator!=( InstanceCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eInstanceCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::InstanceCreateFlags flags = {}; - const VULKAN_HPP_NAMESPACE::ApplicationInfo* pApplicationInfo = {}; - uint32_t enabledLayerCount = {}; - const char* const * ppEnabledLayerNames = {}; - uint32_t enabledExtensionCount = {}; - const char* const * ppEnabledExtensionNames = {}; - - }; - static_assert( sizeof( InstanceCreateInfo ) == sizeof( VkInstanceCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = InstanceCreateInfo; - }; - -#ifdef VK_USE_PLATFORM_MACOS_MVK - struct MacOSSurfaceCreateInfoMVK - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMacosSurfaceCreateInfoMVK; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MacOSSurfaceCreateInfoMVK(VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ = {}, const void* pView_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MacOSSurfaceCreateInfoMVK & operator=( MacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MacOSSurfaceCreateInfoMVK & operator=( VkMacOSSurfaceCreateInfoMVK const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MacOSSurfaceCreateInfoMVK & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MacOSSurfaceCreateInfoMVK & setFlags( VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - MacOSSurfaceCreateInfoMVK & setPView( const void* pView_ ) VULKAN_HPP_NOEXCEPT - { - pView = pView_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MacOSSurfaceCreateInfoMVK const& ) const = default; -#else - bool operator==( MacOSSurfaceCreateInfoMVK const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pView == rhs.pView ); - } - - bool operator!=( MacOSSurfaceCreateInfoMVK const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMacosSurfaceCreateInfoMVK; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateFlagsMVK flags = {}; - const void* pView = {}; - - }; - static_assert( sizeof( MacOSSurfaceCreateInfoMVK ) == sizeof( VkMacOSSurfaceCreateInfoMVK ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MacOSSurfaceCreateInfoMVK; - }; -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ - - struct MemoryAllocateFlagsInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryAllocateFlagsInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryAllocateFlagsInfo(VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ = {}, uint32_t deviceMask_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryAllocateFlagsInfo & operator=( MemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryAllocateFlagsInfo & operator=( VkMemoryAllocateFlagsInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryAllocateFlagsInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryAllocateFlagsInfo & setFlags( VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - MemoryAllocateFlagsInfo & setDeviceMask( uint32_t deviceMask_ ) VULKAN_HPP_NOEXCEPT - { - deviceMask = deviceMask_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryAllocateFlagsInfo const& ) const = default; -#else - bool operator==( MemoryAllocateFlagsInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( deviceMask == rhs.deviceMask ); - } - - bool operator!=( MemoryAllocateFlagsInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryAllocateFlagsInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::MemoryAllocateFlags flags = {}; - uint32_t deviceMask = {}; - - }; - static_assert( sizeof( MemoryAllocateFlagsInfo ) == sizeof( VkMemoryAllocateFlagsInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryAllocateFlagsInfo; - }; - using MemoryAllocateFlagsInfoKHR = MemoryAllocateFlagsInfo; - - struct MemoryDedicatedAllocateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryDedicatedAllocateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryDedicatedAllocateInfo(VULKAN_HPP_NAMESPACE::Image image_ = {}, VULKAN_HPP_NAMESPACE::Buffer buffer_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedAllocateInfo & operator=( MemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryDedicatedAllocateInfo & operator=( VkMemoryDedicatedAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryDedicatedAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryDedicatedAllocateInfo & setImage( VULKAN_HPP_NAMESPACE::Image image_ ) VULKAN_HPP_NOEXCEPT - { - image = image_; - return *this; - } - - MemoryDedicatedAllocateInfo & setBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer_ ) VULKAN_HPP_NOEXCEPT - { - buffer = buffer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryDedicatedAllocateInfo const& ) const = default; -#else - bool operator==( MemoryDedicatedAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( image == rhs.image ) - && ( buffer == rhs.buffer ); - } - - bool operator!=( MemoryDedicatedAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedAllocateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Image image = {}; - VULKAN_HPP_NAMESPACE::Buffer buffer = {}; - - }; - static_assert( sizeof( MemoryDedicatedAllocateInfo ) == sizeof( VkMemoryDedicatedAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryDedicatedAllocateInfo; - }; - using MemoryDedicatedAllocateInfoKHR = MemoryDedicatedAllocateInfo; - - struct MemoryDedicatedRequirements - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryDedicatedRequirements; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryDedicatedRequirements(VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation_ = {}, VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryDedicatedRequirements & operator=( MemoryDedicatedRequirements const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryDedicatedRequirements const& ) const = default; -#else - bool operator==( MemoryDedicatedRequirements const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( prefersDedicatedAllocation == rhs.prefersDedicatedAllocation ) - && ( requiresDedicatedAllocation == rhs.requiresDedicatedAllocation ); - } - - bool operator!=( MemoryDedicatedRequirements const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryDedicatedRequirements; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 prefersDedicatedAllocation = {}; - VULKAN_HPP_NAMESPACE::Bool32 requiresDedicatedAllocation = {}; - - }; - static_assert( sizeof( MemoryDedicatedRequirements ) == sizeof( VkMemoryDedicatedRequirements ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryDedicatedRequirements; - }; - using MemoryDedicatedRequirementsKHR = MemoryDedicatedRequirements; - - struct MemoryOpaqueCaptureAddressAllocateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo(uint64_t opaqueCaptureAddress_ = {}) VULKAN_HPP_NOEXCEPT - : opaqueCaptureAddress( opaqueCaptureAddress_ ) - {} - - VULKAN_HPP_CONSTEXPR MemoryOpaqueCaptureAddressAllocateInfo( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryOpaqueCaptureAddressAllocateInfo( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : MemoryOpaqueCaptureAddressAllocateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryOpaqueCaptureAddressAllocateInfo & operator=( MemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryOpaqueCaptureAddressAllocateInfo & operator=( VkMemoryOpaqueCaptureAddressAllocateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryOpaqueCaptureAddressAllocateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryOpaqueCaptureAddressAllocateInfo & setOpaqueCaptureAddress( uint64_t opaqueCaptureAddress_ ) VULKAN_HPP_NOEXCEPT - { - opaqueCaptureAddress = opaqueCaptureAddress_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryOpaqueCaptureAddressAllocateInfo const& ) const = default; -#else - bool operator==( MemoryOpaqueCaptureAddressAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( opaqueCaptureAddress == rhs.opaqueCaptureAddress ); - } - - bool operator!=( MemoryOpaqueCaptureAddressAllocateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryOpaqueCaptureAddressAllocateInfo; - const void* pNext = {}; - uint64_t opaqueCaptureAddress = {}; - - }; - static_assert( sizeof( MemoryOpaqueCaptureAddressAllocateInfo ) == sizeof( VkMemoryOpaqueCaptureAddressAllocateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryOpaqueCaptureAddressAllocateInfo; - }; - using MemoryOpaqueCaptureAddressAllocateInfoKHR = MemoryOpaqueCaptureAddressAllocateInfo; - - struct MemoryPriorityAllocateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMemoryPriorityAllocateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT(float priority_ = {}) VULKAN_HPP_NOEXCEPT - : priority( priority_ ) - {} - - VULKAN_HPP_CONSTEXPR MemoryPriorityAllocateInfoEXT( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryPriorityAllocateInfoEXT( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : MemoryPriorityAllocateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MemoryPriorityAllocateInfoEXT & operator=( MemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MemoryPriorityAllocateInfoEXT & operator=( VkMemoryPriorityAllocateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MemoryPriorityAllocateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MemoryPriorityAllocateInfoEXT & setPriority( float priority_ ) VULKAN_HPP_NOEXCEPT - { - priority = priority_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MemoryPriorityAllocateInfoEXT const& ) const = default; -#else - bool operator==( MemoryPriorityAllocateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( priority == rhs.priority ); - } - - bool operator!=( MemoryPriorityAllocateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMemoryPriorityAllocateInfoEXT; - const void* pNext = {}; - float priority = {}; - - }; - static_assert( sizeof( MemoryPriorityAllocateInfoEXT ) == sizeof( VkMemoryPriorityAllocateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MemoryPriorityAllocateInfoEXT; - }; - -#ifdef VK_USE_PLATFORM_METAL_EXT - struct MetalSurfaceCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMetalSurfaceCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MetalSurfaceCreateInfoEXT(VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_ = {}, const CAMetalLayer* pLayer_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MetalSurfaceCreateInfoEXT & operator=( MetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MetalSurfaceCreateInfoEXT & operator=( VkMetalSurfaceCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MetalSurfaceCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MetalSurfaceCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - MetalSurfaceCreateInfoEXT & setPLayer( const CAMetalLayer* pLayer_ ) VULKAN_HPP_NOEXCEPT - { - pLayer = pLayer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MetalSurfaceCreateInfoEXT const& ) const = default; -#else - bool operator==( MetalSurfaceCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( pLayer == rhs.pLayer ); - } - - bool operator!=( MetalSurfaceCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMetalSurfaceCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::MetalSurfaceCreateFlagsEXT flags = {}; - const CAMetalLayer* pLayer = {}; - - }; - static_assert( sizeof( MetalSurfaceCreateInfoEXT ) == sizeof( VkMetalSurfaceCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MetalSurfaceCreateInfoEXT; - }; -#endif /*VK_USE_PLATFORM_METAL_EXT*/ - - struct MutableDescriptorTypeListVALVE - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListVALVE(uint32_t descriptorTypeCount_ = {}, const VULKAN_HPP_NAMESPACE::DescriptorType* pDescriptorTypes_ = {}) VULKAN_HPP_NOEXCEPT - : descriptorTypeCount( descriptorTypeCount_ ), pDescriptorTypes( pDescriptorTypes_ ) - {} - - VULKAN_HPP_CONSTEXPR MutableDescriptorTypeListVALVE( MutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MutableDescriptorTypeListVALVE( VkMutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT - : MutableDescriptorTypeListVALVE( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - MutableDescriptorTypeListVALVE( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & descriptorTypes_ ) - : descriptorTypeCount( static_cast( descriptorTypes_.size() ) ), pDescriptorTypes( descriptorTypes_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeListVALVE & operator=( MutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MutableDescriptorTypeListVALVE & operator=( VkMutableDescriptorTypeListVALVE const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MutableDescriptorTypeListVALVE & setDescriptorTypeCount( uint32_t descriptorTypeCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorTypeCount = descriptorTypeCount_; - return *this; - } - - MutableDescriptorTypeListVALVE & setPDescriptorTypes( const VULKAN_HPP_NAMESPACE::DescriptorType* pDescriptorTypes_ ) VULKAN_HPP_NOEXCEPT - { - pDescriptorTypes = pDescriptorTypes_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - MutableDescriptorTypeListVALVE & setDescriptorTypes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & descriptorTypes_ ) VULKAN_HPP_NOEXCEPT - { - descriptorTypeCount = static_cast( descriptorTypes_.size() ); - pDescriptorTypes = descriptorTypes_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkMutableDescriptorTypeListVALVE const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkMutableDescriptorTypeListVALVE &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MutableDescriptorTypeListVALVE const& ) const = default; -#else - bool operator==( MutableDescriptorTypeListVALVE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( descriptorTypeCount == rhs.descriptorTypeCount ) - && ( pDescriptorTypes == rhs.pDescriptorTypes ); - } - - bool operator!=( MutableDescriptorTypeListVALVE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t descriptorTypeCount = {}; - const VULKAN_HPP_NAMESPACE::DescriptorType* pDescriptorTypes = {}; - - }; - static_assert( sizeof( MutableDescriptorTypeListVALVE ) == sizeof( VkMutableDescriptorTypeListVALVE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct MutableDescriptorTypeCreateInfoVALVE - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eMutableDescriptorTypeCreateInfoVALVE; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoVALVE(uint32_t mutableDescriptorTypeListCount_ = {}, const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists_ = {}) VULKAN_HPP_NOEXCEPT - : mutableDescriptorTypeListCount( mutableDescriptorTypeListCount_ ), pMutableDescriptorTypeLists( pMutableDescriptorTypeLists_ ) - {} - - VULKAN_HPP_CONSTEXPR MutableDescriptorTypeCreateInfoVALVE( MutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MutableDescriptorTypeCreateInfoVALVE( VkMutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT - : MutableDescriptorTypeCreateInfoVALVE( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - MutableDescriptorTypeCreateInfoVALVE( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & mutableDescriptorTypeLists_ ) - : mutableDescriptorTypeListCount( static_cast( mutableDescriptorTypeLists_.size() ) ), pMutableDescriptorTypeLists( mutableDescriptorTypeLists_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 MutableDescriptorTypeCreateInfoVALVE & operator=( MutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - MutableDescriptorTypeCreateInfoVALVE & operator=( VkMutableDescriptorTypeCreateInfoVALVE const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - MutableDescriptorTypeCreateInfoVALVE & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - MutableDescriptorTypeCreateInfoVALVE & setMutableDescriptorTypeListCount( uint32_t mutableDescriptorTypeListCount_ ) VULKAN_HPP_NOEXCEPT - { - mutableDescriptorTypeListCount = mutableDescriptorTypeListCount_; - return *this; - } - - MutableDescriptorTypeCreateInfoVALVE & setPMutableDescriptorTypeLists( const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists_ ) VULKAN_HPP_NOEXCEPT - { - pMutableDescriptorTypeLists = pMutableDescriptorTypeLists_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - MutableDescriptorTypeCreateInfoVALVE & setMutableDescriptorTypeLists( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & mutableDescriptorTypeLists_ ) VULKAN_HPP_NOEXCEPT - { - mutableDescriptorTypeListCount = static_cast( mutableDescriptorTypeLists_.size() ); - pMutableDescriptorTypeLists = mutableDescriptorTypeLists_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkMutableDescriptorTypeCreateInfoVALVE const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkMutableDescriptorTypeCreateInfoVALVE &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( MutableDescriptorTypeCreateInfoVALVE const& ) const = default; -#else - bool operator==( MutableDescriptorTypeCreateInfoVALVE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( mutableDescriptorTypeListCount == rhs.mutableDescriptorTypeListCount ) - && ( pMutableDescriptorTypeLists == rhs.pMutableDescriptorTypeLists ); - } - - bool operator!=( MutableDescriptorTypeCreateInfoVALVE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eMutableDescriptorTypeCreateInfoVALVE; - const void* pNext = {}; - uint32_t mutableDescriptorTypeListCount = {}; - const VULKAN_HPP_NAMESPACE::MutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists = {}; - - }; - static_assert( sizeof( MutableDescriptorTypeCreateInfoVALVE ) == sizeof( VkMutableDescriptorTypeCreateInfoVALVE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = MutableDescriptorTypeCreateInfoVALVE; - }; - - union PerformanceCounterResultKHR - { - PerformanceCounterResultKHR( VULKAN_HPP_NAMESPACE::PerformanceCounterResultKHR const& rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterResultKHR ) ); - } - - PerformanceCounterResultKHR( int32_t int32_ = {} ) - : int32( int32_ ) - {} - - PerformanceCounterResultKHR( int64_t int64_ ) - : int64( int64_ ) - {} - - PerformanceCounterResultKHR( uint32_t uint32_ ) - : uint32( uint32_ ) - {} - - PerformanceCounterResultKHR( uint64_t uint64_ ) - : uint64( uint64_ ) - {} - - PerformanceCounterResultKHR( float float32_ ) - : float32( float32_ ) - {} - - PerformanceCounterResultKHR( double float64_ ) - : float64( float64_ ) - {} - - PerformanceCounterResultKHR & setInt32( int32_t int32_ ) VULKAN_HPP_NOEXCEPT - { - int32 = int32_; - return *this; - } - - PerformanceCounterResultKHR & setInt64( int64_t int64_ ) VULKAN_HPP_NOEXCEPT - { - int64 = int64_; - return *this; - } - - PerformanceCounterResultKHR & setUint32( uint32_t uint32_ ) VULKAN_HPP_NOEXCEPT - { - uint32 = uint32_; - return *this; - } - - PerformanceCounterResultKHR & setUint64( uint64_t uint64_ ) VULKAN_HPP_NOEXCEPT - { - uint64 = uint64_; - return *this; - } - - PerformanceCounterResultKHR & setFloat32( float float32_ ) VULKAN_HPP_NOEXCEPT - { - float32 = float32_; - return *this; - } - - PerformanceCounterResultKHR & setFloat64( double float64_ ) VULKAN_HPP_NOEXCEPT - { - float64 = float64_; - return *this; - } - - VULKAN_HPP_NAMESPACE::PerformanceCounterResultKHR & operator=( VULKAN_HPP_NAMESPACE::PerformanceCounterResultKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - memcpy( static_cast(this), &rhs, sizeof( VULKAN_HPP_NAMESPACE::PerformanceCounterResultKHR ) ); - return *this; - } - - 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; - }; - - struct PerformanceQuerySubmitInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePerformanceQuerySubmitInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR(uint32_t counterPassIndex_ = {}) VULKAN_HPP_NOEXCEPT - : counterPassIndex( counterPassIndex_ ) - {} - - VULKAN_HPP_CONSTEXPR PerformanceQuerySubmitInfoKHR( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceQuerySubmitInfoKHR( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PerformanceQuerySubmitInfoKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PerformanceQuerySubmitInfoKHR & operator=( PerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PerformanceQuerySubmitInfoKHR & operator=( VkPerformanceQuerySubmitInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PerformanceQuerySubmitInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PerformanceQuerySubmitInfoKHR & setCounterPassIndex( uint32_t counterPassIndex_ ) VULKAN_HPP_NOEXCEPT - { - counterPassIndex = counterPassIndex_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PerformanceQuerySubmitInfoKHR const& ) const = default; -#else - bool operator==( PerformanceQuerySubmitInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( counterPassIndex == rhs.counterPassIndex ); - } - - bool operator!=( PerformanceQuerySubmitInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePerformanceQuerySubmitInfoKHR; - const void* pNext = {}; - uint32_t counterPassIndex = {}; - - }; - static_assert( sizeof( PerformanceQuerySubmitInfoKHR ) == sizeof( VkPerformanceQuerySubmitInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PerformanceQuerySubmitInfoKHR; - }; - - struct PhysicalDevice16BitStorageFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevice16BitStorageFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevice16BitStorageFeatures(VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevice16BitStorageFeatures & operator=( PhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevice16BitStorageFeatures & operator=( VkPhysicalDevice16BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDevice16BitStorageFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDevice16BitStorageFeatures & setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - storageBuffer16BitAccess = storageBuffer16BitAccess_; - return *this; - } - - PhysicalDevice16BitStorageFeatures & setUniformAndStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_; - return *this; - } - - PhysicalDevice16BitStorageFeatures & setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT - { - storagePushConstant16 = storagePushConstant16_; - return *this; - } - - PhysicalDevice16BitStorageFeatures & setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT - { - storageInputOutput16 = storageInputOutput16_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevice16BitStorageFeatures const& ) const = default; -#else - bool operator==( PhysicalDevice16BitStorageFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( storageBuffer16BitAccess == rhs.storageBuffer16BitAccess ) - && ( uniformAndStorageBuffer16BitAccess == rhs.uniformAndStorageBuffer16BitAccess ) - && ( storagePushConstant16 == rhs.storagePushConstant16 ) - && ( storageInputOutput16 == rhs.storageInputOutput16 ); - } - - bool operator!=( PhysicalDevice16BitStorageFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice16BitStorageFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16 = {}; - - }; - static_assert( sizeof( PhysicalDevice16BitStorageFeatures ) == sizeof( VkPhysicalDevice16BitStorageFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevice16BitStorageFeatures; - }; - using PhysicalDevice16BitStorageFeaturesKHR = PhysicalDevice16BitStorageFeatures; - - struct PhysicalDevice4444FormatsFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevice4444FormatsFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevice4444FormatsFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ = {}, VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevice4444FormatsFeaturesEXT & operator=( PhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevice4444FormatsFeaturesEXT & operator=( VkPhysicalDevice4444FormatsFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDevice4444FormatsFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDevice4444FormatsFeaturesEXT & setFormatA4R4G4B4( VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4_ ) VULKAN_HPP_NOEXCEPT - { - formatA4R4G4B4 = formatA4R4G4B4_; - return *this; - } - - PhysicalDevice4444FormatsFeaturesEXT & setFormatA4B4G4R4( VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4_ ) VULKAN_HPP_NOEXCEPT - { - formatA4B4G4R4 = formatA4B4G4R4_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevice4444FormatsFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDevice4444FormatsFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( formatA4R4G4B4 == rhs.formatA4R4G4B4 ) - && ( formatA4B4G4R4 == rhs.formatA4B4G4R4 ); - } - - bool operator!=( PhysicalDevice4444FormatsFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice4444FormatsFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 formatA4R4G4B4 = {}; - VULKAN_HPP_NAMESPACE::Bool32 formatA4B4G4R4 = {}; - - }; - static_assert( sizeof( PhysicalDevice4444FormatsFeaturesEXT ) == sizeof( VkPhysicalDevice4444FormatsFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevice4444FormatsFeaturesEXT; - }; - - struct PhysicalDevice8BitStorageFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevice8BitStorageFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevice8BitStorageFeatures(VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevice8BitStorageFeatures & operator=( PhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevice8BitStorageFeatures & operator=( VkPhysicalDevice8BitStorageFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDevice8BitStorageFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDevice8BitStorageFeatures & setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - storageBuffer8BitAccess = storageBuffer8BitAccess_; - return *this; - } - - PhysicalDevice8BitStorageFeatures & setUniformAndStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_; - return *this; - } - - PhysicalDevice8BitStorageFeatures & setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT - { - storagePushConstant8 = storagePushConstant8_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevice8BitStorageFeatures const& ) const = default; -#else - bool operator==( PhysicalDevice8BitStorageFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( storageBuffer8BitAccess == rhs.storageBuffer8BitAccess ) - && ( uniformAndStorageBuffer8BitAccess == rhs.uniformAndStorageBuffer8BitAccess ) - && ( storagePushConstant8 == rhs.storagePushConstant8 ); - } - - bool operator!=( PhysicalDevice8BitStorageFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevice8BitStorageFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8 = {}; - - }; - static_assert( sizeof( PhysicalDevice8BitStorageFeatures ) == sizeof( VkPhysicalDevice8BitStorageFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevice8BitStorageFeatures; - }; - using PhysicalDevice8BitStorageFeaturesKHR = PhysicalDevice8BitStorageFeatures; - - struct PhysicalDeviceASTCDecodeFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ = {}) VULKAN_HPP_NOEXCEPT - : decodeModeSharedExponent( decodeModeSharedExponent_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceASTCDecodeFeaturesEXT( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceASTCDecodeFeaturesEXT( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceASTCDecodeFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceASTCDecodeFeaturesEXT & operator=( PhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceASTCDecodeFeaturesEXT & operator=( VkPhysicalDeviceASTCDecodeFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceASTCDecodeFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceASTCDecodeFeaturesEXT & setDecodeModeSharedExponent( VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent_ ) VULKAN_HPP_NOEXCEPT - { - decodeModeSharedExponent = decodeModeSharedExponent_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceASTCDecodeFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceASTCDecodeFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( decodeModeSharedExponent == rhs.decodeModeSharedExponent ); - } - - bool operator!=( PhysicalDeviceASTCDecodeFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAstcDecodeFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 decodeModeSharedExponent = {}; - - }; - static_assert( sizeof( PhysicalDeviceASTCDecodeFeaturesEXT ) == sizeof( VkPhysicalDeviceASTCDecodeFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceASTCDecodeFeaturesEXT; - }; - - struct PhysicalDeviceAccelerationStructureFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceAccelerationStructureFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_ = {}, VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_ = {}, VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_ = {}, VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( PhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceAccelerationStructureFeaturesKHR & operator=( VkPhysicalDeviceAccelerationStructureFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceAccelerationStructureFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructure( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructure = accelerationStructure_; - return *this; - } - - PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructureCaptureReplay = accelerationStructureCaptureReplay_; - return *this; - } - - PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureIndirectBuild( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructureIndirectBuild = accelerationStructureIndirectBuild_; - return *this; - } - - PhysicalDeviceAccelerationStructureFeaturesKHR & setAccelerationStructureHostCommands( VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructureHostCommands = accelerationStructureHostCommands_; - return *this; - } - - PhysicalDeviceAccelerationStructureFeaturesKHR & setDescriptorBindingAccelerationStructureUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingAccelerationStructureUpdateAfterBind = descriptorBindingAccelerationStructureUpdateAfterBind_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceAccelerationStructureFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceAccelerationStructureFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( accelerationStructure == rhs.accelerationStructure ) - && ( accelerationStructureCaptureReplay == rhs.accelerationStructureCaptureReplay ) - && ( accelerationStructureIndirectBuild == rhs.accelerationStructureIndirectBuild ) - && ( accelerationStructureHostCommands == rhs.accelerationStructureHostCommands ) - && ( descriptorBindingAccelerationStructureUpdateAfterBind == rhs.descriptorBindingAccelerationStructureUpdateAfterBind ); - } - - bool operator!=( PhysicalDeviceAccelerationStructureFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceAccelerationStructureFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 accelerationStructure = {}; - VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureCaptureReplay = {}; - VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureIndirectBuild = {}; - VULKAN_HPP_NAMESPACE::Bool32 accelerationStructureHostCommands = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingAccelerationStructureUpdateAfterBind = {}; - - }; - static_assert( sizeof( PhysicalDeviceAccelerationStructureFeaturesKHR ) == sizeof( VkPhysicalDeviceAccelerationStructureFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceAccelerationStructureFeaturesKHR; - }; - - struct PhysicalDeviceAccelerationStructurePropertiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceAccelerationStructurePropertiesKHR; - -#if !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_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceAccelerationStructurePropertiesKHR & operator=( PhysicalDeviceAccelerationStructurePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceAccelerationStructurePropertiesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceAccelerationStructurePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceAccelerationStructurePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::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 = {}; - - }; - static_assert( sizeof( PhysicalDeviceAccelerationStructurePropertiesKHR ) == sizeof( VkPhysicalDeviceAccelerationStructurePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceAccelerationStructurePropertiesKHR; - }; - - struct PhysicalDeviceBlendOperationAdvancedFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ = {}) VULKAN_HPP_NOEXCEPT - : advancedBlendCoherentOperations( advancedBlendCoherentOperations_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedFeaturesEXT( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceBlendOperationAdvancedFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT & operator=( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceBlendOperationAdvancedFeaturesEXT & setAdvancedBlendCoherentOperations( VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations_ ) VULKAN_HPP_NOEXCEPT - { - advancedBlendCoherentOperations = advancedBlendCoherentOperations_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( advancedBlendCoherentOperations == rhs.advancedBlendCoherentOperations ); - } - - bool operator!=( PhysicalDeviceBlendOperationAdvancedFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCoherentOperations = {}; - - }; - static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedFeaturesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceBlendOperationAdvancedFeaturesEXT; - }; - - struct PhysicalDeviceBlendOperationAdvancedPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceBlendOperationAdvancedPropertiesEXT(uint32_t advancedBlendMaxColorAttachments_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedSrcColor_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedDstColor_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCorrelatedOverlap_ = {}, VULKAN_HPP_NAMESPACE::Bool32 advancedBlendAllOperations_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBlendOperationAdvancedPropertiesEXT & operator=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceBlendOperationAdvancedPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBlendOperationAdvancedPropertiesEXT; - void* pNext = {}; - uint32_t advancedBlendMaxColorAttachments = {}; - VULKAN_HPP_NAMESPACE::Bool32 advancedBlendIndependentBlend = {}; - VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedSrcColor = {}; - VULKAN_HPP_NAMESPACE::Bool32 advancedBlendNonPremultipliedDstColor = {}; - VULKAN_HPP_NAMESPACE::Bool32 advancedBlendCorrelatedOverlap = {}; - VULKAN_HPP_NAMESPACE::Bool32 advancedBlendAllOperations = {}; - - }; - static_assert( sizeof( PhysicalDeviceBlendOperationAdvancedPropertiesEXT ) == sizeof( VkPhysicalDeviceBlendOperationAdvancedPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceBlendOperationAdvancedPropertiesEXT; - }; - - struct PhysicalDeviceBufferDeviceAddressFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeatures(VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeatures & operator=( PhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceBufferDeviceAddressFeatures & operator=( VkPhysicalDeviceBufferDeviceAddressFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT - { - bufferDeviceAddress = bufferDeviceAddress_; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT - { - bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeatures & setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT - { - bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceBufferDeviceAddressFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceBufferDeviceAddressFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) - && ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) - && ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ); - } - - bool operator!=( PhysicalDeviceBufferDeviceAddressFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {}; - VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {}; - VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice = {}; - - }; - static_assert( sizeof( PhysicalDeviceBufferDeviceAddressFeatures ) == sizeof( VkPhysicalDeviceBufferDeviceAddressFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceBufferDeviceAddressFeatures; - }; - using PhysicalDeviceBufferDeviceAddressFeaturesKHR = PhysicalDeviceBufferDeviceAddressFeatures; - - struct PhysicalDeviceBufferDeviceAddressFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceBufferDeviceAddressFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceBufferDeviceAddressFeaturesEXT & operator=( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT - { - bufferDeviceAddress = bufferDeviceAddress_; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT - { - bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; - return *this; - } - - PhysicalDeviceBufferDeviceAddressFeaturesEXT & setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT - { - bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceBufferDeviceAddressFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceBufferDeviceAddressFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( bufferDeviceAddress == rhs.bufferDeviceAddress ) - && ( bufferDeviceAddressCaptureReplay == rhs.bufferDeviceAddressCaptureReplay ) - && ( bufferDeviceAddressMultiDevice == rhs.bufferDeviceAddressMultiDevice ); - } - - bool operator!=( PhysicalDeviceBufferDeviceAddressFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceBufferDeviceAddressFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {}; - VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {}; - VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice = {}; - - }; - static_assert( sizeof( PhysicalDeviceBufferDeviceAddressFeaturesEXT ) == sizeof( VkPhysicalDeviceBufferDeviceAddressFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceBufferDeviceAddressFeaturesEXT; - }; - using PhysicalDeviceBufferAddressFeaturesEXT = PhysicalDeviceBufferDeviceAddressFeaturesEXT; - - struct PhysicalDeviceCoherentMemoryFeaturesAMD - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD(VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ = {}) VULKAN_HPP_NOEXCEPT - : deviceCoherentMemory( deviceCoherentMemory_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceCoherentMemoryFeaturesAMD( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCoherentMemoryFeaturesAMD( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceCoherentMemoryFeaturesAMD( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( PhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCoherentMemoryFeaturesAMD & operator=( VkPhysicalDeviceCoherentMemoryFeaturesAMD const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceCoherentMemoryFeaturesAMD & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceCoherentMemoryFeaturesAMD & setDeviceCoherentMemory( VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory_ ) VULKAN_HPP_NOEXCEPT - { - deviceCoherentMemory = deviceCoherentMemory_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceCoherentMemoryFeaturesAMD const& ) const = default; -#else - bool operator==( PhysicalDeviceCoherentMemoryFeaturesAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceCoherentMemory == rhs.deviceCoherentMemory ); - } - - bool operator!=( PhysicalDeviceCoherentMemoryFeaturesAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCoherentMemoryFeaturesAMD; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 deviceCoherentMemory = {}; - - }; - static_assert( sizeof( PhysicalDeviceCoherentMemoryFeaturesAMD ) == sizeof( VkPhysicalDeviceCoherentMemoryFeaturesAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceCoherentMemoryFeaturesAMD; - }; - - struct PhysicalDeviceComputeShaderDerivativesFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_ = {}, VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ = {}) VULKAN_HPP_NOEXCEPT - : computeDerivativeGroupQuads( computeDerivativeGroupQuads_ ), computeDerivativeGroupLinear( computeDerivativeGroupLinear_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceComputeShaderDerivativesFeaturesNV( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceComputeShaderDerivativesFeaturesNV( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceComputeShaderDerivativesFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceComputeShaderDerivativesFeaturesNV & operator=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceComputeShaderDerivativesFeaturesNV & operator=( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceComputeShaderDerivativesFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceComputeShaderDerivativesFeaturesNV & setComputeDerivativeGroupQuads( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads_ ) VULKAN_HPP_NOEXCEPT - { - computeDerivativeGroupQuads = computeDerivativeGroupQuads_; - return *this; - } - - PhysicalDeviceComputeShaderDerivativesFeaturesNV & setComputeDerivativeGroupLinear( VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear_ ) VULKAN_HPP_NOEXCEPT - { - computeDerivativeGroupLinear = computeDerivativeGroupLinear_; - return *this; - } - - - operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceComputeShaderDerivativesFeaturesNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceComputeShaderDerivativesFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceComputeShaderDerivativesFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( computeDerivativeGroupQuads == rhs.computeDerivativeGroupQuads ) - && ( computeDerivativeGroupLinear == rhs.computeDerivativeGroupLinear ); - } - - bool operator!=( PhysicalDeviceComputeShaderDerivativesFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceComputeShaderDerivativesFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupQuads = {}; - VULKAN_HPP_NAMESPACE::Bool32 computeDerivativeGroupLinear = {}; - - }; - static_assert( sizeof( PhysicalDeviceComputeShaderDerivativesFeaturesNV ) == sizeof( VkPhysicalDeviceComputeShaderDerivativesFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceComputeShaderDerivativesFeaturesNV; - }; - - struct PhysicalDeviceConditionalRenderingFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceConditionalRenderingFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_ = {}, VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( PhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceConditionalRenderingFeaturesEXT & operator=( VkPhysicalDeviceConditionalRenderingFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceConditionalRenderingFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceConditionalRenderingFeaturesEXT & setConditionalRendering( VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering_ ) VULKAN_HPP_NOEXCEPT - { - conditionalRendering = conditionalRendering_; - return *this; - } - - PhysicalDeviceConditionalRenderingFeaturesEXT & setInheritedConditionalRendering( VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering_ ) VULKAN_HPP_NOEXCEPT - { - inheritedConditionalRendering = inheritedConditionalRendering_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceConditionalRenderingFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceConditionalRenderingFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( conditionalRendering == rhs.conditionalRendering ) - && ( inheritedConditionalRendering == rhs.inheritedConditionalRendering ); - } - - bool operator!=( PhysicalDeviceConditionalRenderingFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConditionalRenderingFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 conditionalRendering = {}; - VULKAN_HPP_NAMESPACE::Bool32 inheritedConditionalRendering = {}; - - }; - static_assert( sizeof( PhysicalDeviceConditionalRenderingFeaturesEXT ) == sizeof( VkPhysicalDeviceConditionalRenderingFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceConditionalRenderingFeaturesEXT; - }; - - struct PhysicalDeviceConservativeRasterizationPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceConservativeRasterizationPropertiesEXT(float primitiveOverestimationSize_ = {}, float maxExtraPrimitiveOverestimationSize_ = {}, float extraPrimitiveOverestimationSizeGranularity_ = {}, VULKAN_HPP_NAMESPACE::Bool32 primitiveUnderestimation_ = {}, VULKAN_HPP_NAMESPACE::Bool32 conservativePointAndLineRasterization_ = {}, VULKAN_HPP_NAMESPACE::Bool32 degenerateTrianglesRasterized_ = {}, VULKAN_HPP_NAMESPACE::Bool32 degenerateLinesRasterized_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fullyCoveredFragmentShaderInputVariable_ = {}, VULKAN_HPP_NAMESPACE::Bool32 conservativeRasterizationPostDepthCoverage_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceConservativeRasterizationPropertiesEXT & operator=( PhysicalDeviceConservativeRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceConservativeRasterizationPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceConservativeRasterizationPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceConservativeRasterizationPropertiesEXT; - void* pNext = {}; - float primitiveOverestimationSize = {}; - float maxExtraPrimitiveOverestimationSize = {}; - float extraPrimitiveOverestimationSizeGranularity = {}; - VULKAN_HPP_NAMESPACE::Bool32 primitiveUnderestimation = {}; - VULKAN_HPP_NAMESPACE::Bool32 conservativePointAndLineRasterization = {}; - VULKAN_HPP_NAMESPACE::Bool32 degenerateTrianglesRasterized = {}; - VULKAN_HPP_NAMESPACE::Bool32 degenerateLinesRasterized = {}; - VULKAN_HPP_NAMESPACE::Bool32 fullyCoveredFragmentShaderInputVariable = {}; - VULKAN_HPP_NAMESPACE::Bool32 conservativeRasterizationPostDepthCoverage = {}; - - }; - static_assert( sizeof( PhysicalDeviceConservativeRasterizationPropertiesEXT ) == sizeof( VkPhysicalDeviceConservativeRasterizationPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceConservativeRasterizationPropertiesEXT; - }; - - struct PhysicalDeviceCooperativeMatrixFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_ = {}, VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( PhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCooperativeMatrixFeaturesNV & operator=( VkPhysicalDeviceCooperativeMatrixFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceCooperativeMatrixFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceCooperativeMatrixFeaturesNV & setCooperativeMatrix( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix_ ) VULKAN_HPP_NOEXCEPT - { - cooperativeMatrix = cooperativeMatrix_; - return *this; - } - - PhysicalDeviceCooperativeMatrixFeaturesNV & setCooperativeMatrixRobustBufferAccess( VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess_ ) VULKAN_HPP_NOEXCEPT - { - cooperativeMatrixRobustBufferAccess = cooperativeMatrixRobustBufferAccess_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceCooperativeMatrixFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceCooperativeMatrixFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( cooperativeMatrix == rhs.cooperativeMatrix ) - && ( cooperativeMatrixRobustBufferAccess == rhs.cooperativeMatrixRobustBufferAccess ); - } - - bool operator!=( PhysicalDeviceCooperativeMatrixFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrix = {}; - VULKAN_HPP_NAMESPACE::Bool32 cooperativeMatrixRobustBufferAccess = {}; - - }; - static_assert( sizeof( PhysicalDeviceCooperativeMatrixFeaturesNV ) == sizeof( VkPhysicalDeviceCooperativeMatrixFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceCooperativeMatrixFeaturesNV; - }; - - struct PhysicalDeviceCooperativeMatrixPropertiesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV(VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages_ = {}) VULKAN_HPP_NOEXCEPT - : cooperativeMatrixSupportedStages( cooperativeMatrixSupportedStages_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceCooperativeMatrixPropertiesNV( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCooperativeMatrixPropertiesNV( VkPhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceCooperativeMatrixPropertiesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCooperativeMatrixPropertiesNV & operator=( PhysicalDeviceCooperativeMatrixPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceCooperativeMatrixPropertiesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceCooperativeMatrixPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( cooperativeMatrixSupportedStages == rhs.cooperativeMatrixSupportedStages ); - } - - bool operator!=( PhysicalDeviceCooperativeMatrixPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCooperativeMatrixPropertiesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ShaderStageFlags cooperativeMatrixSupportedStages = {}; - - }; - static_assert( sizeof( PhysicalDeviceCooperativeMatrixPropertiesNV ) == sizeof( VkPhysicalDeviceCooperativeMatrixPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceCooperativeMatrixPropertiesNV; - }; - - struct PhysicalDeviceCornerSampledImageFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ = {}) VULKAN_HPP_NOEXCEPT - : cornerSampledImage( cornerSampledImage_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceCornerSampledImageFeaturesNV( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCornerSampledImageFeaturesNV( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceCornerSampledImageFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCornerSampledImageFeaturesNV & operator=( PhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCornerSampledImageFeaturesNV & operator=( VkPhysicalDeviceCornerSampledImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceCornerSampledImageFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceCornerSampledImageFeaturesNV & setCornerSampledImage( VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage_ ) VULKAN_HPP_NOEXCEPT - { - cornerSampledImage = cornerSampledImage_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceCornerSampledImageFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceCornerSampledImageFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( cornerSampledImage == rhs.cornerSampledImage ); - } - - bool operator!=( PhysicalDeviceCornerSampledImageFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCornerSampledImageFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 cornerSampledImage = {}; - - }; - static_assert( sizeof( PhysicalDeviceCornerSampledImageFeaturesNV ) == sizeof( VkPhysicalDeviceCornerSampledImageFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceCornerSampledImageFeaturesNV; - }; - - struct PhysicalDeviceCoverageReductionModeFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ = {}) VULKAN_HPP_NOEXCEPT - : coverageReductionMode( coverageReductionMode_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceCoverageReductionModeFeaturesNV( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCoverageReductionModeFeaturesNV( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceCoverageReductionModeFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( PhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCoverageReductionModeFeaturesNV & operator=( VkPhysicalDeviceCoverageReductionModeFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceCoverageReductionModeFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceCoverageReductionModeFeaturesNV & setCoverageReductionMode( VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT - { - coverageReductionMode = coverageReductionMode_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceCoverageReductionModeFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceCoverageReductionModeFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( coverageReductionMode == rhs.coverageReductionMode ); - } - - bool operator!=( PhysicalDeviceCoverageReductionModeFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCoverageReductionModeFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 coverageReductionMode = {}; - - }; - static_assert( sizeof( PhysicalDeviceCoverageReductionModeFeaturesNV ) == sizeof( VkPhysicalDeviceCoverageReductionModeFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceCoverageReductionModeFeaturesNV; - }; - - struct PhysicalDeviceCustomBorderColorFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_ = {}, VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( PhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCustomBorderColorFeaturesEXT & operator=( VkPhysicalDeviceCustomBorderColorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceCustomBorderColorFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceCustomBorderColorFeaturesEXT & setCustomBorderColors( VULKAN_HPP_NAMESPACE::Bool32 customBorderColors_ ) VULKAN_HPP_NOEXCEPT - { - customBorderColors = customBorderColors_; - return *this; - } - - PhysicalDeviceCustomBorderColorFeaturesEXT & setCustomBorderColorWithoutFormat( VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat_ ) VULKAN_HPP_NOEXCEPT - { - customBorderColorWithoutFormat = customBorderColorWithoutFormat_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceCustomBorderColorFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceCustomBorderColorFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( customBorderColors == rhs.customBorderColors ) - && ( customBorderColorWithoutFormat == rhs.customBorderColorWithoutFormat ); - } - - bool operator!=( PhysicalDeviceCustomBorderColorFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 customBorderColors = {}; - VULKAN_HPP_NAMESPACE::Bool32 customBorderColorWithoutFormat = {}; - - }; - static_assert( sizeof( PhysicalDeviceCustomBorderColorFeaturesEXT ) == sizeof( VkPhysicalDeviceCustomBorderColorFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceCustomBorderColorFeaturesEXT; - }; - - struct PhysicalDeviceCustomBorderColorPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT(uint32_t maxCustomBorderColorSamplers_ = {}) VULKAN_HPP_NOEXCEPT - : maxCustomBorderColorSamplers( maxCustomBorderColorSamplers_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceCustomBorderColorPropertiesEXT( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceCustomBorderColorPropertiesEXT( VkPhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceCustomBorderColorPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceCustomBorderColorPropertiesEXT & operator=( PhysicalDeviceCustomBorderColorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceCustomBorderColorPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceCustomBorderColorPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxCustomBorderColorSamplers == rhs.maxCustomBorderColorSamplers ); - } - - bool operator!=( PhysicalDeviceCustomBorderColorPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceCustomBorderColorPropertiesEXT; - void* pNext = {}; - uint32_t maxCustomBorderColorSamplers = {}; - - }; - static_assert( sizeof( PhysicalDeviceCustomBorderColorPropertiesEXT ) == sizeof( VkPhysicalDeviceCustomBorderColorPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceCustomBorderColorPropertiesEXT; - }; - - struct PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ = {}) VULKAN_HPP_NOEXCEPT - : dedicatedAllocationImageAliasing( dedicatedAllocationImageAliasing_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & operator=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & operator=( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV & setDedicatedAllocationImageAliasing( VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing_ ) VULKAN_HPP_NOEXCEPT - { - dedicatedAllocationImageAliasing = dedicatedAllocationImageAliasing_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( dedicatedAllocationImageAliasing == rhs.dedicatedAllocationImageAliasing ); - } - - bool operator!=( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 dedicatedAllocationImageAliasing = {}; - - }; - static_assert( sizeof( PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ) == sizeof( VkPhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDedicatedAllocationImageAliasingFeaturesNV; - }; - - struct PhysicalDeviceDepthClipEnableFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ = {}) VULKAN_HPP_NOEXCEPT - : depthClipEnable( depthClipEnable_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthClipEnableFeaturesEXT( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDepthClipEnableFeaturesEXT( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceDepthClipEnableFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( PhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDepthClipEnableFeaturesEXT & operator=( VkPhysicalDeviceDepthClipEnableFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceDepthClipEnableFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceDepthClipEnableFeaturesEXT & setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT - { - depthClipEnable = depthClipEnable_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDepthClipEnableFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceDepthClipEnableFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( depthClipEnable == rhs.depthClipEnable ); - } - - bool operator!=( PhysicalDeviceDepthClipEnableFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthClipEnableFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable = {}; - - }; - static_assert( sizeof( PhysicalDeviceDepthClipEnableFeaturesEXT ) == sizeof( VkPhysicalDeviceDepthClipEnableFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDepthClipEnableFeaturesEXT; - }; - - struct PhysicalDeviceDepthStencilResolveProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDepthStencilResolveProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceDepthStencilResolveProperties(VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_ = {}, VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentResolve_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDepthStencilResolveProperties & operator=( PhysicalDeviceDepthStencilResolveProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDepthStencilResolveProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceDepthStencilResolveProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( supportedDepthResolveModes == rhs.supportedDepthResolveModes ) - && ( supportedStencilResolveModes == rhs.supportedStencilResolveModes ) - && ( independentResolveNone == rhs.independentResolveNone ) - && ( independentResolve == rhs.independentResolve ); - } - - bool operator!=( PhysicalDeviceDepthStencilResolveProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDepthStencilResolveProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes = {}; - VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {}; - VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone = {}; - VULKAN_HPP_NAMESPACE::Bool32 independentResolve = {}; - - }; - static_assert( sizeof( PhysicalDeviceDepthStencilResolveProperties ) == sizeof( VkPhysicalDeviceDepthStencilResolveProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDepthStencilResolveProperties; - }; - using PhysicalDeviceDepthStencilResolvePropertiesKHR = PhysicalDeviceDepthStencilResolveProperties; - - struct PhysicalDeviceDescriptorIndexingFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ = {}, VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingFeatures & operator=( PhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDescriptorIndexingFeatures & operator=( VkPhysicalDeviceDescriptorIndexingFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderInputAttachmentArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderSampledImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderInputAttachmentArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderUniformTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setShaderStorageTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUniformBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingSampledImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUniformTexelBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingStorageTexelBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingUpdateUnusedWhilePending( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingPartiallyBound( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setDescriptorBindingVariableDescriptorCount( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_; - return *this; - } - - PhysicalDeviceDescriptorIndexingFeatures & setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT - { - runtimeDescriptorArray = runtimeDescriptorArray_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDescriptorIndexingFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceDescriptorIndexingFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceDescriptorIndexingFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount = {}; - VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray = {}; - - }; - static_assert( sizeof( PhysicalDeviceDescriptorIndexingFeatures ) == sizeof( VkPhysicalDeviceDescriptorIndexingFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDescriptorIndexingFeatures; - }; - using PhysicalDeviceDescriptorIndexingFeaturesEXT = PhysicalDeviceDescriptorIndexingFeatures; - - struct PhysicalDeviceDescriptorIndexingProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDescriptorIndexingProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceDescriptorIndexingProperties(uint32_t maxUpdateAfterBindDescriptorsInAllPools_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::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_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDescriptorIndexingProperties & operator=( PhysicalDeviceDescriptorIndexingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDescriptorIndexingProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceDescriptorIndexingProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceDescriptorIndexingProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDescriptorIndexingProperties; - void* pNext = {}; - uint32_t maxUpdateAfterBindDescriptorsInAllPools = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::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 = {}; - - }; - static_assert( sizeof( PhysicalDeviceDescriptorIndexingProperties ) == sizeof( VkPhysicalDeviceDescriptorIndexingProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDescriptorIndexingProperties; - }; - using PhysicalDeviceDescriptorIndexingPropertiesEXT = PhysicalDeviceDescriptorIndexingProperties; - - struct PhysicalDeviceDeviceGeneratedCommandsFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ = {}) VULKAN_HPP_NOEXCEPT - : deviceGeneratedCommands( deviceGeneratedCommands_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceDeviceGeneratedCommandsFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & operator=( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceDeviceGeneratedCommandsFeaturesNV & setDeviceGeneratedCommands( VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands_ ) VULKAN_HPP_NOEXCEPT - { - deviceGeneratedCommands = deviceGeneratedCommands_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceGeneratedCommands == rhs.deviceGeneratedCommands ); - } - - bool operator!=( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 deviceGeneratedCommands = {}; - - }; - static_assert( sizeof( PhysicalDeviceDeviceGeneratedCommandsFeaturesNV ) == sizeof( VkPhysicalDeviceDeviceGeneratedCommandsFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDeviceGeneratedCommandsFeaturesNV; - }; - - struct PhysicalDeviceDeviceGeneratedCommandsPropertiesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceGeneratedCommandsPropertiesNV; - -#if !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_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceGeneratedCommandsPropertiesNV & operator=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::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 = {}; - - }; - static_assert( sizeof( PhysicalDeviceDeviceGeneratedCommandsPropertiesNV ) == sizeof( VkPhysicalDeviceDeviceGeneratedCommandsPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDeviceGeneratedCommandsPropertiesNV; - }; - - struct PhysicalDeviceDeviceMemoryReportFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ = {}) VULKAN_HPP_NOEXCEPT - : deviceMemoryReport( deviceMemoryReport_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceDeviceMemoryReportFeaturesEXT( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDeviceMemoryReportFeaturesEXT( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceDeviceMemoryReportFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDeviceMemoryReportFeaturesEXT & operator=( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceDeviceMemoryReportFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceDeviceMemoryReportFeaturesEXT & setDeviceMemoryReport( VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport_ ) VULKAN_HPP_NOEXCEPT - { - deviceMemoryReport = deviceMemoryReport_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDeviceMemoryReportFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceDeviceMemoryReportFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceMemoryReport == rhs.deviceMemoryReport ); - } - - bool operator!=( PhysicalDeviceDeviceMemoryReportFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDeviceMemoryReportFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 deviceMemoryReport = {}; - - }; - static_assert( sizeof( PhysicalDeviceDeviceMemoryReportFeaturesEXT ) == sizeof( VkPhysicalDeviceDeviceMemoryReportFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDeviceMemoryReportFeaturesEXT; - }; - - struct PhysicalDeviceDiagnosticsConfigFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ = {}) VULKAN_HPP_NOEXCEPT - : diagnosticsConfig( diagnosticsConfig_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceDiagnosticsConfigFeaturesNV( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDiagnosticsConfigFeaturesNV( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceDiagnosticsConfigFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( PhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDiagnosticsConfigFeaturesNV & operator=( VkPhysicalDeviceDiagnosticsConfigFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceDiagnosticsConfigFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceDiagnosticsConfigFeaturesNV & setDiagnosticsConfig( VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig_ ) VULKAN_HPP_NOEXCEPT - { - diagnosticsConfig = diagnosticsConfig_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDiagnosticsConfigFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceDiagnosticsConfigFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( diagnosticsConfig == rhs.diagnosticsConfig ); - } - - bool operator!=( PhysicalDeviceDiagnosticsConfigFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiagnosticsConfigFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 diagnosticsConfig = {}; - - }; - static_assert( sizeof( PhysicalDeviceDiagnosticsConfigFeaturesNV ) == sizeof( VkPhysicalDeviceDiagnosticsConfigFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDiagnosticsConfigFeaturesNV; - }; - - struct PhysicalDeviceDiscardRectanglePropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT(uint32_t maxDiscardRectangles_ = {}) VULKAN_HPP_NOEXCEPT - : maxDiscardRectangles( maxDiscardRectangles_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceDiscardRectanglePropertiesEXT( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceDiscardRectanglePropertiesEXT( VkPhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceDiscardRectanglePropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDiscardRectanglePropertiesEXT & operator=( PhysicalDeviceDiscardRectanglePropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDiscardRectanglePropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxDiscardRectangles == rhs.maxDiscardRectangles ); - } - - bool operator!=( PhysicalDeviceDiscardRectanglePropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDiscardRectanglePropertiesEXT; - void* pNext = {}; - uint32_t maxDiscardRectangles = {}; - - }; - static_assert( sizeof( PhysicalDeviceDiscardRectanglePropertiesEXT ) == sizeof( VkPhysicalDeviceDiscardRectanglePropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDiscardRectanglePropertiesEXT; - }; - - struct PhysicalDeviceDriverProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceDriverProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties(VULKAN_HPP_NAMESPACE::DriverId driverID_ = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary, std::array const& driverName_ = {}, std::array const& driverInfo_ = {}, VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceDriverProperties & operator=( PhysicalDeviceDriverProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceDriverProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceDriverProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( driverID == rhs.driverID ) - && ( driverName == rhs.driverName ) - && ( driverInfo == rhs.driverInfo ) - && ( conformanceVersion == rhs.conformanceVersion ); - } - - bool operator!=( PhysicalDeviceDriverProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceDriverProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DriverId driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverName = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverInfo = {}; - VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion = {}; - - }; - static_assert( sizeof( PhysicalDeviceDriverProperties ) == sizeof( VkPhysicalDeviceDriverProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceDriverProperties; - }; - using PhysicalDeviceDriverPropertiesKHR = PhysicalDeviceDriverProperties; - - struct PhysicalDeviceExclusiveScissorFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ = {}) VULKAN_HPP_NOEXCEPT - : exclusiveScissor( exclusiveScissor_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceExclusiveScissorFeaturesNV( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExclusiveScissorFeaturesNV( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceExclusiveScissorFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExclusiveScissorFeaturesNV & operator=( PhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExclusiveScissorFeaturesNV & operator=( VkPhysicalDeviceExclusiveScissorFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceExclusiveScissorFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExclusiveScissorFeaturesNV & setExclusiveScissor( VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor_ ) VULKAN_HPP_NOEXCEPT - { - exclusiveScissor = exclusiveScissor_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceExclusiveScissorFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceExclusiveScissorFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( exclusiveScissor == rhs.exclusiveScissor ); - } - - bool operator!=( PhysicalDeviceExclusiveScissorFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExclusiveScissorFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 exclusiveScissor = {}; - - }; - static_assert( sizeof( PhysicalDeviceExclusiveScissorFeaturesNV ) == sizeof( VkPhysicalDeviceExclusiveScissorFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceExclusiveScissorFeaturesNV; - }; - - struct PhysicalDeviceExtendedDynamicStateFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ = {}) VULKAN_HPP_NOEXCEPT - : extendedDynamicState( extendedDynamicState_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceExtendedDynamicStateFeaturesEXT( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExtendedDynamicStateFeaturesEXT( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceExtendedDynamicStateFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExtendedDynamicStateFeaturesEXT & operator=( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceExtendedDynamicStateFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExtendedDynamicStateFeaturesEXT & setExtendedDynamicState( VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState_ ) VULKAN_HPP_NOEXCEPT - { - extendedDynamicState = extendedDynamicState_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceExtendedDynamicStateFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceExtendedDynamicStateFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( extendedDynamicState == rhs.extendedDynamicState ); - } - - bool operator!=( PhysicalDeviceExtendedDynamicStateFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExtendedDynamicStateFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 extendedDynamicState = {}; - - }; - static_assert( sizeof( PhysicalDeviceExtendedDynamicStateFeaturesEXT ) == sizeof( VkPhysicalDeviceExtendedDynamicStateFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceExtendedDynamicStateFeaturesEXT; - }; - - struct PhysicalDeviceExternalImageFormatInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalImageFormatInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo(VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd) VULKAN_HPP_NOEXCEPT - : handleType( handleType_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalImageFormatInfo( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExternalImageFormatInfo( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceExternalImageFormatInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalImageFormatInfo & operator=( PhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExternalImageFormatInfo & operator=( VkPhysicalDeviceExternalImageFormatInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceExternalImageFormatInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceExternalImageFormatInfo & setHandleType( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType_ ) VULKAN_HPP_NOEXCEPT - { - handleType = handleType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceExternalImageFormatInfo const& ) const = default; -#else - bool operator==( PhysicalDeviceExternalImageFormatInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( handleType == rhs.handleType ); - } - - bool operator!=( PhysicalDeviceExternalImageFormatInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalImageFormatInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType = VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits::eOpaqueFd; - - }; - static_assert( sizeof( PhysicalDeviceExternalImageFormatInfo ) == sizeof( VkPhysicalDeviceExternalImageFormatInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceExternalImageFormatInfo; - }; - using PhysicalDeviceExternalImageFormatInfoKHR = PhysicalDeviceExternalImageFormatInfo; - - struct PhysicalDeviceExternalMemoryHostPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT(VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment_ = {}) VULKAN_HPP_NOEXCEPT - : minImportedHostPointerAlignment( minImportedHostPointerAlignment_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceExternalMemoryHostPropertiesEXT( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceExternalMemoryHostPropertiesEXT( VkPhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceExternalMemoryHostPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceExternalMemoryHostPropertiesEXT & operator=( PhysicalDeviceExternalMemoryHostPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceExternalMemoryHostPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( minImportedHostPointerAlignment == rhs.minImportedHostPointerAlignment ); - } - - bool operator!=( PhysicalDeviceExternalMemoryHostPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceExternalMemoryHostPropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceSize minImportedHostPointerAlignment = {}; - - }; - static_assert( sizeof( PhysicalDeviceExternalMemoryHostPropertiesEXT ) == sizeof( VkPhysicalDeviceExternalMemoryHostPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceExternalMemoryHostPropertiesEXT; - }; - - struct PhysicalDeviceFloatControlsProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFloatControlsProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFloatControlsProperties(VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFloatControlsProperties & operator=( PhysicalDeviceFloatControlsProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFloatControlsProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceFloatControlsProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceFloatControlsProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFloatControlsProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly; - VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly; - VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64 = {}; - - }; - static_assert( sizeof( PhysicalDeviceFloatControlsProperties ) == sizeof( VkPhysicalDeviceFloatControlsProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFloatControlsProperties; - }; - using PhysicalDeviceFloatControlsPropertiesKHR = PhysicalDeviceFloatControlsProperties; - - struct PhysicalDeviceFragmentDensityMap2FeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ = {}) VULKAN_HPP_NOEXCEPT - : fragmentDensityMapDeferred( fragmentDensityMapDeferred_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2FeaturesEXT( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentDensityMap2FeaturesEXT( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceFragmentDensityMap2FeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentDensityMap2FeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceFragmentDensityMap2FeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFragmentDensityMap2FeaturesEXT & setFragmentDensityMapDeferred( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred_ ) VULKAN_HPP_NOEXCEPT - { - fragmentDensityMapDeferred = fragmentDensityMapDeferred_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentDensityMap2FeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentDensityMap2FeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentDensityMapDeferred == rhs.fragmentDensityMapDeferred ); - } - - bool operator!=( PhysicalDeviceFragmentDensityMap2FeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2FeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDeferred = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentDensityMap2FeaturesEXT ) == sizeof( VkPhysicalDeviceFragmentDensityMap2FeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentDensityMap2FeaturesEXT; - }; - - struct PhysicalDeviceFragmentDensityMap2PropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMap2PropertiesEXT(VULKAN_HPP_NAMESPACE::Bool32 subsampledLoads_ = {}, VULKAN_HPP_NAMESPACE::Bool32 subsampledCoarseReconstructionEarlyAccess_ = {}, uint32_t maxSubsampledArrayLayers_ = {}, uint32_t maxDescriptorSetSubsampledSamplers_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMap2PropertiesEXT & operator=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentDensityMap2PropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentDensityMap2PropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( subsampledLoads == rhs.subsampledLoads ) - && ( subsampledCoarseReconstructionEarlyAccess == rhs.subsampledCoarseReconstructionEarlyAccess ) - && ( maxSubsampledArrayLayers == rhs.maxSubsampledArrayLayers ) - && ( maxDescriptorSetSubsampledSamplers == rhs.maxDescriptorSetSubsampledSamplers ); - } - - bool operator!=( PhysicalDeviceFragmentDensityMap2PropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMap2PropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 subsampledLoads = {}; - VULKAN_HPP_NAMESPACE::Bool32 subsampledCoarseReconstructionEarlyAccess = {}; - uint32_t maxSubsampledArrayLayers = {}; - uint32_t maxDescriptorSetSubsampledSamplers = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentDensityMap2PropertiesEXT ) == sizeof( VkPhysicalDeviceFragmentDensityMap2PropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentDensityMap2PropertiesEXT; - }; - - struct PhysicalDeviceFragmentDensityMapFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( PhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentDensityMapFeaturesEXT & operator=( VkPhysicalDeviceFragmentDensityMapFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceFragmentDensityMapFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFragmentDensityMapFeaturesEXT & setFragmentDensityMap( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap_ ) VULKAN_HPP_NOEXCEPT - { - fragmentDensityMap = fragmentDensityMap_; - return *this; - } - - PhysicalDeviceFragmentDensityMapFeaturesEXT & setFragmentDensityMapDynamic( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic_ ) VULKAN_HPP_NOEXCEPT - { - fragmentDensityMapDynamic = fragmentDensityMapDynamic_; - return *this; - } - - PhysicalDeviceFragmentDensityMapFeaturesEXT & setFragmentDensityMapNonSubsampledImages( VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages_ ) VULKAN_HPP_NOEXCEPT - { - fragmentDensityMapNonSubsampledImages = fragmentDensityMapNonSubsampledImages_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentDensityMapFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentDensityMapFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentDensityMap == rhs.fragmentDensityMap ) - && ( fragmentDensityMapDynamic == rhs.fragmentDensityMapDynamic ) - && ( fragmentDensityMapNonSubsampledImages == rhs.fragmentDensityMapNonSubsampledImages ); - } - - bool operator!=( PhysicalDeviceFragmentDensityMapFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMap = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapDynamic = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityMapNonSubsampledImages = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentDensityMapFeaturesEXT ) == sizeof( VkPhysicalDeviceFragmentDensityMapFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentDensityMapFeaturesEXT; - }; - - struct PhysicalDeviceFragmentDensityMapPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentDensityMapPropertiesEXT(VULKAN_HPP_NAMESPACE::Extent2D minFragmentDensityTexelSize_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxFragmentDensityTexelSize_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityInvocations_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentDensityMapPropertiesEXT & operator=( PhysicalDeviceFragmentDensityMapPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentDensityMapPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentDensityMapPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( minFragmentDensityTexelSize == rhs.minFragmentDensityTexelSize ) - && ( maxFragmentDensityTexelSize == rhs.maxFragmentDensityTexelSize ) - && ( fragmentDensityInvocations == rhs.fragmentDensityInvocations ); - } - - bool operator!=( PhysicalDeviceFragmentDensityMapPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentDensityMapPropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Extent2D minFragmentDensityTexelSize = {}; - VULKAN_HPP_NAMESPACE::Extent2D maxFragmentDensityTexelSize = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentDensityInvocations = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentDensityMapPropertiesEXT ) == sizeof( VkPhysicalDeviceFragmentDensityMapPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentDensityMapPropertiesEXT; - }; - - struct PhysicalDeviceFragmentShaderBarycentricFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ = {}) VULKAN_HPP_NOEXCEPT - : fragmentShaderBarycentric( fragmentShaderBarycentric_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderBarycentricFeaturesNV( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceFragmentShaderBarycentricFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderBarycentricFeaturesNV & operator=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV & operator=( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFragmentShaderBarycentricFeaturesNV & setFragmentShaderBarycentric( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric_ ) VULKAN_HPP_NOEXCEPT - { - fragmentShaderBarycentric = fragmentShaderBarycentric_; - return *this; - } - - - operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentShaderBarycentric == rhs.fragmentShaderBarycentric ); - } - - bool operator!=( PhysicalDeviceFragmentShaderBarycentricFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderBarycentricFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderBarycentric = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentShaderBarycentricFeaturesNV ) == sizeof( VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentShaderBarycentricFeaturesNV; - }; - - struct PhysicalDeviceFragmentShaderInterlockFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShaderInterlockFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT & operator=( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderSampleInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock_ ) VULKAN_HPP_NOEXCEPT - { - fragmentShaderSampleInterlock = fragmentShaderSampleInterlock_; - return *this; - } - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderPixelInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock_ ) VULKAN_HPP_NOEXCEPT - { - fragmentShaderPixelInterlock = fragmentShaderPixelInterlock_; - return *this; - } - - PhysicalDeviceFragmentShaderInterlockFeaturesEXT & setFragmentShaderShadingRateInterlock( VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock_ ) VULKAN_HPP_NOEXCEPT - { - fragmentShaderShadingRateInterlock = fragmentShaderShadingRateInterlock_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentShaderSampleInterlock == rhs.fragmentShaderSampleInterlock ) - && ( fragmentShaderPixelInterlock == rhs.fragmentShaderPixelInterlock ) - && ( fragmentShaderShadingRateInterlock == rhs.fragmentShaderShadingRateInterlock ); - } - - bool operator!=( PhysicalDeviceFragmentShaderInterlockFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShaderInterlockFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderSampleInterlock = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderPixelInterlock = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShaderShadingRateInterlock = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentShaderInterlockFeaturesEXT ) == sizeof( VkPhysicalDeviceFragmentShaderInterlockFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentShaderInterlockFeaturesEXT; - }; - - struct PhysicalDeviceFragmentShadingRateEnumsFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_ = {}, VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_ = {}, VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setFragmentShadingRateEnums( VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums_ ) VULKAN_HPP_NOEXCEPT - { - fragmentShadingRateEnums = fragmentShadingRateEnums_; - return *this; - } - - PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setSupersampleFragmentShadingRates( VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT - { - supersampleFragmentShadingRates = supersampleFragmentShadingRates_; - return *this; - } - - PhysicalDeviceFragmentShadingRateEnumsFeaturesNV & setNoInvocationFragmentShadingRates( VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates_ ) VULKAN_HPP_NOEXCEPT - { - noInvocationFragmentShadingRates = noInvocationFragmentShadingRates_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentShadingRateEnums == rhs.fragmentShadingRateEnums ) - && ( supersampleFragmentShadingRates == rhs.supersampleFragmentShadingRates ) - && ( noInvocationFragmentShadingRates == rhs.noInvocationFragmentShadingRates ); - } - - bool operator!=( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateEnums = {}; - VULKAN_HPP_NAMESPACE::Bool32 supersampleFragmentShadingRates = {}; - VULKAN_HPP_NAMESPACE::Bool32 noInvocationFragmentShadingRates = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentShadingRateEnumsFeaturesNV ) == sizeof( VkPhysicalDeviceFragmentShadingRateEnumsFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentShadingRateEnumsFeaturesNV; - }; - - struct PhysicalDeviceFragmentShadingRateEnumsPropertiesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsPropertiesNV(VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1) VULKAN_HPP_NOEXCEPT - : maxFragmentShadingRateInvocationCount( maxFragmentShadingRateInvocationCount_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceFragmentShadingRateEnumsPropertiesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & operator=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & operator=( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFragmentShadingRateEnumsPropertiesNV & setMaxFragmentShadingRateInvocationCount( VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount_ ) VULKAN_HPP_NOEXCEPT - { - maxFragmentShadingRateInvocationCount = maxFragmentShadingRateInvocationCount_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxFragmentShadingRateInvocationCount == rhs.maxFragmentShadingRateInvocationCount ); - } - - bool operator!=( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateEnumsPropertiesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateInvocationCount = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; - - }; - static_assert( sizeof( PhysicalDeviceFragmentShadingRateEnumsPropertiesNV ) == sizeof( VkPhysicalDeviceFragmentShadingRateEnumsPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentShadingRateEnumsPropertiesNV; - }; - - struct PhysicalDeviceFragmentShadingRateFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRateFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_ = {}, VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_ = {}, VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( PhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceFragmentShadingRateFeaturesKHR & operator=( VkPhysicalDeviceFragmentShadingRateFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceFragmentShadingRateFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceFragmentShadingRateFeaturesKHR & setPipelineFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT - { - pipelineFragmentShadingRate = pipelineFragmentShadingRate_; - return *this; - } - - PhysicalDeviceFragmentShadingRateFeaturesKHR & setPrimitiveFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT - { - primitiveFragmentShadingRate = primitiveFragmentShadingRate_; - return *this; - } - - PhysicalDeviceFragmentShadingRateFeaturesKHR & setAttachmentFragmentShadingRate( VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate_ ) VULKAN_HPP_NOEXCEPT - { - attachmentFragmentShadingRate = attachmentFragmentShadingRate_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentShadingRateFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentShadingRateFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipelineFragmentShadingRate == rhs.pipelineFragmentShadingRate ) - && ( primitiveFragmentShadingRate == rhs.primitiveFragmentShadingRate ) - && ( attachmentFragmentShadingRate == rhs.attachmentFragmentShadingRate ); - } - - bool operator!=( PhysicalDeviceFragmentShadingRateFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRateFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 pipelineFragmentShadingRate = {}; - VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRate = {}; - VULKAN_HPP_NAMESPACE::Bool32 attachmentFragmentShadingRate = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentShadingRateFeaturesKHR ) == sizeof( VkPhysicalDeviceFragmentShadingRateFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentShadingRateFeaturesKHR; - }; - - struct PhysicalDeviceFragmentShadingRatePropertiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceFragmentShadingRatePropertiesKHR(VULKAN_HPP_NAMESPACE::Extent2D minFragmentShadingRateAttachmentTexelSize_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxFragmentShadingRateAttachmentTexelSize_ = {}, uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio_ = {}, VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateWithMultipleViewports_ = {}, VULKAN_HPP_NAMESPACE::Bool32 layeredShadingRateAttachments_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateNonTrivialCombinerOps_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxFragmentSize_ = {}, uint32_t maxFragmentSizeAspectRatio_ = {}, uint32_t maxFragmentShadingRateCoverageSamples_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples_ = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderDepthStencilWrites_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithSampleMask_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderSampleMask_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithConservativeRasterization_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithFragmentShaderInterlock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithCustomSampleLocations_ = {}, VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateStrictMultiplyCombiner_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceFragmentShadingRatePropertiesKHR & operator=( PhysicalDeviceFragmentShadingRatePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceFragmentShadingRatePropertiesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceFragmentShadingRatePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceFragmentShadingRatePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceFragmentShadingRatePropertiesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Extent2D minFragmentShadingRateAttachmentTexelSize = {}; - VULKAN_HPP_NAMESPACE::Extent2D maxFragmentShadingRateAttachmentTexelSize = {}; - uint32_t maxFragmentShadingRateAttachmentTexelSizeAspectRatio = {}; - VULKAN_HPP_NAMESPACE::Bool32 primitiveFragmentShadingRateWithMultipleViewports = {}; - VULKAN_HPP_NAMESPACE::Bool32 layeredShadingRateAttachments = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateNonTrivialCombinerOps = {}; - VULKAN_HPP_NAMESPACE::Extent2D maxFragmentSize = {}; - uint32_t maxFragmentSizeAspectRatio = {}; - uint32_t maxFragmentShadingRateCoverageSamples = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlagBits maxFragmentShadingRateRasterizationSamples = VULKAN_HPP_NAMESPACE::SampleCountFlagBits::e1; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderDepthStencilWrites = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithSampleMask = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithShaderSampleMask = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithConservativeRasterization = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithFragmentShaderInterlock = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateWithCustomSampleLocations = {}; - VULKAN_HPP_NAMESPACE::Bool32 fragmentShadingRateStrictMultiplyCombiner = {}; - - }; - static_assert( sizeof( PhysicalDeviceFragmentShadingRatePropertiesKHR ) == sizeof( VkPhysicalDeviceFragmentShadingRatePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceFragmentShadingRatePropertiesKHR; - }; - - struct PhysicalDeviceGroupProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceGroupProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties(uint32_t physicalDeviceCount_ = {}, std::array const& physicalDevices_ = {}, VULKAN_HPP_NAMESPACE::Bool32 subsetAllocation_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceGroupProperties & operator=( PhysicalDeviceGroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceGroupProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceGroupProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( physicalDeviceCount == rhs.physicalDeviceCount ) - && ( physicalDevices == rhs.physicalDevices ) - && ( subsetAllocation == rhs.subsetAllocation ); - } - - bool operator!=( PhysicalDeviceGroupProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceGroupProperties; - void* pNext = {}; - uint32_t physicalDeviceCount = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D physicalDevices = {}; - VULKAN_HPP_NAMESPACE::Bool32 subsetAllocation = {}; - - }; - static_assert( sizeof( PhysicalDeviceGroupProperties ) == sizeof( VkPhysicalDeviceGroupProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceGroupProperties; - }; - using PhysicalDeviceGroupPropertiesKHR = PhysicalDeviceGroupProperties; - - struct PhysicalDeviceHostQueryResetFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceHostQueryResetFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures(VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ = {}) VULKAN_HPP_NOEXCEPT - : hostQueryReset( hostQueryReset_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceHostQueryResetFeatures( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceHostQueryResetFeatures( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceHostQueryResetFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceHostQueryResetFeatures & operator=( PhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceHostQueryResetFeatures & operator=( VkPhysicalDeviceHostQueryResetFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceHostQueryResetFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceHostQueryResetFeatures & setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT - { - hostQueryReset = hostQueryReset_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceHostQueryResetFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceHostQueryResetFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( hostQueryReset == rhs.hostQueryReset ); - } - - bool operator!=( PhysicalDeviceHostQueryResetFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceHostQueryResetFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset = {}; - - }; - static_assert( sizeof( PhysicalDeviceHostQueryResetFeatures ) == sizeof( VkPhysicalDeviceHostQueryResetFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceHostQueryResetFeatures; - }; - using PhysicalDeviceHostQueryResetFeaturesEXT = PhysicalDeviceHostQueryResetFeatures; - - struct PhysicalDeviceIDProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceIdProperties; - -#if !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_ = {}, VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIDProperties & operator=( PhysicalDeviceIDProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceIDProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceIDProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( deviceUUID == rhs.deviceUUID ) - && ( driverUUID == rhs.driverUUID ) - && ( deviceLUID == rhs.deviceLUID ) - && ( deviceNodeMask == rhs.deviceNodeMask ) - && ( deviceLUIDValid == rhs.deviceLUIDValid ); - } - - bool operator!=( PhysicalDeviceIDProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIdProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceUUID = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverUUID = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceLUID = {}; - uint32_t deviceNodeMask = {}; - VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid = {}; - - }; - static_assert( sizeof( PhysicalDeviceIDProperties ) == sizeof( VkPhysicalDeviceIDProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceIDProperties; - }; - using PhysicalDeviceIDPropertiesKHR = PhysicalDeviceIDProperties; - - struct PhysicalDeviceImageDrmFormatModifierInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceImageDrmFormatModifierInfoEXT(uint64_t drmFormatModifier_ = {}, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive, uint32_t queueFamilyIndexCount_ = {}, const uint32_t* pQueueFamilyIndices_ = {}) VULKAN_HPP_NOEXCEPT - : 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_, VULKAN_HPP_NAMESPACE::SharingMode sharingMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) - : drmFormatModifier( drmFormatModifier_ ), sharingMode( sharingMode_ ), queueFamilyIndexCount( static_cast( queueFamilyIndices_.size() ) ), pQueueFamilyIndices( queueFamilyIndices_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( PhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceImageDrmFormatModifierInfoEXT & operator=( VkPhysicalDeviceImageDrmFormatModifierInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setDrmFormatModifier( uint64_t drmFormatModifier_ ) VULKAN_HPP_NOEXCEPT - { - drmFormatModifier = drmFormatModifier_; - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setSharingMode( VULKAN_HPP_NAMESPACE::SharingMode sharingMode_ ) VULKAN_HPP_NOEXCEPT - { - sharingMode = sharingMode_; - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndexCount( uint32_t queueFamilyIndexCount_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndexCount = queueFamilyIndexCount_; - return *this; - } - - PhysicalDeviceImageDrmFormatModifierInfoEXT & setPQueueFamilyIndices( const uint32_t* pQueueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT - { - pQueueFamilyIndices = pQueueFamilyIndices_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PhysicalDeviceImageDrmFormatModifierInfoEXT & setQueueFamilyIndices( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & queueFamilyIndices_ ) VULKAN_HPP_NOEXCEPT - { - queueFamilyIndexCount = static_cast( queueFamilyIndices_.size() ); - pQueueFamilyIndices = queueFamilyIndices_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceImageDrmFormatModifierInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceImageDrmFormatModifierInfoEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceImageDrmFormatModifierInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( drmFormatModifier == rhs.drmFormatModifier ) - && ( sharingMode == rhs.sharingMode ) - && ( queueFamilyIndexCount == rhs.queueFamilyIndexCount ) - && ( pQueueFamilyIndices == rhs.pQueueFamilyIndices ); - } - - bool operator!=( PhysicalDeviceImageDrmFormatModifierInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageDrmFormatModifierInfoEXT; - const void* pNext = {}; - uint64_t drmFormatModifier = {}; - VULKAN_HPP_NAMESPACE::SharingMode sharingMode = VULKAN_HPP_NAMESPACE::SharingMode::eExclusive; - uint32_t queueFamilyIndexCount = {}; - const uint32_t* pQueueFamilyIndices = {}; - - }; - static_assert( sizeof( PhysicalDeviceImageDrmFormatModifierInfoEXT ) == sizeof( VkPhysicalDeviceImageDrmFormatModifierInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceImageDrmFormatModifierInfoEXT; - }; - - struct PhysicalDeviceImageRobustnessFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageRobustnessFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ = {}) VULKAN_HPP_NOEXCEPT - : robustImageAccess( robustImageAccess_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceImageRobustnessFeaturesEXT( PhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceImageRobustnessFeaturesEXT( VkPhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceImageRobustnessFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageRobustnessFeaturesEXT & operator=( PhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceImageRobustnessFeaturesEXT & operator=( VkPhysicalDeviceImageRobustnessFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceImageRobustnessFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceImageRobustnessFeaturesEXT & setRobustImageAccess( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess_ ) VULKAN_HPP_NOEXCEPT - { - robustImageAccess = robustImageAccess_; - return *this; - } - - - operator VkPhysicalDeviceImageRobustnessFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceImageRobustnessFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceImageRobustnessFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceImageRobustnessFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( robustImageAccess == rhs.robustImageAccess ); - } - - bool operator!=( PhysicalDeviceImageRobustnessFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageRobustnessFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess = {}; - - }; - static_assert( sizeof( PhysicalDeviceImageRobustnessFeaturesEXT ) == sizeof( VkPhysicalDeviceImageRobustnessFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceImageRobustnessFeaturesEXT; - }; - - struct PhysicalDeviceImageViewImageFormatInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT(VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ = VULKAN_HPP_NAMESPACE::ImageViewType::e1D) VULKAN_HPP_NOEXCEPT - : imageViewType( imageViewType_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceImageViewImageFormatInfoEXT( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceImageViewImageFormatInfoEXT( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceImageViewImageFormatInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImageViewImageFormatInfoEXT & operator=( PhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceImageViewImageFormatInfoEXT & operator=( VkPhysicalDeviceImageViewImageFormatInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceImageViewImageFormatInfoEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceImageViewImageFormatInfoEXT & setImageViewType( VULKAN_HPP_NAMESPACE::ImageViewType imageViewType_ ) VULKAN_HPP_NOEXCEPT - { - imageViewType = imageViewType_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceImageViewImageFormatInfoEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceImageViewImageFormatInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imageViewType == rhs.imageViewType ); - } - - bool operator!=( PhysicalDeviceImageViewImageFormatInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImageViewImageFormatInfoEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageViewType imageViewType = VULKAN_HPP_NAMESPACE::ImageViewType::e1D; - - }; - static_assert( sizeof( PhysicalDeviceImageViewImageFormatInfoEXT ) == sizeof( VkPhysicalDeviceImageViewImageFormatInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceImageViewImageFormatInfoEXT; - }; - - struct PhysicalDeviceImagelessFramebufferFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures(VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ = {}) VULKAN_HPP_NOEXCEPT - : imagelessFramebuffer( imagelessFramebuffer_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceImagelessFramebufferFeatures( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceImagelessFramebufferFeatures( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceImagelessFramebufferFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceImagelessFramebufferFeatures & operator=( PhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceImagelessFramebufferFeatures & operator=( VkPhysicalDeviceImagelessFramebufferFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceImagelessFramebufferFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceImagelessFramebufferFeatures & setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT - { - imagelessFramebuffer = imagelessFramebuffer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceImagelessFramebufferFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceImagelessFramebufferFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imagelessFramebuffer == rhs.imagelessFramebuffer ); - } - - bool operator!=( PhysicalDeviceImagelessFramebufferFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceImagelessFramebufferFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer = {}; - - }; - static_assert( sizeof( PhysicalDeviceImagelessFramebufferFeatures ) == sizeof( VkPhysicalDeviceImagelessFramebufferFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceImagelessFramebufferFeatures; - }; - using PhysicalDeviceImagelessFramebufferFeaturesKHR = PhysicalDeviceImagelessFramebufferFeatures; - - struct PhysicalDeviceIndexTypeUint8FeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8FeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ = {}) VULKAN_HPP_NOEXCEPT - : indexTypeUint8( indexTypeUint8_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceIndexTypeUint8FeaturesEXT( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceIndexTypeUint8FeaturesEXT( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceIndexTypeUint8FeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceIndexTypeUint8FeaturesEXT & operator=( PhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceIndexTypeUint8FeaturesEXT & operator=( VkPhysicalDeviceIndexTypeUint8FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceIndexTypeUint8FeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceIndexTypeUint8FeaturesEXT & setIndexTypeUint8( VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8_ ) VULKAN_HPP_NOEXCEPT - { - indexTypeUint8 = indexTypeUint8_; - return *this; - } - - - operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceIndexTypeUint8FeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceIndexTypeUint8FeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceIndexTypeUint8FeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( indexTypeUint8 == rhs.indexTypeUint8 ); - } - - bool operator!=( PhysicalDeviceIndexTypeUint8FeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceIndexTypeUint8FeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 indexTypeUint8 = {}; - - }; - static_assert( sizeof( PhysicalDeviceIndexTypeUint8FeaturesEXT ) == sizeof( VkPhysicalDeviceIndexTypeUint8FeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceIndexTypeUint8FeaturesEXT; - }; - - struct PhysicalDeviceInlineUniformBlockFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ = {}) VULKAN_HPP_NOEXCEPT - : inlineUniformBlock( inlineUniformBlock_ ), descriptorBindingInlineUniformBlockUpdateAfterBind( descriptorBindingInlineUniformBlockUpdateAfterBind_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockFeaturesEXT( PhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceInlineUniformBlockFeaturesEXT( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceInlineUniformBlockFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockFeaturesEXT & operator=( PhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceInlineUniformBlockFeaturesEXT & operator=( VkPhysicalDeviceInlineUniformBlockFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceInlineUniformBlockFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceInlineUniformBlockFeaturesEXT & setInlineUniformBlock( VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock_ ) VULKAN_HPP_NOEXCEPT - { - inlineUniformBlock = inlineUniformBlock_; - return *this; - } - - PhysicalDeviceInlineUniformBlockFeaturesEXT & setDescriptorBindingInlineUniformBlockUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingInlineUniformBlockUpdateAfterBind = descriptorBindingInlineUniformBlockUpdateAfterBind_; - return *this; - } - - - operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceInlineUniformBlockFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceInlineUniformBlockFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceInlineUniformBlockFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( inlineUniformBlock == rhs.inlineUniformBlock ) - && ( descriptorBindingInlineUniformBlockUpdateAfterBind == rhs.descriptorBindingInlineUniformBlockUpdateAfterBind ); - } - - bool operator!=( PhysicalDeviceInlineUniformBlockFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 inlineUniformBlock = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingInlineUniformBlockUpdateAfterBind = {}; - - }; - static_assert( sizeof( PhysicalDeviceInlineUniformBlockFeaturesEXT ) == sizeof( VkPhysicalDeviceInlineUniformBlockFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceInlineUniformBlockFeaturesEXT; - }; - - struct PhysicalDeviceInlineUniformBlockPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockPropertiesEXT(uint32_t maxInlineUniformBlockSize_ = {}, uint32_t maxPerStageDescriptorInlineUniformBlocks_ = {}, uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ = {}, uint32_t maxDescriptorSetInlineUniformBlocks_ = {}, uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ = {}) VULKAN_HPP_NOEXCEPT - : maxInlineUniformBlockSize( maxInlineUniformBlockSize_ ), maxPerStageDescriptorInlineUniformBlocks( maxPerStageDescriptorInlineUniformBlocks_ ), maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks_ ), maxDescriptorSetInlineUniformBlocks( maxDescriptorSetInlineUniformBlocks_ ), maxDescriptorSetUpdateAfterBindInlineUniformBlocks( maxDescriptorSetUpdateAfterBindInlineUniformBlocks_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceInlineUniformBlockPropertiesEXT( PhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceInlineUniformBlockPropertiesEXT( VkPhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceInlineUniformBlockPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceInlineUniformBlockPropertiesEXT & operator=( PhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceInlineUniformBlockPropertiesEXT & operator=( VkPhysicalDeviceInlineUniformBlockPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - - operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceInlineUniformBlockPropertiesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceInlineUniformBlockPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceInlineUniformBlockPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxInlineUniformBlockSize == rhs.maxInlineUniformBlockSize ) - && ( maxPerStageDescriptorInlineUniformBlocks == rhs.maxPerStageDescriptorInlineUniformBlocks ) - && ( maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks == rhs.maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks ) - && ( maxDescriptorSetInlineUniformBlocks == rhs.maxDescriptorSetInlineUniformBlocks ) - && ( maxDescriptorSetUpdateAfterBindInlineUniformBlocks == rhs.maxDescriptorSetUpdateAfterBindInlineUniformBlocks ); - } - - bool operator!=( PhysicalDeviceInlineUniformBlockPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceInlineUniformBlockPropertiesEXT; - void* pNext = {}; - uint32_t maxInlineUniformBlockSize = {}; - uint32_t maxPerStageDescriptorInlineUniformBlocks = {}; - uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks = {}; - uint32_t maxDescriptorSetInlineUniformBlocks = {}; - uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks = {}; - - }; - static_assert( sizeof( PhysicalDeviceInlineUniformBlockPropertiesEXT ) == sizeof( VkPhysicalDeviceInlineUniformBlockPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceInlineUniformBlockPropertiesEXT; - }; - - struct PhysicalDeviceLineRasterizationFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ = {}) VULKAN_HPP_NOEXCEPT - : rectangularLines( rectangularLines_ ), bresenhamLines( bresenhamLines_ ), smoothLines( smoothLines_ ), stippledRectangularLines( stippledRectangularLines_ ), stippledBresenhamLines( stippledBresenhamLines_ ), stippledSmoothLines( stippledSmoothLines_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationFeaturesEXT( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceLineRasterizationFeaturesEXT( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceLineRasterizationFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationFeaturesEXT & operator=( PhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceLineRasterizationFeaturesEXT & operator=( VkPhysicalDeviceLineRasterizationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 rectangularLines_ ) VULKAN_HPP_NOEXCEPT - { - rectangularLines = rectangularLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines_ ) VULKAN_HPP_NOEXCEPT - { - bresenhamLines = bresenhamLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 smoothLines_ ) VULKAN_HPP_NOEXCEPT - { - smoothLines = smoothLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setStippledRectangularLines( VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines_ ) VULKAN_HPP_NOEXCEPT - { - stippledRectangularLines = stippledRectangularLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setStippledBresenhamLines( VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines_ ) VULKAN_HPP_NOEXCEPT - { - stippledBresenhamLines = stippledBresenhamLines_; - return *this; - } - - PhysicalDeviceLineRasterizationFeaturesEXT & setStippledSmoothLines( VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines_ ) VULKAN_HPP_NOEXCEPT - { - stippledSmoothLines = stippledSmoothLines_; - return *this; - } - - - operator VkPhysicalDeviceLineRasterizationFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceLineRasterizationFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceLineRasterizationFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceLineRasterizationFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceLineRasterizationFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 rectangularLines = {}; - VULKAN_HPP_NAMESPACE::Bool32 bresenhamLines = {}; - VULKAN_HPP_NAMESPACE::Bool32 smoothLines = {}; - VULKAN_HPP_NAMESPACE::Bool32 stippledRectangularLines = {}; - VULKAN_HPP_NAMESPACE::Bool32 stippledBresenhamLines = {}; - VULKAN_HPP_NAMESPACE::Bool32 stippledSmoothLines = {}; - - }; - static_assert( sizeof( PhysicalDeviceLineRasterizationFeaturesEXT ) == sizeof( VkPhysicalDeviceLineRasterizationFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceLineRasterizationFeaturesEXT; - }; - - struct PhysicalDeviceLineRasterizationPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationPropertiesEXT(uint32_t lineSubPixelPrecisionBits_ = {}) VULKAN_HPP_NOEXCEPT - : lineSubPixelPrecisionBits( lineSubPixelPrecisionBits_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceLineRasterizationPropertiesEXT( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceLineRasterizationPropertiesEXT( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceLineRasterizationPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceLineRasterizationPropertiesEXT & operator=( PhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceLineRasterizationPropertiesEXT & operator=( VkPhysicalDeviceLineRasterizationPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - - operator VkPhysicalDeviceLineRasterizationPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceLineRasterizationPropertiesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceLineRasterizationPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceLineRasterizationPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( lineSubPixelPrecisionBits == rhs.lineSubPixelPrecisionBits ); - } - - bool operator!=( PhysicalDeviceLineRasterizationPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceLineRasterizationPropertiesEXT; - void* pNext = {}; - uint32_t lineSubPixelPrecisionBits = {}; - - }; - static_assert( sizeof( PhysicalDeviceLineRasterizationPropertiesEXT ) == sizeof( VkPhysicalDeviceLineRasterizationPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceLineRasterizationPropertiesEXT; - }; - - struct PhysicalDeviceMaintenance3Properties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMaintenance3Properties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceMaintenance3Properties(uint32_t maxPerSetDescriptors_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMaintenance3Properties & operator=( PhysicalDeviceMaintenance3Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMaintenance3Properties const& ) const = default; -#else - bool operator==( PhysicalDeviceMaintenance3Properties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxPerSetDescriptors == rhs.maxPerSetDescriptors ) - && ( maxMemoryAllocationSize == rhs.maxMemoryAllocationSize ); - } - - bool operator!=( PhysicalDeviceMaintenance3Properties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMaintenance3Properties; - void* pNext = {}; - uint32_t maxPerSetDescriptors = {}; - VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize = {}; - - }; - static_assert( sizeof( PhysicalDeviceMaintenance3Properties ) == sizeof( VkPhysicalDeviceMaintenance3Properties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMaintenance3Properties; - }; - using PhysicalDeviceMaintenance3PropertiesKHR = PhysicalDeviceMaintenance3Properties; - - struct PhysicalDeviceMemoryBudgetPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT(std::array const& heapBudget_ = {}, std::array const& heapUsage_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryBudgetPropertiesEXT & operator=( PhysicalDeviceMemoryBudgetPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMemoryBudgetPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceMemoryBudgetPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( heapBudget == rhs.heapBudget ) - && ( heapUsage == rhs.heapUsage ); - } - - bool operator!=( PhysicalDeviceMemoryBudgetPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryBudgetPropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D heapBudget = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D heapUsage = {}; - - }; - static_assert( sizeof( PhysicalDeviceMemoryBudgetPropertiesEXT ) == sizeof( VkPhysicalDeviceMemoryBudgetPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMemoryBudgetPropertiesEXT; - }; - - struct PhysicalDeviceMemoryPriorityFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ = {}) VULKAN_HPP_NOEXCEPT - : memoryPriority( memoryPriority_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceMemoryPriorityFeaturesEXT( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceMemoryPriorityFeaturesEXT( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceMemoryPriorityFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( PhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceMemoryPriorityFeaturesEXT & operator=( VkPhysicalDeviceMemoryPriorityFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceMemoryPriorityFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceMemoryPriorityFeaturesEXT & setMemoryPriority( VULKAN_HPP_NAMESPACE::Bool32 memoryPriority_ ) VULKAN_HPP_NOEXCEPT - { - memoryPriority = memoryPriority_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMemoryPriorityFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceMemoryPriorityFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( memoryPriority == rhs.memoryPriority ); - } - - bool operator!=( PhysicalDeviceMemoryPriorityFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMemoryPriorityFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 memoryPriority = {}; - - }; - static_assert( sizeof( PhysicalDeviceMemoryPriorityFeaturesEXT ) == sizeof( VkPhysicalDeviceMemoryPriorityFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMemoryPriorityFeaturesEXT; - }; - - struct PhysicalDeviceMeshShaderFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMeshShaderFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceMeshShaderFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 taskShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 meshShader_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderFeaturesNV & operator=( PhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceMeshShaderFeaturesNV & operator=( VkPhysicalDeviceMeshShaderFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceMeshShaderFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceMeshShaderFeaturesNV & setTaskShader( VULKAN_HPP_NAMESPACE::Bool32 taskShader_ ) VULKAN_HPP_NOEXCEPT - { - taskShader = taskShader_; - return *this; - } - - PhysicalDeviceMeshShaderFeaturesNV & setMeshShader( VULKAN_HPP_NAMESPACE::Bool32 meshShader_ ) VULKAN_HPP_NOEXCEPT - { - meshShader = meshShader_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMeshShaderFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceMeshShaderFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( taskShader == rhs.taskShader ) - && ( meshShader == rhs.meshShader ); - } - - bool operator!=( PhysicalDeviceMeshShaderFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMeshShaderFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 taskShader = {}; - VULKAN_HPP_NAMESPACE::Bool32 meshShader = {}; - - }; - static_assert( sizeof( PhysicalDeviceMeshShaderFeaturesNV ) == sizeof( VkPhysicalDeviceMeshShaderFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMeshShaderFeaturesNV; - }; - - struct PhysicalDeviceMeshShaderPropertiesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV; - -#if !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_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMeshShaderPropertiesNV & operator=( PhysicalDeviceMeshShaderPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMeshShaderPropertiesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceMeshShaderPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceMeshShaderPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMeshShaderPropertiesNV; - void* pNext = {}; - uint32_t maxDrawMeshTasksCount = {}; - uint32_t maxTaskWorkGroupInvocations = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxTaskWorkGroupSize = {}; - uint32_t maxTaskTotalMemorySize = {}; - uint32_t maxTaskOutputCount = {}; - uint32_t maxMeshWorkGroupInvocations = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D maxMeshWorkGroupSize = {}; - uint32_t maxMeshTotalMemorySize = {}; - uint32_t maxMeshOutputVertices = {}; - uint32_t maxMeshOutputPrimitives = {}; - uint32_t maxMeshMultiviewViewCount = {}; - uint32_t meshOutputPerVertexGranularity = {}; - uint32_t meshOutputPerPrimitiveGranularity = {}; - - }; - static_assert( sizeof( PhysicalDeviceMeshShaderPropertiesNV ) == sizeof( VkPhysicalDeviceMeshShaderPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMeshShaderPropertiesNV; - }; - - struct PhysicalDeviceMultiviewFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewFeatures(VULKAN_HPP_NAMESPACE::Bool32 multiview_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewFeatures & operator=( PhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceMultiviewFeatures & operator=( VkPhysicalDeviceMultiviewFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceMultiviewFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceMultiviewFeatures & setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT - { - multiview = multiview_; - return *this; - } - - PhysicalDeviceMultiviewFeatures & setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT - { - multiviewGeometryShader = multiviewGeometryShader_; - return *this; - } - - PhysicalDeviceMultiviewFeatures & setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT - { - multiviewTessellationShader = multiviewTessellationShader_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMultiviewFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceMultiviewFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( multiview == rhs.multiview ) - && ( multiviewGeometryShader == rhs.multiviewGeometryShader ) - && ( multiviewTessellationShader == rhs.multiviewTessellationShader ); - } - - bool operator!=( PhysicalDeviceMultiviewFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 multiview = {}; - VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader = {}; - VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader = {}; - - }; - static_assert( sizeof( PhysicalDeviceMultiviewFeatures ) == sizeof( VkPhysicalDeviceMultiviewFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMultiviewFeatures; - }; - using PhysicalDeviceMultiviewFeaturesKHR = PhysicalDeviceMultiviewFeatures; - - struct PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX(VULKAN_HPP_NAMESPACE::Bool32 perViewPositionAllComponents_ = {}) VULKAN_HPP_NOEXCEPT - : perViewPositionAllComponents( perViewPositionAllComponents_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX & operator=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& ) const = default; -#else - bool operator==( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( perViewPositionAllComponents == rhs.perViewPositionAllComponents ); - } - - bool operator!=( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 perViewPositionAllComponents = {}; - - }; - static_assert( sizeof( PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ) == sizeof( VkPhysicalDeviceMultiviewPerViewAttributesPropertiesNVX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMultiviewPerViewAttributesPropertiesNVX; - }; - - struct PhysicalDeviceMultiviewProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMultiviewProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceMultiviewProperties(uint32_t maxMultiviewViewCount_ = {}, uint32_t maxMultiviewInstanceIndex_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMultiviewProperties & operator=( PhysicalDeviceMultiviewProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMultiviewProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceMultiviewProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxMultiviewViewCount == rhs.maxMultiviewViewCount ) - && ( maxMultiviewInstanceIndex == rhs.maxMultiviewInstanceIndex ); - } - - bool operator!=( PhysicalDeviceMultiviewProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMultiviewProperties; - void* pNext = {}; - uint32_t maxMultiviewViewCount = {}; - uint32_t maxMultiviewInstanceIndex = {}; - - }; - static_assert( sizeof( PhysicalDeviceMultiviewProperties ) == sizeof( VkPhysicalDeviceMultiviewProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMultiviewProperties; - }; - using PhysicalDeviceMultiviewPropertiesKHR = PhysicalDeviceMultiviewProperties; - - struct PhysicalDeviceMutableDescriptorTypeFeaturesVALVE - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesVALVE(VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ = {}) VULKAN_HPP_NOEXCEPT - : mutableDescriptorType( mutableDescriptorType_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceMutableDescriptorTypeFeaturesVALVE( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & operator=( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & operator=( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceMutableDescriptorTypeFeaturesVALVE & setMutableDescriptorType( VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType_ ) VULKAN_HPP_NOEXCEPT - { - mutableDescriptorType = mutableDescriptorType_; - return *this; - } - - - operator VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const& ) const = default; -#else - bool operator==( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( mutableDescriptorType == rhs.mutableDescriptorType ); - } - - bool operator!=( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceMutableDescriptorTypeFeaturesVALVE; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 mutableDescriptorType = {}; - - }; - static_assert( sizeof( PhysicalDeviceMutableDescriptorTypeFeaturesVALVE ) == sizeof( VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceMutableDescriptorTypeFeaturesVALVE; - }; - - struct PhysicalDevicePCIBusInfoPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePCIBusInfoPropertiesEXT(uint32_t pciDomain_ = {}, uint32_t pciBus_ = {}, uint32_t pciDevice_ = {}, uint32_t pciFunction_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePCIBusInfoPropertiesEXT & operator=( PhysicalDevicePCIBusInfoPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePCIBusInfoPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDevicePCIBusInfoPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pciDomain == rhs.pciDomain ) - && ( pciBus == rhs.pciBus ) - && ( pciDevice == rhs.pciDevice ) - && ( pciFunction == rhs.pciFunction ); - } - - bool operator!=( PhysicalDevicePCIBusInfoPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePciBusInfoPropertiesEXT; - void* pNext = {}; - uint32_t pciDomain = {}; - uint32_t pciBus = {}; - uint32_t pciDevice = {}; - uint32_t pciFunction = {}; - - }; - static_assert( sizeof( PhysicalDevicePCIBusInfoPropertiesEXT ) == sizeof( VkPhysicalDevicePCIBusInfoPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePCIBusInfoPropertiesEXT; - }; - - struct PhysicalDevicePerformanceQueryFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_ = {}, VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryFeaturesKHR & operator=( PhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePerformanceQueryFeaturesKHR & operator=( VkPhysicalDevicePerformanceQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDevicePerformanceQueryFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDevicePerformanceQueryFeaturesKHR & setPerformanceCounterQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools_ ) VULKAN_HPP_NOEXCEPT - { - performanceCounterQueryPools = performanceCounterQueryPools_; - return *this; - } - - PhysicalDevicePerformanceQueryFeaturesKHR & setPerformanceCounterMultipleQueryPools( VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools_ ) VULKAN_HPP_NOEXCEPT - { - performanceCounterMultipleQueryPools = performanceCounterMultipleQueryPools_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePerformanceQueryFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDevicePerformanceQueryFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( performanceCounterQueryPools == rhs.performanceCounterQueryPools ) - && ( performanceCounterMultipleQueryPools == rhs.performanceCounterMultipleQueryPools ); - } - - bool operator!=( PhysicalDevicePerformanceQueryFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 performanceCounterQueryPools = {}; - VULKAN_HPP_NAMESPACE::Bool32 performanceCounterMultipleQueryPools = {}; - - }; - static_assert( sizeof( PhysicalDevicePerformanceQueryFeaturesKHR ) == sizeof( VkPhysicalDevicePerformanceQueryFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePerformanceQueryFeaturesKHR; - }; - - struct PhysicalDevicePerformanceQueryPropertiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR(VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies_ = {}) VULKAN_HPP_NOEXCEPT - : allowCommandBufferQueryCopies( allowCommandBufferQueryCopies_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDevicePerformanceQueryPropertiesKHR( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePerformanceQueryPropertiesKHR( VkPhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDevicePerformanceQueryPropertiesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePerformanceQueryPropertiesKHR & operator=( PhysicalDevicePerformanceQueryPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePerformanceQueryPropertiesKHR const& ) const = default; -#else - bool operator==( PhysicalDevicePerformanceQueryPropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( allowCommandBufferQueryCopies == rhs.allowCommandBufferQueryCopies ); - } - - bool operator!=( PhysicalDevicePerformanceQueryPropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePerformanceQueryPropertiesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 allowCommandBufferQueryCopies = {}; - - }; - static_assert( sizeof( PhysicalDevicePerformanceQueryPropertiesKHR ) == sizeof( VkPhysicalDevicePerformanceQueryPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePerformanceQueryPropertiesKHR; - }; - - struct PhysicalDevicePipelineCreationCacheControlFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ = {}) VULKAN_HPP_NOEXCEPT - : pipelineCreationCacheControl( pipelineCreationCacheControl_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineCreationCacheControlFeaturesEXT( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePipelineCreationCacheControlFeaturesEXT( VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDevicePipelineCreationCacheControlFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineCreationCacheControlFeaturesEXT & operator=( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePipelineCreationCacheControlFeaturesEXT & operator=( VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDevicePipelineCreationCacheControlFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDevicePipelineCreationCacheControlFeaturesEXT & setPipelineCreationCacheControl( VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl_ ) VULKAN_HPP_NOEXCEPT - { - pipelineCreationCacheControl = pipelineCreationCacheControl_; - return *this; - } - - - operator VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipelineCreationCacheControl == rhs.pipelineCreationCacheControl ); - } - - bool operator!=( PhysicalDevicePipelineCreationCacheControlFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineCreationCacheControlFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 pipelineCreationCacheControl = {}; - - }; - static_assert( sizeof( PhysicalDevicePipelineCreationCacheControlFeaturesEXT ) == sizeof( VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePipelineCreationCacheControlFeaturesEXT; - }; - - struct PhysicalDevicePipelineExecutablePropertiesFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ = {}) VULKAN_HPP_NOEXCEPT - : pipelineExecutableInfo( pipelineExecutableInfo_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDevicePipelineExecutablePropertiesFeaturesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & operator=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & operator=( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDevicePipelineExecutablePropertiesFeaturesKHR & setPipelineExecutableInfo( VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo_ ) VULKAN_HPP_NOEXCEPT - { - pipelineExecutableInfo = pipelineExecutableInfo_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pipelineExecutableInfo == rhs.pipelineExecutableInfo ); - } - - bool operator!=( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePipelineExecutablePropertiesFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 pipelineExecutableInfo = {}; - - }; - static_assert( sizeof( PhysicalDevicePipelineExecutablePropertiesFeaturesKHR ) == sizeof( VkPhysicalDevicePipelineExecutablePropertiesFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePipelineExecutablePropertiesFeaturesKHR; - }; - - struct PhysicalDevicePointClippingProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePointClippingProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties(VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes) VULKAN_HPP_NOEXCEPT - : pointClippingBehavior( pointClippingBehavior_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDevicePointClippingProperties( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePointClippingProperties( VkPhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDevicePointClippingProperties( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePointClippingProperties & operator=( PhysicalDevicePointClippingProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePointClippingProperties const& ) const = default; -#else - bool operator==( PhysicalDevicePointClippingProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pointClippingBehavior == rhs.pointClippingBehavior ); - } - - bool operator!=( PhysicalDevicePointClippingProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePointClippingProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes; - - }; - static_assert( sizeof( PhysicalDevicePointClippingProperties ) == sizeof( VkPhysicalDevicePointClippingProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePointClippingProperties; - }; - using PhysicalDevicePointClippingPropertiesKHR = PhysicalDevicePointClippingProperties; - -#ifdef VK_ENABLE_BETA_EXTENSIONS - struct PhysicalDevicePortabilitySubsetFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_ = {}, VULKAN_HPP_NAMESPACE::Bool32 events_ = {}, VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_ = {}, VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_ = {}, VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_ = {}, VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_ = {}, VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_ = {}, VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_ = {}, VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ = {}, VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_ = {}, VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_ = {}, VULKAN_HPP_NAMESPACE::Bool32 triangleFans_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( PhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePortabilitySubsetFeaturesKHR & operator=( VkPhysicalDevicePortabilitySubsetFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setConstantAlphaColorBlendFactors( VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors_ ) VULKAN_HPP_NOEXCEPT - { - constantAlphaColorBlendFactors = constantAlphaColorBlendFactors_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setEvents( VULKAN_HPP_NAMESPACE::Bool32 events_ ) VULKAN_HPP_NOEXCEPT - { - events = events_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setImageViewFormatReinterpretation( VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation_ ) VULKAN_HPP_NOEXCEPT - { - imageViewFormatReinterpretation = imageViewFormatReinterpretation_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setImageViewFormatSwizzle( VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle_ ) VULKAN_HPP_NOEXCEPT - { - imageViewFormatSwizzle = imageViewFormatSwizzle_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setImageView2DOn3DImage( VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage_ ) VULKAN_HPP_NOEXCEPT - { - imageView2DOn3DImage = imageView2DOn3DImage_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setMultisampleArrayImage( VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage_ ) VULKAN_HPP_NOEXCEPT - { - multisampleArrayImage = multisampleArrayImage_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setMutableComparisonSamplers( VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers_ ) VULKAN_HPP_NOEXCEPT - { - mutableComparisonSamplers = mutableComparisonSamplers_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setPointPolygons( VULKAN_HPP_NAMESPACE::Bool32 pointPolygons_ ) VULKAN_HPP_NOEXCEPT - { - pointPolygons = pointPolygons_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setSamplerMipLodBias( VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias_ ) VULKAN_HPP_NOEXCEPT - { - samplerMipLodBias = samplerMipLodBias_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setSeparateStencilMaskRef( VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef_ ) VULKAN_HPP_NOEXCEPT - { - separateStencilMaskRef = separateStencilMaskRef_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setShaderSampleRateInterpolationFunctions( VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions_ ) VULKAN_HPP_NOEXCEPT - { - shaderSampleRateInterpolationFunctions = shaderSampleRateInterpolationFunctions_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setTessellationIsolines( VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines_ ) VULKAN_HPP_NOEXCEPT - { - tessellationIsolines = tessellationIsolines_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setTessellationPointMode( VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode_ ) VULKAN_HPP_NOEXCEPT - { - tessellationPointMode = tessellationPointMode_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setTriangleFans( VULKAN_HPP_NAMESPACE::Bool32 triangleFans_ ) VULKAN_HPP_NOEXCEPT - { - triangleFans = triangleFans_; - return *this; - } - - PhysicalDevicePortabilitySubsetFeaturesKHR & setVertexAttributeAccessBeyondStride( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride_ ) VULKAN_HPP_NOEXCEPT - { - vertexAttributeAccessBeyondStride = vertexAttributeAccessBeyondStride_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePortabilitySubsetFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDevicePortabilitySubsetFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDevicePortabilitySubsetFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 constantAlphaColorBlendFactors = {}; - VULKAN_HPP_NAMESPACE::Bool32 events = {}; - VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatReinterpretation = {}; - VULKAN_HPP_NAMESPACE::Bool32 imageViewFormatSwizzle = {}; - VULKAN_HPP_NAMESPACE::Bool32 imageView2DOn3DImage = {}; - VULKAN_HPP_NAMESPACE::Bool32 multisampleArrayImage = {}; - VULKAN_HPP_NAMESPACE::Bool32 mutableComparisonSamplers = {}; - VULKAN_HPP_NAMESPACE::Bool32 pointPolygons = {}; - VULKAN_HPP_NAMESPACE::Bool32 samplerMipLodBias = {}; - VULKAN_HPP_NAMESPACE::Bool32 separateStencilMaskRef = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSampleRateInterpolationFunctions = {}; - VULKAN_HPP_NAMESPACE::Bool32 tessellationIsolines = {}; - VULKAN_HPP_NAMESPACE::Bool32 tessellationPointMode = {}; - VULKAN_HPP_NAMESPACE::Bool32 triangleFans = {}; - VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeAccessBeyondStride = {}; - - }; - static_assert( sizeof( PhysicalDevicePortabilitySubsetFeaturesKHR ) == sizeof( VkPhysicalDevicePortabilitySubsetFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePortabilitySubsetFeaturesKHR; - }; -#endif /*VK_ENABLE_BETA_EXTENSIONS*/ - -#ifdef VK_ENABLE_BETA_EXTENSIONS - struct PhysicalDevicePortabilitySubsetPropertiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR(uint32_t minVertexInputBindingStrideAlignment_ = {}) VULKAN_HPP_NOEXCEPT - : minVertexInputBindingStrideAlignment( minVertexInputBindingStrideAlignment_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDevicePortabilitySubsetPropertiesKHR( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePortabilitySubsetPropertiesKHR( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDevicePortabilitySubsetPropertiesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( PhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePortabilitySubsetPropertiesKHR & operator=( VkPhysicalDevicePortabilitySubsetPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDevicePortabilitySubsetPropertiesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDevicePortabilitySubsetPropertiesKHR & setMinVertexInputBindingStrideAlignment( uint32_t minVertexInputBindingStrideAlignment_ ) VULKAN_HPP_NOEXCEPT - { - minVertexInputBindingStrideAlignment = minVertexInputBindingStrideAlignment_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePortabilitySubsetPropertiesKHR const& ) const = default; -#else - bool operator==( PhysicalDevicePortabilitySubsetPropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( minVertexInputBindingStrideAlignment == rhs.minVertexInputBindingStrideAlignment ); - } - - bool operator!=( PhysicalDevicePortabilitySubsetPropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePortabilitySubsetPropertiesKHR; - void* pNext = {}; - uint32_t minVertexInputBindingStrideAlignment = {}; - - }; - static_assert( sizeof( PhysicalDevicePortabilitySubsetPropertiesKHR ) == sizeof( VkPhysicalDevicePortabilitySubsetPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePortabilitySubsetPropertiesKHR; - }; -#endif /*VK_ENABLE_BETA_EXTENSIONS*/ - - struct PhysicalDevicePrivateDataFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePrivateDataFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 privateData_ = {}) VULKAN_HPP_NOEXCEPT - : privateData( privateData_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDevicePrivateDataFeaturesEXT( PhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePrivateDataFeaturesEXT( VkPhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDevicePrivateDataFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePrivateDataFeaturesEXT & operator=( PhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePrivateDataFeaturesEXT & operator=( VkPhysicalDevicePrivateDataFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDevicePrivateDataFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDevicePrivateDataFeaturesEXT & setPrivateData( VULKAN_HPP_NAMESPACE::Bool32 privateData_ ) VULKAN_HPP_NOEXCEPT - { - privateData = privateData_; - return *this; - } - - - operator VkPhysicalDevicePrivateDataFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDevicePrivateDataFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePrivateDataFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDevicePrivateDataFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( privateData == rhs.privateData ); - } - - bool operator!=( PhysicalDevicePrivateDataFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePrivateDataFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 privateData = {}; - - }; - static_assert( sizeof( PhysicalDevicePrivateDataFeaturesEXT ) == sizeof( VkPhysicalDevicePrivateDataFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePrivateDataFeaturesEXT; - }; - - struct PhysicalDeviceProtectedMemoryFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProtectedMemoryFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures(VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ = {}) VULKAN_HPP_NOEXCEPT - : protectedMemory( protectedMemory_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryFeatures( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceProtectedMemoryFeatures( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceProtectedMemoryFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryFeatures & operator=( PhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceProtectedMemoryFeatures & operator=( VkPhysicalDeviceProtectedMemoryFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceProtectedMemoryFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceProtectedMemoryFeatures & setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT - { - protectedMemory = protectedMemory_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceProtectedMemoryFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceProtectedMemoryFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( protectedMemory == rhs.protectedMemory ); - } - - bool operator!=( PhysicalDeviceProtectedMemoryFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 protectedMemory = {}; - - }; - static_assert( sizeof( PhysicalDeviceProtectedMemoryFeatures ) == sizeof( VkPhysicalDeviceProtectedMemoryFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceProtectedMemoryFeatures; - }; - - struct PhysicalDeviceProtectedMemoryProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceProtectedMemoryProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties(VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault_ = {}) VULKAN_HPP_NOEXCEPT - : protectedNoFault( protectedNoFault_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceProtectedMemoryProperties( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceProtectedMemoryProperties( VkPhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceProtectedMemoryProperties( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceProtectedMemoryProperties & operator=( PhysicalDeviceProtectedMemoryProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceProtectedMemoryProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceProtectedMemoryProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( protectedNoFault == rhs.protectedNoFault ); - } - - bool operator!=( PhysicalDeviceProtectedMemoryProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceProtectedMemoryProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault = {}; - - }; - static_assert( sizeof( PhysicalDeviceProtectedMemoryProperties ) == sizeof( VkPhysicalDeviceProtectedMemoryProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceProtectedMemoryProperties; - }; - - struct PhysicalDevicePushDescriptorPropertiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorPropertiesKHR(uint32_t maxPushDescriptors_ = {}) VULKAN_HPP_NOEXCEPT - : maxPushDescriptors( maxPushDescriptors_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDevicePushDescriptorPropertiesKHR( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePushDescriptorPropertiesKHR( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDevicePushDescriptorPropertiesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDevicePushDescriptorPropertiesKHR & operator=( PhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDevicePushDescriptorPropertiesKHR & operator=( VkPhysicalDevicePushDescriptorPropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - - operator VkPhysicalDevicePushDescriptorPropertiesKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDevicePushDescriptorPropertiesKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDevicePushDescriptorPropertiesKHR const& ) const = default; -#else - bool operator==( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxPushDescriptors == rhs.maxPushDescriptors ); - } - - bool operator!=( PhysicalDevicePushDescriptorPropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDevicePushDescriptorPropertiesKHR; - void* pNext = {}; - uint32_t maxPushDescriptors = {}; - - }; - static_assert( sizeof( PhysicalDevicePushDescriptorPropertiesKHR ) == sizeof( VkPhysicalDevicePushDescriptorPropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDevicePushDescriptorPropertiesKHR; - }; - - struct PhysicalDeviceRayQueryFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayQueryFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceRayQueryFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ = {}) VULKAN_HPP_NOEXCEPT - : rayQuery( rayQuery_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceRayQueryFeaturesKHR( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceRayQueryFeaturesKHR( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceRayQueryFeaturesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayQueryFeaturesKHR & operator=( PhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceRayQueryFeaturesKHR & operator=( VkPhysicalDeviceRayQueryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceRayQueryFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceRayQueryFeaturesKHR & setRayQuery( VULKAN_HPP_NAMESPACE::Bool32 rayQuery_ ) VULKAN_HPP_NOEXCEPT - { - rayQuery = rayQuery_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceRayQueryFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceRayQueryFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( rayQuery == rhs.rayQuery ); - } - - bool operator!=( PhysicalDeviceRayQueryFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayQueryFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 rayQuery = {}; - - }; - static_assert( sizeof( PhysicalDeviceRayQueryFeaturesKHR ) == sizeof( VkPhysicalDeviceRayQueryFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceRayQueryFeaturesKHR; - }; - - struct PhysicalDeviceRayTracingPipelineFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceRayTracingPipelineFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_ = {}, VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ = {}, VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ = {}, VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_ = {}, VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( PhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceRayTracingPipelineFeaturesKHR & operator=( VkPhysicalDeviceRayTracingPipelineFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceRayTracingPipelineFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTracingPipeline( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline_ ) VULKAN_HPP_NOEXCEPT - { - rayTracingPipeline = rayTracingPipeline_; - return *this; - } - - PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTracingPipelineShaderGroupHandleCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay_ ) VULKAN_HPP_NOEXCEPT - { - rayTracingPipelineShaderGroupHandleCaptureReplay = rayTracingPipelineShaderGroupHandleCaptureReplay_; - return *this; - } - - PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTracingPipelineShaderGroupHandleCaptureReplayMixed( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed_ ) VULKAN_HPP_NOEXCEPT - { - rayTracingPipelineShaderGroupHandleCaptureReplayMixed = rayTracingPipelineShaderGroupHandleCaptureReplayMixed_; - return *this; - } - - PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTracingPipelineTraceRaysIndirect( VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect_ ) VULKAN_HPP_NOEXCEPT - { - rayTracingPipelineTraceRaysIndirect = rayTracingPipelineTraceRaysIndirect_; - return *this; - } - - PhysicalDeviceRayTracingPipelineFeaturesKHR & setRayTraversalPrimitiveCulling( VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling_ ) VULKAN_HPP_NOEXCEPT - { - rayTraversalPrimitiveCulling = rayTraversalPrimitiveCulling_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceRayTracingPipelineFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceRayTracingPipelineFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( rayTracingPipeline == rhs.rayTracingPipeline ) - && ( rayTracingPipelineShaderGroupHandleCaptureReplay == rhs.rayTracingPipelineShaderGroupHandleCaptureReplay ) - && ( rayTracingPipelineShaderGroupHandleCaptureReplayMixed == rhs.rayTracingPipelineShaderGroupHandleCaptureReplayMixed ) - && ( rayTracingPipelineTraceRaysIndirect == rhs.rayTracingPipelineTraceRaysIndirect ) - && ( rayTraversalPrimitiveCulling == rhs.rayTraversalPrimitiveCulling ); - } - - bool operator!=( PhysicalDeviceRayTracingPipelineFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRayTracingPipelineFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipeline = {}; - VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplay = {}; - VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineShaderGroupHandleCaptureReplayMixed = {}; - VULKAN_HPP_NAMESPACE::Bool32 rayTracingPipelineTraceRaysIndirect = {}; - VULKAN_HPP_NAMESPACE::Bool32 rayTraversalPrimitiveCulling = {}; - - }; - static_assert( sizeof( PhysicalDeviceRayTracingPipelineFeaturesKHR ) == sizeof( VkPhysicalDeviceRayTracingPipelineFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceRayTracingPipelineFeaturesKHR; - }; - - struct PhysicalDeviceRayTracingPipelinePropertiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingPipelinePropertiesKHR; - -#if !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_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPipelinePropertiesKHR & operator=( PhysicalDeviceRayTracingPipelinePropertiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceRayTracingPipelinePropertiesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceRayTracingPipelinePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceRayTracingPipelinePropertiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::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 = {}; - - }; - static_assert( sizeof( PhysicalDeviceRayTracingPipelinePropertiesKHR ) == sizeof( VkPhysicalDeviceRayTracingPipelinePropertiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceRayTracingPipelinePropertiesKHR; - }; - - struct PhysicalDeviceRayTracingPropertiesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRayTracingPropertiesNV; - -#if !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_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRayTracingPropertiesNV & operator=( PhysicalDeviceRayTracingPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceRayTracingPropertiesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceRayTracingPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceRayTracingPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::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 = {}; - - }; - static_assert( sizeof( PhysicalDeviceRayTracingPropertiesNV ) == sizeof( VkPhysicalDeviceRayTracingPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceRayTracingPropertiesNV; - }; - - struct PhysicalDeviceRepresentativeFragmentTestFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ = {}) VULKAN_HPP_NOEXCEPT - : representativeFragmentTest( representativeFragmentTest_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceRepresentativeFragmentTestFeaturesNV( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceRepresentativeFragmentTestFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRepresentativeFragmentTestFeaturesNV & operator=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV & operator=( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceRepresentativeFragmentTestFeaturesNV & setRepresentativeFragmentTest( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest_ ) VULKAN_HPP_NOEXCEPT - { - representativeFragmentTest = representativeFragmentTest_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( representativeFragmentTest == rhs.representativeFragmentTest ); - } - - bool operator!=( PhysicalDeviceRepresentativeFragmentTestFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRepresentativeFragmentTestFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTest = {}; - - }; - static_assert( sizeof( PhysicalDeviceRepresentativeFragmentTestFeaturesNV ) == sizeof( VkPhysicalDeviceRepresentativeFragmentTestFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceRepresentativeFragmentTestFeaturesNV; - }; - - struct PhysicalDeviceRobustness2FeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRobustness2FeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ = {}, VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_ = {}, VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_ = {}) VULKAN_HPP_NOEXCEPT - : robustBufferAccess2( robustBufferAccess2_ ), robustImageAccess2( robustImageAccess2_ ), nullDescriptor( nullDescriptor_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2FeaturesEXT( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceRobustness2FeaturesEXT( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceRobustness2FeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2FeaturesEXT & operator=( PhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceRobustness2FeaturesEXT & operator=( VkPhysicalDeviceRobustness2FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceRobustness2FeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceRobustness2FeaturesEXT & setRobustBufferAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2_ ) VULKAN_HPP_NOEXCEPT - { - robustBufferAccess2 = robustBufferAccess2_; - return *this; - } - - PhysicalDeviceRobustness2FeaturesEXT & setRobustImageAccess2( VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2_ ) VULKAN_HPP_NOEXCEPT - { - robustImageAccess2 = robustImageAccess2_; - return *this; - } - - PhysicalDeviceRobustness2FeaturesEXT & setNullDescriptor( VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor_ ) VULKAN_HPP_NOEXCEPT - { - nullDescriptor = nullDescriptor_; - return *this; - } - - - operator VkPhysicalDeviceRobustness2FeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceRobustness2FeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceRobustness2FeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceRobustness2FeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( robustBufferAccess2 == rhs.robustBufferAccess2 ) - && ( robustImageAccess2 == rhs.robustImageAccess2 ) - && ( nullDescriptor == rhs.nullDescriptor ); - } - - bool operator!=( PhysicalDeviceRobustness2FeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2FeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccess2 = {}; - VULKAN_HPP_NAMESPACE::Bool32 robustImageAccess2 = {}; - VULKAN_HPP_NAMESPACE::Bool32 nullDescriptor = {}; - - }; - static_assert( sizeof( PhysicalDeviceRobustness2FeaturesEXT ) == sizeof( VkPhysicalDeviceRobustness2FeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceRobustness2FeaturesEXT; - }; - - struct PhysicalDeviceRobustness2PropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceRobustness2PropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT(VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment_ = {}) VULKAN_HPP_NOEXCEPT - : robustStorageBufferAccessSizeAlignment( robustStorageBufferAccessSizeAlignment_ ), robustUniformBufferAccessSizeAlignment( robustUniformBufferAccessSizeAlignment_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceRobustness2PropertiesEXT( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceRobustness2PropertiesEXT( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceRobustness2PropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceRobustness2PropertiesEXT & operator=( PhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceRobustness2PropertiesEXT & operator=( VkPhysicalDeviceRobustness2PropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - - operator VkPhysicalDeviceRobustness2PropertiesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceRobustness2PropertiesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceRobustness2PropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceRobustness2PropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( robustStorageBufferAccessSizeAlignment == rhs.robustStorageBufferAccessSizeAlignment ) - && ( robustUniformBufferAccessSizeAlignment == rhs.robustUniformBufferAccessSizeAlignment ); - } - - bool operator!=( PhysicalDeviceRobustness2PropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceRobustness2PropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceSize robustStorageBufferAccessSizeAlignment = {}; - VULKAN_HPP_NAMESPACE::DeviceSize robustUniformBufferAccessSizeAlignment = {}; - - }; - static_assert( sizeof( PhysicalDeviceRobustness2PropertiesEXT ) == sizeof( VkPhysicalDeviceRobustness2PropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceRobustness2PropertiesEXT; - }; - - struct PhysicalDeviceSampleLocationsPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT(VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts_ = {}, VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize_ = {}, std::array const& sampleLocationCoordinateRange_ = {}, uint32_t sampleLocationSubPixelBits_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variableSampleLocations_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSampleLocationsPropertiesEXT & operator=( PhysicalDeviceSampleLocationsPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSampleLocationsPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sampleLocationSampleCounts == rhs.sampleLocationSampleCounts ) - && ( maxSampleLocationGridSize == rhs.maxSampleLocationGridSize ) - && ( sampleLocationCoordinateRange == rhs.sampleLocationCoordinateRange ) - && ( sampleLocationSubPixelBits == rhs.sampleLocationSubPixelBits ) - && ( variableSampleLocations == rhs.variableSampleLocations ); - } - - bool operator!=( PhysicalDeviceSampleLocationsPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSampleLocationsPropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags sampleLocationSampleCounts = {}; - VULKAN_HPP_NAMESPACE::Extent2D maxSampleLocationGridSize = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D sampleLocationCoordinateRange = {}; - uint32_t sampleLocationSubPixelBits = {}; - VULKAN_HPP_NAMESPACE::Bool32 variableSampleLocations = {}; - - }; - static_assert( sizeof( PhysicalDeviceSampleLocationsPropertiesEXT ) == sizeof( VkPhysicalDeviceSampleLocationsPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSampleLocationsPropertiesEXT; - }; - - struct PhysicalDeviceSamplerFilterMinmaxProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerFilterMinmaxProperties(VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats_ = {}, VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerFilterMinmaxProperties & operator=( PhysicalDeviceSamplerFilterMinmaxProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSamplerFilterMinmaxProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceSamplerFilterMinmaxProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( filterMinmaxSingleComponentFormats == rhs.filterMinmaxSingleComponentFormats ) - && ( filterMinmaxImageComponentMapping == rhs.filterMinmaxImageComponentMapping ); - } - - bool operator!=( PhysicalDeviceSamplerFilterMinmaxProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerFilterMinmaxProperties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats = {}; - VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping = {}; - - }; - static_assert( sizeof( PhysicalDeviceSamplerFilterMinmaxProperties ) == sizeof( VkPhysicalDeviceSamplerFilterMinmaxProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSamplerFilterMinmaxProperties; - }; - using PhysicalDeviceSamplerFilterMinmaxPropertiesEXT = PhysicalDeviceSamplerFilterMinmaxProperties; - - struct PhysicalDeviceSamplerYcbcrConversionFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures(VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ = {}) VULKAN_HPP_NOEXCEPT - : samplerYcbcrConversion( samplerYcbcrConversion_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceSamplerYcbcrConversionFeatures( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSamplerYcbcrConversionFeatures( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceSamplerYcbcrConversionFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( PhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSamplerYcbcrConversionFeatures & operator=( VkPhysicalDeviceSamplerYcbcrConversionFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceSamplerYcbcrConversionFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSamplerYcbcrConversionFeatures & setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT - { - samplerYcbcrConversion = samplerYcbcrConversion_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSamplerYcbcrConversionFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceSamplerYcbcrConversionFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( samplerYcbcrConversion == rhs.samplerYcbcrConversion ); - } - - bool operator!=( PhysicalDeviceSamplerYcbcrConversionFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSamplerYcbcrConversionFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion = {}; - - }; - static_assert( sizeof( PhysicalDeviceSamplerYcbcrConversionFeatures ) == sizeof( VkPhysicalDeviceSamplerYcbcrConversionFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSamplerYcbcrConversionFeatures; - }; - using PhysicalDeviceSamplerYcbcrConversionFeaturesKHR = PhysicalDeviceSamplerYcbcrConversionFeatures; - - struct PhysicalDeviceScalarBlockLayoutFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures(VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ = {}) VULKAN_HPP_NOEXCEPT - : scalarBlockLayout( scalarBlockLayout_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceScalarBlockLayoutFeatures( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceScalarBlockLayoutFeatures( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceScalarBlockLayoutFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceScalarBlockLayoutFeatures & operator=( PhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceScalarBlockLayoutFeatures & operator=( VkPhysicalDeviceScalarBlockLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceScalarBlockLayoutFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceScalarBlockLayoutFeatures & setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT - { - scalarBlockLayout = scalarBlockLayout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceScalarBlockLayoutFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceScalarBlockLayoutFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( scalarBlockLayout == rhs.scalarBlockLayout ); - } - - bool operator!=( PhysicalDeviceScalarBlockLayoutFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceScalarBlockLayoutFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout = {}; - - }; - static_assert( sizeof( PhysicalDeviceScalarBlockLayoutFeatures ) == sizeof( VkPhysicalDeviceScalarBlockLayoutFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceScalarBlockLayoutFeatures; - }; - using PhysicalDeviceScalarBlockLayoutFeaturesEXT = PhysicalDeviceScalarBlockLayoutFeatures; - - struct PhysicalDeviceSeparateDepthStencilLayoutsFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures(VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ = {}) VULKAN_HPP_NOEXCEPT - : separateDepthStencilLayouts( separateDepthStencilLayouts_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceSeparateDepthStencilLayoutsFeatures( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSeparateDepthStencilLayoutsFeatures( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceSeparateDepthStencilLayoutsFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSeparateDepthStencilLayoutsFeatures & operator=( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceSeparateDepthStencilLayoutsFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSeparateDepthStencilLayoutsFeatures & setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT - { - separateDepthStencilLayouts = separateDepthStencilLayouts_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( separateDepthStencilLayouts == rhs.separateDepthStencilLayouts ); - } - - bool operator!=( PhysicalDeviceSeparateDepthStencilLayoutsFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSeparateDepthStencilLayoutsFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts = {}; - - }; - static_assert( sizeof( PhysicalDeviceSeparateDepthStencilLayoutsFeatures ) == sizeof( VkPhysicalDeviceSeparateDepthStencilLayoutsFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSeparateDepthStencilLayoutsFeatures; - }; - using PhysicalDeviceSeparateDepthStencilLayoutsFeaturesKHR = PhysicalDeviceSeparateDepthStencilLayoutsFeatures; - - struct PhysicalDeviceShaderAtomicFloatFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicFloatFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & operator=( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderBufferFloat32Atomics = shaderBufferFloat32Atomics_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT - { - shaderBufferFloat32AtomicAdd = shaderBufferFloat32AtomicAdd_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderBufferFloat64Atomics = shaderBufferFloat64Atomics_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderBufferFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT - { - shaderBufferFloat64AtomicAdd = shaderBufferFloat64AtomicAdd_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderSharedFloat32Atomics = shaderSharedFloat32Atomics_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT - { - shaderSharedFloat32AtomicAdd = shaderSharedFloat32AtomicAdd_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderSharedFloat64Atomics = shaderSharedFloat64Atomics_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderSharedFloat64AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd_ ) VULKAN_HPP_NOEXCEPT - { - shaderSharedFloat64AtomicAdd = shaderSharedFloat64AtomicAdd_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderImageFloat32Atomics = shaderImageFloat32Atomics_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setShaderImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT - { - shaderImageFloat32AtomicAdd = shaderImageFloat32AtomicAdd_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setSparseImageFloat32Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics_ ) VULKAN_HPP_NOEXCEPT - { - sparseImageFloat32Atomics = sparseImageFloat32Atomics_; - return *this; - } - - PhysicalDeviceShaderAtomicFloatFeaturesEXT & setSparseImageFloat32AtomicAdd( VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd_ ) VULKAN_HPP_NOEXCEPT - { - sparseImageFloat32AtomicAdd = sparseImageFloat32AtomicAdd_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderAtomicFloatFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderAtomicFloatFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceShaderAtomicFloatFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicFloatFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat32AtomicAdd = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderBufferFloat64AtomicAdd = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat32AtomicAdd = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSharedFloat64AtomicAdd = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderImageFloat32AtomicAdd = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseImageFloat32AtomicAdd = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderAtomicFloatFeaturesEXT ) == sizeof( VkPhysicalDeviceShaderAtomicFloatFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderAtomicFloatFeaturesEXT; - }; - - struct PhysicalDeviceShaderAtomicInt64Features - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderAtomicInt64Features; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderAtomicInt64Features(VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderAtomicInt64Features & operator=( PhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderAtomicInt64Features & operator=( VkPhysicalDeviceShaderAtomicInt64Features const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderAtomicInt64Features & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderAtomicInt64Features & setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderBufferInt64Atomics = shaderBufferInt64Atomics_; - return *this; - } - - PhysicalDeviceShaderAtomicInt64Features & setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderSharedInt64Atomics = shaderSharedInt64Atomics_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderAtomicInt64Features const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderAtomicInt64Features const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderBufferInt64Atomics == rhs.shaderBufferInt64Atomics ) - && ( shaderSharedInt64Atomics == rhs.shaderSharedInt64Atomics ); - } - - bool operator!=( PhysicalDeviceShaderAtomicInt64Features const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderAtomicInt64Features; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderAtomicInt64Features ) == sizeof( VkPhysicalDeviceShaderAtomicInt64Features ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderAtomicInt64Features; - }; - using PhysicalDeviceShaderAtomicInt64FeaturesKHR = PhysicalDeviceShaderAtomicInt64Features; - - struct PhysicalDeviceShaderClockFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderClockFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderClockFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderClockFeaturesKHR & operator=( PhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderClockFeaturesKHR & operator=( VkPhysicalDeviceShaderClockFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderClockFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderClockFeaturesKHR & setShaderSubgroupClock( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock_ ) VULKAN_HPP_NOEXCEPT - { - shaderSubgroupClock = shaderSubgroupClock_; - return *this; - } - - PhysicalDeviceShaderClockFeaturesKHR & setShaderDeviceClock( VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock_ ) VULKAN_HPP_NOEXCEPT - { - shaderDeviceClock = shaderDeviceClock_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderClockFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderClockFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderSubgroupClock == rhs.shaderSubgroupClock ) - && ( shaderDeviceClock == rhs.shaderDeviceClock ); - } - - bool operator!=( PhysicalDeviceShaderClockFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderClockFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupClock = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDeviceClock = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderClockFeaturesKHR ) == sizeof( VkPhysicalDeviceShaderClockFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderClockFeaturesKHR; - }; - - struct PhysicalDeviceShaderCoreProperties2AMD - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderCoreProperties2AMD; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderCoreProperties2AMD(VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures_ = {}, uint32_t activeComputeUnitCount_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCoreProperties2AMD & operator=( PhysicalDeviceShaderCoreProperties2AMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderCoreProperties2AMD const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderCoreProperties2AMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderCoreFeatures == rhs.shaderCoreFeatures ) - && ( activeComputeUnitCount == rhs.activeComputeUnitCount ); - } - - bool operator!=( PhysicalDeviceShaderCoreProperties2AMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderCoreProperties2AMD; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ShaderCorePropertiesFlagsAMD shaderCoreFeatures = {}; - uint32_t activeComputeUnitCount = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderCoreProperties2AMD ) == sizeof( VkPhysicalDeviceShaderCoreProperties2AMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderCoreProperties2AMD; - }; - - struct PhysicalDeviceShaderCorePropertiesAMD - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderCorePropertiesAMD; - -#if !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_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderCorePropertiesAMD & operator=( PhysicalDeviceShaderCorePropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderCorePropertiesAMD const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderCorePropertiesAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceShaderCorePropertiesAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::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 = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderCorePropertiesAMD ) == sizeof( VkPhysicalDeviceShaderCorePropertiesAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderCorePropertiesAMD; - }; - - struct PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ = {}) VULKAN_HPP_NOEXCEPT - : shaderDemoteToHelperInvocation( shaderDemoteToHelperInvocation_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & operator=( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & operator=( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT & setShaderDemoteToHelperInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation_ ) VULKAN_HPP_NOEXCEPT - { - shaderDemoteToHelperInvocation = shaderDemoteToHelperInvocation_; - return *this; - } - - - operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderDemoteToHelperInvocation == rhs.shaderDemoteToHelperInvocation ); - } - - bool operator!=( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDemoteToHelperInvocation = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ) == sizeof( VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; - }; - - struct PhysicalDeviceShaderDrawParametersFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {}) VULKAN_HPP_NOEXCEPT - : shaderDrawParameters( shaderDrawParameters_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderDrawParametersFeatures( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderDrawParametersFeatures( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceShaderDrawParametersFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderDrawParametersFeatures & operator=( PhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderDrawParametersFeatures & operator=( VkPhysicalDeviceShaderDrawParametersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderDrawParametersFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderDrawParametersFeatures & setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT - { - shaderDrawParameters = shaderDrawParameters_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderDrawParametersFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderDrawParametersFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderDrawParameters == rhs.shaderDrawParameters ); - } - - bool operator!=( PhysicalDeviceShaderDrawParametersFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderDrawParametersFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderDrawParametersFeatures ) == sizeof( VkPhysicalDeviceShaderDrawParametersFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderDrawParametersFeatures; - }; - using PhysicalDeviceShaderDrawParameterFeatures = PhysicalDeviceShaderDrawParametersFeatures; - - struct PhysicalDeviceShaderFloat16Int8Features - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderFloat16Int8Features; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderFloat16Int8Features(VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderFloat16Int8Features & operator=( PhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderFloat16Int8Features & operator=( VkPhysicalDeviceShaderFloat16Int8Features const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderFloat16Int8Features & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderFloat16Int8Features & setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT - { - shaderFloat16 = shaderFloat16_; - return *this; - } - - PhysicalDeviceShaderFloat16Int8Features & setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT - { - shaderInt8 = shaderInt8_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderFloat16Int8Features const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderFloat16Int8Features const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderFloat16 == rhs.shaderFloat16 ) - && ( shaderInt8 == rhs.shaderInt8 ); - } - - bool operator!=( PhysicalDeviceShaderFloat16Int8Features const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderFloat16Int8Features; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInt8 = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderFloat16Int8Features ) == sizeof( VkPhysicalDeviceShaderFloat16Int8Features ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderFloat16Int8Features; - }; - using PhysicalDeviceFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; - using PhysicalDeviceShaderFloat16Int8FeaturesKHR = PhysicalDeviceShaderFloat16Int8Features; - - struct PhysicalDeviceShaderImageAtomicInt64FeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageAtomicInt64FeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & operator=( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setShaderImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderImageInt64Atomics = shaderImageInt64Atomics_; - return *this; - } - - PhysicalDeviceShaderImageAtomicInt64FeaturesEXT & setSparseImageInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics_ ) VULKAN_HPP_NOEXCEPT - { - sparseImageInt64Atomics = sparseImageInt64Atomics_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderImageInt64Atomics == rhs.shaderImageInt64Atomics ) - && ( sparseImageInt64Atomics == rhs.sparseImageInt64Atomics ); - } - - bool operator!=( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageAtomicInt64FeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderImageInt64Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 sparseImageInt64Atomics = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderImageAtomicInt64FeaturesEXT ) == sizeof( VkPhysicalDeviceShaderImageAtomicInt64FeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderImageAtomicInt64FeaturesEXT; - }; - - struct PhysicalDeviceShaderImageFootprintFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ = {}) VULKAN_HPP_NOEXCEPT - : imageFootprint( imageFootprint_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderImageFootprintFeaturesNV( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderImageFootprintFeaturesNV( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceShaderImageFootprintFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( PhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderImageFootprintFeaturesNV & operator=( VkPhysicalDeviceShaderImageFootprintFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderImageFootprintFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderImageFootprintFeaturesNV & setImageFootprint( VULKAN_HPP_NAMESPACE::Bool32 imageFootprint_ ) VULKAN_HPP_NOEXCEPT - { - imageFootprint = imageFootprint_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderImageFootprintFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderImageFootprintFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( imageFootprint == rhs.imageFootprint ); - } - - bool operator!=( PhysicalDeviceShaderImageFootprintFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderImageFootprintFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 imageFootprint = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderImageFootprintFeaturesNV ) == sizeof( VkPhysicalDeviceShaderImageFootprintFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderImageFootprintFeaturesNV; - }; - - struct PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL(VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ = {}) VULKAN_HPP_NOEXCEPT - : shaderIntegerFunctions2( shaderIntegerFunctions2_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & operator=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & operator=( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL & setShaderIntegerFunctions2( VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2_ ) VULKAN_HPP_NOEXCEPT - { - shaderIntegerFunctions2 = shaderIntegerFunctions2_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderIntegerFunctions2 == rhs.shaderIntegerFunctions2 ); - } - - bool operator!=( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderIntegerFunctions2 = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ) == sizeof( VkPhysicalDeviceShaderIntegerFunctions2FeaturesINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderIntegerFunctions2FeaturesINTEL; - }; - - struct PhysicalDeviceShaderSMBuiltinsFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ = {}) VULKAN_HPP_NOEXCEPT - : shaderSMBuiltins( shaderSMBuiltins_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsFeaturesNV( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderSMBuiltinsFeaturesNV( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceShaderSMBuiltinsFeaturesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderSMBuiltinsFeaturesNV & operator=( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderSMBuiltinsFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderSMBuiltinsFeaturesNV & setShaderSMBuiltins( VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins_ ) VULKAN_HPP_NOEXCEPT - { - shaderSMBuiltins = shaderSMBuiltins_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderSMBuiltinsFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderSMBuiltinsFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderSMBuiltins == rhs.shaderSMBuiltins ); - } - - bool operator!=( PhysicalDeviceShaderSMBuiltinsFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSMBuiltins = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderSMBuiltinsFeaturesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderSMBuiltinsFeaturesNV; - }; - - struct PhysicalDeviceShaderSMBuiltinsPropertiesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSMBuiltinsPropertiesNV(uint32_t shaderSMCount_ = {}, uint32_t shaderWarpsPerSM_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSMBuiltinsPropertiesNV & operator=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderSMBuiltinsPropertiesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderSMBuiltinsPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderSMCount == rhs.shaderSMCount ) - && ( shaderWarpsPerSM == rhs.shaderWarpsPerSM ); - } - - bool operator!=( PhysicalDeviceShaderSMBuiltinsPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSmBuiltinsPropertiesNV; - void* pNext = {}; - uint32_t shaderSMCount = {}; - uint32_t shaderWarpsPerSM = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderSMBuiltinsPropertiesNV ) == sizeof( VkPhysicalDeviceShaderSMBuiltinsPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderSMBuiltinsPropertiesNV; - }; - - struct PhysicalDeviceShaderSubgroupExtendedTypesFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures(VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ = {}) VULKAN_HPP_NOEXCEPT - : shaderSubgroupExtendedTypes( shaderSubgroupExtendedTypes_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderSubgroupExtendedTypesFeatures( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderSubgroupExtendedTypesFeatures( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceShaderSubgroupExtendedTypesFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderSubgroupExtendedTypesFeatures & operator=( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderSubgroupExtendedTypesFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderSubgroupExtendedTypesFeatures & setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT - { - shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderSubgroupExtendedTypes == rhs.shaderSubgroupExtendedTypes ); - } - - bool operator!=( PhysicalDeviceShaderSubgroupExtendedTypesFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderSubgroupExtendedTypesFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderSubgroupExtendedTypesFeatures ) == sizeof( VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderSubgroupExtendedTypesFeatures; - }; - using PhysicalDeviceShaderSubgroupExtendedTypesFeaturesKHR = PhysicalDeviceShaderSubgroupExtendedTypesFeatures; - - struct PhysicalDeviceShaderTerminateInvocationFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ = {}) VULKAN_HPP_NOEXCEPT - : shaderTerminateInvocation( shaderTerminateInvocation_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceShaderTerminateInvocationFeaturesKHR( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderTerminateInvocationFeaturesKHR( VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceShaderTerminateInvocationFeaturesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShaderTerminateInvocationFeaturesKHR & operator=( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShaderTerminateInvocationFeaturesKHR & operator=( VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShaderTerminateInvocationFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShaderTerminateInvocationFeaturesKHR & setShaderTerminateInvocation( VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation_ ) VULKAN_HPP_NOEXCEPT - { - shaderTerminateInvocation = shaderTerminateInvocation_; - return *this; - } - - - operator VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderTerminateInvocation == rhs.shaderTerminateInvocation ); - } - - bool operator!=( PhysicalDeviceShaderTerminateInvocationFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShaderTerminateInvocationFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderTerminateInvocation = {}; - - }; - static_assert( sizeof( PhysicalDeviceShaderTerminateInvocationFeaturesKHR ) == sizeof( VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShaderTerminateInvocationFeaturesKHR; - }; - - struct PhysicalDeviceShadingRateImageFeaturesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImageFeaturesNV(VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImageFeaturesNV & operator=( PhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceShadingRateImageFeaturesNV & operator=( VkPhysicalDeviceShadingRateImageFeaturesNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceShadingRateImageFeaturesNV & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceShadingRateImageFeaturesNV & setShadingRateImage( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage_ ) VULKAN_HPP_NOEXCEPT - { - shadingRateImage = shadingRateImage_; - return *this; - } - - PhysicalDeviceShadingRateImageFeaturesNV & setShadingRateCoarseSampleOrder( VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder_ ) VULKAN_HPP_NOEXCEPT - { - shadingRateCoarseSampleOrder = shadingRateCoarseSampleOrder_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShadingRateImageFeaturesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceShadingRateImageFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shadingRateImage == rhs.shadingRateImage ) - && ( shadingRateCoarseSampleOrder == rhs.shadingRateCoarseSampleOrder ); - } - - bool operator!=( PhysicalDeviceShadingRateImageFeaturesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShadingRateImageFeaturesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shadingRateImage = {}; - VULKAN_HPP_NAMESPACE::Bool32 shadingRateCoarseSampleOrder = {}; - - }; - static_assert( sizeof( PhysicalDeviceShadingRateImageFeaturesNV ) == sizeof( VkPhysicalDeviceShadingRateImageFeaturesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShadingRateImageFeaturesNV; - }; - - struct PhysicalDeviceShadingRateImagePropertiesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceShadingRateImagePropertiesNV(VULKAN_HPP_NAMESPACE::Extent2D shadingRateTexelSize_ = {}, uint32_t shadingRatePaletteSize_ = {}, uint32_t shadingRateMaxCoarseSamples_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceShadingRateImagePropertiesNV & operator=( PhysicalDeviceShadingRateImagePropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceShadingRateImagePropertiesNV const& ) const = default; -#else - bool operator==( PhysicalDeviceShadingRateImagePropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shadingRateTexelSize == rhs.shadingRateTexelSize ) - && ( shadingRatePaletteSize == rhs.shadingRatePaletteSize ) - && ( shadingRateMaxCoarseSamples == rhs.shadingRateMaxCoarseSamples ); - } - - bool operator!=( PhysicalDeviceShadingRateImagePropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceShadingRateImagePropertiesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Extent2D shadingRateTexelSize = {}; - uint32_t shadingRatePaletteSize = {}; - uint32_t shadingRateMaxCoarseSamples = {}; - - }; - static_assert( sizeof( PhysicalDeviceShadingRateImagePropertiesNV ) == sizeof( VkPhysicalDeviceShadingRateImagePropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceShadingRateImagePropertiesNV; - }; - - struct PhysicalDeviceSubgroupProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupProperties(uint32_t subgroupSize_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedStages_ = {}, VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations_ = {}, VULKAN_HPP_NAMESPACE::Bool32 quadOperationsInAllStages_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupProperties & operator=( PhysicalDeviceSubgroupProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSubgroupProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceSubgroupProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( subgroupSize == rhs.subgroupSize ) - && ( supportedStages == rhs.supportedStages ) - && ( supportedOperations == rhs.supportedOperations ) - && ( quadOperationsInAllStages == rhs.quadOperationsInAllStages ); - } - - bool operator!=( PhysicalDeviceSubgroupProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupProperties; - void* pNext = {}; - uint32_t subgroupSize = {}; - VULKAN_HPP_NAMESPACE::ShaderStageFlags supportedStages = {}; - VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags supportedOperations = {}; - VULKAN_HPP_NAMESPACE::Bool32 quadOperationsInAllStages = {}; - - }; - static_assert( sizeof( PhysicalDeviceSubgroupProperties ) == sizeof( VkPhysicalDeviceSubgroupProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSubgroupProperties; - }; - - struct PhysicalDeviceSubgroupSizeControlFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ = {}, VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ = {}) VULKAN_HPP_NOEXCEPT - : subgroupSizeControl( subgroupSizeControl_ ), computeFullSubgroups( computeFullSubgroups_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlFeaturesEXT( PhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSubgroupSizeControlFeaturesEXT( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceSubgroupSizeControlFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlFeaturesEXT & operator=( PhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSubgroupSizeControlFeaturesEXT & operator=( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceSubgroupSizeControlFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSubgroupSizeControlFeaturesEXT & setSubgroupSizeControl( VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl_ ) VULKAN_HPP_NOEXCEPT - { - subgroupSizeControl = subgroupSizeControl_; - return *this; - } - - PhysicalDeviceSubgroupSizeControlFeaturesEXT & setComputeFullSubgroups( VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups_ ) VULKAN_HPP_NOEXCEPT - { - computeFullSubgroups = computeFullSubgroups_; - return *this; - } - - - operator VkPhysicalDeviceSubgroupSizeControlFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSubgroupSizeControlFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSubgroupSizeControlFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceSubgroupSizeControlFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( subgroupSizeControl == rhs.subgroupSizeControl ) - && ( computeFullSubgroups == rhs.computeFullSubgroups ); - } - - bool operator!=( PhysicalDeviceSubgroupSizeControlFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 subgroupSizeControl = {}; - VULKAN_HPP_NAMESPACE::Bool32 computeFullSubgroups = {}; - - }; - static_assert( sizeof( PhysicalDeviceSubgroupSizeControlFeaturesEXT ) == sizeof( VkPhysicalDeviceSubgroupSizeControlFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSubgroupSizeControlFeaturesEXT; - }; - - struct PhysicalDeviceSubgroupSizeControlPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSubgroupSizeControlPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlPropertiesEXT(uint32_t minSubgroupSize_ = {}, uint32_t maxSubgroupSize_ = {}, uint32_t maxComputeWorkgroupSubgroups_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages_ = {}) VULKAN_HPP_NOEXCEPT - : minSubgroupSize( minSubgroupSize_ ), maxSubgroupSize( maxSubgroupSize_ ), maxComputeWorkgroupSubgroups( maxComputeWorkgroupSubgroups_ ), requiredSubgroupSizeStages( requiredSubgroupSizeStages_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceSubgroupSizeControlPropertiesEXT( PhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSubgroupSizeControlPropertiesEXT( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceSubgroupSizeControlPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSubgroupSizeControlPropertiesEXT & operator=( PhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSubgroupSizeControlPropertiesEXT & operator=( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - - operator VkPhysicalDeviceSubgroupSizeControlPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSubgroupSizeControlPropertiesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSubgroupSizeControlPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceSubgroupSizeControlPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( minSubgroupSize == rhs.minSubgroupSize ) - && ( maxSubgroupSize == rhs.maxSubgroupSize ) - && ( maxComputeWorkgroupSubgroups == rhs.maxComputeWorkgroupSubgroups ) - && ( requiredSubgroupSizeStages == rhs.requiredSubgroupSizeStages ); - } - - bool operator!=( PhysicalDeviceSubgroupSizeControlPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSubgroupSizeControlPropertiesEXT; - void* pNext = {}; - uint32_t minSubgroupSize = {}; - uint32_t maxSubgroupSize = {}; - uint32_t maxComputeWorkgroupSubgroups = {}; - VULKAN_HPP_NAMESPACE::ShaderStageFlags requiredSubgroupSizeStages = {}; - - }; - static_assert( sizeof( PhysicalDeviceSubgroupSizeControlPropertiesEXT ) == sizeof( VkPhysicalDeviceSubgroupSizeControlPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSubgroupSizeControlPropertiesEXT; - }; - - struct PhysicalDeviceSynchronization2FeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceSynchronization2FeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2FeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ = {}) VULKAN_HPP_NOEXCEPT - : synchronization2( synchronization2_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceSynchronization2FeaturesKHR( PhysicalDeviceSynchronization2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSynchronization2FeaturesKHR( VkPhysicalDeviceSynchronization2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceSynchronization2FeaturesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceSynchronization2FeaturesKHR & operator=( PhysicalDeviceSynchronization2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceSynchronization2FeaturesKHR & operator=( VkPhysicalDeviceSynchronization2FeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceSynchronization2FeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceSynchronization2FeaturesKHR & setSynchronization2( VULKAN_HPP_NAMESPACE::Bool32 synchronization2_ ) VULKAN_HPP_NOEXCEPT - { - synchronization2 = synchronization2_; - return *this; - } - - - operator VkPhysicalDeviceSynchronization2FeaturesKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceSynchronization2FeaturesKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceSynchronization2FeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceSynchronization2FeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( synchronization2 == rhs.synchronization2 ); - } - - bool operator!=( PhysicalDeviceSynchronization2FeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceSynchronization2FeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 synchronization2 = {}; - - }; - static_assert( sizeof( PhysicalDeviceSynchronization2FeaturesKHR ) == sizeof( VkPhysicalDeviceSynchronization2FeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceSynchronization2FeaturesKHR; - }; - - struct PhysicalDeviceTexelBufferAlignmentFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ = {}) VULKAN_HPP_NOEXCEPT - : texelBufferAlignment( texelBufferAlignment_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentFeaturesEXT( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceTexelBufferAlignmentFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT & operator=( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceTexelBufferAlignmentFeaturesEXT & setTexelBufferAlignment( VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment_ ) VULKAN_HPP_NOEXCEPT - { - texelBufferAlignment = texelBufferAlignment_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( texelBufferAlignment == rhs.texelBufferAlignment ); - } - - bool operator!=( PhysicalDeviceTexelBufferAlignmentFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 texelBufferAlignment = {}; - - }; - static_assert( sizeof( PhysicalDeviceTexelBufferAlignmentFeaturesEXT ) == sizeof( VkPhysicalDeviceTexelBufferAlignmentFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceTexelBufferAlignmentFeaturesEXT; - }; - - struct PhysicalDeviceTexelBufferAlignmentPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentPropertiesEXT(VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment_ = {}) VULKAN_HPP_NOEXCEPT - : storageTexelBufferOffsetAlignmentBytes( storageTexelBufferOffsetAlignmentBytes_ ), storageTexelBufferOffsetSingleTexelAlignment( storageTexelBufferOffsetSingleTexelAlignment_ ), uniformTexelBufferOffsetAlignmentBytes( uniformTexelBufferOffsetAlignmentBytes_ ), uniformTexelBufferOffsetSingleTexelAlignment( uniformTexelBufferOffsetSingleTexelAlignment_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceTexelBufferAlignmentPropertiesEXT( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTexelBufferAlignmentPropertiesEXT( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceTexelBufferAlignmentPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTexelBufferAlignmentPropertiesEXT & operator=( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTexelBufferAlignmentPropertiesEXT & operator=( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - - operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( storageTexelBufferOffsetAlignmentBytes == rhs.storageTexelBufferOffsetAlignmentBytes ) - && ( storageTexelBufferOffsetSingleTexelAlignment == rhs.storageTexelBufferOffsetSingleTexelAlignment ) - && ( uniformTexelBufferOffsetAlignmentBytes == rhs.uniformTexelBufferOffsetAlignmentBytes ) - && ( uniformTexelBufferOffsetSingleTexelAlignment == rhs.uniformTexelBufferOffsetSingleTexelAlignment ); - } - - bool operator!=( PhysicalDeviceTexelBufferAlignmentPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTexelBufferAlignmentPropertiesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DeviceSize storageTexelBufferOffsetAlignmentBytes = {}; - VULKAN_HPP_NAMESPACE::Bool32 storageTexelBufferOffsetSingleTexelAlignment = {}; - VULKAN_HPP_NAMESPACE::DeviceSize uniformTexelBufferOffsetAlignmentBytes = {}; - VULKAN_HPP_NAMESPACE::Bool32 uniformTexelBufferOffsetSingleTexelAlignment = {}; - - }; - static_assert( sizeof( PhysicalDeviceTexelBufferAlignmentPropertiesEXT ) == sizeof( VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceTexelBufferAlignmentPropertiesEXT; - }; - - struct PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ = {}) VULKAN_HPP_NOEXCEPT - : textureCompressionASTC_HDR( textureCompressionASTC_HDR_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & operator=( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & operator=( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT & setTextureCompressionASTC_HDR( VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR_ ) VULKAN_HPP_NOEXCEPT - { - textureCompressionASTC_HDR = textureCompressionASTC_HDR_; - return *this; - } - - - operator VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( textureCompressionASTC_HDR == rhs.textureCompressionASTC_HDR ); - } - - bool operator!=( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTextureCompressionAstcHdrFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 textureCompressionASTC_HDR = {}; - - }; - static_assert( sizeof( PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT ) == sizeof( VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; - }; - - struct PhysicalDeviceTimelineSemaphoreFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures(VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ = {}) VULKAN_HPP_NOEXCEPT - : timelineSemaphore( timelineSemaphore_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreFeatures( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTimelineSemaphoreFeatures( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceTimelineSemaphoreFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreFeatures & operator=( PhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTimelineSemaphoreFeatures & operator=( VkPhysicalDeviceTimelineSemaphoreFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceTimelineSemaphoreFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceTimelineSemaphoreFeatures & setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT - { - timelineSemaphore = timelineSemaphore_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceTimelineSemaphoreFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceTimelineSemaphoreFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( timelineSemaphore == rhs.timelineSemaphore ); - } - - bool operator!=( PhysicalDeviceTimelineSemaphoreFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore = {}; - - }; - static_assert( sizeof( PhysicalDeviceTimelineSemaphoreFeatures ) == sizeof( VkPhysicalDeviceTimelineSemaphoreFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceTimelineSemaphoreFeatures; - }; - using PhysicalDeviceTimelineSemaphoreFeaturesKHR = PhysicalDeviceTimelineSemaphoreFeatures; - - struct PhysicalDeviceTimelineSemaphoreProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties(uint64_t maxTimelineSemaphoreValueDifference_ = {}) VULKAN_HPP_NOEXCEPT - : maxTimelineSemaphoreValueDifference( maxTimelineSemaphoreValueDifference_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceTimelineSemaphoreProperties( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTimelineSemaphoreProperties( VkPhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceTimelineSemaphoreProperties( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTimelineSemaphoreProperties & operator=( PhysicalDeviceTimelineSemaphoreProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceTimelineSemaphoreProperties const& ) const = default; -#else - bool operator==( PhysicalDeviceTimelineSemaphoreProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxTimelineSemaphoreValueDifference == rhs.maxTimelineSemaphoreValueDifference ); - } - - bool operator!=( PhysicalDeviceTimelineSemaphoreProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTimelineSemaphoreProperties; - void* pNext = {}; - uint64_t maxTimelineSemaphoreValueDifference = {}; - - }; - static_assert( sizeof( PhysicalDeviceTimelineSemaphoreProperties ) == sizeof( VkPhysicalDeviceTimelineSemaphoreProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceTimelineSemaphoreProperties; - }; - using PhysicalDeviceTimelineSemaphorePropertiesKHR = PhysicalDeviceTimelineSemaphoreProperties; - - struct PhysicalDeviceTransformFeedbackFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ = {}, VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( PhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceTransformFeedbackFeaturesEXT & operator=( VkPhysicalDeviceTransformFeedbackFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceTransformFeedbackFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceTransformFeedbackFeaturesEXT & setTransformFeedback( VULKAN_HPP_NAMESPACE::Bool32 transformFeedback_ ) VULKAN_HPP_NOEXCEPT - { - transformFeedback = transformFeedback_; - return *this; - } - - PhysicalDeviceTransformFeedbackFeaturesEXT & setGeometryStreams( VULKAN_HPP_NAMESPACE::Bool32 geometryStreams_ ) VULKAN_HPP_NOEXCEPT - { - geometryStreams = geometryStreams_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceTransformFeedbackFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceTransformFeedbackFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( transformFeedback == rhs.transformFeedback ) - && ( geometryStreams == rhs.geometryStreams ); - } - - bool operator!=( PhysicalDeviceTransformFeedbackFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 transformFeedback = {}; - VULKAN_HPP_NAMESPACE::Bool32 geometryStreams = {}; - - }; - static_assert( sizeof( PhysicalDeviceTransformFeedbackFeaturesEXT ) == sizeof( VkPhysicalDeviceTransformFeedbackFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceTransformFeedbackFeaturesEXT; - }; - - struct PhysicalDeviceTransformFeedbackPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceTransformFeedbackPropertiesEXT(uint32_t maxTransformFeedbackStreams_ = {}, uint32_t maxTransformFeedbackBuffers_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize maxTransformFeedbackBufferSize_ = {}, uint32_t maxTransformFeedbackStreamDataSize_ = {}, uint32_t maxTransformFeedbackBufferDataSize_ = {}, uint32_t maxTransformFeedbackBufferDataStride_ = {}, VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackQueries_ = {}, VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackStreamsLinesTriangles_ = {}, VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackRasterizationStreamSelect_ = {}, VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackDraw_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceTransformFeedbackPropertiesEXT & operator=( PhysicalDeviceTransformFeedbackPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceTransformFeedbackPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceTransformFeedbackPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceTransformFeedbackPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceTransformFeedbackPropertiesEXT; - void* pNext = {}; - uint32_t maxTransformFeedbackStreams = {}; - uint32_t maxTransformFeedbackBuffers = {}; - VULKAN_HPP_NAMESPACE::DeviceSize maxTransformFeedbackBufferSize = {}; - uint32_t maxTransformFeedbackStreamDataSize = {}; - uint32_t maxTransformFeedbackBufferDataSize = {}; - uint32_t maxTransformFeedbackBufferDataStride = {}; - VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackQueries = {}; - VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackStreamsLinesTriangles = {}; - VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackRasterizationStreamSelect = {}; - VULKAN_HPP_NAMESPACE::Bool32 transformFeedbackDraw = {}; - - }; - static_assert( sizeof( PhysicalDeviceTransformFeedbackPropertiesEXT ) == sizeof( VkPhysicalDeviceTransformFeedbackPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceTransformFeedbackPropertiesEXT; - }; - - struct PhysicalDeviceUniformBufferStandardLayoutFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures(VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ = {}) VULKAN_HPP_NOEXCEPT - : uniformBufferStandardLayout( uniformBufferStandardLayout_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceUniformBufferStandardLayoutFeatures( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceUniformBufferStandardLayoutFeatures( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceUniformBufferStandardLayoutFeatures( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( PhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceUniformBufferStandardLayoutFeatures & operator=( VkPhysicalDeviceUniformBufferStandardLayoutFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceUniformBufferStandardLayoutFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceUniformBufferStandardLayoutFeatures & setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT - { - uniformBufferStandardLayout = uniformBufferStandardLayout_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceUniformBufferStandardLayoutFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceUniformBufferStandardLayoutFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( uniformBufferStandardLayout == rhs.uniformBufferStandardLayout ); - } - - bool operator!=( PhysicalDeviceUniformBufferStandardLayoutFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceUniformBufferStandardLayoutFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout = {}; - - }; - static_assert( sizeof( PhysicalDeviceUniformBufferStandardLayoutFeatures ) == sizeof( VkPhysicalDeviceUniformBufferStandardLayoutFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceUniformBufferStandardLayoutFeatures; - }; - using PhysicalDeviceUniformBufferStandardLayoutFeaturesKHR = PhysicalDeviceUniformBufferStandardLayoutFeatures; - - struct PhysicalDeviceVariablePointersFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVariablePointersFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceVariablePointersFeatures(VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVariablePointersFeatures & operator=( PhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceVariablePointersFeatures & operator=( VkPhysicalDeviceVariablePointersFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceVariablePointersFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceVariablePointersFeatures & setVariablePointersStorageBuffer( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT - { - variablePointersStorageBuffer = variablePointersStorageBuffer_; - return *this; - } - - PhysicalDeviceVariablePointersFeatures & setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT - { - variablePointers = variablePointers_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceVariablePointersFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceVariablePointersFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( variablePointersStorageBuffer == rhs.variablePointersStorageBuffer ) - && ( variablePointers == rhs.variablePointers ); - } - - bool operator!=( PhysicalDeviceVariablePointersFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVariablePointersFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer = {}; - VULKAN_HPP_NAMESPACE::Bool32 variablePointers = {}; - - }; - static_assert( sizeof( PhysicalDeviceVariablePointersFeatures ) == sizeof( VkPhysicalDeviceVariablePointersFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceVariablePointersFeatures; - }; - using PhysicalDeviceVariablePointerFeatures = PhysicalDeviceVariablePointersFeatures; - using PhysicalDeviceVariablePointerFeaturesKHR = PhysicalDeviceVariablePointersFeatures; - using PhysicalDeviceVariablePointersFeaturesKHR = PhysicalDeviceVariablePointersFeatures; - - struct PhysicalDeviceVertexAttributeDivisorFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ = {}) VULKAN_HPP_NOEXCEPT - : vertexAttributeInstanceRateDivisor( vertexAttributeInstanceRateDivisor_ ), vertexAttributeInstanceRateZeroDivisor( vertexAttributeInstanceRateZeroDivisor_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorFeaturesEXT( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceVertexAttributeDivisorFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorFeaturesEXT & operator=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT & operator=( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor_ ) VULKAN_HPP_NOEXCEPT - { - vertexAttributeInstanceRateDivisor = vertexAttributeInstanceRateDivisor_; - return *this; - } - - PhysicalDeviceVertexAttributeDivisorFeaturesEXT & setVertexAttributeInstanceRateZeroDivisor( VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor_ ) VULKAN_HPP_NOEXCEPT - { - vertexAttributeInstanceRateZeroDivisor = vertexAttributeInstanceRateZeroDivisor_; - return *this; - } - - - operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( vertexAttributeInstanceRateDivisor == rhs.vertexAttributeInstanceRateDivisor ) - && ( vertexAttributeInstanceRateZeroDivisor == rhs.vertexAttributeInstanceRateZeroDivisor ); - } - - bool operator!=( PhysicalDeviceVertexAttributeDivisorFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateDivisor = {}; - VULKAN_HPP_NAMESPACE::Bool32 vertexAttributeInstanceRateZeroDivisor = {}; - - }; - static_assert( sizeof( PhysicalDeviceVertexAttributeDivisorFeaturesEXT ) == sizeof( VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceVertexAttributeDivisorFeaturesEXT; - }; - - struct PhysicalDeviceVertexAttributeDivisorPropertiesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT(uint32_t maxVertexAttribDivisor_ = {}) VULKAN_HPP_NOEXCEPT - : maxVertexAttribDivisor( maxVertexAttribDivisor_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceVertexAttributeDivisorPropertiesEXT( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceVertexAttributeDivisorPropertiesEXT( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceVertexAttributeDivisorPropertiesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVertexAttributeDivisorPropertiesEXT & operator=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( maxVertexAttribDivisor == rhs.maxVertexAttribDivisor ); - } - - bool operator!=( PhysicalDeviceVertexAttributeDivisorPropertiesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVertexAttributeDivisorPropertiesEXT; - void* pNext = {}; - uint32_t maxVertexAttribDivisor = {}; - - }; - static_assert( sizeof( PhysicalDeviceVertexAttributeDivisorPropertiesEXT ) == sizeof( VkPhysicalDeviceVertexAttributeDivisorPropertiesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceVertexAttributeDivisorPropertiesEXT; - }; - - struct PhysicalDeviceVulkan11Features - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan11Features; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan11Features(VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiview_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ = {}, VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ = {}, VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Features & operator=( PhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceVulkan11Features & operator=( VkPhysicalDeviceVulkan11Features const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceVulkan11Features & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceVulkan11Features & setStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - storageBuffer16BitAccess = storageBuffer16BitAccess_; - return *this; - } - - PhysicalDeviceVulkan11Features & setUniformAndStorageBuffer16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - uniformAndStorageBuffer16BitAccess = uniformAndStorageBuffer16BitAccess_; - return *this; - } - - PhysicalDeviceVulkan11Features & setStoragePushConstant16( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16_ ) VULKAN_HPP_NOEXCEPT - { - storagePushConstant16 = storagePushConstant16_; - return *this; - } - - PhysicalDeviceVulkan11Features & setStorageInputOutput16( VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16_ ) VULKAN_HPP_NOEXCEPT - { - storageInputOutput16 = storageInputOutput16_; - return *this; - } - - PhysicalDeviceVulkan11Features & setMultiview( VULKAN_HPP_NAMESPACE::Bool32 multiview_ ) VULKAN_HPP_NOEXCEPT - { - multiview = multiview_; - return *this; - } - - PhysicalDeviceVulkan11Features & setMultiviewGeometryShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader_ ) VULKAN_HPP_NOEXCEPT - { - multiviewGeometryShader = multiviewGeometryShader_; - return *this; - } - - PhysicalDeviceVulkan11Features & setMultiviewTessellationShader( VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader_ ) VULKAN_HPP_NOEXCEPT - { - multiviewTessellationShader = multiviewTessellationShader_; - return *this; - } - - PhysicalDeviceVulkan11Features & setVariablePointersStorageBuffer( VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer_ ) VULKAN_HPP_NOEXCEPT - { - variablePointersStorageBuffer = variablePointersStorageBuffer_; - return *this; - } - - PhysicalDeviceVulkan11Features & setVariablePointers( VULKAN_HPP_NAMESPACE::Bool32 variablePointers_ ) VULKAN_HPP_NOEXCEPT - { - variablePointers = variablePointers_; - return *this; - } - - PhysicalDeviceVulkan11Features & setProtectedMemory( VULKAN_HPP_NAMESPACE::Bool32 protectedMemory_ ) VULKAN_HPP_NOEXCEPT - { - protectedMemory = protectedMemory_; - return *this; - } - - PhysicalDeviceVulkan11Features & setSamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion_ ) VULKAN_HPP_NOEXCEPT - { - samplerYcbcrConversion = samplerYcbcrConversion_; - return *this; - } - - PhysicalDeviceVulkan11Features & setShaderDrawParameters( VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters_ ) VULKAN_HPP_NOEXCEPT - { - shaderDrawParameters = shaderDrawParameters_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceVulkan11Features const& ) const = default; -#else - bool operator==( PhysicalDeviceVulkan11Features const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceVulkan11Features const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Features; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 storageBuffer16BitAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer16BitAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 storageInputOutput16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 multiview = {}; - VULKAN_HPP_NAMESPACE::Bool32 multiviewGeometryShader = {}; - VULKAN_HPP_NAMESPACE::Bool32 multiviewTessellationShader = {}; - VULKAN_HPP_NAMESPACE::Bool32 variablePointersStorageBuffer = {}; - VULKAN_HPP_NAMESPACE::Bool32 variablePointers = {}; - VULKAN_HPP_NAMESPACE::Bool32 protectedMemory = {}; - VULKAN_HPP_NAMESPACE::Bool32 samplerYcbcrConversion = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDrawParameters = {}; - - }; - static_assert( sizeof( PhysicalDeviceVulkan11Features ) == sizeof( VkPhysicalDeviceVulkan11Features ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceVulkan11Features; - }; - - struct PhysicalDeviceVulkan11Properties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan11Properties; - -#if !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_ = {}, VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid_ = {}, uint32_t subgroupSize_ = {}, VULKAN_HPP_NAMESPACE::ShaderStageFlags subgroupSupportedStages_ = {}, VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags subgroupSupportedOperations_ = {}, VULKAN_HPP_NAMESPACE::Bool32 subgroupQuadOperationsInAllStages_ = {}, VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior_ = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes, uint32_t maxMultiviewViewCount_ = {}, uint32_t maxMultiviewInstanceIndex_ = {}, VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault_ = {}, uint32_t maxPerSetDescriptors_ = {}, VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan11Properties & operator=( PhysicalDeviceVulkan11Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceVulkan11Properties const& ) const = default; -#else - bool operator==( PhysicalDeviceVulkan11Properties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceVulkan11Properties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan11Properties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceUUID = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverUUID = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D deviceLUID = {}; - uint32_t deviceNodeMask = {}; - VULKAN_HPP_NAMESPACE::Bool32 deviceLUIDValid = {}; - uint32_t subgroupSize = {}; - VULKAN_HPP_NAMESPACE::ShaderStageFlags subgroupSupportedStages = {}; - VULKAN_HPP_NAMESPACE::SubgroupFeatureFlags subgroupSupportedOperations = {}; - VULKAN_HPP_NAMESPACE::Bool32 subgroupQuadOperationsInAllStages = {}; - VULKAN_HPP_NAMESPACE::PointClippingBehavior pointClippingBehavior = VULKAN_HPP_NAMESPACE::PointClippingBehavior::eAllClipPlanes; - uint32_t maxMultiviewViewCount = {}; - uint32_t maxMultiviewInstanceIndex = {}; - VULKAN_HPP_NAMESPACE::Bool32 protectedNoFault = {}; - uint32_t maxPerSetDescriptors = {}; - VULKAN_HPP_NAMESPACE::DeviceSize maxMemoryAllocationSize = {}; - - }; - static_assert( sizeof( PhysicalDeviceVulkan11Properties ) == sizeof( VkPhysicalDeviceVulkan11Properties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceVulkan11Properties; - }; - - struct PhysicalDeviceVulkan12Features - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan12Features; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkan12Features(VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_ = {}, VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ = {}, VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ = {}, VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ = {}, VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_ = {}, VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ = {}, VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ = {}, VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ = {}, VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ = {}, VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_ = {}, VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Features & operator=( PhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceVulkan12Features & operator=( VkPhysicalDeviceVulkan12Features const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceVulkan12Features & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceVulkan12Features & setSamplerMirrorClampToEdge( VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge_ ) VULKAN_HPP_NOEXCEPT - { - samplerMirrorClampToEdge = samplerMirrorClampToEdge_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDrawIndirectCount( VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount_ ) VULKAN_HPP_NOEXCEPT - { - drawIndirectCount = drawIndirectCount_; - return *this; - } - - PhysicalDeviceVulkan12Features & setStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - storageBuffer8BitAccess = storageBuffer8BitAccess_; - return *this; - } - - PhysicalDeviceVulkan12Features & setUniformAndStorageBuffer8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - uniformAndStorageBuffer8BitAccess = uniformAndStorageBuffer8BitAccess_; - return *this; - } - - PhysicalDeviceVulkan12Features & setStoragePushConstant8( VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8_ ) VULKAN_HPP_NOEXCEPT - { - storagePushConstant8 = storagePushConstant8_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderBufferInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderBufferInt64Atomics = shaderBufferInt64Atomics_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderSharedInt64Atomics( VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics_ ) VULKAN_HPP_NOEXCEPT - { - shaderSharedInt64Atomics = shaderSharedInt64Atomics_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderFloat16( VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16_ ) VULKAN_HPP_NOEXCEPT - { - shaderFloat16 = shaderFloat16_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderInt8( VULKAN_HPP_NAMESPACE::Bool32 shaderInt8_ ) VULKAN_HPP_NOEXCEPT - { - shaderInt8 = shaderInt8_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorIndexing( VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing_ ) VULKAN_HPP_NOEXCEPT - { - descriptorIndexing = descriptorIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderInputAttachmentArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderInputAttachmentArrayDynamicIndexing = shaderInputAttachmentArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderUniformTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderUniformTexelBufferArrayDynamicIndexing = shaderUniformTexelBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderStorageTexelBufferArrayDynamicIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageTexelBufferArrayDynamicIndexing = shaderStorageTexelBufferArrayDynamicIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderUniformBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderUniformBufferArrayNonUniformIndexing = shaderUniformBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderSampledImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderSampledImageArrayNonUniformIndexing = shaderSampledImageArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderStorageBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageBufferArrayNonUniformIndexing = shaderStorageBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderStorageImageArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageImageArrayNonUniformIndexing = shaderStorageImageArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderInputAttachmentArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderInputAttachmentArrayNonUniformIndexing = shaderInputAttachmentArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderUniformTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderUniformTexelBufferArrayNonUniformIndexing = shaderUniformTexelBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderStorageTexelBufferArrayNonUniformIndexing( VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing_ ) VULKAN_HPP_NOEXCEPT - { - shaderStorageTexelBufferArrayNonUniformIndexing = shaderStorageTexelBufferArrayNonUniformIndexing_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorBindingUniformBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingUniformBufferUpdateAfterBind = descriptorBindingUniformBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorBindingSampledImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingSampledImageUpdateAfterBind = descriptorBindingSampledImageUpdateAfterBind_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorBindingStorageImageUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingStorageImageUpdateAfterBind = descriptorBindingStorageImageUpdateAfterBind_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorBindingStorageBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingStorageBufferUpdateAfterBind = descriptorBindingStorageBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorBindingUniformTexelBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingUniformTexelBufferUpdateAfterBind = descriptorBindingUniformTexelBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorBindingStorageTexelBufferUpdateAfterBind( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingStorageTexelBufferUpdateAfterBind = descriptorBindingStorageTexelBufferUpdateAfterBind_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorBindingUpdateUnusedWhilePending( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingUpdateUnusedWhilePending = descriptorBindingUpdateUnusedWhilePending_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorBindingPartiallyBound( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingPartiallyBound = descriptorBindingPartiallyBound_; - return *this; - } - - PhysicalDeviceVulkan12Features & setDescriptorBindingVariableDescriptorCount( VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount_ ) VULKAN_HPP_NOEXCEPT - { - descriptorBindingVariableDescriptorCount = descriptorBindingVariableDescriptorCount_; - return *this; - } - - PhysicalDeviceVulkan12Features & setRuntimeDescriptorArray( VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray_ ) VULKAN_HPP_NOEXCEPT - { - runtimeDescriptorArray = runtimeDescriptorArray_; - return *this; - } - - PhysicalDeviceVulkan12Features & setSamplerFilterMinmax( VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax_ ) VULKAN_HPP_NOEXCEPT - { - samplerFilterMinmax = samplerFilterMinmax_; - return *this; - } - - PhysicalDeviceVulkan12Features & setScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT - { - scalarBlockLayout = scalarBlockLayout_; - return *this; - } - - PhysicalDeviceVulkan12Features & setImagelessFramebuffer( VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer_ ) VULKAN_HPP_NOEXCEPT - { - imagelessFramebuffer = imagelessFramebuffer_; - return *this; - } - - PhysicalDeviceVulkan12Features & setUniformBufferStandardLayout( VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout_ ) VULKAN_HPP_NOEXCEPT - { - uniformBufferStandardLayout = uniformBufferStandardLayout_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderSubgroupExtendedTypes( VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes_ ) VULKAN_HPP_NOEXCEPT - { - shaderSubgroupExtendedTypes = shaderSubgroupExtendedTypes_; - return *this; - } - - PhysicalDeviceVulkan12Features & setSeparateDepthStencilLayouts( VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts_ ) VULKAN_HPP_NOEXCEPT - { - separateDepthStencilLayouts = separateDepthStencilLayouts_; - return *this; - } - - PhysicalDeviceVulkan12Features & setHostQueryReset( VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset_ ) VULKAN_HPP_NOEXCEPT - { - hostQueryReset = hostQueryReset_; - return *this; - } - - PhysicalDeviceVulkan12Features & setTimelineSemaphore( VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore_ ) VULKAN_HPP_NOEXCEPT - { - timelineSemaphore = timelineSemaphore_; - return *this; - } - - PhysicalDeviceVulkan12Features & setBufferDeviceAddress( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress_ ) VULKAN_HPP_NOEXCEPT - { - bufferDeviceAddress = bufferDeviceAddress_; - return *this; - } - - PhysicalDeviceVulkan12Features & setBufferDeviceAddressCaptureReplay( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay_ ) VULKAN_HPP_NOEXCEPT - { - bufferDeviceAddressCaptureReplay = bufferDeviceAddressCaptureReplay_; - return *this; - } - - PhysicalDeviceVulkan12Features & setBufferDeviceAddressMultiDevice( VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice_ ) VULKAN_HPP_NOEXCEPT - { - bufferDeviceAddressMultiDevice = bufferDeviceAddressMultiDevice_; - return *this; - } - - PhysicalDeviceVulkan12Features & setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT - { - vulkanMemoryModel = vulkanMemoryModel_; - return *this; - } - - PhysicalDeviceVulkan12Features & setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT - { - vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_; - return *this; - } - - PhysicalDeviceVulkan12Features & setVulkanMemoryModelAvailabilityVisibilityChains( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT - { - vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderOutputViewportIndex( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex_ ) VULKAN_HPP_NOEXCEPT - { - shaderOutputViewportIndex = shaderOutputViewportIndex_; - return *this; - } - - PhysicalDeviceVulkan12Features & setShaderOutputLayer( VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer_ ) VULKAN_HPP_NOEXCEPT - { - shaderOutputLayer = shaderOutputLayer_; - return *this; - } - - PhysicalDeviceVulkan12Features & setSubgroupBroadcastDynamicId( VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId_ ) VULKAN_HPP_NOEXCEPT - { - subgroupBroadcastDynamicId = subgroupBroadcastDynamicId_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceVulkan12Features const& ) const = default; -#else - bool operator==( PhysicalDeviceVulkan12Features const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( PhysicalDeviceVulkan12Features const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Features; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 samplerMirrorClampToEdge = {}; - VULKAN_HPP_NAMESPACE::Bool32 drawIndirectCount = {}; - VULKAN_HPP_NAMESPACE::Bool32 storageBuffer8BitAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 uniformAndStorageBuffer8BitAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 storagePushConstant8 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderBufferInt64Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSharedInt64Atomics = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInt8 = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayDynamicIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderUniformTexelBufferArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageTexelBufferArrayNonUniformIndexing = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformBufferUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingSampledImageUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageImageUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageBufferUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUniformTexelBufferUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingStorageTexelBufferUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingUpdateUnusedWhilePending = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingPartiallyBound = {}; - VULKAN_HPP_NAMESPACE::Bool32 descriptorBindingVariableDescriptorCount = {}; - VULKAN_HPP_NAMESPACE::Bool32 runtimeDescriptorArray = {}; - VULKAN_HPP_NAMESPACE::Bool32 samplerFilterMinmax = {}; - VULKAN_HPP_NAMESPACE::Bool32 scalarBlockLayout = {}; - VULKAN_HPP_NAMESPACE::Bool32 imagelessFramebuffer = {}; - VULKAN_HPP_NAMESPACE::Bool32 uniformBufferStandardLayout = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSubgroupExtendedTypes = {}; - VULKAN_HPP_NAMESPACE::Bool32 separateDepthStencilLayouts = {}; - VULKAN_HPP_NAMESPACE::Bool32 hostQueryReset = {}; - VULKAN_HPP_NAMESPACE::Bool32 timelineSemaphore = {}; - VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddress = {}; - VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressCaptureReplay = {}; - VULKAN_HPP_NAMESPACE::Bool32 bufferDeviceAddressMultiDevice = {}; - VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel = {}; - VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope = {}; - VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderOutputViewportIndex = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderOutputLayer = {}; - VULKAN_HPP_NAMESPACE::Bool32 subgroupBroadcastDynamicId = {}; - - }; - static_assert( sizeof( PhysicalDeviceVulkan12Features ) == sizeof( VkPhysicalDeviceVulkan12Features ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceVulkan12Features; - }; - - struct PhysicalDeviceVulkan12Properties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkan12Properties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties(VULKAN_HPP_NAMESPACE::DriverId driverID_ = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary, std::array const& driverName_ = {}, std::array const& driverInfo_ = {}, VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion_ = {}, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence_ = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64_ = {}, uint32_t maxUpdateAfterBindDescriptorsInAllPools_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative_ = {}, VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind_ = {}, VULKAN_HPP_NAMESPACE::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_ = {}, VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes_ = {}, VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone_ = {}, VULKAN_HPP_NAMESPACE::Bool32 independentResolve_ = {}, VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats_ = {}, VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping_ = {}, uint64_t maxTimelineSemaphoreValueDifference_ = {}, VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferIntegerColorSampleCounts_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkan12Properties & operator=( PhysicalDeviceVulkan12Properties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceVulkan12Properties const& ) const = default; -#else - bool operator==( PhysicalDeviceVulkan12Properties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( driverID == rhs.driverID ) - && ( driverName == rhs.driverName ) - && ( driverInfo == rhs.driverInfo ) - && ( 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 ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkan12Properties; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::DriverId driverID = VULKAN_HPP_NAMESPACE::DriverId::eAmdProprietary; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverName = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D driverInfo = {}; - VULKAN_HPP_NAMESPACE::ConformanceVersion conformanceVersion = {}; - VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence denormBehaviorIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly; - VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence roundingModeIndependence = VULKAN_HPP_NAMESPACE::ShaderFloatControlsIndependence::e32BitOnly; - VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSignedZeroInfNanPreserveFloat64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormPreserveFloat64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderDenormFlushToZeroFloat64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTEFloat64 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat16 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat32 = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderRoundingModeRTZFloat64 = {}; - uint32_t maxUpdateAfterBindDescriptorsInAllPools = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderUniformBufferArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderSampledImageArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageBufferArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderStorageImageArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderInputAttachmentArrayNonUniformIndexingNative = {}; - VULKAN_HPP_NAMESPACE::Bool32 robustBufferAccessUpdateAfterBind = {}; - VULKAN_HPP_NAMESPACE::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 = {}; - VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedDepthResolveModes = {}; - VULKAN_HPP_NAMESPACE::ResolveModeFlags supportedStencilResolveModes = {}; - VULKAN_HPP_NAMESPACE::Bool32 independentResolveNone = {}; - VULKAN_HPP_NAMESPACE::Bool32 independentResolve = {}; - VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxSingleComponentFormats = {}; - VULKAN_HPP_NAMESPACE::Bool32 filterMinmaxImageComponentMapping = {}; - uint64_t maxTimelineSemaphoreValueDifference = {}; - VULKAN_HPP_NAMESPACE::SampleCountFlags framebufferIntegerColorSampleCounts = {}; - - }; - static_assert( sizeof( PhysicalDeviceVulkan12Properties ) == sizeof( VkPhysicalDeviceVulkan12Properties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceVulkan12Properties; - }; - - struct PhysicalDeviceVulkanMemoryModelFeatures - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceVulkanMemoryModelFeatures(VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ = {}, VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceVulkanMemoryModelFeatures & operator=( PhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceVulkanMemoryModelFeatures & operator=( VkPhysicalDeviceVulkanMemoryModelFeatures const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceVulkanMemoryModelFeatures & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModel( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel_ ) VULKAN_HPP_NOEXCEPT - { - vulkanMemoryModel = vulkanMemoryModel_; - return *this; - } - - PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModelDeviceScope( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope_ ) VULKAN_HPP_NOEXCEPT - { - vulkanMemoryModelDeviceScope = vulkanMemoryModelDeviceScope_; - return *this; - } - - PhysicalDeviceVulkanMemoryModelFeatures & setVulkanMemoryModelAvailabilityVisibilityChains( VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains_ ) VULKAN_HPP_NOEXCEPT - { - vulkanMemoryModelAvailabilityVisibilityChains = vulkanMemoryModelAvailabilityVisibilityChains_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceVulkanMemoryModelFeatures const& ) const = default; -#else - bool operator==( PhysicalDeviceVulkanMemoryModelFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( vulkanMemoryModel == rhs.vulkanMemoryModel ) - && ( vulkanMemoryModelDeviceScope == rhs.vulkanMemoryModelDeviceScope ) - && ( vulkanMemoryModelAvailabilityVisibilityChains == rhs.vulkanMemoryModelAvailabilityVisibilityChains ); - } - - bool operator!=( PhysicalDeviceVulkanMemoryModelFeatures const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceVulkanMemoryModelFeatures; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModel = {}; - VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelDeviceScope = {}; - VULKAN_HPP_NAMESPACE::Bool32 vulkanMemoryModelAvailabilityVisibilityChains = {}; - - }; - static_assert( sizeof( PhysicalDeviceVulkanMemoryModelFeatures ) == sizeof( VkPhysicalDeviceVulkanMemoryModelFeatures ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceVulkanMemoryModelFeatures; - }; - using PhysicalDeviceVulkanMemoryModelFeaturesKHR = PhysicalDeviceVulkanMemoryModelFeatures; - - struct PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_ = {}, VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ = {}, VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_ = {}, VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & operator=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & operator=( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setWorkgroupMemoryExplicitLayout( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout_ ) VULKAN_HPP_NOEXCEPT - { - workgroupMemoryExplicitLayout = workgroupMemoryExplicitLayout_; - return *this; - } - - PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setWorkgroupMemoryExplicitLayoutScalarBlockLayout( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout_ ) VULKAN_HPP_NOEXCEPT - { - workgroupMemoryExplicitLayoutScalarBlockLayout = workgroupMemoryExplicitLayoutScalarBlockLayout_; - return *this; - } - - PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setWorkgroupMemoryExplicitLayout8BitAccess( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - workgroupMemoryExplicitLayout8BitAccess = workgroupMemoryExplicitLayout8BitAccess_; - return *this; - } - - PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR & setWorkgroupMemoryExplicitLayout16BitAccess( VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess_ ) VULKAN_HPP_NOEXCEPT - { - workgroupMemoryExplicitLayout16BitAccess = workgroupMemoryExplicitLayout16BitAccess_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( workgroupMemoryExplicitLayout == rhs.workgroupMemoryExplicitLayout ) - && ( workgroupMemoryExplicitLayoutScalarBlockLayout == rhs.workgroupMemoryExplicitLayoutScalarBlockLayout ) - && ( workgroupMemoryExplicitLayout8BitAccess == rhs.workgroupMemoryExplicitLayout8BitAccess ) - && ( workgroupMemoryExplicitLayout16BitAccess == rhs.workgroupMemoryExplicitLayout16BitAccess ); - } - - bool operator!=( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout = {}; - VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayoutScalarBlockLayout = {}; - VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout8BitAccess = {}; - VULKAN_HPP_NAMESPACE::Bool32 workgroupMemoryExplicitLayout16BitAccess = {}; - - }; - static_assert( sizeof( PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ) == sizeof( VkPhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceWorkgroupMemoryExplicitLayoutFeaturesKHR; - }; - - struct PhysicalDeviceYcbcrImageArraysFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT(VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ = {}) VULKAN_HPP_NOEXCEPT - : ycbcrImageArrays( ycbcrImageArrays_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceYcbcrImageArraysFeaturesEXT( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceYcbcrImageArraysFeaturesEXT( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceYcbcrImageArraysFeaturesEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceYcbcrImageArraysFeaturesEXT & operator=( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceYcbcrImageArraysFeaturesEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceYcbcrImageArraysFeaturesEXT & setYcbcrImageArrays( VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays_ ) VULKAN_HPP_NOEXCEPT - { - ycbcrImageArrays = ycbcrImageArrays_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceYcbcrImageArraysFeaturesEXT const& ) const = default; -#else - bool operator==( PhysicalDeviceYcbcrImageArraysFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( ycbcrImageArrays == rhs.ycbcrImageArrays ); - } - - bool operator!=( PhysicalDeviceYcbcrImageArraysFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceYcbcrImageArraysFeaturesEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 ycbcrImageArrays = {}; - - }; - static_assert( sizeof( PhysicalDeviceYcbcrImageArraysFeaturesEXT ) == sizeof( VkPhysicalDeviceYcbcrImageArraysFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceYcbcrImageArraysFeaturesEXT; - }; - - struct PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR(VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ = {}) VULKAN_HPP_NOEXCEPT - : shaderZeroInitializeWorkgroupMemory( shaderZeroInitializeWorkgroupMemory_ ) - {} - - VULKAN_HPP_CONSTEXPR PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR & operator=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR & operator=( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR & setShaderZeroInitializeWorkgroupMemory( VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory_ ) VULKAN_HPP_NOEXCEPT - { - shaderZeroInitializeWorkgroupMemory = shaderZeroInitializeWorkgroupMemory_; - return *this; - } - - - operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const& ) const = default; -#else - bool operator==( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shaderZeroInitializeWorkgroupMemory == rhs.shaderZeroInitializeWorkgroupMemory ); - } - - bool operator!=( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shaderZeroInitializeWorkgroupMemory = {}; - - }; - static_assert( sizeof( PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR ) == sizeof( VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; - }; - - struct PipelineColorBlendAdvancedStateCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineColorBlendAdvancedStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ = {}, VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ = {}, VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( PipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineColorBlendAdvancedStateCreateInfoEXT & operator=( VkPipelineColorBlendAdvancedStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineColorBlendAdvancedStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineColorBlendAdvancedStateCreateInfoEXT & setSrcPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied_ ) VULKAN_HPP_NOEXCEPT - { - srcPremultiplied = srcPremultiplied_; - return *this; - } - - PipelineColorBlendAdvancedStateCreateInfoEXT & setDstPremultiplied( VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied_ ) VULKAN_HPP_NOEXCEPT - { - dstPremultiplied = dstPremultiplied_; - return *this; - } - - PipelineColorBlendAdvancedStateCreateInfoEXT & setBlendOverlap( VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap_ ) VULKAN_HPP_NOEXCEPT - { - blendOverlap = blendOverlap_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineColorBlendAdvancedStateCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( srcPremultiplied == rhs.srcPremultiplied ) - && ( dstPremultiplied == rhs.dstPremultiplied ) - && ( blendOverlap == rhs.blendOverlap ); - } - - bool operator!=( PipelineColorBlendAdvancedStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineColorBlendAdvancedStateCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 srcPremultiplied = {}; - VULKAN_HPP_NAMESPACE::Bool32 dstPremultiplied = {}; - VULKAN_HPP_NAMESPACE::BlendOverlapEXT blendOverlap = VULKAN_HPP_NAMESPACE::BlendOverlapEXT::eUncorrelated; - - }; - static_assert( sizeof( PipelineColorBlendAdvancedStateCreateInfoEXT ) == sizeof( VkPipelineColorBlendAdvancedStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineColorBlendAdvancedStateCreateInfoEXT; - }; - - struct PipelineCompilerControlCreateInfoAMD - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCompilerControlCreateInfoAMD; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD(VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ = {}) VULKAN_HPP_NOEXCEPT - : compilerControlFlags( compilerControlFlags_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineCompilerControlCreateInfoAMD( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCompilerControlCreateInfoAMD( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineCompilerControlCreateInfoAMD( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineCompilerControlCreateInfoAMD & operator=( PipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCompilerControlCreateInfoAMD & operator=( VkPipelineCompilerControlCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineCompilerControlCreateInfoAMD & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineCompilerControlCreateInfoAMD & setCompilerControlFlags( VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags_ ) VULKAN_HPP_NOEXCEPT - { - compilerControlFlags = compilerControlFlags_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineCompilerControlCreateInfoAMD const& ) const = default; -#else - bool operator==( PipelineCompilerControlCreateInfoAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( compilerControlFlags == rhs.compilerControlFlags ); - } - - bool operator!=( PipelineCompilerControlCreateInfoAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCompilerControlCreateInfoAMD; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCompilerControlFlagsAMD compilerControlFlags = {}; - - }; - static_assert( sizeof( PipelineCompilerControlCreateInfoAMD ) == sizeof( VkPipelineCompilerControlCreateInfoAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineCompilerControlCreateInfoAMD; - }; - - struct PipelineCoverageModulationStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCoverageModulationStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineCoverageModulationStateCreateInfoNV(VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_ = {}, VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_ = VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone, VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_ = {}, uint32_t coverageModulationTableCount_ = {}, const float* pCoverageModulationTable_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_, VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_, VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & coverageModulationTable_ ) - : flags( flags_ ), coverageModulationMode( coverageModulationMode_ ), coverageModulationTableEnable( coverageModulationTableEnable_ ), coverageModulationTableCount( static_cast( coverageModulationTable_.size() ) ), pCoverageModulationTable( coverageModulationTable_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineCoverageModulationStateCreateInfoNV & operator=( PipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCoverageModulationStateCreateInfoNV & operator=( VkPipelineCoverageModulationStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationMode( VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode_ ) VULKAN_HPP_NOEXCEPT - { - coverageModulationMode = coverageModulationMode_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTableEnable( VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable_ ) VULKAN_HPP_NOEXCEPT - { - coverageModulationTableEnable = coverageModulationTableEnable_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTableCount( uint32_t coverageModulationTableCount_ ) VULKAN_HPP_NOEXCEPT - { - coverageModulationTableCount = coverageModulationTableCount_; - return *this; - } - - PipelineCoverageModulationStateCreateInfoNV & setPCoverageModulationTable( const float* pCoverageModulationTable_ ) VULKAN_HPP_NOEXCEPT - { - pCoverageModulationTable = pCoverageModulationTable_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineCoverageModulationStateCreateInfoNV & setCoverageModulationTable( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & coverageModulationTable_ ) VULKAN_HPP_NOEXCEPT - { - coverageModulationTableCount = static_cast( coverageModulationTable_.size() ); - pCoverageModulationTable = coverageModulationTable_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineCoverageModulationStateCreateInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCoverageModulationStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineCoverageModulationStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( coverageModulationMode == rhs.coverageModulationMode ) - && ( coverageModulationTableEnable == rhs.coverageModulationTableEnable ) - && ( coverageModulationTableCount == rhs.coverageModulationTableCount ) - && ( pCoverageModulationTable == rhs.pCoverageModulationTable ); - } - - bool operator!=( PipelineCoverageModulationStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageModulationStateCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCoverageModulationStateCreateFlagsNV flags = {}; - VULKAN_HPP_NAMESPACE::CoverageModulationModeNV coverageModulationMode = VULKAN_HPP_NAMESPACE::CoverageModulationModeNV::eNone; - VULKAN_HPP_NAMESPACE::Bool32 coverageModulationTableEnable = {}; - uint32_t coverageModulationTableCount = {}; - const float* pCoverageModulationTable = {}; - - }; - static_assert( sizeof( PipelineCoverageModulationStateCreateInfoNV ) == sizeof( VkPipelineCoverageModulationStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineCoverageModulationStateCreateInfoNV; - }; - - struct PipelineCoverageReductionStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCoverageReductionStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineCoverageReductionStateCreateInfoNV(VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_ = {}, VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineCoverageReductionStateCreateInfoNV & operator=( PipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCoverageReductionStateCreateInfoNV & operator=( VkPipelineCoverageReductionStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineCoverageReductionStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineCoverageReductionStateCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineCoverageReductionStateCreateInfoNV & setCoverageReductionMode( VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode_ ) VULKAN_HPP_NOEXCEPT - { - coverageReductionMode = coverageReductionMode_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineCoverageReductionStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineCoverageReductionStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( coverageReductionMode == rhs.coverageReductionMode ); - } - - bool operator!=( PipelineCoverageReductionStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageReductionStateCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCoverageReductionStateCreateFlagsNV flags = {}; - VULKAN_HPP_NAMESPACE::CoverageReductionModeNV coverageReductionMode = VULKAN_HPP_NAMESPACE::CoverageReductionModeNV::eMerge; - - }; - static_assert( sizeof( PipelineCoverageReductionStateCreateInfoNV ) == sizeof( VkPipelineCoverageReductionStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineCoverageReductionStateCreateInfoNV; - }; - - struct PipelineCoverageToColorStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCoverageToColorStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineCoverageToColorStateCreateInfoNV(VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_ = {}, VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable_ = {}, uint32_t coverageToColorLocation_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineCoverageToColorStateCreateInfoNV & operator=( PipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCoverageToColorStateCreateInfoNV & operator=( VkPipelineCoverageToColorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineCoverageToColorStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineCoverageToColorStateCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineCoverageToColorStateCreateInfoNV & setCoverageToColorEnable( VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable_ ) VULKAN_HPP_NOEXCEPT - { - coverageToColorEnable = coverageToColorEnable_; - return *this; - } - - PipelineCoverageToColorStateCreateInfoNV & setCoverageToColorLocation( uint32_t coverageToColorLocation_ ) VULKAN_HPP_NOEXCEPT - { - coverageToColorLocation = coverageToColorLocation_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineCoverageToColorStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( coverageToColorEnable == rhs.coverageToColorEnable ) - && ( coverageToColorLocation == rhs.coverageToColorLocation ); - } - - bool operator!=( PipelineCoverageToColorStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCoverageToColorStateCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCoverageToColorStateCreateFlagsNV flags = {}; - VULKAN_HPP_NAMESPACE::Bool32 coverageToColorEnable = {}; - uint32_t coverageToColorLocation = {}; - - }; - static_assert( sizeof( PipelineCoverageToColorStateCreateInfoNV ) == sizeof( VkPipelineCoverageToColorStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineCoverageToColorStateCreateInfoNV; - }; - - struct PipelineCreationFeedbackEXT - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackEXT(VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlagsEXT flags_ = {}, uint64_t duration_ = {}) VULKAN_HPP_NOEXCEPT - : flags( flags_ ), duration( duration_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackEXT( PipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCreationFeedbackEXT( VkPipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineCreationFeedbackEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackEXT & operator=( PipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCreationFeedbackEXT & operator=( VkPipelineCreationFeedbackEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - - operator VkPipelineCreationFeedbackEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCreationFeedbackEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineCreationFeedbackEXT const& ) const = default; -#else - bool operator==( PipelineCreationFeedbackEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( flags == rhs.flags ) - && ( duration == rhs.duration ); - } - - bool operator!=( PipelineCreationFeedbackEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackFlagsEXT flags = {}; - uint64_t duration = {}; - - }; - static_assert( sizeof( PipelineCreationFeedbackEXT ) == sizeof( VkPipelineCreationFeedbackEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineCreationFeedbackCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineCreationFeedbackCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfoEXT(VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT* pPipelineCreationFeedback_ = {}, uint32_t pipelineStageCreationFeedbackCount_ = {}, VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks_ = {}) VULKAN_HPP_NOEXCEPT - : pPipelineCreationFeedback( pPipelineCreationFeedback_ ), pipelineStageCreationFeedbackCount( pipelineStageCreationFeedbackCount_ ), pPipelineStageCreationFeedbacks( pPipelineStageCreationFeedbacks_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineCreationFeedbackCreateInfoEXT( PipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCreationFeedbackCreateInfoEXT( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineCreationFeedbackCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineCreationFeedbackCreateInfoEXT( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT* pPipelineCreationFeedback_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pipelineStageCreationFeedbacks_ ) - : pPipelineCreationFeedback( pPipelineCreationFeedback_ ), pipelineStageCreationFeedbackCount( static_cast( pipelineStageCreationFeedbacks_.size() ) ), pPipelineStageCreationFeedbacks( pipelineStageCreationFeedbacks_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineCreationFeedbackCreateInfoEXT & operator=( PipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineCreationFeedbackCreateInfoEXT & operator=( VkPipelineCreationFeedbackCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineCreationFeedbackCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineCreationFeedbackCreateInfoEXT & setPPipelineCreationFeedback( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT* pPipelineCreationFeedback_ ) VULKAN_HPP_NOEXCEPT - { - pPipelineCreationFeedback = pPipelineCreationFeedback_; - return *this; - } - - PipelineCreationFeedbackCreateInfoEXT & setPipelineStageCreationFeedbackCount( uint32_t pipelineStageCreationFeedbackCount_ ) VULKAN_HPP_NOEXCEPT - { - pipelineStageCreationFeedbackCount = pipelineStageCreationFeedbackCount_; - return *this; - } - - PipelineCreationFeedbackCreateInfoEXT & setPPipelineStageCreationFeedbacks( VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT - { - pPipelineStageCreationFeedbacks = pPipelineStageCreationFeedbacks_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineCreationFeedbackCreateInfoEXT & setPipelineStageCreationFeedbacks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & pipelineStageCreationFeedbacks_ ) VULKAN_HPP_NOEXCEPT - { - pipelineStageCreationFeedbackCount = static_cast( pipelineStageCreationFeedbacks_.size() ); - pPipelineStageCreationFeedbacks = pipelineStageCreationFeedbacks_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineCreationFeedbackCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineCreationFeedbackCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineCreationFeedbackCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineCreationFeedbackCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( pPipelineCreationFeedback == rhs.pPipelineCreationFeedback ) - && ( pipelineStageCreationFeedbackCount == rhs.pipelineStageCreationFeedbackCount ) - && ( pPipelineStageCreationFeedbacks == rhs.pPipelineStageCreationFeedbacks ); - } - - bool operator!=( PipelineCreationFeedbackCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineCreationFeedbackCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT* pPipelineCreationFeedback = {}; - uint32_t pipelineStageCreationFeedbackCount = {}; - VULKAN_HPP_NAMESPACE::PipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks = {}; - - }; - static_assert( sizeof( PipelineCreationFeedbackCreateInfoEXT ) == sizeof( VkPipelineCreationFeedbackCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineCreationFeedbackCreateInfoEXT; - }; - - struct PipelineDiscardRectangleStateCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineDiscardRectangleStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ = {}, VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_ = VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive, uint32_t discardRectangleCount_ = {}, const VULKAN_HPP_NAMESPACE::Rect2D* pDiscardRectangles_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_, VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & discardRectangles_ ) - : flags( flags_ ), discardRectangleMode( discardRectangleMode_ ), discardRectangleCount( static_cast( discardRectangles_.size() ) ), pDiscardRectangles( discardRectangles_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineDiscardRectangleStateCreateInfoEXT & operator=( PipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineDiscardRectangleStateCreateInfoEXT & operator=( VkPipelineDiscardRectangleStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleMode( VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode_ ) VULKAN_HPP_NOEXCEPT - { - discardRectangleMode = discardRectangleMode_; - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangleCount( uint32_t discardRectangleCount_ ) VULKAN_HPP_NOEXCEPT - { - discardRectangleCount = discardRectangleCount_; - return *this; - } - - PipelineDiscardRectangleStateCreateInfoEXT & setPDiscardRectangles( const VULKAN_HPP_NAMESPACE::Rect2D* pDiscardRectangles_ ) VULKAN_HPP_NOEXCEPT - { - pDiscardRectangles = pDiscardRectangles_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineDiscardRectangleStateCreateInfoEXT & setDiscardRectangles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & discardRectangles_ ) VULKAN_HPP_NOEXCEPT - { - discardRectangleCount = static_cast( discardRectangles_.size() ); - pDiscardRectangles = discardRectangles_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineDiscardRectangleStateCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineDiscardRectangleStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineDiscardRectangleStateCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( discardRectangleMode == rhs.discardRectangleMode ) - && ( discardRectangleCount == rhs.discardRectangleCount ) - && ( pDiscardRectangles == rhs.pDiscardRectangles ); - } - - bool operator!=( PipelineDiscardRectangleStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineDiscardRectangleStateCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineDiscardRectangleStateCreateFlagsEXT flags = {}; - VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT discardRectangleMode = VULKAN_HPP_NAMESPACE::DiscardRectangleModeEXT::eInclusive; - uint32_t discardRectangleCount = {}; - const VULKAN_HPP_NAMESPACE::Rect2D* pDiscardRectangles = {}; - - }; - static_assert( sizeof( PipelineDiscardRectangleStateCreateInfoEXT ) == sizeof( VkPipelineDiscardRectangleStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineDiscardRectangleStateCreateInfoEXT; - }; - - struct PipelineFragmentShadingRateEnumStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV(VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ = VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize, VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate_ = VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel, std::array const& combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep, VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } }) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( PipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineFragmentShadingRateEnumStateCreateInfoNV & operator=( VkPipelineFragmentShadingRateEnumStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineFragmentShadingRateEnumStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineFragmentShadingRateEnumStateCreateInfoNV & setShadingRateType( VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType_ ) VULKAN_HPP_NOEXCEPT - { - shadingRateType = shadingRateType_; - return *this; - } - - PipelineFragmentShadingRateEnumStateCreateInfoNV & setShadingRate( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate_ ) VULKAN_HPP_NOEXCEPT - { - shadingRate = shadingRate_; - return *this; - } - - PipelineFragmentShadingRateEnumStateCreateInfoNV & setCombinerOps( std::array combinerOps_ ) VULKAN_HPP_NOEXCEPT - { - combinerOps = combinerOps_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineFragmentShadingRateEnumStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineFragmentShadingRateEnumStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shadingRateType == rhs.shadingRateType ) - && ( shadingRate == rhs.shadingRate ) - && ( combinerOps == rhs.combinerOps ); - } - - bool operator!=( PipelineFragmentShadingRateEnumStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateEnumStateCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV shadingRateType = VULKAN_HPP_NAMESPACE::FragmentShadingRateTypeNV::eFragmentSize; - VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate = VULKAN_HPP_NAMESPACE::FragmentShadingRateNV::e1InvocationPerPixel; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D combinerOps = {}; - - }; - static_assert( sizeof( PipelineFragmentShadingRateEnumStateCreateInfoNV ) == sizeof( VkPipelineFragmentShadingRateEnumStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineFragmentShadingRateEnumStateCreateInfoNV; - }; - - struct PipelineFragmentShadingRateStateCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR(VULKAN_HPP_NAMESPACE::Extent2D fragmentSize_ = {}, std::array const& combinerOps_ = { { VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep, VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR::eKeep } }) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineFragmentShadingRateStateCreateInfoKHR & operator=( PipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineFragmentShadingRateStateCreateInfoKHR & operator=( VkPipelineFragmentShadingRateStateCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineFragmentShadingRateStateCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineFragmentShadingRateStateCreateInfoKHR & setFragmentSize( VULKAN_HPP_NAMESPACE::Extent2D const & fragmentSize_ ) VULKAN_HPP_NOEXCEPT - { - fragmentSize = fragmentSize_; - return *this; - } - - PipelineFragmentShadingRateStateCreateInfoKHR & setCombinerOps( std::array combinerOps_ ) VULKAN_HPP_NOEXCEPT - { - combinerOps = combinerOps_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineFragmentShadingRateStateCreateInfoKHR const& ) const = default; -#else - bool operator==( PipelineFragmentShadingRateStateCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentSize == rhs.fragmentSize ) - && ( combinerOps == rhs.combinerOps ); - } - - bool operator!=( PipelineFragmentShadingRateStateCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineFragmentShadingRateStateCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Extent2D fragmentSize = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D combinerOps = {}; - - }; - static_assert( sizeof( PipelineFragmentShadingRateStateCreateInfoKHR ) == sizeof( VkPipelineFragmentShadingRateStateCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineFragmentShadingRateStateCreateInfoKHR; - }; - - struct PipelineRasterizationConservativeStateCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineRasterizationConservativeStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ = {}, VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ = VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled, float extraPrimitiveOverestimationSize_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationConservativeStateCreateInfoEXT & operator=( PipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRasterizationConservativeStateCreateInfoEXT & operator=( VkPipelineRasterizationConservativeStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineRasterizationConservativeStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationConservativeStateCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineRasterizationConservativeStateCreateInfoEXT & setConservativeRasterizationMode( VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode_ ) VULKAN_HPP_NOEXCEPT - { - conservativeRasterizationMode = conservativeRasterizationMode_; - return *this; - } - - PipelineRasterizationConservativeStateCreateInfoEXT & setExtraPrimitiveOverestimationSize( float extraPrimitiveOverestimationSize_ ) VULKAN_HPP_NOEXCEPT - { - extraPrimitiveOverestimationSize = extraPrimitiveOverestimationSize_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineRasterizationConservativeStateCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( conservativeRasterizationMode == rhs.conservativeRasterizationMode ) - && ( extraPrimitiveOverestimationSize == rhs.extraPrimitiveOverestimationSize ); - } - - bool operator!=( PipelineRasterizationConservativeStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationConservativeStateCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineRasterizationConservativeStateCreateFlagsEXT flags = {}; - VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT conservativeRasterizationMode = VULKAN_HPP_NAMESPACE::ConservativeRasterizationModeEXT::eDisabled; - float extraPrimitiveOverestimationSize = {}; - - }; - static_assert( sizeof( PipelineRasterizationConservativeStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationConservativeStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineRasterizationConservativeStateCreateInfoEXT; - }; - - struct PipelineRasterizationDepthClipStateCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineRasterizationDepthClipStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ = {}, VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( PipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRasterizationDepthClipStateCreateInfoEXT & operator=( VkPipelineRasterizationDepthClipStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineRasterizationDepthClipStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationDepthClipStateCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineRasterizationDepthClipStateCreateInfoEXT & setDepthClipEnable( VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable_ ) VULKAN_HPP_NOEXCEPT - { - depthClipEnable = depthClipEnable_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineRasterizationDepthClipStateCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineRasterizationDepthClipStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( depthClipEnable == rhs.depthClipEnable ); - } - - bool operator!=( PipelineRasterizationDepthClipStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationDepthClipStateCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineRasterizationDepthClipStateCreateFlagsEXT flags = {}; - VULKAN_HPP_NAMESPACE::Bool32 depthClipEnable = {}; - - }; - static_assert( sizeof( PipelineRasterizationDepthClipStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationDepthClipStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineRasterizationDepthClipStateCreateInfoEXT; - }; - - struct PipelineRasterizationLineStateCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationLineStateCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode_ = VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT::eDefault, VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ = {}, uint32_t lineStippleFactor_ = {}, uint16_t lineStipplePattern_ = {}) VULKAN_HPP_NOEXCEPT - : lineRasterizationMode( lineRasterizationMode_ ), stippledLineEnable( stippledLineEnable_ ), lineStippleFactor( lineStippleFactor_ ), lineStipplePattern( lineStipplePattern_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineRasterizationLineStateCreateInfoEXT( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRasterizationLineStateCreateInfoEXT( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineRasterizationLineStateCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationLineStateCreateInfoEXT & operator=( PipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRasterizationLineStateCreateInfoEXT & operator=( VkPipelineRasterizationLineStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setLineRasterizationMode( VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode_ ) VULKAN_HPP_NOEXCEPT - { - lineRasterizationMode = lineRasterizationMode_; - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setStippledLineEnable( VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable_ ) VULKAN_HPP_NOEXCEPT - { - stippledLineEnable = stippledLineEnable_; - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setLineStippleFactor( uint32_t lineStippleFactor_ ) VULKAN_HPP_NOEXCEPT - { - lineStippleFactor = lineStippleFactor_; - return *this; - } - - PipelineRasterizationLineStateCreateInfoEXT & setLineStipplePattern( uint16_t lineStipplePattern_ ) VULKAN_HPP_NOEXCEPT - { - lineStipplePattern = lineStipplePattern_; - return *this; - } - - - operator VkPipelineRasterizationLineStateCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineRasterizationLineStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineRasterizationLineStateCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineRasterizationLineStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( lineRasterizationMode == rhs.lineRasterizationMode ) - && ( stippledLineEnable == rhs.stippledLineEnable ) - && ( lineStippleFactor == rhs.lineStippleFactor ) - && ( lineStipplePattern == rhs.lineStipplePattern ); - } - - bool operator!=( PipelineRasterizationLineStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationLineStateCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT lineRasterizationMode = VULKAN_HPP_NAMESPACE::LineRasterizationModeEXT::eDefault; - VULKAN_HPP_NAMESPACE::Bool32 stippledLineEnable = {}; - uint32_t lineStippleFactor = {}; - uint16_t lineStipplePattern = {}; - - }; - static_assert( sizeof( PipelineRasterizationLineStateCreateInfoEXT ) == sizeof( VkPipelineRasterizationLineStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineRasterizationLineStateCreateInfoEXT; - }; - - struct PipelineRasterizationStateRasterizationOrderAMD - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD(VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ = VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict) VULKAN_HPP_NOEXCEPT - : rasterizationOrder( rasterizationOrder_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineRasterizationStateRasterizationOrderAMD( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRasterizationStateRasterizationOrderAMD( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineRasterizationStateRasterizationOrderAMD( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateRasterizationOrderAMD & operator=( PipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRasterizationStateRasterizationOrderAMD & operator=( VkPipelineRasterizationStateRasterizationOrderAMD const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineRasterizationStateRasterizationOrderAMD & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationStateRasterizationOrderAMD & setRasterizationOrder( VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder_ ) VULKAN_HPP_NOEXCEPT - { - rasterizationOrder = rasterizationOrder_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineRasterizationStateRasterizationOrderAMD const& ) const = default; -#else - bool operator==( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( rasterizationOrder == rhs.rasterizationOrder ); - } - - bool operator!=( PipelineRasterizationStateRasterizationOrderAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateRasterizationOrderAMD; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::RasterizationOrderAMD rasterizationOrder = VULKAN_HPP_NAMESPACE::RasterizationOrderAMD::eStrict; - - }; - static_assert( sizeof( PipelineRasterizationStateRasterizationOrderAMD ) == sizeof( VkPipelineRasterizationStateRasterizationOrderAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineRasterizationStateRasterizationOrderAMD; - }; - - struct PipelineRasterizationStateStreamCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineRasterizationStateStreamCreateInfoEXT(VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ = {}, uint32_t rasterizationStream_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineRasterizationStateStreamCreateInfoEXT & operator=( PipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRasterizationStateStreamCreateInfoEXT & operator=( VkPipelineRasterizationStateStreamCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineRasterizationStateStreamCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineRasterizationStateStreamCreateInfoEXT & setFlags( VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineRasterizationStateStreamCreateInfoEXT & setRasterizationStream( uint32_t rasterizationStream_ ) VULKAN_HPP_NOEXCEPT - { - rasterizationStream = rasterizationStream_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineRasterizationStateStreamCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineRasterizationStateStreamCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( rasterizationStream == rhs.rasterizationStream ); - } - - bool operator!=( PipelineRasterizationStateStreamCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRasterizationStateStreamCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineRasterizationStateStreamCreateFlagsEXT flags = {}; - uint32_t rasterizationStream = {}; - - }; - static_assert( sizeof( PipelineRasterizationStateStreamCreateInfoEXT ) == sizeof( VkPipelineRasterizationStateStreamCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineRasterizationStateStreamCreateInfoEXT; - }; - - struct PipelineRepresentativeFragmentTestStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV(VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ = {}) VULKAN_HPP_NOEXCEPT - : representativeFragmentTestEnable( representativeFragmentTestEnable_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineRepresentativeFragmentTestStateCreateInfoNV( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRepresentativeFragmentTestStateCreateInfoNV( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineRepresentativeFragmentTestStateCreateInfoNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineRepresentativeFragmentTestStateCreateInfoNV & operator=( PipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineRepresentativeFragmentTestStateCreateInfoNV & operator=( VkPipelineRepresentativeFragmentTestStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineRepresentativeFragmentTestStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineRepresentativeFragmentTestStateCreateInfoNV & setRepresentativeFragmentTestEnable( VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable_ ) VULKAN_HPP_NOEXCEPT - { - representativeFragmentTestEnable = representativeFragmentTestEnable_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineRepresentativeFragmentTestStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineRepresentativeFragmentTestStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( representativeFragmentTestEnable == rhs.representativeFragmentTestEnable ); - } - - bool operator!=( PipelineRepresentativeFragmentTestStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineRepresentativeFragmentTestStateCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 representativeFragmentTestEnable = {}; - - }; - static_assert( sizeof( PipelineRepresentativeFragmentTestStateCreateInfoNV ) == sizeof( VkPipelineRepresentativeFragmentTestStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineRepresentativeFragmentTestStateCreateInfoNV; - }; - - struct PipelineSampleLocationsStateCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineSampleLocationsStateCreateInfoEXT(VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable_ = {}, VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineSampleLocationsStateCreateInfoEXT & operator=( PipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineSampleLocationsStateCreateInfoEXT & operator=( VkPipelineSampleLocationsStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineSampleLocationsStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsEnable( VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationsEnable = sampleLocationsEnable_; - return *this; - } - - PipelineSampleLocationsStateCreateInfoEXT & setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationsInfo = sampleLocationsInfo_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineSampleLocationsStateCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sampleLocationsEnable == rhs.sampleLocationsEnable ) - && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); - } - - bool operator!=( PipelineSampleLocationsStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineSampleLocationsStateCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 sampleLocationsEnable = {}; - VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {}; - - }; - static_assert( sizeof( PipelineSampleLocationsStateCreateInfoEXT ) == sizeof( VkPipelineSampleLocationsStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineSampleLocationsStateCreateInfoEXT; - }; - - struct PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT(uint32_t requiredSubgroupSize_ = {}) VULKAN_HPP_NOEXCEPT - : requiredSubgroupSize( requiredSubgroupSize_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT & operator=( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT & operator=( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - - operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( requiredSubgroupSize == rhs.requiredSubgroupSize ); - } - - bool operator!=( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; - void* pNext = {}; - uint32_t requiredSubgroupSize = {}; - - }; - static_assert( sizeof( PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT ) == sizeof( VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; - }; - - struct PipelineTessellationDomainOriginStateCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo(VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ = VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft) VULKAN_HPP_NOEXCEPT - : domainOrigin( domainOrigin_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineTessellationDomainOriginStateCreateInfo( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineTessellationDomainOriginStateCreateInfo( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineTessellationDomainOriginStateCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineTessellationDomainOriginStateCreateInfo & operator=( PipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineTessellationDomainOriginStateCreateInfo & operator=( VkPipelineTessellationDomainOriginStateCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineTessellationDomainOriginStateCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineTessellationDomainOriginStateCreateInfo & setDomainOrigin( VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin_ ) VULKAN_HPP_NOEXCEPT - { - domainOrigin = domainOrigin_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineTessellationDomainOriginStateCreateInfo const& ) const = default; -#else - bool operator==( PipelineTessellationDomainOriginStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( domainOrigin == rhs.domainOrigin ); - } - - bool operator!=( PipelineTessellationDomainOriginStateCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineTessellationDomainOriginStateCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::TessellationDomainOrigin domainOrigin = VULKAN_HPP_NAMESPACE::TessellationDomainOrigin::eUpperLeft; - - }; - static_assert( sizeof( PipelineTessellationDomainOriginStateCreateInfo ) == sizeof( VkPipelineTessellationDomainOriginStateCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineTessellationDomainOriginStateCreateInfo; - }; - using PipelineTessellationDomainOriginStateCreateInfoKHR = PipelineTessellationDomainOriginStateCreateInfo; - - struct VertexInputBindingDivisorDescriptionEXT - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionEXT(uint32_t binding_ = {}, uint32_t divisor_ = {}) VULKAN_HPP_NOEXCEPT - : binding( binding_ ), divisor( divisor_ ) - {} - - VULKAN_HPP_CONSTEXPR VertexInputBindingDivisorDescriptionEXT( VertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - VertexInputBindingDivisorDescriptionEXT( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : VertexInputBindingDivisorDescriptionEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 VertexInputBindingDivisorDescriptionEXT & operator=( VertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - VertexInputBindingDivisorDescriptionEXT & operator=( VkVertexInputBindingDivisorDescriptionEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - VertexInputBindingDivisorDescriptionEXT & setBinding( uint32_t binding_ ) VULKAN_HPP_NOEXCEPT - { - binding = binding_; - return *this; - } - - VertexInputBindingDivisorDescriptionEXT & setDivisor( uint32_t divisor_ ) VULKAN_HPP_NOEXCEPT - { - divisor = divisor_; - return *this; - } - - - operator VkVertexInputBindingDivisorDescriptionEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkVertexInputBindingDivisorDescriptionEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( VertexInputBindingDivisorDescriptionEXT const& ) const = default; -#else - bool operator==( VertexInputBindingDivisorDescriptionEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( binding == rhs.binding ) - && ( divisor == rhs.divisor ); - } - - bool operator!=( VertexInputBindingDivisorDescriptionEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t binding = {}; - uint32_t divisor = {}; - - }; - static_assert( sizeof( VertexInputBindingDivisorDescriptionEXT ) == sizeof( VkVertexInputBindingDivisorDescriptionEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineVertexInputDivisorStateCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoEXT(uint32_t vertexBindingDivisorCount_ = {}, const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors_ = {}) VULKAN_HPP_NOEXCEPT - : vertexBindingDivisorCount( vertexBindingDivisorCount_ ), pVertexBindingDivisors( pVertexBindingDivisors_ ) - {} - - VULKAN_HPP_CONSTEXPR PipelineVertexInputDivisorStateCreateInfoEXT( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineVertexInputDivisorStateCreateInfoEXT( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : PipelineVertexInputDivisorStateCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineVertexInputDivisorStateCreateInfoEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & vertexBindingDivisors_ ) - : vertexBindingDivisorCount( static_cast( vertexBindingDivisors_.size() ) ), pVertexBindingDivisors( vertexBindingDivisors_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineVertexInputDivisorStateCreateInfoEXT & operator=( PipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineVertexInputDivisorStateCreateInfoEXT & operator=( VkPipelineVertexInputDivisorStateCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineVertexInputDivisorStateCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineVertexInputDivisorStateCreateInfoEXT & setVertexBindingDivisorCount( uint32_t vertexBindingDivisorCount_ ) VULKAN_HPP_NOEXCEPT - { - vertexBindingDivisorCount = vertexBindingDivisorCount_; - return *this; - } - - PipelineVertexInputDivisorStateCreateInfoEXT & setPVertexBindingDivisors( const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors_ ) VULKAN_HPP_NOEXCEPT - { - pVertexBindingDivisors = pVertexBindingDivisors_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineVertexInputDivisorStateCreateInfoEXT & setVertexBindingDivisors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & vertexBindingDivisors_ ) VULKAN_HPP_NOEXCEPT - { - vertexBindingDivisorCount = static_cast( vertexBindingDivisors_.size() ); - pVertexBindingDivisors = vertexBindingDivisors_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineVertexInputDivisorStateCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineVertexInputDivisorStateCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineVertexInputDivisorStateCreateInfoEXT const& ) const = default; -#else - bool operator==( PipelineVertexInputDivisorStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( vertexBindingDivisorCount == rhs.vertexBindingDivisorCount ) - && ( pVertexBindingDivisors == rhs.pVertexBindingDivisors ); - } - - bool operator!=( PipelineVertexInputDivisorStateCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineVertexInputDivisorStateCreateInfoEXT; - const void* pNext = {}; - uint32_t vertexBindingDivisorCount = {}; - const VULKAN_HPP_NAMESPACE::VertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors = {}; - - }; - static_assert( sizeof( PipelineVertexInputDivisorStateCreateInfoEXT ) == sizeof( VkPipelineVertexInputDivisorStateCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineVertexInputDivisorStateCreateInfoEXT; - }; - - struct PipelineViewportCoarseSampleOrderStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineViewportCoarseSampleOrderStateCreateInfoNV(VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_ = VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault, uint32_t customSampleOrderCount_ = {}, const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV* pCustomSampleOrders_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & customSampleOrders_ ) - : sampleOrderType( sampleOrderType_ ), customSampleOrderCount( static_cast( customSampleOrders_.size() ) ), pCustomSampleOrders( customSampleOrders_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineViewportCoarseSampleOrderStateCreateInfoNV & operator=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineViewportCoarseSampleOrderStateCreateInfoNV & operator=( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineViewportCoarseSampleOrderStateCreateInfoNV & setSampleOrderType( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType_ ) VULKAN_HPP_NOEXCEPT - { - sampleOrderType = sampleOrderType_; - return *this; - } - - PipelineViewportCoarseSampleOrderStateCreateInfoNV & setCustomSampleOrderCount( uint32_t customSampleOrderCount_ ) VULKAN_HPP_NOEXCEPT - { - customSampleOrderCount = customSampleOrderCount_; - return *this; - } - - PipelineViewportCoarseSampleOrderStateCreateInfoNV & setPCustomSampleOrders( const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV* pCustomSampleOrders_ ) VULKAN_HPP_NOEXCEPT - { - pCustomSampleOrders = pCustomSampleOrders_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineViewportCoarseSampleOrderStateCreateInfoNV & setCustomSampleOrders( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & customSampleOrders_ ) VULKAN_HPP_NOEXCEPT - { - customSampleOrderCount = static_cast( customSampleOrders_.size() ); - pCustomSampleOrders = customSampleOrders_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportCoarseSampleOrderStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineViewportCoarseSampleOrderStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineViewportCoarseSampleOrderStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sampleOrderType == rhs.sampleOrderType ) - && ( customSampleOrderCount == rhs.customSampleOrderCount ) - && ( pCustomSampleOrders == rhs.pCustomSampleOrders ); - } - - bool operator!=( PipelineViewportCoarseSampleOrderStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportCoarseSampleOrderStateCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType = VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV::eDefault; - uint32_t customSampleOrderCount = {}; - const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV* pCustomSampleOrders = {}; - - }; - static_assert( sizeof( PipelineViewportCoarseSampleOrderStateCreateInfoNV ) == sizeof( VkPipelineViewportCoarseSampleOrderStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineViewportCoarseSampleOrderStateCreateInfoNV; - }; - - struct PipelineViewportExclusiveScissorStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineViewportExclusiveScissorStateCreateInfoNV(uint32_t exclusiveScissorCount_ = {}, const VULKAN_HPP_NAMESPACE::Rect2D* pExclusiveScissors_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & exclusiveScissors_ ) - : exclusiveScissorCount( static_cast( exclusiveScissors_.size() ) ), pExclusiveScissors( exclusiveScissors_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineViewportExclusiveScissorStateCreateInfoNV & operator=( PipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineViewportExclusiveScissorStateCreateInfoNV & operator=( VkPipelineViewportExclusiveScissorStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineViewportExclusiveScissorStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineViewportExclusiveScissorStateCreateInfoNV & setExclusiveScissorCount( uint32_t exclusiveScissorCount_ ) VULKAN_HPP_NOEXCEPT - { - exclusiveScissorCount = exclusiveScissorCount_; - return *this; - } - - PipelineViewportExclusiveScissorStateCreateInfoNV & setPExclusiveScissors( const VULKAN_HPP_NAMESPACE::Rect2D* pExclusiveScissors_ ) VULKAN_HPP_NOEXCEPT - { - pExclusiveScissors = pExclusiveScissors_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineViewportExclusiveScissorStateCreateInfoNV & setExclusiveScissors( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & exclusiveScissors_ ) VULKAN_HPP_NOEXCEPT - { - exclusiveScissorCount = static_cast( exclusiveScissors_.size() ); - pExclusiveScissors = exclusiveScissors_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineViewportExclusiveScissorStateCreateInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportExclusiveScissorStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineViewportExclusiveScissorStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineViewportExclusiveScissorStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( exclusiveScissorCount == rhs.exclusiveScissorCount ) - && ( pExclusiveScissors == rhs.pExclusiveScissors ); - } - - bool operator!=( PipelineViewportExclusiveScissorStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportExclusiveScissorStateCreateInfoNV; - const void* pNext = {}; - uint32_t exclusiveScissorCount = {}; - const VULKAN_HPP_NAMESPACE::Rect2D* pExclusiveScissors = {}; - - }; - static_assert( sizeof( PipelineViewportExclusiveScissorStateCreateInfoNV ) == sizeof( VkPipelineViewportExclusiveScissorStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineViewportExclusiveScissorStateCreateInfoNV; - }; - - struct PipelineViewportShadingRateImageStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineViewportShadingRateImageStateCreateInfoNV(VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_ = {}, uint32_t viewportCount_ = {}, const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV* pShadingRatePalettes_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & shadingRatePalettes_ ) - : shadingRateImageEnable( shadingRateImageEnable_ ), viewportCount( static_cast( shadingRatePalettes_.size() ) ), pShadingRatePalettes( shadingRatePalettes_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineViewportShadingRateImageStateCreateInfoNV & operator=( PipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineViewportShadingRateImageStateCreateInfoNV & operator=( VkPipelineViewportShadingRateImageStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineViewportShadingRateImageStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineViewportShadingRateImageStateCreateInfoNV & setShadingRateImageEnable( VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable_ ) VULKAN_HPP_NOEXCEPT - { - shadingRateImageEnable = shadingRateImageEnable_; - return *this; - } - - PipelineViewportShadingRateImageStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT - { - viewportCount = viewportCount_; - return *this; - } - - PipelineViewportShadingRateImageStateCreateInfoNV & setPShadingRatePalettes( const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV* pShadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT - { - pShadingRatePalettes = pShadingRatePalettes_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineViewportShadingRateImageStateCreateInfoNV & setShadingRatePalettes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & shadingRatePalettes_ ) VULKAN_HPP_NOEXCEPT - { - viewportCount = static_cast( shadingRatePalettes_.size() ); - pShadingRatePalettes = shadingRatePalettes_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineViewportShadingRateImageStateCreateInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportShadingRateImageStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineViewportShadingRateImageStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineViewportShadingRateImageStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( shadingRateImageEnable == rhs.shadingRateImageEnable ) - && ( viewportCount == rhs.viewportCount ) - && ( pShadingRatePalettes == rhs.pShadingRatePalettes ); - } - - bool operator!=( PipelineViewportShadingRateImageStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportShadingRateImageStateCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 shadingRateImageEnable = {}; - uint32_t viewportCount = {}; - const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV* pShadingRatePalettes = {}; - - }; - static_assert( sizeof( PipelineViewportShadingRateImageStateCreateInfoNV ) == sizeof( VkPipelineViewportShadingRateImageStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineViewportShadingRateImageStateCreateInfoNV; - }; - - struct ViewportSwizzleNV - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ViewportSwizzleNV(VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX, VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX, VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX, VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ = VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ViewportSwizzleNV & operator=( ViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ViewportSwizzleNV & operator=( VkViewportSwizzleNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ViewportSwizzleNV & setX( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x_ ) VULKAN_HPP_NOEXCEPT - { - x = x_; - return *this; - } - - ViewportSwizzleNV & setY( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y_ ) VULKAN_HPP_NOEXCEPT - { - y = y_; - return *this; - } - - ViewportSwizzleNV & setZ( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z_ ) VULKAN_HPP_NOEXCEPT - { - z = z_; - return *this; - } - - ViewportSwizzleNV & setW( VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w_ ) VULKAN_HPP_NOEXCEPT - { - w = w_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ViewportSwizzleNV const& ) const = default; -#else - bool operator==( ViewportSwizzleNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( x == rhs.x ) - && ( y == rhs.y ) - && ( z == rhs.z ) - && ( w == rhs.w ); - } - - bool operator!=( ViewportSwizzleNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV x = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX; - VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV y = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX; - VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV z = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX; - VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV w = VULKAN_HPP_NAMESPACE::ViewportCoordinateSwizzleNV::ePositiveX; - - }; - static_assert( sizeof( ViewportSwizzleNV ) == sizeof( VkViewportSwizzleNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PipelineViewportSwizzleStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineViewportSwizzleStateCreateInfoNV(VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_ = {}, uint32_t viewportCount_ = {}, const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV* pViewportSwizzles_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewportSwizzles_ ) - : flags( flags_ ), viewportCount( static_cast( viewportSwizzles_.size() ) ), pViewportSwizzles( viewportSwizzles_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineViewportSwizzleStateCreateInfoNV & operator=( PipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineViewportSwizzleStateCreateInfoNV & operator=( VkPipelineViewportSwizzleStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineViewportSwizzleStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineViewportSwizzleStateCreateInfoNV & setFlags( VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - PipelineViewportSwizzleStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT - { - viewportCount = viewportCount_; - return *this; - } - - PipelineViewportSwizzleStateCreateInfoNV & setPViewportSwizzles( const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV* pViewportSwizzles_ ) VULKAN_HPP_NOEXCEPT - { - pViewportSwizzles = pViewportSwizzles_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineViewportSwizzleStateCreateInfoNV & setViewportSwizzles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewportSwizzles_ ) VULKAN_HPP_NOEXCEPT - { - viewportCount = static_cast( viewportSwizzles_.size() ); - pViewportSwizzles = viewportSwizzles_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineViewportSwizzleStateCreateInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportSwizzleStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineViewportSwizzleStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( viewportCount == rhs.viewportCount ) - && ( pViewportSwizzles == rhs.pViewportSwizzles ); - } - - bool operator!=( PipelineViewportSwizzleStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportSwizzleStateCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineViewportSwizzleStateCreateFlagsNV flags = {}; - uint32_t viewportCount = {}; - const VULKAN_HPP_NAMESPACE::ViewportSwizzleNV* pViewportSwizzles = {}; - - }; - static_assert( sizeof( PipelineViewportSwizzleStateCreateInfoNV ) == sizeof( VkPipelineViewportSwizzleStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineViewportSwizzleStateCreateInfoNV; - }; - - struct PipelineViewportWScalingStateCreateInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePipelineViewportWScalingStateCreateInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PipelineViewportWScalingStateCreateInfoNV(VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_ = {}, uint32_t viewportCount_ = {}, const VULKAN_HPP_NAMESPACE::ViewportWScalingNV* pViewportWScalings_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewportWScalings_ ) - : viewportWScalingEnable( viewportWScalingEnable_ ), viewportCount( static_cast( viewportWScalings_.size() ) ), pViewportWScalings( viewportWScalings_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PipelineViewportWScalingStateCreateInfoNV & operator=( PipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PipelineViewportWScalingStateCreateInfoNV & operator=( VkPipelineViewportWScalingStateCreateInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PipelineViewportWScalingStateCreateInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PipelineViewportWScalingStateCreateInfoNV & setViewportWScalingEnable( VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable_ ) VULKAN_HPP_NOEXCEPT - { - viewportWScalingEnable = viewportWScalingEnable_; - return *this; - } - - PipelineViewportWScalingStateCreateInfoNV & setViewportCount( uint32_t viewportCount_ ) VULKAN_HPP_NOEXCEPT - { - viewportCount = viewportCount_; - return *this; - } - - PipelineViewportWScalingStateCreateInfoNV & setPViewportWScalings( const VULKAN_HPP_NAMESPACE::ViewportWScalingNV* pViewportWScalings_ ) VULKAN_HPP_NOEXCEPT - { - pViewportWScalings = pViewportWScalings_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PipelineViewportWScalingStateCreateInfoNV & setViewportWScalings( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewportWScalings_ ) VULKAN_HPP_NOEXCEPT - { - viewportCount = static_cast( viewportWScalings_.size() ); - pViewportWScalings = viewportWScalings_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPipelineViewportWScalingStateCreateInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPipelineViewportWScalingStateCreateInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PipelineViewportWScalingStateCreateInfoNV const& ) const = default; -#else - bool operator==( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( viewportWScalingEnable == rhs.viewportWScalingEnable ) - && ( viewportCount == rhs.viewportCount ) - && ( pViewportWScalings == rhs.pViewportWScalings ); - } - - bool operator!=( PipelineViewportWScalingStateCreateInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePipelineViewportWScalingStateCreateInfoNV; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 viewportWScalingEnable = {}; - uint32_t viewportCount = {}; - const VULKAN_HPP_NAMESPACE::ViewportWScalingNV* pViewportWScalings = {}; - - }; - static_assert( sizeof( PipelineViewportWScalingStateCreateInfoNV ) == sizeof( VkPipelineViewportWScalingStateCreateInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PipelineViewportWScalingStateCreateInfoNV; - }; - -#ifdef VK_USE_PLATFORM_GGP - struct PresentFrameTokenGGP - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentFrameTokenGGP; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP(GgpFrameToken frameToken_ = {}) VULKAN_HPP_NOEXCEPT - : frameToken( frameToken_ ) - {} - - VULKAN_HPP_CONSTEXPR PresentFrameTokenGGP( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PresentFrameTokenGGP( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT - : PresentFrameTokenGGP( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PresentFrameTokenGGP & operator=( PresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PresentFrameTokenGGP & operator=( VkPresentFrameTokenGGP const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PresentFrameTokenGGP & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PresentFrameTokenGGP & setFrameToken( GgpFrameToken frameToken_ ) VULKAN_HPP_NOEXCEPT - { - frameToken = frameToken_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PresentFrameTokenGGP const& ) const = default; -#else - 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 ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentFrameTokenGGP; - const void* pNext = {}; - GgpFrameToken frameToken = {}; - - }; - static_assert( sizeof( PresentFrameTokenGGP ) == sizeof( VkPresentFrameTokenGGP ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PresentFrameTokenGGP; - }; -#endif /*VK_USE_PLATFORM_GGP*/ - - struct RectLayerKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RectLayerKHR(VULKAN_HPP_NAMESPACE::Offset2D offset_ = {}, VULKAN_HPP_NAMESPACE::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_ ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RectLayerKHR & operator=( RectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RectLayerKHR & operator=( VkRectLayerKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RectLayerKHR & setOffset( VULKAN_HPP_NAMESPACE::Offset2D const & offset_ ) VULKAN_HPP_NOEXCEPT - { - offset = offset_; - return *this; - } - - RectLayerKHR & setExtent( VULKAN_HPP_NAMESPACE::Extent2D const & extent_ ) VULKAN_HPP_NOEXCEPT - { - extent = extent_; - return *this; - } - - RectLayerKHR & setLayer( uint32_t layer_ ) VULKAN_HPP_NOEXCEPT - { - layer = layer_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RectLayerKHR const& ) const = default; -#else - bool operator==( RectLayerKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( offset == rhs.offset ) - && ( extent == rhs.extent ) - && ( layer == rhs.layer ); - } - - bool operator!=( RectLayerKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::Offset2D offset = {}; - VULKAN_HPP_NAMESPACE::Extent2D extent = {}; - uint32_t layer = {}; - - }; - static_assert( sizeof( RectLayerKHR ) == sizeof( VkRectLayerKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PresentRegionKHR - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PresentRegionKHR(uint32_t rectangleCount_ = {}, const VULKAN_HPP_NAMESPACE::RectLayerKHR* 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & rectangles_ ) - : rectangleCount( static_cast( rectangles_.size() ) ), pRectangles( rectangles_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PresentRegionKHR & operator=( PresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PresentRegionKHR & operator=( VkPresentRegionKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PresentRegionKHR & setRectangleCount( uint32_t rectangleCount_ ) VULKAN_HPP_NOEXCEPT - { - rectangleCount = rectangleCount_; - return *this; - } - - PresentRegionKHR & setPRectangles( const VULKAN_HPP_NAMESPACE::RectLayerKHR* pRectangles_ ) VULKAN_HPP_NOEXCEPT - { - pRectangles = pRectangles_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PresentRegionKHR & setRectangles( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & rectangles_ ) VULKAN_HPP_NOEXCEPT - { - rectangleCount = static_cast( rectangles_.size() ); - pRectangles = rectangles_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPresentRegionKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPresentRegionKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PresentRegionKHR const& ) const = default; -#else - bool operator==( PresentRegionKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( rectangleCount == rhs.rectangleCount ) - && ( pRectangles == rhs.pRectangles ); - } - - bool operator!=( PresentRegionKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t rectangleCount = {}; - const VULKAN_HPP_NAMESPACE::RectLayerKHR* pRectangles = {}; - - }; - static_assert( sizeof( PresentRegionKHR ) == sizeof( VkPresentRegionKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PresentRegionsKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentRegionsKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PresentRegionsKHR(uint32_t swapchainCount_ = {}, const VULKAN_HPP_NAMESPACE::PresentRegionKHR* pRegions_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) - : swapchainCount( static_cast( regions_.size() ) ), pRegions( regions_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PresentRegionsKHR & operator=( PresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PresentRegionsKHR & operator=( VkPresentRegionsKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PresentRegionsKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PresentRegionsKHR & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = swapchainCount_; - return *this; - } - - PresentRegionsKHR & setPRegions( const VULKAN_HPP_NAMESPACE::PresentRegionKHR* pRegions_ ) VULKAN_HPP_NOEXCEPT - { - pRegions = pRegions_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PresentRegionsKHR & setRegions( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & regions_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = static_cast( regions_.size() ); - pRegions = regions_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPresentRegionsKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPresentRegionsKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PresentRegionsKHR const& ) const = default; -#else - bool operator==( PresentRegionsKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchainCount == rhs.swapchainCount ) - && ( pRegions == rhs.pRegions ); - } - - bool operator!=( PresentRegionsKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentRegionsKHR; - const void* pNext = {}; - uint32_t swapchainCount = {}; - const VULKAN_HPP_NAMESPACE::PresentRegionKHR* pRegions = {}; - - }; - static_assert( sizeof( PresentRegionsKHR ) == sizeof( VkPresentRegionsKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PresentRegionsKHR; - }; - - struct PresentTimeGOOGLE - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PresentTimeGOOGLE & operator=( PresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PresentTimeGOOGLE & operator=( VkPresentTimeGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PresentTimeGOOGLE & setPresentID( uint32_t presentID_ ) VULKAN_HPP_NOEXCEPT - { - presentID = presentID_; - return *this; - } - - PresentTimeGOOGLE & setDesiredPresentTime( uint64_t desiredPresentTime_ ) VULKAN_HPP_NOEXCEPT - { - desiredPresentTime = desiredPresentTime_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PresentTimeGOOGLE const& ) const = default; -#else - bool operator==( PresentTimeGOOGLE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( presentID == rhs.presentID ) - && ( desiredPresentTime == rhs.desiredPresentTime ); - } - - bool operator!=( PresentTimeGOOGLE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t presentID = {}; - uint64_t desiredPresentTime = {}; - - }; - static_assert( sizeof( PresentTimeGOOGLE ) == sizeof( VkPresentTimeGOOGLE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct PresentTimesInfoGOOGLE - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::ePresentTimesInfoGOOGLE; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR PresentTimesInfoGOOGLE(uint32_t swapchainCount_ = {}, const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE* pTimes_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & times_ ) - : swapchainCount( static_cast( times_.size() ) ), pTimes( times_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 PresentTimesInfoGOOGLE & operator=( PresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - PresentTimesInfoGOOGLE & operator=( VkPresentTimesInfoGOOGLE const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - PresentTimesInfoGOOGLE & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - PresentTimesInfoGOOGLE & setSwapchainCount( uint32_t swapchainCount_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = swapchainCount_; - return *this; - } - - PresentTimesInfoGOOGLE & setPTimes( const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE* pTimes_ ) VULKAN_HPP_NOEXCEPT - { - pTimes = pTimes_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - PresentTimesInfoGOOGLE & setTimes( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & times_ ) VULKAN_HPP_NOEXCEPT - { - swapchainCount = static_cast( times_.size() ); - pTimes = times_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkPresentTimesInfoGOOGLE const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkPresentTimesInfoGOOGLE &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( PresentTimesInfoGOOGLE const& ) const = default; -#else - bool operator==( PresentTimesInfoGOOGLE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( swapchainCount == rhs.swapchainCount ) - && ( pTimes == rhs.pTimes ); - } - - bool operator!=( PresentTimesInfoGOOGLE const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::ePresentTimesInfoGOOGLE; - const void* pNext = {}; - uint32_t swapchainCount = {}; - const VULKAN_HPP_NAMESPACE::PresentTimeGOOGLE* pTimes = {}; - - }; - static_assert( sizeof( PresentTimesInfoGOOGLE ) == sizeof( VkPresentTimesInfoGOOGLE ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = PresentTimesInfoGOOGLE; - }; - - struct ProtectedSubmitInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eProtectedSubmitInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo(VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ = {}) VULKAN_HPP_NOEXCEPT - : protectedSubmit( protectedSubmit_ ) - {} - - VULKAN_HPP_CONSTEXPR ProtectedSubmitInfo( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ProtectedSubmitInfo( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : ProtectedSubmitInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ProtectedSubmitInfo & operator=( ProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ProtectedSubmitInfo & operator=( VkProtectedSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ProtectedSubmitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ProtectedSubmitInfo & setProtectedSubmit( VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit_ ) VULKAN_HPP_NOEXCEPT - { - protectedSubmit = protectedSubmit_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ProtectedSubmitInfo const& ) const = default; -#else - bool operator==( ProtectedSubmitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( protectedSubmit == rhs.protectedSubmit ); - } - - bool operator!=( ProtectedSubmitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eProtectedSubmitInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 protectedSubmit = {}; - - }; - static_assert( sizeof( ProtectedSubmitInfo ) == sizeof( VkProtectedSubmitInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ProtectedSubmitInfo; - }; - - struct QueryPoolPerformanceQueryCreateInfoINTEL - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL(VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ = VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual) VULKAN_HPP_NOEXCEPT - : performanceCountersSampling( performanceCountersSampling_ ) - {} - - VULKAN_HPP_CONSTEXPR QueryPoolPerformanceQueryCreateInfoINTEL( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - QueryPoolPerformanceQueryCreateInfoINTEL( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - : QueryPoolPerformanceQueryCreateInfoINTEL( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 QueryPoolPerformanceQueryCreateInfoINTEL & operator=( QueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - QueryPoolPerformanceQueryCreateInfoINTEL & operator=( VkQueryPoolPerformanceQueryCreateInfoINTEL const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - QueryPoolPerformanceQueryCreateInfoINTEL & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - QueryPoolPerformanceQueryCreateInfoINTEL & setPerformanceCountersSampling( VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling_ ) VULKAN_HPP_NOEXCEPT - { - performanceCountersSampling = performanceCountersSampling_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( QueryPoolPerformanceQueryCreateInfoINTEL const& ) const = default; -#else - bool operator==( QueryPoolPerformanceQueryCreateInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( performanceCountersSampling == rhs.performanceCountersSampling ); - } - - bool operator!=( QueryPoolPerformanceQueryCreateInfoINTEL const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueryPoolPerformanceQueryCreateInfoINTEL; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL performanceCountersSampling = VULKAN_HPP_NAMESPACE::QueryPoolSamplingModeINTEL::eManual; - - }; - static_assert( sizeof( QueryPoolPerformanceQueryCreateInfoINTEL ) == sizeof( VkQueryPoolPerformanceQueryCreateInfoINTEL ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = QueryPoolPerformanceQueryCreateInfoINTEL; - }; - using QueryPoolCreateInfoINTEL = QueryPoolPerformanceQueryCreateInfoINTEL; - - struct QueueFamilyCheckpointProperties2NV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyCheckpointProperties2Nv; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV(VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR checkpointExecutionStageMask_ = {}) VULKAN_HPP_NOEXCEPT - : checkpointExecutionStageMask( checkpointExecutionStageMask_ ) - {} - - VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointProperties2NV( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - QueueFamilyCheckpointProperties2NV( VkQueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT - : QueueFamilyCheckpointProperties2NV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 QueueFamilyCheckpointProperties2NV & operator=( QueueFamilyCheckpointProperties2NV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( QueueFamilyCheckpointProperties2NV const& ) const = default; -#else - bool operator==( QueueFamilyCheckpointProperties2NV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask ); - } - - bool operator!=( QueueFamilyCheckpointProperties2NV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyCheckpointProperties2Nv; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR checkpointExecutionStageMask = {}; - - }; - static_assert( sizeof( QueueFamilyCheckpointProperties2NV ) == sizeof( VkQueueFamilyCheckpointProperties2NV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = QueueFamilyCheckpointProperties2NV; - }; - - struct QueueFamilyCheckpointPropertiesNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eQueueFamilyCheckpointPropertiesNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV(VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask_ = {}) VULKAN_HPP_NOEXCEPT - : checkpointExecutionStageMask( checkpointExecutionStageMask_ ) - {} - - VULKAN_HPP_CONSTEXPR QueueFamilyCheckpointPropertiesNV( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - QueueFamilyCheckpointPropertiesNV( VkQueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT - : QueueFamilyCheckpointPropertiesNV( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 QueueFamilyCheckpointPropertiesNV & operator=( QueueFamilyCheckpointPropertiesNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( QueueFamilyCheckpointPropertiesNV const& ) const = default; -#else - bool operator==( QueueFamilyCheckpointPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( checkpointExecutionStageMask == rhs.checkpointExecutionStageMask ); - } - - bool operator!=( QueueFamilyCheckpointPropertiesNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eQueueFamilyCheckpointPropertiesNV; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::PipelineStageFlags checkpointExecutionStageMask = {}; - - }; - static_assert( sizeof( QueueFamilyCheckpointPropertiesNV ) == sizeof( VkQueueFamilyCheckpointPropertiesNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = QueueFamilyCheckpointPropertiesNV; - }; - - struct RenderPassAttachmentBeginInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassAttachmentBeginInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RenderPassAttachmentBeginInfo(uint32_t attachmentCount_ = {}, const VULKAN_HPP_NAMESPACE::ImageView* pAttachments_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_ ) - : attachmentCount( static_cast( attachments_.size() ) ), pAttachments( attachments_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RenderPassAttachmentBeginInfo & operator=( RenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassAttachmentBeginInfo & operator=( VkRenderPassAttachmentBeginInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RenderPassAttachmentBeginInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RenderPassAttachmentBeginInfo & setAttachmentCount( uint32_t attachmentCount_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = attachmentCount_; - return *this; - } - - RenderPassAttachmentBeginInfo & setPAttachments( const VULKAN_HPP_NAMESPACE::ImageView* pAttachments_ ) VULKAN_HPP_NOEXCEPT - { - pAttachments = pAttachments_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassAttachmentBeginInfo & setAttachments( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachments_ ) VULKAN_HPP_NOEXCEPT - { - attachmentCount = static_cast( attachments_.size() ); - pAttachments = attachments_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkRenderPassAttachmentBeginInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassAttachmentBeginInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPassAttachmentBeginInfo const& ) const = default; -#else - bool operator==( RenderPassAttachmentBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( attachmentCount == rhs.attachmentCount ) - && ( pAttachments == rhs.pAttachments ); - } - - bool operator!=( RenderPassAttachmentBeginInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassAttachmentBeginInfo; - const void* pNext = {}; - uint32_t attachmentCount = {}; - const VULKAN_HPP_NAMESPACE::ImageView* pAttachments = {}; - - }; - static_assert( sizeof( RenderPassAttachmentBeginInfo ) == sizeof( VkRenderPassAttachmentBeginInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RenderPassAttachmentBeginInfo; - }; - using RenderPassAttachmentBeginInfoKHR = RenderPassAttachmentBeginInfo; - - struct RenderPassFragmentDensityMapCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT(VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment_ = {}) VULKAN_HPP_NOEXCEPT - : fragmentDensityMapAttachment( fragmentDensityMapAttachment_ ) - {} - - VULKAN_HPP_CONSTEXPR RenderPassFragmentDensityMapCreateInfoEXT( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassFragmentDensityMapCreateInfoEXT( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : RenderPassFragmentDensityMapCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RenderPassFragmentDensityMapCreateInfoEXT & operator=( RenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassFragmentDensityMapCreateInfoEXT & operator=( VkRenderPassFragmentDensityMapCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RenderPassFragmentDensityMapCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RenderPassFragmentDensityMapCreateInfoEXT & setFragmentDensityMapAttachment( VULKAN_HPP_NAMESPACE::AttachmentReference const & fragmentDensityMapAttachment_ ) VULKAN_HPP_NOEXCEPT - { - fragmentDensityMapAttachment = fragmentDensityMapAttachment_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPassFragmentDensityMapCreateInfoEXT const& ) const = default; -#else - bool operator==( RenderPassFragmentDensityMapCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fragmentDensityMapAttachment == rhs.fragmentDensityMapAttachment ); - } - - bool operator!=( RenderPassFragmentDensityMapCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassFragmentDensityMapCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::AttachmentReference fragmentDensityMapAttachment = {}; - - }; - static_assert( sizeof( RenderPassFragmentDensityMapCreateInfoEXT ) == sizeof( VkRenderPassFragmentDensityMapCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RenderPassFragmentDensityMapCreateInfoEXT; - }; - - struct RenderPassInputAttachmentAspectCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassInputAttachmentAspectCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RenderPassInputAttachmentAspectCreateInfo(uint32_t aspectReferenceCount_ = {}, const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference* pAspectReferences_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & aspectReferences_ ) - : aspectReferenceCount( static_cast( aspectReferences_.size() ) ), pAspectReferences( aspectReferences_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RenderPassInputAttachmentAspectCreateInfo & operator=( RenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassInputAttachmentAspectCreateInfo & operator=( VkRenderPassInputAttachmentAspectCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RenderPassInputAttachmentAspectCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RenderPassInputAttachmentAspectCreateInfo & setAspectReferenceCount( uint32_t aspectReferenceCount_ ) VULKAN_HPP_NOEXCEPT - { - aspectReferenceCount = aspectReferenceCount_; - return *this; - } - - RenderPassInputAttachmentAspectCreateInfo & setPAspectReferences( const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference* pAspectReferences_ ) VULKAN_HPP_NOEXCEPT - { - pAspectReferences = pAspectReferences_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassInputAttachmentAspectCreateInfo & setAspectReferences( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & aspectReferences_ ) VULKAN_HPP_NOEXCEPT - { - aspectReferenceCount = static_cast( aspectReferences_.size() ); - pAspectReferences = aspectReferences_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkRenderPassInputAttachmentAspectCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassInputAttachmentAspectCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPassInputAttachmentAspectCreateInfo const& ) const = default; -#else - bool operator==( RenderPassInputAttachmentAspectCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( aspectReferenceCount == rhs.aspectReferenceCount ) - && ( pAspectReferences == rhs.pAspectReferences ); - } - - bool operator!=( RenderPassInputAttachmentAspectCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassInputAttachmentAspectCreateInfo; - const void* pNext = {}; - uint32_t aspectReferenceCount = {}; - const VULKAN_HPP_NAMESPACE::InputAttachmentAspectReference* pAspectReferences = {}; - - }; - static_assert( sizeof( RenderPassInputAttachmentAspectCreateInfo ) == sizeof( VkRenderPassInputAttachmentAspectCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RenderPassInputAttachmentAspectCreateInfo; - }; - using RenderPassInputAttachmentAspectCreateInfoKHR = RenderPassInputAttachmentAspectCreateInfo; - - struct RenderPassMultiviewCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassMultiviewCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RenderPassMultiviewCreateInfo(uint32_t subpassCount_ = {}, const uint32_t* pViewMasks_ = {}, uint32_t dependencyCount_ = {}, const int32_t* pViewOffsets_ = {}, uint32_t correlationMaskCount_ = {}, const uint32_t* pCorrelationMasks_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewMasks_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewOffsets_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & correlationMasks_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RenderPassMultiviewCreateInfo & operator=( RenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassMultiviewCreateInfo & operator=( VkRenderPassMultiviewCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RenderPassMultiviewCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RenderPassMultiviewCreateInfo & setSubpassCount( uint32_t subpassCount_ ) VULKAN_HPP_NOEXCEPT - { - subpassCount = subpassCount_; - return *this; - } - - RenderPassMultiviewCreateInfo & setPViewMasks( const uint32_t* pViewMasks_ ) VULKAN_HPP_NOEXCEPT - { - pViewMasks = pViewMasks_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassMultiviewCreateInfo & setViewMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewMasks_ ) VULKAN_HPP_NOEXCEPT - { - subpassCount = static_cast( viewMasks_.size() ); - pViewMasks = viewMasks_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RenderPassMultiviewCreateInfo & setDependencyCount( uint32_t dependencyCount_ ) VULKAN_HPP_NOEXCEPT - { - dependencyCount = dependencyCount_; - return *this; - } - - RenderPassMultiviewCreateInfo & setPViewOffsets( const int32_t* pViewOffsets_ ) VULKAN_HPP_NOEXCEPT - { - pViewOffsets = pViewOffsets_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassMultiviewCreateInfo & setViewOffsets( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & viewOffsets_ ) VULKAN_HPP_NOEXCEPT - { - dependencyCount = static_cast( viewOffsets_.size() ); - pViewOffsets = viewOffsets_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RenderPassMultiviewCreateInfo & setCorrelationMaskCount( uint32_t correlationMaskCount_ ) VULKAN_HPP_NOEXCEPT - { - correlationMaskCount = correlationMaskCount_; - return *this; - } - - RenderPassMultiviewCreateInfo & setPCorrelationMasks( const uint32_t* pCorrelationMasks_ ) VULKAN_HPP_NOEXCEPT - { - pCorrelationMasks = pCorrelationMasks_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassMultiviewCreateInfo & setCorrelationMasks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & correlationMasks_ ) VULKAN_HPP_NOEXCEPT - { - correlationMaskCount = static_cast( correlationMasks_.size() ); - pCorrelationMasks = correlationMasks_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkRenderPassMultiviewCreateInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassMultiviewCreateInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPassMultiviewCreateInfo const& ) const = default; -#else - bool operator==( RenderPassMultiviewCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( RenderPassMultiviewCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassMultiviewCreateInfo; - const void* pNext = {}; - uint32_t subpassCount = {}; - const uint32_t* pViewMasks = {}; - uint32_t dependencyCount = {}; - const int32_t* pViewOffsets = {}; - uint32_t correlationMaskCount = {}; - const uint32_t* pCorrelationMasks = {}; - - }; - static_assert( sizeof( RenderPassMultiviewCreateInfo ) == sizeof( VkRenderPassMultiviewCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RenderPassMultiviewCreateInfo; - }; - using RenderPassMultiviewCreateInfoKHR = RenderPassMultiviewCreateInfo; - - struct SubpassSampleLocationsEXT - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubpassSampleLocationsEXT(uint32_t subpassIndex_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubpassSampleLocationsEXT & operator=( SubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassSampleLocationsEXT & operator=( VkSubpassSampleLocationsEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubpassSampleLocationsEXT & setSubpassIndex( uint32_t subpassIndex_ ) VULKAN_HPP_NOEXCEPT - { - subpassIndex = subpassIndex_; - return *this; - } - - SubpassSampleLocationsEXT & setSampleLocationsInfo( VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT const & sampleLocationsInfo_ ) VULKAN_HPP_NOEXCEPT - { - sampleLocationsInfo = sampleLocationsInfo_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubpassSampleLocationsEXT const& ) const = default; -#else - bool operator==( SubpassSampleLocationsEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( subpassIndex == rhs.subpassIndex ) - && ( sampleLocationsInfo == rhs.sampleLocationsInfo ); - } - - bool operator!=( SubpassSampleLocationsEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t subpassIndex = {}; - VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT sampleLocationsInfo = {}; - - }; - static_assert( sizeof( SubpassSampleLocationsEXT ) == sizeof( VkSubpassSampleLocationsEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct RenderPassSampleLocationsBeginInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassSampleLocationsBeginInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RenderPassSampleLocationsBeginInfoEXT(uint32_t attachmentInitialSampleLocationsCount_ = {}, const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ = {}, uint32_t postSubpassSampleLocationsCount_ = {}, const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachmentInitialSampleLocations_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & postSubpassSampleLocations_ = {} ) - : attachmentInitialSampleLocationsCount( static_cast( attachmentInitialSampleLocations_.size() ) ), pAttachmentInitialSampleLocations( attachmentInitialSampleLocations_.data() ), postSubpassSampleLocationsCount( static_cast( postSubpassSampleLocations_.size() ) ), pPostSubpassSampleLocations( postSubpassSampleLocations_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RenderPassSampleLocationsBeginInfoEXT & operator=( RenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassSampleLocationsBeginInfoEXT & operator=( VkRenderPassSampleLocationsBeginInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RenderPassSampleLocationsBeginInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocationsCount( uint32_t attachmentInitialSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT - { - attachmentInitialSampleLocationsCount = attachmentInitialSampleLocationsCount_; - return *this; - } - - RenderPassSampleLocationsBeginInfoEXT & setPAttachmentInitialSampleLocations( const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations_ ) VULKAN_HPP_NOEXCEPT - { - pAttachmentInitialSampleLocations = pAttachmentInitialSampleLocations_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassSampleLocationsBeginInfoEXT & setAttachmentInitialSampleLocations( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & attachmentInitialSampleLocations_ ) VULKAN_HPP_NOEXCEPT - { - attachmentInitialSampleLocationsCount = static_cast( attachmentInitialSampleLocations_.size() ); - pAttachmentInitialSampleLocations = attachmentInitialSampleLocations_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocationsCount( uint32_t postSubpassSampleLocationsCount_ ) VULKAN_HPP_NOEXCEPT - { - postSubpassSampleLocationsCount = postSubpassSampleLocationsCount_; - return *this; - } - - RenderPassSampleLocationsBeginInfoEXT & setPPostSubpassSampleLocations( const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT* pPostSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT - { - pPostSubpassSampleLocations = pPostSubpassSampleLocations_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - RenderPassSampleLocationsBeginInfoEXT & setPostSubpassSampleLocations( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & postSubpassSampleLocations_ ) VULKAN_HPP_NOEXCEPT - { - postSubpassSampleLocationsCount = static_cast( postSubpassSampleLocations_.size() ); - pPostSubpassSampleLocations = postSubpassSampleLocations_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkRenderPassSampleLocationsBeginInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkRenderPassSampleLocationsBeginInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPassSampleLocationsBeginInfoEXT const& ) const = default; -#else - bool operator==( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( attachmentInitialSampleLocationsCount == rhs.attachmentInitialSampleLocationsCount ) - && ( pAttachmentInitialSampleLocations == rhs.pAttachmentInitialSampleLocations ) - && ( postSubpassSampleLocationsCount == rhs.postSubpassSampleLocationsCount ) - && ( pPostSubpassSampleLocations == rhs.pPostSubpassSampleLocations ); - } - - bool operator!=( RenderPassSampleLocationsBeginInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassSampleLocationsBeginInfoEXT; - const void* pNext = {}; - uint32_t attachmentInitialSampleLocationsCount = {}; - const VULKAN_HPP_NAMESPACE::AttachmentSampleLocationsEXT* pAttachmentInitialSampleLocations = {}; - uint32_t postSubpassSampleLocationsCount = {}; - const VULKAN_HPP_NAMESPACE::SubpassSampleLocationsEXT* pPostSubpassSampleLocations = {}; - - }; - static_assert( sizeof( RenderPassSampleLocationsBeginInfoEXT ) == sizeof( VkRenderPassSampleLocationsBeginInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RenderPassSampleLocationsBeginInfoEXT; - }; - - struct RenderPassTransformBeginInfoQCOM - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eRenderPassTransformBeginInfoQCOM; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM(VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity) VULKAN_HPP_NOEXCEPT - : transform( transform_ ) - {} - - VULKAN_HPP_CONSTEXPR RenderPassTransformBeginInfoQCOM( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassTransformBeginInfoQCOM( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT - : RenderPassTransformBeginInfoQCOM( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 RenderPassTransformBeginInfoQCOM & operator=( RenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - RenderPassTransformBeginInfoQCOM & operator=( VkRenderPassTransformBeginInfoQCOM const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - RenderPassTransformBeginInfoQCOM & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - RenderPassTransformBeginInfoQCOM & setTransform( VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform_ ) VULKAN_HPP_NOEXCEPT - { - transform = transform_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( RenderPassTransformBeginInfoQCOM const& ) const = default; -#else - bool operator==( RenderPassTransformBeginInfoQCOM const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( transform == rhs.transform ); - } - - bool operator!=( RenderPassTransformBeginInfoQCOM const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eRenderPassTransformBeginInfoQCOM; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR transform = VULKAN_HPP_NAMESPACE::SurfaceTransformFlagBitsKHR::eIdentity; - - }; - static_assert( sizeof( RenderPassTransformBeginInfoQCOM ) == sizeof( VkRenderPassTransformBeginInfoQCOM ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = RenderPassTransformBeginInfoQCOM; - }; - - struct SamplerCustomBorderColorCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerCustomBorderColorCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - SamplerCustomBorderColorCreateInfoEXT(VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor_ = {}, VULKAN_HPP_NAMESPACE::Format format_ = VULKAN_HPP_NAMESPACE::Format::eUndefined) VULKAN_HPP_NOEXCEPT - : customBorderColor( customBorderColor_ ), format( format_ ) - {} - - SamplerCustomBorderColorCreateInfoEXT( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SamplerCustomBorderColorCreateInfoEXT( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : SamplerCustomBorderColorCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - SamplerCustomBorderColorCreateInfoEXT & operator=( SamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SamplerCustomBorderColorCreateInfoEXT & operator=( VkSamplerCustomBorderColorCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SamplerCustomBorderColorCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SamplerCustomBorderColorCreateInfoEXT & setCustomBorderColor( VULKAN_HPP_NAMESPACE::ClearColorValue const & customBorderColor_ ) VULKAN_HPP_NOEXCEPT - { - customBorderColor = customBorderColor_; - return *this; - } - - SamplerCustomBorderColorCreateInfoEXT & setFormat( VULKAN_HPP_NAMESPACE::Format format_ ) VULKAN_HPP_NOEXCEPT - { - format = format_; - return *this; - } - - - operator VkSamplerCustomBorderColorCreateInfoEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkSamplerCustomBorderColorCreateInfoEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerCustomBorderColorCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ClearColorValue customBorderColor = {}; - VULKAN_HPP_NAMESPACE::Format format = VULKAN_HPP_NAMESPACE::Format::eUndefined; - - }; - static_assert( sizeof( SamplerCustomBorderColorCreateInfoEXT ) == sizeof( VkSamplerCustomBorderColorCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SamplerCustomBorderColorCreateInfoEXT; - }; - - struct SamplerReductionModeCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerReductionModeCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo(VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ = VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage) VULKAN_HPP_NOEXCEPT - : reductionMode( reductionMode_ ) - {} - - VULKAN_HPP_CONSTEXPR SamplerReductionModeCreateInfo( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SamplerReductionModeCreateInfo( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : SamplerReductionModeCreateInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SamplerReductionModeCreateInfo & operator=( SamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SamplerReductionModeCreateInfo & operator=( VkSamplerReductionModeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SamplerReductionModeCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SamplerReductionModeCreateInfo & setReductionMode( VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode_ ) VULKAN_HPP_NOEXCEPT - { - reductionMode = reductionMode_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SamplerReductionModeCreateInfo const& ) const = default; -#else - bool operator==( SamplerReductionModeCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( reductionMode == rhs.reductionMode ); - } - - bool operator!=( SamplerReductionModeCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerReductionModeCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SamplerReductionMode reductionMode = VULKAN_HPP_NAMESPACE::SamplerReductionMode::eWeightedAverage; - - }; - static_assert( sizeof( SamplerReductionModeCreateInfo ) == sizeof( VkSamplerReductionModeCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SamplerReductionModeCreateInfo; - }; - using SamplerReductionModeCreateInfoEXT = SamplerReductionModeCreateInfo; - - struct SamplerYcbcrConversionImageFormatProperties - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionImageFormatProperties; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties(uint32_t combinedImageSamplerDescriptorCount_ = {}) VULKAN_HPP_NOEXCEPT - : combinedImageSamplerDescriptorCount( combinedImageSamplerDescriptorCount_ ) - {} - - VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionImageFormatProperties( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SamplerYcbcrConversionImageFormatProperties( VkSamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT - : SamplerYcbcrConversionImageFormatProperties( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionImageFormatProperties & operator=( SamplerYcbcrConversionImageFormatProperties const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SamplerYcbcrConversionImageFormatProperties const& ) const = default; -#else - bool operator==( SamplerYcbcrConversionImageFormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( combinedImageSamplerDescriptorCount == rhs.combinedImageSamplerDescriptorCount ); - } - - bool operator!=( SamplerYcbcrConversionImageFormatProperties const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionImageFormatProperties; - void* pNext = {}; - uint32_t combinedImageSamplerDescriptorCount = {}; - - }; - static_assert( sizeof( SamplerYcbcrConversionImageFormatProperties ) == sizeof( VkSamplerYcbcrConversionImageFormatProperties ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SamplerYcbcrConversionImageFormatProperties; - }; - using SamplerYcbcrConversionImageFormatPropertiesKHR = SamplerYcbcrConversionImageFormatProperties; - - struct SamplerYcbcrConversionInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSamplerYcbcrConversionInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo(VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ = {}) VULKAN_HPP_NOEXCEPT - : conversion( conversion_ ) - {} - - VULKAN_HPP_CONSTEXPR SamplerYcbcrConversionInfo( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SamplerYcbcrConversionInfo( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT - : SamplerYcbcrConversionInfo( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SamplerYcbcrConversionInfo & operator=( SamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SamplerYcbcrConversionInfo & operator=( VkSamplerYcbcrConversionInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SamplerYcbcrConversionInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SamplerYcbcrConversionInfo & setConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion_ ) VULKAN_HPP_NOEXCEPT - { - conversion = conversion_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SamplerYcbcrConversionInfo const& ) const = default; -#else - bool operator==( SamplerYcbcrConversionInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( conversion == rhs.conversion ); - } - - bool operator!=( SamplerYcbcrConversionInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSamplerYcbcrConversionInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion conversion = {}; - - }; - static_assert( sizeof( SamplerYcbcrConversionInfo ) == sizeof( VkSamplerYcbcrConversionInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SamplerYcbcrConversionInfo; - }; - using SamplerYcbcrConversionInfoKHR = SamplerYcbcrConversionInfo; - -#ifdef VK_USE_PLATFORM_SCREEN_QNX - struct ScreenSurfaceCreateInfoQNX - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eScreenSurfaceCreateInfoQNX; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ScreenSurfaceCreateInfoQNX(VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_ = {}, struct _screen_context* context_ = {}, struct _screen_window* window_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ScreenSurfaceCreateInfoQNX & operator=( ScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ScreenSurfaceCreateInfoQNX & operator=( VkScreenSurfaceCreateInfoQNX const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ScreenSurfaceCreateInfoQNX & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ScreenSurfaceCreateInfoQNX & setFlags( VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ScreenSurfaceCreateInfoQNX & setContext( struct _screen_context* context_ ) VULKAN_HPP_NOEXCEPT - { - context = context_; - return *this; - } - - ScreenSurfaceCreateInfoQNX & setWindow( struct _screen_window* window_ ) VULKAN_HPP_NOEXCEPT - { - window = window_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ScreenSurfaceCreateInfoQNX const& ) const = default; -#else - bool operator==( ScreenSurfaceCreateInfoQNX const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( context == rhs.context ) - && ( window == rhs.window ); - } - - bool operator!=( ScreenSurfaceCreateInfoQNX const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eScreenSurfaceCreateInfoQNX; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateFlagsQNX flags = {}; - struct _screen_context* context = {}; - struct _screen_window* window = {}; - - }; - static_assert( sizeof( ScreenSurfaceCreateInfoQNX ) == sizeof( VkScreenSurfaceCreateInfoQNX ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ScreenSurfaceCreateInfoQNX; - }; -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - - struct SemaphoreTypeCreateInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSemaphoreTypeCreateInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SemaphoreTypeCreateInfo(VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary, uint64_t initialValue_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SemaphoreTypeCreateInfo & operator=( SemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SemaphoreTypeCreateInfo & operator=( VkSemaphoreTypeCreateInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SemaphoreTypeCreateInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SemaphoreTypeCreateInfo & setSemaphoreType( VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType_ ) VULKAN_HPP_NOEXCEPT - { - semaphoreType = semaphoreType_; - return *this; - } - - SemaphoreTypeCreateInfo & setInitialValue( uint64_t initialValue_ ) VULKAN_HPP_NOEXCEPT - { - initialValue = initialValue_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SemaphoreTypeCreateInfo const& ) const = default; -#else - bool operator==( SemaphoreTypeCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( semaphoreType == rhs.semaphoreType ) - && ( initialValue == rhs.initialValue ); - } - - bool operator!=( SemaphoreTypeCreateInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSemaphoreTypeCreateInfo; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SemaphoreType semaphoreType = VULKAN_HPP_NAMESPACE::SemaphoreType::eBinary; - uint64_t initialValue = {}; - - }; - static_assert( sizeof( SemaphoreTypeCreateInfo ) == sizeof( VkSemaphoreTypeCreateInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SemaphoreTypeCreateInfo; - }; - using SemaphoreTypeCreateInfoKHR = SemaphoreTypeCreateInfo; - - struct SetStateFlagsIndirectCommandNV - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SetStateFlagsIndirectCommandNV & operator=( SetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SetStateFlagsIndirectCommandNV & operator=( VkSetStateFlagsIndirectCommandNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SetStateFlagsIndirectCommandNV & setData( uint32_t data_ ) VULKAN_HPP_NOEXCEPT - { - data = data_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SetStateFlagsIndirectCommandNV const& ) const = default; -#else - bool operator==( SetStateFlagsIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( data == rhs.data ); - } - - bool operator!=( SetStateFlagsIndirectCommandNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t data = {}; - - }; - static_assert( sizeof( SetStateFlagsIndirectCommandNV ) == sizeof( VkSetStateFlagsIndirectCommandNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ShaderModuleValidationCacheCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eShaderModuleValidationCacheCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT(VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ = {}) VULKAN_HPP_NOEXCEPT - : validationCache( validationCache_ ) - {} - - VULKAN_HPP_CONSTEXPR ShaderModuleValidationCacheCreateInfoEXT( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ShaderModuleValidationCacheCreateInfoEXT( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : ShaderModuleValidationCacheCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ShaderModuleValidationCacheCreateInfoEXT & operator=( ShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ShaderModuleValidationCacheCreateInfoEXT & operator=( VkShaderModuleValidationCacheCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ShaderModuleValidationCacheCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ShaderModuleValidationCacheCreateInfoEXT & setValidationCache( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache_ ) VULKAN_HPP_NOEXCEPT - { - validationCache = validationCache_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ShaderModuleValidationCacheCreateInfoEXT const& ) const = default; -#else - bool operator==( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( validationCache == rhs.validationCache ); - } - - bool operator!=( ShaderModuleValidationCacheCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eShaderModuleValidationCacheCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache = {}; - - }; - static_assert( sizeof( ShaderModuleValidationCacheCreateInfoEXT ) == sizeof( VkShaderModuleValidationCacheCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ShaderModuleValidationCacheCreateInfoEXT; - }; - - struct ShaderResourceUsageAMD - { - - -#if !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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ShaderResourceUsageAMD & operator=( ShaderResourceUsageAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ShaderResourceUsageAMD const& ) const = default; -#else - bool operator==( ShaderResourceUsageAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( numUsedVgprs == rhs.numUsedVgprs ) - && ( numUsedSgprs == rhs.numUsedSgprs ) - && ( ldsSizePerLocalWorkGroup == rhs.ldsSizePerLocalWorkGroup ) - && ( ldsUsageSizeInBytes == rhs.ldsUsageSizeInBytes ) - && ( scratchMemUsageInBytes == rhs.scratchMemUsageInBytes ); - } - - 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 = {}; - - }; - static_assert( sizeof( ShaderResourceUsageAMD ) == sizeof( VkShaderResourceUsageAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ShaderStatisticsInfoAMD - { - - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD(VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStageMask_ = {}, VULKAN_HPP_NAMESPACE::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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ShaderStatisticsInfoAMD & operator=( ShaderStatisticsInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ShaderStatisticsInfoAMD const& ) const = default; -#else - bool operator==( ShaderStatisticsInfoAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( shaderStageMask == rhs.shaderStageMask ) - && ( resourceUsage == rhs.resourceUsage ) - && ( numPhysicalVgprs == rhs.numPhysicalVgprs ) - && ( numPhysicalSgprs == rhs.numPhysicalSgprs ) - && ( numAvailableVgprs == rhs.numAvailableVgprs ) - && ( numAvailableSgprs == rhs.numAvailableSgprs ) - && ( computeWorkGroupSize == rhs.computeWorkGroupSize ); - } - - bool operator!=( ShaderStatisticsInfoAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::ShaderStageFlags shaderStageMask = {}; - VULKAN_HPP_NAMESPACE::ShaderResourceUsageAMD resourceUsage = {}; - uint32_t numPhysicalVgprs = {}; - uint32_t numPhysicalSgprs = {}; - uint32_t numAvailableVgprs = {}; - uint32_t numAvailableSgprs = {}; - VULKAN_HPP_NAMESPACE::ArrayWrapper1D computeWorkGroupSize = {}; - - }; - static_assert( sizeof( ShaderStatisticsInfoAMD ) == sizeof( VkShaderStatisticsInfoAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct SharedPresentSurfaceCapabilitiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSharedPresentSurfaceCapabilitiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR(VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags_ = {}) VULKAN_HPP_NOEXCEPT - : sharedPresentSupportedUsageFlags( sharedPresentSupportedUsageFlags_ ) - {} - - VULKAN_HPP_CONSTEXPR SharedPresentSurfaceCapabilitiesKHR( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SharedPresentSurfaceCapabilitiesKHR( VkSharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : SharedPresentSurfaceCapabilitiesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SharedPresentSurfaceCapabilitiesKHR & operator=( SharedPresentSurfaceCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SharedPresentSurfaceCapabilitiesKHR const& ) const = default; -#else - bool operator==( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( sharedPresentSupportedUsageFlags == rhs.sharedPresentSupportedUsageFlags ); - } - - bool operator!=( SharedPresentSurfaceCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSharedPresentSurfaceCapabilitiesKHR; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::ImageUsageFlags sharedPresentSupportedUsageFlags = {}; - - }; - static_assert( sizeof( SharedPresentSurfaceCapabilitiesKHR ) == sizeof( VkSharedPresentSurfaceCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SharedPresentSurfaceCapabilitiesKHR; - }; - -#ifdef VK_USE_PLATFORM_GGP - struct StreamDescriptorSurfaceCreateInfoGGP - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eStreamDescriptorSurfaceCreateInfoGGP; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR StreamDescriptorSurfaceCreateInfoGGP(VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_ = {}, GgpStreamDescriptor streamDescriptor_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 StreamDescriptorSurfaceCreateInfoGGP & operator=( StreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - StreamDescriptorSurfaceCreateInfoGGP & operator=( VkStreamDescriptorSurfaceCreateInfoGGP const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - StreamDescriptorSurfaceCreateInfoGGP & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - StreamDescriptorSurfaceCreateInfoGGP & setFlags( VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - StreamDescriptorSurfaceCreateInfoGGP & setStreamDescriptor( GgpStreamDescriptor streamDescriptor_ ) VULKAN_HPP_NOEXCEPT - { - streamDescriptor = streamDescriptor_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( StreamDescriptorSurfaceCreateInfoGGP const& ) const = default; -#else - 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 ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eStreamDescriptorSurfaceCreateInfoGGP; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateFlagsGGP flags = {}; - GgpStreamDescriptor streamDescriptor = {}; - - }; - static_assert( sizeof( StreamDescriptorSurfaceCreateInfoGGP ) == sizeof( VkStreamDescriptorSurfaceCreateInfoGGP ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = StreamDescriptorSurfaceCreateInfoGGP; - }; -#endif /*VK_USE_PLATFORM_GGP*/ - - struct SubpassDescriptionDepthStencilResolve - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSubpassDescriptionDepthStencilResolve; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SubpassDescriptionDepthStencilResolve(VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone, VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone, const VULKAN_HPP_NAMESPACE::AttachmentReference2* pDepthStencilResolveAttachment_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SubpassDescriptionDepthStencilResolve & operator=( SubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SubpassDescriptionDepthStencilResolve & operator=( VkSubpassDescriptionDepthStencilResolve const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SubpassDescriptionDepthStencilResolve & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SubpassDescriptionDepthStencilResolve & setDepthResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode_ ) VULKAN_HPP_NOEXCEPT - { - depthResolveMode = depthResolveMode_; - return *this; - } - - SubpassDescriptionDepthStencilResolve & setStencilResolveMode( VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode_ ) VULKAN_HPP_NOEXCEPT - { - stencilResolveMode = stencilResolveMode_; - return *this; - } - - SubpassDescriptionDepthStencilResolve & setPDepthStencilResolveAttachment( const VULKAN_HPP_NAMESPACE::AttachmentReference2* pDepthStencilResolveAttachment_ ) VULKAN_HPP_NOEXCEPT - { - pDepthStencilResolveAttachment = pDepthStencilResolveAttachment_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SubpassDescriptionDepthStencilResolve const& ) const = default; -#else - bool operator==( SubpassDescriptionDepthStencilResolve const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( depthResolveMode == rhs.depthResolveMode ) - && ( stencilResolveMode == rhs.stencilResolveMode ) - && ( pDepthStencilResolveAttachment == rhs.pDepthStencilResolveAttachment ); - } - - bool operator!=( SubpassDescriptionDepthStencilResolve const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSubpassDescriptionDepthStencilResolve; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ResolveModeFlagBits depthResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone; - VULKAN_HPP_NAMESPACE::ResolveModeFlagBits stencilResolveMode = VULKAN_HPP_NAMESPACE::ResolveModeFlagBits::eNone; - const VULKAN_HPP_NAMESPACE::AttachmentReference2* pDepthStencilResolveAttachment = {}; - - }; - static_assert( sizeof( SubpassDescriptionDepthStencilResolve ) == sizeof( VkSubpassDescriptionDepthStencilResolve ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SubpassDescriptionDepthStencilResolve; - }; - using SubpassDescriptionDepthStencilResolveKHR = SubpassDescriptionDepthStencilResolve; - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct SurfaceCapabilitiesFullScreenExclusiveEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT(VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported_ = {}) VULKAN_HPP_NOEXCEPT - : fullScreenExclusiveSupported( fullScreenExclusiveSupported_ ) - {} - - VULKAN_HPP_CONSTEXPR SurfaceCapabilitiesFullScreenExclusiveEXT( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceCapabilitiesFullScreenExclusiveEXT( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : SurfaceCapabilitiesFullScreenExclusiveEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( SurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceCapabilitiesFullScreenExclusiveEXT & operator=( VkSurfaceCapabilitiesFullScreenExclusiveEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SurfaceCapabilitiesFullScreenExclusiveEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SurfaceCapabilitiesFullScreenExclusiveEXT & setFullScreenExclusiveSupported( VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported_ ) VULKAN_HPP_NOEXCEPT - { - fullScreenExclusiveSupported = fullScreenExclusiveSupported_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceCapabilitiesFullScreenExclusiveEXT const& ) const = default; -#else - bool operator==( SurfaceCapabilitiesFullScreenExclusiveEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fullScreenExclusiveSupported == rhs.fullScreenExclusiveSupported ); - } - - bool operator!=( SurfaceCapabilitiesFullScreenExclusiveEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceCapabilitiesFullScreenExclusiveEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 fullScreenExclusiveSupported = {}; - - }; - static_assert( sizeof( SurfaceCapabilitiesFullScreenExclusiveEXT ) == sizeof( VkSurfaceCapabilitiesFullScreenExclusiveEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SurfaceCapabilitiesFullScreenExclusiveEXT; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct SurfaceFullScreenExclusiveInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceFullScreenExclusiveInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveInfoEXT(VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ = VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault) VULKAN_HPP_NOEXCEPT - : fullScreenExclusive( fullScreenExclusive_ ) - {} - - VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveInfoEXT( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceFullScreenExclusiveInfoEXT( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : SurfaceFullScreenExclusiveInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveInfoEXT & operator=( SurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceFullScreenExclusiveInfoEXT & operator=( VkSurfaceFullScreenExclusiveInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SurfaceFullScreenExclusiveInfoEXT & setPNext( void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SurfaceFullScreenExclusiveInfoEXT & setFullScreenExclusive( VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive_ ) VULKAN_HPP_NOEXCEPT - { - fullScreenExclusive = fullScreenExclusive_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceFullScreenExclusiveInfoEXT const& ) const = default; -#else - bool operator==( SurfaceFullScreenExclusiveInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( fullScreenExclusive == rhs.fullScreenExclusive ); - } - - bool operator!=( SurfaceFullScreenExclusiveInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFullScreenExclusiveInfoEXT; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT fullScreenExclusive = VULKAN_HPP_NAMESPACE::FullScreenExclusiveEXT::eDefault; - - }; - static_assert( sizeof( SurfaceFullScreenExclusiveInfoEXT ) == sizeof( VkSurfaceFullScreenExclusiveInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SurfaceFullScreenExclusiveInfoEXT; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct SurfaceFullScreenExclusiveWin32InfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT(HMONITOR hmonitor_ = {}) VULKAN_HPP_NOEXCEPT - : hmonitor( hmonitor_ ) - {} - - VULKAN_HPP_CONSTEXPR SurfaceFullScreenExclusiveWin32InfoEXT( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceFullScreenExclusiveWin32InfoEXT( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : SurfaceFullScreenExclusiveWin32InfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SurfaceFullScreenExclusiveWin32InfoEXT & operator=( SurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceFullScreenExclusiveWin32InfoEXT & operator=( VkSurfaceFullScreenExclusiveWin32InfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SurfaceFullScreenExclusiveWin32InfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SurfaceFullScreenExclusiveWin32InfoEXT & setHmonitor( HMONITOR hmonitor_ ) VULKAN_HPP_NOEXCEPT - { - hmonitor = hmonitor_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceFullScreenExclusiveWin32InfoEXT const& ) const = default; -#else - bool operator==( SurfaceFullScreenExclusiveWin32InfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( hmonitor == rhs.hmonitor ); - } - - bool operator!=( SurfaceFullScreenExclusiveWin32InfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceFullScreenExclusiveWin32InfoEXT; - const void* pNext = {}; - HMONITOR hmonitor = {}; - - }; - static_assert( sizeof( SurfaceFullScreenExclusiveWin32InfoEXT ) == sizeof( VkSurfaceFullScreenExclusiveWin32InfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SurfaceFullScreenExclusiveWin32InfoEXT; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct SurfaceProtectedCapabilitiesKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSurfaceProtectedCapabilitiesKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SurfaceProtectedCapabilitiesKHR(VULKAN_HPP_NAMESPACE::Bool32 supportsProtected_ = {}) VULKAN_HPP_NOEXCEPT - : supportsProtected( supportsProtected_ ) - {} - - VULKAN_HPP_CONSTEXPR SurfaceProtectedCapabilitiesKHR( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceProtectedCapabilitiesKHR( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - : SurfaceProtectedCapabilitiesKHR( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SurfaceProtectedCapabilitiesKHR & operator=( SurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SurfaceProtectedCapabilitiesKHR & operator=( VkSurfaceProtectedCapabilitiesKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SurfaceProtectedCapabilitiesKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SurfaceProtectedCapabilitiesKHR & setSupportsProtected( VULKAN_HPP_NAMESPACE::Bool32 supportsProtected_ ) VULKAN_HPP_NOEXCEPT - { - supportsProtected = supportsProtected_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SurfaceProtectedCapabilitiesKHR const& ) const = default; -#else - bool operator==( SurfaceProtectedCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( supportsProtected == rhs.supportsProtected ); - } - - bool operator!=( SurfaceProtectedCapabilitiesKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSurfaceProtectedCapabilitiesKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 supportsProtected = {}; - - }; - static_assert( sizeof( SurfaceProtectedCapabilitiesKHR ) == sizeof( VkSurfaceProtectedCapabilitiesKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SurfaceProtectedCapabilitiesKHR; - }; - - struct SwapchainCounterCreateInfoEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainCounterCreateInfoEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT(VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ = {}) VULKAN_HPP_NOEXCEPT - : surfaceCounters( surfaceCounters_ ) - {} - - VULKAN_HPP_CONSTEXPR SwapchainCounterCreateInfoEXT( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SwapchainCounterCreateInfoEXT( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : SwapchainCounterCreateInfoEXT( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SwapchainCounterCreateInfoEXT & operator=( SwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SwapchainCounterCreateInfoEXT & operator=( VkSwapchainCounterCreateInfoEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SwapchainCounterCreateInfoEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SwapchainCounterCreateInfoEXT & setSurfaceCounters( VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters_ ) VULKAN_HPP_NOEXCEPT - { - surfaceCounters = surfaceCounters_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SwapchainCounterCreateInfoEXT const& ) const = default; -#else - bool operator==( SwapchainCounterCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( surfaceCounters == rhs.surfaceCounters ); - } - - bool operator!=( SwapchainCounterCreateInfoEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainCounterCreateInfoEXT; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::SurfaceCounterFlagsEXT surfaceCounters = {}; - - }; - static_assert( sizeof( SwapchainCounterCreateInfoEXT ) == sizeof( VkSwapchainCounterCreateInfoEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SwapchainCounterCreateInfoEXT; - }; - - struct SwapchainDisplayNativeHdrCreateInfoAMD - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD(VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ = {}) VULKAN_HPP_NOEXCEPT - : localDimmingEnable( localDimmingEnable_ ) - {} - - VULKAN_HPP_CONSTEXPR SwapchainDisplayNativeHdrCreateInfoAMD( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SwapchainDisplayNativeHdrCreateInfoAMD( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT - : SwapchainDisplayNativeHdrCreateInfoAMD( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 SwapchainDisplayNativeHdrCreateInfoAMD & operator=( SwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - SwapchainDisplayNativeHdrCreateInfoAMD & operator=( VkSwapchainDisplayNativeHdrCreateInfoAMD const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - SwapchainDisplayNativeHdrCreateInfoAMD & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - SwapchainDisplayNativeHdrCreateInfoAMD & setLocalDimmingEnable( VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable_ ) VULKAN_HPP_NOEXCEPT - { - localDimmingEnable = localDimmingEnable_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( SwapchainDisplayNativeHdrCreateInfoAMD const& ) const = default; -#else - bool operator==( SwapchainDisplayNativeHdrCreateInfoAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( localDimmingEnable == rhs.localDimmingEnable ); - } - - bool operator!=( SwapchainDisplayNativeHdrCreateInfoAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eSwapchainDisplayNativeHdrCreateInfoAMD; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable = {}; - - }; - static_assert( sizeof( SwapchainDisplayNativeHdrCreateInfoAMD ) == sizeof( VkSwapchainDisplayNativeHdrCreateInfoAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = SwapchainDisplayNativeHdrCreateInfoAMD; - }; - - struct TextureLODGatherFormatPropertiesAMD - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTextureLodGatherFormatPropertiesAMD; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD(VULKAN_HPP_NAMESPACE::Bool32 supportsTextureGatherLODBiasAMD_ = {}) VULKAN_HPP_NOEXCEPT - : supportsTextureGatherLODBiasAMD( supportsTextureGatherLODBiasAMD_ ) - {} - - VULKAN_HPP_CONSTEXPR TextureLODGatherFormatPropertiesAMD( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - TextureLODGatherFormatPropertiesAMD( VkTextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT - : TextureLODGatherFormatPropertiesAMD( *reinterpret_cast( &rhs ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 TextureLODGatherFormatPropertiesAMD & operator=( TextureLODGatherFormatPropertiesAMD const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - 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 ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( TextureLODGatherFormatPropertiesAMD const& ) const = default; -#else - bool operator==( TextureLODGatherFormatPropertiesAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( supportsTextureGatherLODBiasAMD == rhs.supportsTextureGatherLODBiasAMD ); - } - - bool operator!=( TextureLODGatherFormatPropertiesAMD const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTextureLodGatherFormatPropertiesAMD; - void* pNext = {}; - VULKAN_HPP_NAMESPACE::Bool32 supportsTextureGatherLODBiasAMD = {}; - - }; - static_assert( sizeof( TextureLODGatherFormatPropertiesAMD ) == sizeof( VkTextureLODGatherFormatPropertiesAMD ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = TextureLODGatherFormatPropertiesAMD; - }; - - struct TimelineSemaphoreSubmitInfo - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eTimelineSemaphoreSubmitInfo; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR TimelineSemaphoreSubmitInfo(uint32_t waitSemaphoreValueCount_ = {}, const uint64_t* pWaitSemaphoreValues_ = {}, uint32_t signalSemaphoreValueCount_ = {}, const uint64_t* pSignalSemaphoreValues_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreValues_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreValues_ = {} ) - : waitSemaphoreValueCount( static_cast( waitSemaphoreValues_.size() ) ), pWaitSemaphoreValues( waitSemaphoreValues_.data() ), signalSemaphoreValueCount( static_cast( signalSemaphoreValues_.size() ) ), pSignalSemaphoreValues( signalSemaphoreValues_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 TimelineSemaphoreSubmitInfo & operator=( TimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - TimelineSemaphoreSubmitInfo & operator=( VkTimelineSemaphoreSubmitInfo const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - TimelineSemaphoreSubmitInfo & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - TimelineSemaphoreSubmitInfo & setWaitSemaphoreValueCount( uint32_t waitSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreValueCount = waitSemaphoreValueCount_; - return *this; - } - - TimelineSemaphoreSubmitInfo & setPWaitSemaphoreValues( const uint64_t* pWaitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT - { - pWaitSemaphoreValues = pWaitSemaphoreValues_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - TimelineSemaphoreSubmitInfo & setWaitSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & waitSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT - { - waitSemaphoreValueCount = static_cast( waitSemaphoreValues_.size() ); - pWaitSemaphoreValues = waitSemaphoreValues_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - TimelineSemaphoreSubmitInfo & setSignalSemaphoreValueCount( uint32_t signalSemaphoreValueCount_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreValueCount = signalSemaphoreValueCount_; - return *this; - } - - TimelineSemaphoreSubmitInfo & setPSignalSemaphoreValues( const uint64_t* pSignalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT - { - pSignalSemaphoreValues = pSignalSemaphoreValues_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - TimelineSemaphoreSubmitInfo & setSignalSemaphoreValues( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & signalSemaphoreValues_ ) VULKAN_HPP_NOEXCEPT - { - signalSemaphoreValueCount = static_cast( signalSemaphoreValues_.size() ); - pSignalSemaphoreValues = signalSemaphoreValues_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkTimelineSemaphoreSubmitInfo const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkTimelineSemaphoreSubmitInfo &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( TimelineSemaphoreSubmitInfo const& ) const = default; -#else - bool operator==( TimelineSemaphoreSubmitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( waitSemaphoreValueCount == rhs.waitSemaphoreValueCount ) - && ( pWaitSemaphoreValues == rhs.pWaitSemaphoreValues ) - && ( signalSemaphoreValueCount == rhs.signalSemaphoreValueCount ) - && ( pSignalSemaphoreValues == rhs.pSignalSemaphoreValues ); - } - - bool operator!=( TimelineSemaphoreSubmitInfo const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eTimelineSemaphoreSubmitInfo; - const void* pNext = {}; - uint32_t waitSemaphoreValueCount = {}; - const uint64_t* pWaitSemaphoreValues = {}; - uint32_t signalSemaphoreValueCount = {}; - const uint64_t* pSignalSemaphoreValues = {}; - - }; - static_assert( sizeof( TimelineSemaphoreSubmitInfo ) == sizeof( VkTimelineSemaphoreSubmitInfo ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = TimelineSemaphoreSubmitInfo; - }; - using TimelineSemaphoreSubmitInfoKHR = TimelineSemaphoreSubmitInfo; - - struct TraceRaysIndirectCommandKHR - { - - -#if !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_ ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 TraceRaysIndirectCommandKHR & operator=( TraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - TraceRaysIndirectCommandKHR & operator=( VkTraceRaysIndirectCommandKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - TraceRaysIndirectCommandKHR & setWidth( uint32_t width_ ) VULKAN_HPP_NOEXCEPT - { - width = width_; - return *this; - } - - TraceRaysIndirectCommandKHR & setHeight( uint32_t height_ ) VULKAN_HPP_NOEXCEPT - { - height = height_; - return *this; - } - - TraceRaysIndirectCommandKHR & setDepth( uint32_t depth_ ) VULKAN_HPP_NOEXCEPT - { - depth = depth_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( TraceRaysIndirectCommandKHR const& ) const = default; -#else - bool operator==( TraceRaysIndirectCommandKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( width == rhs.width ) - && ( height == rhs.height ) - && ( depth == rhs.depth ); - } - - bool operator!=( TraceRaysIndirectCommandKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - uint32_t width = {}; - uint32_t height = {}; - uint32_t depth = {}; - - }; - static_assert( sizeof( TraceRaysIndirectCommandKHR ) == sizeof( VkTraceRaysIndirectCommandKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - struct ValidationFeaturesEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationFeaturesEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ValidationFeaturesEXT(uint32_t enabledValidationFeatureCount_ = {}, const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT* pEnabledValidationFeatures_ = {}, uint32_t disabledValidationFeatureCount_ = {}, const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT* pDisabledValidationFeatures_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & enabledValidationFeatures_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & disabledValidationFeatures_ = {} ) - : enabledValidationFeatureCount( static_cast( enabledValidationFeatures_.size() ) ), pEnabledValidationFeatures( enabledValidationFeatures_.data() ), disabledValidationFeatureCount( static_cast( disabledValidationFeatures_.size() ) ), pDisabledValidationFeatures( disabledValidationFeatures_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ValidationFeaturesEXT & operator=( ValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ValidationFeaturesEXT & operator=( VkValidationFeaturesEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ValidationFeaturesEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ValidationFeaturesEXT & setEnabledValidationFeatureCount( uint32_t enabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT - { - enabledValidationFeatureCount = enabledValidationFeatureCount_; - return *this; - } - - ValidationFeaturesEXT & setPEnabledValidationFeatures( const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT* pEnabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT - { - pEnabledValidationFeatures = pEnabledValidationFeatures_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ValidationFeaturesEXT & setEnabledValidationFeatures( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & enabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT - { - enabledValidationFeatureCount = static_cast( enabledValidationFeatures_.size() ); - pEnabledValidationFeatures = enabledValidationFeatures_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - ValidationFeaturesEXT & setDisabledValidationFeatureCount( uint32_t disabledValidationFeatureCount_ ) VULKAN_HPP_NOEXCEPT - { - disabledValidationFeatureCount = disabledValidationFeatureCount_; - return *this; - } - - ValidationFeaturesEXT & setPDisabledValidationFeatures( const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT* pDisabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT - { - pDisabledValidationFeatures = pDisabledValidationFeatures_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ValidationFeaturesEXT & setDisabledValidationFeatures( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & disabledValidationFeatures_ ) VULKAN_HPP_NOEXCEPT - { - disabledValidationFeatureCount = static_cast( disabledValidationFeatures_.size() ); - pDisabledValidationFeatures = disabledValidationFeatures_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkValidationFeaturesEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkValidationFeaturesEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ValidationFeaturesEXT const& ) const = default; -#else - bool operator==( ValidationFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( enabledValidationFeatureCount == rhs.enabledValidationFeatureCount ) - && ( pEnabledValidationFeatures == rhs.pEnabledValidationFeatures ) - && ( disabledValidationFeatureCount == rhs.disabledValidationFeatureCount ) - && ( pDisabledValidationFeatures == rhs.pDisabledValidationFeatures ); - } - - bool operator!=( ValidationFeaturesEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationFeaturesEXT; - const void* pNext = {}; - uint32_t enabledValidationFeatureCount = {}; - const VULKAN_HPP_NAMESPACE::ValidationFeatureEnableEXT* pEnabledValidationFeatures = {}; - uint32_t disabledValidationFeatureCount = {}; - const VULKAN_HPP_NAMESPACE::ValidationFeatureDisableEXT* pDisabledValidationFeatures = {}; - - }; - static_assert( sizeof( ValidationFeaturesEXT ) == sizeof( VkValidationFeaturesEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ValidationFeaturesEXT; - }; - - struct ValidationFlagsEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eValidationFlagsEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ValidationFlagsEXT(uint32_t disabledValidationCheckCount_ = {}, const VULKAN_HPP_NAMESPACE::ValidationCheckEXT* pDisabledValidationChecks_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & disabledValidationChecks_ ) - : disabledValidationCheckCount( static_cast( disabledValidationChecks_.size() ) ), pDisabledValidationChecks( disabledValidationChecks_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ValidationFlagsEXT & operator=( ValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ValidationFlagsEXT & operator=( VkValidationFlagsEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ValidationFlagsEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ValidationFlagsEXT & setDisabledValidationCheckCount( uint32_t disabledValidationCheckCount_ ) VULKAN_HPP_NOEXCEPT - { - disabledValidationCheckCount = disabledValidationCheckCount_; - return *this; - } - - ValidationFlagsEXT & setPDisabledValidationChecks( const VULKAN_HPP_NAMESPACE::ValidationCheckEXT* pDisabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT - { - pDisabledValidationChecks = pDisabledValidationChecks_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - ValidationFlagsEXT & setDisabledValidationChecks( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & disabledValidationChecks_ ) VULKAN_HPP_NOEXCEPT - { - disabledValidationCheckCount = static_cast( disabledValidationChecks_.size() ); - pDisabledValidationChecks = disabledValidationChecks_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkValidationFlagsEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkValidationFlagsEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ValidationFlagsEXT const& ) const = default; -#else - bool operator==( ValidationFlagsEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( disabledValidationCheckCount == rhs.disabledValidationCheckCount ) - && ( pDisabledValidationChecks == rhs.pDisabledValidationChecks ); - } - - bool operator!=( ValidationFlagsEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eValidationFlagsEXT; - const void* pNext = {}; - uint32_t disabledValidationCheckCount = {}; - const VULKAN_HPP_NAMESPACE::ValidationCheckEXT* pDisabledValidationChecks = {}; - - }; - static_assert( sizeof( ValidationFlagsEXT ) == sizeof( VkValidationFlagsEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ValidationFlagsEXT; - }; - -#ifdef VK_USE_PLATFORM_VI_NN - struct ViSurfaceCreateInfoNN - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eViSurfaceCreateInfoNN; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR ViSurfaceCreateInfoNN(VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ = {}, void* window_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 ViSurfaceCreateInfoNN & operator=( ViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - ViSurfaceCreateInfoNN & operator=( VkViSurfaceCreateInfoNN const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - ViSurfaceCreateInfoNN & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - ViSurfaceCreateInfoNN & setFlags( VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - ViSurfaceCreateInfoNN & setWindow( void* window_ ) VULKAN_HPP_NOEXCEPT - { - window = window_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( ViSurfaceCreateInfoNN const& ) const = default; -#else - bool operator==( ViSurfaceCreateInfoNN const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( window == rhs.window ); - } - - bool operator!=( ViSurfaceCreateInfoNN const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eViSurfaceCreateInfoNN; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::ViSurfaceCreateFlagsNN flags = {}; - void* window = {}; - - }; - static_assert( sizeof( ViSurfaceCreateInfoNN ) == sizeof( VkViSurfaceCreateInfoNN ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = ViSurfaceCreateInfoNN; - }; -#endif /*VK_USE_PLATFORM_VI_NN*/ - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - struct WaylandSurfaceCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWaylandSurfaceCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR WaylandSurfaceCreateInfoKHR(VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_ = {}, struct wl_display* display_ = {}, struct wl_surface* surface_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 WaylandSurfaceCreateInfoKHR & operator=( WaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - WaylandSurfaceCreateInfoKHR & operator=( VkWaylandSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - WaylandSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - WaylandSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - WaylandSurfaceCreateInfoKHR & setDisplay( struct wl_display* display_ ) VULKAN_HPP_NOEXCEPT - { - display = display_; - return *this; - } - - WaylandSurfaceCreateInfoKHR & setSurface( struct wl_surface* surface_ ) VULKAN_HPP_NOEXCEPT - { - surface = surface_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( WaylandSurfaceCreateInfoKHR const& ) const = default; -#else - bool operator==( WaylandSurfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( display == rhs.display ) - && ( surface == rhs.surface ); - } - - bool operator!=( WaylandSurfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWaylandSurfaceCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateFlagsKHR flags = {}; - struct wl_display* display = {}; - struct wl_surface* surface = {}; - - }; - static_assert( sizeof( WaylandSurfaceCreateInfoKHR ) == sizeof( VkWaylandSurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = WaylandSurfaceCreateInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct Win32KeyedMutexAcquireReleaseInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoKHR(uint32_t acquireCount_ = {}, const VULKAN_HPP_NAMESPACE::DeviceMemory* pAcquireSyncs_ = {}, const uint64_t* pAcquireKeys_ = {}, const uint32_t* pAcquireTimeouts_ = {}, uint32_t releaseCount_ = {}, const VULKAN_HPP_NAMESPACE::DeviceMemory* pReleaseSyncs_ = {}, const uint64_t* pReleaseKeys_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireSyncs_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireKeys_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireTimeouts_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseSyncs_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseKeys_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoKHR & operator=( Win32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - Win32KeyedMutexAcquireReleaseInfoKHR & operator=( VkWin32KeyedMutexAcquireReleaseInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT - { - acquireCount = acquireCount_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory* pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT - { - pAcquireSyncs = pAcquireSyncs_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireSyncs_ ) VULKAN_HPP_NOEXCEPT - { - acquireCount = static_cast( acquireSyncs_.size() ); - pAcquireSyncs = acquireSyncs_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireKeys( const uint64_t* pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT - { - pAcquireKeys = pAcquireKeys_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT - { - acquireCount = static_cast( acquireKeys_.size() ); - pAcquireKeys = acquireKeys_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - Win32KeyedMutexAcquireReleaseInfoKHR & setPAcquireTimeouts( const uint32_t* pAcquireTimeouts_ ) VULKAN_HPP_NOEXCEPT - { - pAcquireTimeouts = pAcquireTimeouts_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoKHR & setAcquireTimeouts( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireTimeouts_ ) VULKAN_HPP_NOEXCEPT - { - acquireCount = static_cast( acquireTimeouts_.size() ); - pAcquireTimeouts = acquireTimeouts_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT - { - releaseCount = releaseCount_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoKHR & setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory* pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT - { - pReleaseSyncs = pReleaseSyncs_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseSyncs_ ) VULKAN_HPP_NOEXCEPT - { - releaseCount = static_cast( releaseSyncs_.size() ); - pReleaseSyncs = releaseSyncs_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - Win32KeyedMutexAcquireReleaseInfoKHR & setPReleaseKeys( const uint64_t* pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT - { - pReleaseKeys = pReleaseKeys_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoKHR & setReleaseKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT - { - releaseCount = static_cast( releaseKeys_.size() ); - pReleaseKeys = releaseKeys_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkWin32KeyedMutexAcquireReleaseInfoKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkWin32KeyedMutexAcquireReleaseInfoKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Win32KeyedMutexAcquireReleaseInfoKHR const& ) const = default; -#else - bool operator==( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( Win32KeyedMutexAcquireReleaseInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoKHR; - const void* pNext = {}; - uint32_t acquireCount = {}; - const VULKAN_HPP_NAMESPACE::DeviceMemory* pAcquireSyncs = {}; - const uint64_t* pAcquireKeys = {}; - const uint32_t* pAcquireTimeouts = {}; - uint32_t releaseCount = {}; - const VULKAN_HPP_NAMESPACE::DeviceMemory* pReleaseSyncs = {}; - const uint64_t* pReleaseKeys = {}; - - }; - static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoKHR ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = Win32KeyedMutexAcquireReleaseInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct Win32KeyedMutexAcquireReleaseInfoNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR Win32KeyedMutexAcquireReleaseInfoNV(uint32_t acquireCount_ = {}, const VULKAN_HPP_NAMESPACE::DeviceMemory* pAcquireSyncs_ = {}, const uint64_t* pAcquireKeys_ = {}, const uint32_t* pAcquireTimeoutMilliseconds_ = {}, uint32_t releaseCount_ = {}, const VULKAN_HPP_NAMESPACE::DeviceMemory* pReleaseSyncs_ = {}, const uint64_t* pReleaseKeys_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireSyncs_, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireKeys_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireTimeoutMilliseconds_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseSyncs_ = {}, VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseKeys_ = {} ) - : 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 // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 Win32KeyedMutexAcquireReleaseInfoNV & operator=( Win32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - Win32KeyedMutexAcquireReleaseInfoNV & operator=( VkWin32KeyedMutexAcquireReleaseInfoNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setAcquireCount( uint32_t acquireCount_ ) VULKAN_HPP_NOEXCEPT - { - acquireCount = acquireCount_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory* pAcquireSyncs_ ) VULKAN_HPP_NOEXCEPT - { - pAcquireSyncs = pAcquireSyncs_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoNV & setAcquireSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireSyncs_ ) VULKAN_HPP_NOEXCEPT - { - acquireCount = static_cast( acquireSyncs_.size() ); - pAcquireSyncs = acquireSyncs_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireKeys( const uint64_t* pAcquireKeys_ ) VULKAN_HPP_NOEXCEPT - { - pAcquireKeys = pAcquireKeys_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoNV & setAcquireKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireKeys_ ) VULKAN_HPP_NOEXCEPT - { - acquireCount = static_cast( acquireKeys_.size() ); - pAcquireKeys = acquireKeys_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - Win32KeyedMutexAcquireReleaseInfoNV & setPAcquireTimeoutMilliseconds( const uint32_t* pAcquireTimeoutMilliseconds_ ) VULKAN_HPP_NOEXCEPT - { - pAcquireTimeoutMilliseconds = pAcquireTimeoutMilliseconds_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoNV & setAcquireTimeoutMilliseconds( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & acquireTimeoutMilliseconds_ ) VULKAN_HPP_NOEXCEPT - { - acquireCount = static_cast( acquireTimeoutMilliseconds_.size() ); - pAcquireTimeoutMilliseconds = acquireTimeoutMilliseconds_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - Win32KeyedMutexAcquireReleaseInfoNV & setReleaseCount( uint32_t releaseCount_ ) VULKAN_HPP_NOEXCEPT - { - releaseCount = releaseCount_; - return *this; - } - - Win32KeyedMutexAcquireReleaseInfoNV & setPReleaseSyncs( const VULKAN_HPP_NAMESPACE::DeviceMemory* pReleaseSyncs_ ) VULKAN_HPP_NOEXCEPT - { - pReleaseSyncs = pReleaseSyncs_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoNV & setReleaseSyncs( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseSyncs_ ) VULKAN_HPP_NOEXCEPT - { - releaseCount = static_cast( releaseSyncs_.size() ); - pReleaseSyncs = releaseSyncs_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - Win32KeyedMutexAcquireReleaseInfoNV & setPReleaseKeys( const uint64_t* pReleaseKeys_ ) VULKAN_HPP_NOEXCEPT - { - pReleaseKeys = pReleaseKeys_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - Win32KeyedMutexAcquireReleaseInfoNV & setReleaseKeys( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & releaseKeys_ ) VULKAN_HPP_NOEXCEPT - { - releaseCount = static_cast( releaseKeys_.size() ); - pReleaseKeys = releaseKeys_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkWin32KeyedMutexAcquireReleaseInfoNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkWin32KeyedMutexAcquireReleaseInfoNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Win32KeyedMutexAcquireReleaseInfoNV const& ) const = default; -#else - bool operator==( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - 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 ); - } - - bool operator!=( Win32KeyedMutexAcquireReleaseInfoNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32KeyedMutexAcquireReleaseInfoNV; - const void* pNext = {}; - uint32_t acquireCount = {}; - const VULKAN_HPP_NAMESPACE::DeviceMemory* pAcquireSyncs = {}; - const uint64_t* pAcquireKeys = {}; - const uint32_t* pAcquireTimeoutMilliseconds = {}; - uint32_t releaseCount = {}; - const VULKAN_HPP_NAMESPACE::DeviceMemory* pReleaseSyncs = {}; - const uint64_t* pReleaseKeys = {}; - - }; - static_assert( sizeof( Win32KeyedMutexAcquireReleaseInfoNV ) == sizeof( VkWin32KeyedMutexAcquireReleaseInfoNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = Win32KeyedMutexAcquireReleaseInfoNV; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - -#ifdef VK_USE_PLATFORM_WIN32_KHR - struct Win32SurfaceCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWin32SurfaceCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR Win32SurfaceCreateInfoKHR(VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_ = {}, HINSTANCE hinstance_ = {}, HWND hwnd_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 Win32SurfaceCreateInfoKHR & operator=( Win32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - Win32SurfaceCreateInfoKHR & operator=( VkWin32SurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - Win32SurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - Win32SurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - Win32SurfaceCreateInfoKHR & setHinstance( HINSTANCE hinstance_ ) VULKAN_HPP_NOEXCEPT - { - hinstance = hinstance_; - return *this; - } - - Win32SurfaceCreateInfoKHR & setHwnd( HWND hwnd_ ) VULKAN_HPP_NOEXCEPT - { - hwnd = hwnd_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Win32SurfaceCreateInfoKHR const& ) const = default; -#else - bool operator==( Win32SurfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( flags == rhs.flags ) - && ( hinstance == rhs.hinstance ) - && ( hwnd == rhs.hwnd ); - } - - bool operator!=( Win32SurfaceCreateInfoKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWin32SurfaceCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::Win32SurfaceCreateFlagsKHR flags = {}; - HINSTANCE hinstance = {}; - HWND hwnd = {}; - - }; - static_assert( sizeof( Win32SurfaceCreateInfoKHR ) == sizeof( VkWin32SurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = Win32SurfaceCreateInfoKHR; - }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - struct WriteDescriptorSetAccelerationStructureKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSetAccelerationStructureKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureKHR(uint32_t accelerationStructureCount_ = {}, const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructures_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & accelerationStructures_ ) - : accelerationStructureCount( static_cast( accelerationStructures_.size() ) ), pAccelerationStructures( accelerationStructures_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureKHR & operator=( WriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - WriteDescriptorSetAccelerationStructureKHR & operator=( VkWriteDescriptorSetAccelerationStructureKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - WriteDescriptorSetAccelerationStructureKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - WriteDescriptorSetAccelerationStructureKHR & setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructureCount = accelerationStructureCount_; - return *this; - } - - WriteDescriptorSetAccelerationStructureKHR & setPAccelerationStructures( const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT - { - pAccelerationStructures = pAccelerationStructures_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - WriteDescriptorSetAccelerationStructureKHR & setAccelerationStructures( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & accelerationStructures_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructureCount = static_cast( accelerationStructures_.size() ); - pAccelerationStructures = accelerationStructures_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkWriteDescriptorSetAccelerationStructureKHR const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkWriteDescriptorSetAccelerationStructureKHR &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( WriteDescriptorSetAccelerationStructureKHR const& ) const = default; -#else - bool operator==( WriteDescriptorSetAccelerationStructureKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( accelerationStructureCount == rhs.accelerationStructureCount ) - && ( pAccelerationStructures == rhs.pAccelerationStructures ); - } - - bool operator!=( WriteDescriptorSetAccelerationStructureKHR const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureKHR; - const void* pNext = {}; - uint32_t accelerationStructureCount = {}; - const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructures = {}; - - }; - static_assert( sizeof( WriteDescriptorSetAccelerationStructureKHR ) == sizeof( VkWriteDescriptorSetAccelerationStructureKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = WriteDescriptorSetAccelerationStructureKHR; - }; - - struct WriteDescriptorSetAccelerationStructureNV - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSetAccelerationStructureNV; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR WriteDescriptorSetAccelerationStructureNV(uint32_t accelerationStructureCount_ = {}, const VULKAN_HPP_NAMESPACE::AccelerationStructureNV* pAccelerationStructures_ = {}) VULKAN_HPP_NOEXCEPT - : 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( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & accelerationStructures_ ) - : accelerationStructureCount( static_cast( accelerationStructures_.size() ) ), pAccelerationStructures( accelerationStructures_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetAccelerationStructureNV & operator=( WriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - WriteDescriptorSetAccelerationStructureNV & operator=( VkWriteDescriptorSetAccelerationStructureNV const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - WriteDescriptorSetAccelerationStructureNV & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - WriteDescriptorSetAccelerationStructureNV & setAccelerationStructureCount( uint32_t accelerationStructureCount_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructureCount = accelerationStructureCount_; - return *this; - } - - WriteDescriptorSetAccelerationStructureNV & setPAccelerationStructures( const VULKAN_HPP_NAMESPACE::AccelerationStructureNV* pAccelerationStructures_ ) VULKAN_HPP_NOEXCEPT - { - pAccelerationStructures = pAccelerationStructures_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - WriteDescriptorSetAccelerationStructureNV & setAccelerationStructures( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & accelerationStructures_ ) VULKAN_HPP_NOEXCEPT - { - accelerationStructureCount = static_cast( accelerationStructures_.size() ); - pAccelerationStructures = accelerationStructures_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkWriteDescriptorSetAccelerationStructureNV const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkWriteDescriptorSetAccelerationStructureNV &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( WriteDescriptorSetAccelerationStructureNV const& ) const = default; -#else - bool operator==( WriteDescriptorSetAccelerationStructureNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( accelerationStructureCount == rhs.accelerationStructureCount ) - && ( pAccelerationStructures == rhs.pAccelerationStructures ); - } - - bool operator!=( WriteDescriptorSetAccelerationStructureNV const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetAccelerationStructureNV; - const void* pNext = {}; - uint32_t accelerationStructureCount = {}; - const VULKAN_HPP_NAMESPACE::AccelerationStructureNV* pAccelerationStructures = {}; - - }; - static_assert( sizeof( WriteDescriptorSetAccelerationStructureNV ) == sizeof( VkWriteDescriptorSetAccelerationStructureNV ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = WriteDescriptorSetAccelerationStructureNV; - }; - - struct WriteDescriptorSetInlineUniformBlockEXT - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eWriteDescriptorSetInlineUniformBlockEXT; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlockEXT(uint32_t dataSize_ = {}, const void* pData_ = {}) VULKAN_HPP_NOEXCEPT - : dataSize( dataSize_ ), pData( pData_ ) - {} - - VULKAN_HPP_CONSTEXPR WriteDescriptorSetInlineUniformBlockEXT( WriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - WriteDescriptorSetInlineUniformBlockEXT( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT - : WriteDescriptorSetInlineUniformBlockEXT( *reinterpret_cast( &rhs ) ) - {} - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - template - WriteDescriptorSetInlineUniformBlockEXT( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) - : dataSize( static_cast( data_.size() * sizeof(T) ) ), pData( data_.data() ) - {} -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 WriteDescriptorSetInlineUniformBlockEXT & operator=( WriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - WriteDescriptorSetInlineUniformBlockEXT & operator=( VkWriteDescriptorSetInlineUniformBlockEXT const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - WriteDescriptorSetInlineUniformBlockEXT & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - WriteDescriptorSetInlineUniformBlockEXT & setDataSize( uint32_t dataSize_ ) VULKAN_HPP_NOEXCEPT - { - dataSize = dataSize_; - return *this; - } - - WriteDescriptorSetInlineUniformBlockEXT & setPData( const void* pData_ ) VULKAN_HPP_NOEXCEPT - { - pData = pData_; - return *this; - } - -#if !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - template - WriteDescriptorSetInlineUniformBlockEXT & setData( VULKAN_HPP_NAMESPACE::ArrayProxyNoTemporaries const & data_ ) VULKAN_HPP_NOEXCEPT - { - dataSize = static_cast( data_.size() * sizeof(T) ); - pData = data_.data(); - return *this; - } -#endif // !defined(VULKAN_HPP_DISABLE_ENHANCED_MODE) - - - operator VkWriteDescriptorSetInlineUniformBlockEXT const&() const VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - operator VkWriteDescriptorSetInlineUniformBlockEXT &() VULKAN_HPP_NOEXCEPT - { - return *reinterpret_cast( this ); - } - - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( WriteDescriptorSetInlineUniformBlockEXT const& ) const = default; -#else - bool operator==( WriteDescriptorSetInlineUniformBlockEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return ( sType == rhs.sType ) - && ( pNext == rhs.pNext ) - && ( dataSize == rhs.dataSize ) - && ( pData == rhs.pData ); - } - - bool operator!=( WriteDescriptorSetInlineUniformBlockEXT const& rhs ) const VULKAN_HPP_NOEXCEPT - { - return !operator==( rhs ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eWriteDescriptorSetInlineUniformBlockEXT; - const void* pNext = {}; - uint32_t dataSize = {}; - const void* pData = {}; - - }; - static_assert( sizeof( WriteDescriptorSetInlineUniformBlockEXT ) == sizeof( VkWriteDescriptorSetInlineUniformBlockEXT ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = WriteDescriptorSetInlineUniformBlockEXT; - }; - -#ifdef VK_USE_PLATFORM_XCB_KHR - struct XcbSurfaceCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eXcbSurfaceCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR XcbSurfaceCreateInfoKHR(VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_ = {}, xcb_connection_t* connection_ = {}, xcb_window_t window_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 XcbSurfaceCreateInfoKHR & operator=( XcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - XcbSurfaceCreateInfoKHR & operator=( VkXcbSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - XcbSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - XcbSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - XcbSurfaceCreateInfoKHR & setConnection( xcb_connection_t* connection_ ) VULKAN_HPP_NOEXCEPT - { - connection = connection_; - return *this; - } - - XcbSurfaceCreateInfoKHR & setWindow( xcb_window_t window_ ) VULKAN_HPP_NOEXCEPT - { - window = window_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( XcbSurfaceCreateInfoKHR const& ) const = default; -#else - 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 ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eXcbSurfaceCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::XcbSurfaceCreateFlagsKHR flags = {}; - xcb_connection_t* connection = {}; - xcb_window_t window = {}; - - }; - static_assert( sizeof( XcbSurfaceCreateInfoKHR ) == sizeof( VkXcbSurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = XcbSurfaceCreateInfoKHR; - }; -#endif /*VK_USE_PLATFORM_XCB_KHR*/ - -#ifdef VK_USE_PLATFORM_XLIB_KHR - struct XlibSurfaceCreateInfoKHR - { - static const bool allowDuplicate = false; - static VULKAN_HPP_CONST_OR_CONSTEXPR StructureType structureType = StructureType::eXlibSurfaceCreateInfoKHR; - -#if !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - VULKAN_HPP_CONSTEXPR XlibSurfaceCreateInfoKHR(VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_ = {}, Display* dpy_ = {}, Window window_ = {}) VULKAN_HPP_NOEXCEPT - : 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 ) ) - {} -#endif // !defined( VULKAN_HPP_NO_STRUCT_CONSTRUCTORS ) - - VULKAN_HPP_CONSTEXPR_14 XlibSurfaceCreateInfoKHR & operator=( XlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT = default; - - XlibSurfaceCreateInfoKHR & operator=( VkXlibSurfaceCreateInfoKHR const & rhs ) VULKAN_HPP_NOEXCEPT - { - *this = *reinterpret_cast( &rhs ); - return *this; - } - - XlibSurfaceCreateInfoKHR & setPNext( const void* pNext_ ) VULKAN_HPP_NOEXCEPT - { - pNext = pNext_; - return *this; - } - - XlibSurfaceCreateInfoKHR & setFlags( VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags_ ) VULKAN_HPP_NOEXCEPT - { - flags = flags_; - return *this; - } - - XlibSurfaceCreateInfoKHR & setDpy( Display* dpy_ ) VULKAN_HPP_NOEXCEPT - { - dpy = dpy_; - return *this; - } - - XlibSurfaceCreateInfoKHR & setWindow( Window window_ ) VULKAN_HPP_NOEXCEPT - { - window = window_; - return *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_HAS_SPACESHIP_OPERATOR) - auto operator<=>( XlibSurfaceCreateInfoKHR const& ) const = default; -#else - 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 ); - } -#endif - - - - public: - VULKAN_HPP_NAMESPACE::StructureType sType = StructureType::eXlibSurfaceCreateInfoKHR; - const void* pNext = {}; - VULKAN_HPP_NAMESPACE::XlibSurfaceCreateFlagsKHR flags = {}; - Display* dpy = {}; - Window window = {}; - - }; - static_assert( sizeof( XlibSurfaceCreateInfoKHR ) == sizeof( VkXlibSurfaceCreateInfoKHR ), "struct and wrapper have different size!" ); - static_assert( std::is_standard_layout::value, "struct wrapper is not a standard layout!" ); - - template <> - struct CppType - { - using Type = XlibSurfaceCreateInfoKHR; - }; -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - - class DebugReportCallbackEXT - { - public: - using CType = VkDebugReportCallbackEXT; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDebugReportCallbackEXT; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eDebugReportCallbackEXT; - - public: - VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT() VULKAN_HPP_NOEXCEPT - : m_debugReportCallbackEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DebugReportCallbackEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_debugReportCallbackEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DebugReportCallbackEXT( VkDebugReportCallbackEXT debugReportCallbackEXT ) VULKAN_HPP_NOEXCEPT - : m_debugReportCallbackEXT( debugReportCallbackEXT ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DebugReportCallbackEXT & operator=(VkDebugReportCallbackEXT debugReportCallbackEXT) VULKAN_HPP_NOEXCEPT - { - m_debugReportCallbackEXT = debugReportCallbackEXT; - return *this; - } -#endif - - DebugReportCallbackEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_debugReportCallbackEXT = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugReportCallbackEXT const& ) const = default; -#else - bool operator==( DebugReportCallbackEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_debugReportCallbackEXT == rhs.m_debugReportCallbackEXT; - } - - bool operator!=(DebugReportCallbackEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_debugReportCallbackEXT != rhs.m_debugReportCallbackEXT; - } - - bool operator<(DebugReportCallbackEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_debugReportCallbackEXT < rhs.m_debugReportCallbackEXT; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT ) == sizeof( VkDebugReportCallbackEXT ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - - class DebugUtilsMessengerEXT - { - public: - using CType = VkDebugUtilsMessengerEXT; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eDebugUtilsMessengerEXT; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eUnknown; - - public: - VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT() VULKAN_HPP_NOEXCEPT - : m_debugUtilsMessengerEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR DebugUtilsMessengerEXT( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_debugUtilsMessengerEXT(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT DebugUtilsMessengerEXT( VkDebugUtilsMessengerEXT debugUtilsMessengerEXT ) VULKAN_HPP_NOEXCEPT - : m_debugUtilsMessengerEXT( debugUtilsMessengerEXT ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - DebugUtilsMessengerEXT & operator=(VkDebugUtilsMessengerEXT debugUtilsMessengerEXT) VULKAN_HPP_NOEXCEPT - { - m_debugUtilsMessengerEXT = debugUtilsMessengerEXT; - return *this; - } -#endif - - DebugUtilsMessengerEXT & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_debugUtilsMessengerEXT = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( DebugUtilsMessengerEXT const& ) const = default; -#else - bool operator==( DebugUtilsMessengerEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_debugUtilsMessengerEXT == rhs.m_debugUtilsMessengerEXT; - } - - bool operator!=(DebugUtilsMessengerEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_debugUtilsMessengerEXT != rhs.m_debugUtilsMessengerEXT; - } - - bool operator<(DebugUtilsMessengerEXT const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_debugUtilsMessengerEXT < rhs.m_debugUtilsMessengerEXT; - } -#endif - - 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT ) == sizeof( VkDebugUtilsMessengerEXT ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT; - }; - - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - -#ifndef VULKAN_HPP_NO_SMART_HANDLE - class Instance; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDebugReportCallbackEXT = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueDebugUtilsMessengerEXT = UniqueHandle; - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueSurfaceKHR = UniqueHandle; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ - - class Instance - { - public: - using CType = VkInstance; - - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::ObjectType objectType = VULKAN_HPP_NAMESPACE::ObjectType::eInstance; - static VULKAN_HPP_CONST_OR_CONSTEXPR VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT debugReportObjectType = VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT::eInstance; - - public: - VULKAN_HPP_CONSTEXPR Instance() VULKAN_HPP_NOEXCEPT - : m_instance(VK_NULL_HANDLE) - {} - - VULKAN_HPP_CONSTEXPR Instance( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - : m_instance(VK_NULL_HANDLE) - {} - - VULKAN_HPP_TYPESAFE_EXPLICIT Instance( VkInstance instance ) VULKAN_HPP_NOEXCEPT - : m_instance( instance ) - {} - -#if defined(VULKAN_HPP_TYPESAFE_CONVERSION) - Instance & operator=(VkInstance instance) VULKAN_HPP_NOEXCEPT - { - m_instance = instance; - return *this; - } -#endif - - Instance & operator=( std::nullptr_t ) VULKAN_HPP_NOEXCEPT - { - m_instance = VK_NULL_HANDLE; - return *this; - } - -#if defined(VULKAN_HPP_HAS_SPACESHIP_OPERATOR) - auto operator<=>( Instance const& ) const = default; -#else - bool operator==( Instance const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_instance == rhs.m_instance; - } - - bool operator!=(Instance const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_instance != rhs.m_instance; - } - - bool operator<(Instance const & rhs ) const VULKAN_HPP_NOEXCEPT - { - return m_instance < rhs.m_instance; - } -#endif - - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - VULKAN_HPP_NODISCARD Result createAndroidSurfaceKHR( const VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - - template - VULKAN_HPP_NODISCARD Result createDebugReportCallbackEXT( const VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT* pCallback, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createDebugUtilsMessengerEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT* pMessenger, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - typename ResultValueType::type createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type createDebugUtilsMessengerEXTUnique( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - template - VULKAN_HPP_NODISCARD Result createDirectFBSurfaceEXT( const VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createDirectFBSurfaceEXT( const DirectFBSurfaceCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createDirectFBSurfaceEXTUnique( const DirectFBSurfaceCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - - template - VULKAN_HPP_NODISCARD Result createDisplayPlaneSurfaceKHR( const VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result createHeadlessSurfaceEXT( const VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createHeadlessSurfaceEXT( const HeadlessSurfaceCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createHeadlessSurfaceEXTUnique( const HeadlessSurfaceCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_IOS_MVK - template - VULKAN_HPP_NODISCARD Result createIOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_FUCHSIA - template - VULKAN_HPP_NODISCARD Result createImagePipeSurfaceFUCHSIA( const VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createImagePipeSurfaceFUCHSIA( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createImagePipeSurfaceFUCHSIAUnique( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_MACOS_MVK - template - VULKAN_HPP_NODISCARD Result createMacOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_METAL_EXT - template - VULKAN_HPP_NODISCARD Result createMetalSurfaceEXT( const VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createMetalSurfaceEXT( const MetalSurfaceCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createMetalSurfaceEXTUnique( const MetalSurfaceCreateInfoEXT & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_SCREEN_QNX - template - VULKAN_HPP_NODISCARD Result createScreenSurfaceQNX( const VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createScreenSurfaceQNX( const ScreenSurfaceCreateInfoQNX & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createScreenSurfaceQNXUnique( const ScreenSurfaceCreateInfoQNX & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_GGP - template - VULKAN_HPP_NODISCARD Result createStreamDescriptorSurfaceGGP( const VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createStreamDescriptorSurfaceGGP( const StreamDescriptorSurfaceCreateInfoGGP & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createStreamDescriptorSurfaceGGPUnique( const StreamDescriptorSurfaceCreateInfoGGP & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_VI_NN - template - VULKAN_HPP_NODISCARD Result createViSurfaceNN( const VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - template - VULKAN_HPP_NODISCARD Result createWaylandSurfaceKHR( const VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD Result createWin32SurfaceKHR( const VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_XCB_KHR - template - VULKAN_HPP_NODISCARD Result createXcbSurfaceKHR( const VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - -#ifdef VK_USE_PLATFORM_XLIB_KHR - template - VULKAN_HPP_NODISCARD Result createXlibSurfaceKHR( const VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, 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*/ - - - template - void debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const std::string & layerPrefix, const std::string & message, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyDebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroyDebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroyDebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroySurfaceKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroySurfaceKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface VULKAN_HPP_DEFAULT_ARGUMENT_ASSIGNMENT, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void destroy( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void destroy( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result enumeratePhysicalDeviceGroups( uint32_t* pPhysicalDeviceGroupCount, VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumeratePhysicalDeviceGroups( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PhysicalDeviceGroupPropertiesAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumeratePhysicalDeviceGroups( PhysicalDeviceGroupPropertiesAllocator & physicalDeviceGroupPropertiesAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD Result enumeratePhysicalDeviceGroupsKHR( uint32_t* pPhysicalDeviceGroupCount, VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumeratePhysicalDeviceGroupsKHR( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PhysicalDeviceGroupPropertiesAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumeratePhysicalDeviceGroupsKHR( PhysicalDeviceGroupPropertiesAllocator & physicalDeviceGroupPropertiesAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, VULKAN_HPP_NAMESPACE::PhysicalDevice* pPhysicalDevices, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumeratePhysicalDevices( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = PhysicalDeviceAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumeratePhysicalDevices( PhysicalDeviceAllocator & physicalDeviceAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - PFN_vkVoidFunction getProcAddr( const char* pName, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - PFN_vkVoidFunction getProcAddr( const std::string & name, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - void submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT* pCallbackData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - void submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT & callbackData, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) const VULKAN_HPP_NOEXCEPT; -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - VULKAN_HPP_TYPESAFE_EXPLICIT 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; - }; - static_assert( sizeof( VULKAN_HPP_NAMESPACE::Instance ) == sizeof( VkInstance ), "handle and wrapper have different size!" ); - - template <> - struct VULKAN_HPP_DEPRECATED("vk::cpp_type is deprecated. Use vk::CppType instead.") cpp_type - { - using type = VULKAN_HPP_NAMESPACE::Instance; - }; - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Instance; - }; - - - template <> - struct CppType - { - using Type = VULKAN_HPP_NAMESPACE::Instance; - }; - - - template <> - struct isVulkanHandleType - { - static VULKAN_HPP_CONST_OR_CONSTEXPR bool value = true; - }; - -#ifndef VULKAN_HPP_NO_SMART_HANDLE - template class UniqueHandleTraits { public: using deleter = ObjectDestroy; }; - using UniqueInstance = UniqueHandle; -#endif /*VULKAN_HPP_NO_SMART_HANDLE*/ - - - template - VULKAN_HPP_NODISCARD Result createInstance( const VULKAN_HPP_NAMESPACE::InstanceCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Instance* pInstance, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS typename ResultValueType::type createInstance( const InstanceCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createInstanceUnique( const InstanceCreateInfo & createInfo, Optional allocator VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::ExtensionProperties* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateInstanceExtensionProperties( Optional layerName VULKAN_HPP_DEFAULT_ARGUMENT_NULLPTR_ASSIGNMENT, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = ExtensionPropertiesAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateInstanceExtensionProperties( Optional layerName, ExtensionPropertiesAllocator & extensionPropertiesAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::LayerProperties* pProperties, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ) VULKAN_HPP_NOEXCEPT; -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateInstanceLayerProperties( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); - template , typename Dispatch = VULKAN_HPP_DEFAULT_DISPATCHER_TYPE, typename B = LayerPropertiesAllocator, typename std::enable_if::value, int>::type = 0> - VULKAN_HPP_NODISCARD typename ResultValueType>::type enumerateInstanceLayerProperties( LayerPropertiesAllocator & layerPropertiesAllocator, Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - 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 - template - typename ResultValueType::type enumerateInstanceVersion( Dispatch const & d VULKAN_HPP_DEFAULT_DISPATCHER_ASSIGNMENT ); -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result createInstance( const VULKAN_HPP_NAMESPACE::InstanceCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Instance* pInstance, Dispatch const & d ) VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateInstance( reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkInstance *>( pInstance ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type createInstance( const InstanceCreateInfo & createInfo, Optional allocator, Dispatch const & d ) - { - VULKAN_HPP_NAMESPACE::Instance instance; - Result result = static_cast( d.vkCreateInstance( reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &instance ) ) ); - return createResultValue( result, instance, VULKAN_HPP_NAMESPACE_STRING "::createInstance" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type createInstanceUnique( const InstanceCreateInfo & createInfo, Optional allocator, Dispatch const & d ) - { - VULKAN_HPP_NAMESPACE::Instance instance; - Result result = static_cast( d.vkCreateInstance( reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &instance ) ) ); - ObjectDestroy deleter( allocator, d ); - return createResultValue( result, instance, VULKAN_HPP_NAMESPACE_STRING "::createInstanceUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result enumerateInstanceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::ExtensionProperties* pProperties, Dispatch const & d ) VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEnumerateInstanceExtensionProperties( pLayerName, pPropertyCount, reinterpret_cast< VkExtensionProperties *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type enumerateInstanceExtensionProperties( Optional layerName, Dispatch const & d ) - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceExtensionProperties" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type enumerateInstanceExtensionProperties( Optional layerName, ExtensionPropertiesAllocator & extensionPropertiesAllocator, Dispatch const & d ) - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceExtensionProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result enumerateInstanceLayerProperties( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::LayerProperties* pProperties, Dispatch const & d ) VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEnumerateInstanceLayerProperties( pPropertyCount, reinterpret_cast< VkLayerProperties *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type enumerateInstanceLayerProperties( Dispatch const & d ) - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceLayerProperties" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type enumerateInstanceLayerProperties( LayerPropertiesAllocator & layerPropertiesAllocator, Dispatch const & d ) - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::enumerateInstanceLayerProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result enumerateInstanceVersion( uint32_t* pApiVersion, Dispatch const & d ) VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEnumerateInstanceVersion( pApiVersion ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type enumerateInstanceVersion( Dispatch const & d ) - { - uint32_t apiVersion; - Result result = static_cast( d.vkEnumerateInstanceVersion( &apiVersion ) ); - return createResultValue( result, apiVersion, VULKAN_HPP_NAMESPACE_STRING "::enumerateInstanceVersion" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::begin( const VULKAN_HPP_NAMESPACE::CommandBufferBeginInfo* pBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast( pBeginInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::begin( const CommandBufferBeginInfo & beginInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkBeginCommandBuffer( m_commandBuffer, reinterpret_cast( &beginInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::begin" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( const VULKAN_HPP_NAMESPACE::ConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginConditionalRenderingEXT( m_commandBuffer, reinterpret_cast( pConditionalRenderingBegin ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginConditionalRenderingEXT( const ConditionalRenderingBeginInfoEXT & conditionalRenderingBegin, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginConditionalRenderingEXT( m_commandBuffer, reinterpret_cast( &conditionalRenderingBegin ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pLabelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( pLabelInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( &labelInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::beginQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, VULKAN_HPP_NAMESPACE::QueryControlFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginQuery( m_commandBuffer, static_cast( queryPool ), query, static_cast( flags ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::beginQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, VULKAN_HPP_NAMESPACE::QueryControlFlags flags, uint32_t index, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginQueryIndexedEXT( m_commandBuffer, static_cast( queryPool ), query, static_cast( flags ), index ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo* pRenderPassBegin, VULKAN_HPP_NAMESPACE::SubpassContents contents, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast( pRenderPassBegin ), static_cast( contents ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass( const RenderPassBeginInfo & renderPassBegin, VULKAN_HPP_NAMESPACE::SubpassContents contents, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginRenderPass( m_commandBuffer, reinterpret_cast( &renderPassBegin ), static_cast( contents ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo* pRenderPassBegin, const VULKAN_HPP_NAMESPACE::SubpassBeginInfo* pSubpassBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginRenderPass2( m_commandBuffer, reinterpret_cast( pRenderPassBegin ), reinterpret_cast( pSubpassBeginInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfo & subpassBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginRenderPass2( m_commandBuffer, reinterpret_cast( &renderPassBegin ), reinterpret_cast( &subpassBeginInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassBeginInfo* pRenderPassBegin, const VULKAN_HPP_NAMESPACE::SubpassBeginInfo* pSubpassBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginRenderPass2KHR( m_commandBuffer, reinterpret_cast( pRenderPassBegin ), reinterpret_cast( pSubpassBeginInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::beginRenderPass2KHR( const RenderPassBeginInfo & renderPassBegin, const SubpassBeginInfo & subpassBeginInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginRenderPass2KHR( m_commandBuffer, reinterpret_cast( &renderPassBegin ), reinterpret_cast( &subpassBeginInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::beginTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VULKAN_HPP_NAMESPACE::Buffer* pCounterBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pCounterBufferOffsets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBeginTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBufferCount, reinterpret_cast( pCounterBuffers ), reinterpret_cast( pCounterBufferOffsets ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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 - { -#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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::PipelineLayout layout, uint32_t firstSet, uint32_t descriptorSetCount, const VULKAN_HPP_NAMESPACE::DescriptorSet* pDescriptorSets, uint32_t dynamicOffsetCount, const uint32_t* pDynamicOffsets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBindDescriptorSets( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( layout ), firstSet, descriptorSetCount, reinterpret_cast( pDescriptorSets ), dynamicOffsetCount, pDynamicOffsets ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::bindDescriptorSets( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::PipelineLayout layout, uint32_t firstSet, ArrayProxy const & descriptorSets, ArrayProxy const & dynamicOffsets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::bindIndexBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::IndexType indexType, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBindIndexBuffer( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( indexType ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::bindPipeline( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBindPipeline( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( pipeline ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::bindPipelineShaderGroupNV( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t groupIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBindPipelineShaderGroupNV( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( pipeline ), groupIndex ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::bindShadingRateImageNV( VULKAN_HPP_NAMESPACE::ImageView imageView, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBindShadingRateImageNV( m_commandBuffer, static_cast( imageView ), static_cast( imageLayout ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::bindTransformFeedbackBuffersEXT( uint32_t firstBinding, uint32_t bindingCount, const VULKAN_HPP_NAMESPACE::Buffer* pBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pOffsets, const VULKAN_HPP_NAMESPACE::DeviceSize* pSizes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBindTransformFeedbackBuffersEXT( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast( pBuffers ), reinterpret_cast( pOffsets ), reinterpret_cast( pSizes ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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 - { -#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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers( uint32_t firstBinding, uint32_t bindingCount, const VULKAN_HPP_NAMESPACE::Buffer* pBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pOffsets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBindVertexBuffers( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast( pBuffers ), reinterpret_cast( pOffsets ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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 - { -#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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::bindVertexBuffers2EXT( uint32_t firstBinding, uint32_t bindingCount, const VULKAN_HPP_NAMESPACE::Buffer* pBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pOffsets, const VULKAN_HPP_NAMESPACE::DeviceSize* pSizes, const VULKAN_HPP_NAMESPACE::DeviceSize* pStrides, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBindVertexBuffers2EXT( m_commandBuffer, firstBinding, bindingCount, reinterpret_cast( pBuffers ), reinterpret_cast( pOffsets ), reinterpret_cast( pSizes ), reinterpret_cast( pStrides ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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 - { -#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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::ImageBlit* pRegions, VULKAN_HPP_NAMESPACE::Filter filter, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBlitImage( 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 - template - VULKAN_HPP_INLINE void CommandBuffer::blitImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, ArrayProxy const & regions, VULKAN_HPP_NAMESPACE::Filter filter, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( const VULKAN_HPP_NAMESPACE::BlitImageInfo2KHR* pBlitImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBlitImage2KHR( m_commandBuffer, reinterpret_cast( pBlitImageInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::blitImage2KHR( const BlitImageInfo2KHR & blitImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBlitImage2KHR( m_commandBuffer, reinterpret_cast( &blitImageInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureInfoNV* pInfo, VULKAN_HPP_NAMESPACE::Buffer instanceData, VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, VULKAN_HPP_NAMESPACE::Bool32 update, VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, VULKAN_HPP_NAMESPACE::Buffer scratch, VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBuildAccelerationStructureNV( 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 - template - VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructureNV( const AccelerationStructureInfoNV & info, VULKAN_HPP_NAMESPACE::Buffer instanceData, VULKAN_HPP_NAMESPACE::DeviceSize instanceOffset, VULKAN_HPP_NAMESPACE::Bool32 update, VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, VULKAN_HPP_NAMESPACE::Buffer scratch, VULKAN_HPP_NAMESPACE::DeviceSize scratchOffset, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresIndirectKHR( uint32_t infoCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR* pInfos, const VULKAN_HPP_NAMESPACE::DeviceAddress* pIndirectDeviceAddresses, const uint32_t* pIndirectStrides, const uint32_t* const * ppMaxPrimitiveCounts, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBuildAccelerationStructuresIndirectKHR( m_commandBuffer, infoCount, reinterpret_cast( pInfos ), reinterpret_cast( pIndirectDeviceAddresses ), pIndirectStrides, ppMaxPrimitiveCounts ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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 - { -#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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR( uint32_t infoCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR* pInfos, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR* const * ppBuildRangeInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdBuildAccelerationStructuresKHR( m_commandBuffer, infoCount, reinterpret_cast( pInfos ), reinterpret_cast( ppBuildRangeInfos ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::buildAccelerationStructuresKHR( ArrayProxy const & infos, ArrayProxy const & pBuildRangeInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS - { -#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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( uint32_t attachmentCount, const VULKAN_HPP_NAMESPACE::ClearAttachment* pAttachments, uint32_t rectCount, const VULKAN_HPP_NAMESPACE::ClearRect* pRects, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdClearAttachments( m_commandBuffer, attachmentCount, reinterpret_cast( pAttachments ), rectCount, reinterpret_cast( pRects ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::clearAttachments( ArrayProxy const & attachments, ArrayProxy const & rects, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdClearAttachments( m_commandBuffer, attachments.size(), reinterpret_cast( attachments.data() ), rects.size(), reinterpret_cast( rects.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, const VULKAN_HPP_NAMESPACE::ClearColorValue* pColor, uint32_t rangeCount, const VULKAN_HPP_NAMESPACE::ImageSubresourceRange* pRanges, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdClearColorImage( m_commandBuffer, static_cast( image ), static_cast( imageLayout ), reinterpret_cast( pColor ), rangeCount, reinterpret_cast( pRanges ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::clearColorImage( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, const ClearColorValue & color, ArrayProxy const & ranges, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, const VULKAN_HPP_NAMESPACE::ClearDepthStencilValue* pDepthStencil, uint32_t rangeCount, const VULKAN_HPP_NAMESPACE::ImageSubresourceRange* pRanges, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdClearDepthStencilImage( m_commandBuffer, static_cast( image ), static_cast( imageLayout ), reinterpret_cast( pDepthStencil ), rangeCount, reinterpret_cast( pRanges ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::clearDepthStencilImage( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageLayout imageLayout, const ClearDepthStencilValue & depthStencil, ArrayProxy const & ranges, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyAccelerationStructureKHR( m_commandBuffer, reinterpret_cast( pInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureKHR( const CopyAccelerationStructureInfoKHR & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyAccelerationStructureKHR( m_commandBuffer, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV dst, VULKAN_HPP_NAMESPACE::AccelerationStructureNV src, VULKAN_HPP_NAMESPACE::CopyAccelerationStructureModeKHR mode, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyAccelerationStructureNV( m_commandBuffer, static_cast( dst ), static_cast( src ), static_cast( mode ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR( const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyAccelerationStructureToMemoryKHR( m_commandBuffer, reinterpret_cast( pInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyAccelerationStructureToMemoryKHR( const CopyAccelerationStructureToMemoryInfoKHR & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyAccelerationStructureToMemoryKHR( m_commandBuffer, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::BufferCopy* pRegions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyBuffer( m_commandBuffer, static_cast( srcBuffer ), static_cast( dstBuffer ), regionCount, reinterpret_cast( pRegions ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyBuffer( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, ArrayProxy const & regions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyBuffer( m_commandBuffer, static_cast( srcBuffer ), static_cast( dstBuffer ), regions.size(), reinterpret_cast( regions.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferInfo2KHR* pCopyBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyBuffer2KHR( m_commandBuffer, reinterpret_cast( pCopyBufferInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyBuffer2KHR( const CopyBufferInfo2KHR & copyBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyBuffer2KHR( m_commandBuffer, reinterpret_cast( ©BufferInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::BufferImageCopy* pRegions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyBufferToImage( m_commandBuffer, static_cast( srcBuffer ), static_cast( dstImage ), static_cast( dstImageLayout ), regionCount, reinterpret_cast( pRegions ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage( VULKAN_HPP_NAMESPACE::Buffer srcBuffer, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, ArrayProxy const & regions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2KHR( const VULKAN_HPP_NAMESPACE::CopyBufferToImageInfo2KHR* pCopyBufferToImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyBufferToImage2KHR( m_commandBuffer, reinterpret_cast( pCopyBufferToImageInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyBufferToImage2KHR( const CopyBufferToImageInfo2KHR & copyBufferToImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyBufferToImage2KHR( m_commandBuffer, reinterpret_cast( ©BufferToImageInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::ImageCopy* pRegions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyImage( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstImage ), static_cast( dstImageLayout ), regionCount, reinterpret_cast( pRegions ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, ArrayProxy const & regions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( const VULKAN_HPP_NAMESPACE::CopyImageInfo2KHR* pCopyImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyImage2KHR( m_commandBuffer, reinterpret_cast( pCopyImageInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyImage2KHR( const CopyImageInfo2KHR & copyImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyImage2KHR( m_commandBuffer, reinterpret_cast( ©ImageInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::BufferImageCopy* pRegions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyImageToBuffer( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstBuffer ), regionCount, reinterpret_cast( pRegions ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, ArrayProxy const & regions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2KHR( const VULKAN_HPP_NAMESPACE::CopyImageToBufferInfo2KHR* pCopyImageToBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyImageToBuffer2KHR( m_commandBuffer, reinterpret_cast( pCopyImageToBufferInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyImageToBuffer2KHR( const CopyImageToBufferInfo2KHR & copyImageToBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyImageToBuffer2KHR( m_commandBuffer, reinterpret_cast( ©ImageToBufferInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyMemoryToAccelerationStructureKHR( m_commandBuffer, reinterpret_cast( pInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::copyMemoryToAccelerationStructureKHR( const CopyMemoryToAccelerationStructureInfoKHR & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyMemoryToAccelerationStructureKHR( m_commandBuffer, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::copyQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdCopyQueryPoolResults( m_commandBuffer, static_cast( queryPool ), firstQuery, queryCount, static_cast( dstBuffer ), static_cast( dstOffset ), static_cast( stride ), static_cast( flags ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerBeginEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDebugMarkerBeginEXT( m_commandBuffer, reinterpret_cast( &markerInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerEndEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDebugMarkerEndEXT( m_commandBuffer ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerMarkerInfoEXT* pMarkerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::debugMarkerInsertEXT( const DebugMarkerMarkerInfoEXT & markerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDebugMarkerInsertEXT( m_commandBuffer, reinterpret_cast( &markerInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::dispatch( uint32_t groupCountX, uint32_t groupCountY, uint32_t groupCountZ, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDispatch( m_commandBuffer, groupCountX, groupCountY, groupCountZ ); - } - - - template - 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 - { - d.vkCmdDispatchBase( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); - } - - template - 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 - { - d.vkCmdDispatchBaseKHR( m_commandBuffer, baseGroupX, baseGroupY, baseGroupZ, groupCountX, groupCountY, groupCountZ ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::dispatchIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDispatchIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ) ); - } - - - template - 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 - { - d.vkCmdDraw( m_commandBuffer, vertexCount, instanceCount, firstVertex, firstInstance ); - } - - - template - 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 - { - d.vkCmdDrawIndexed( m_commandBuffer, indexCount, instanceCount, firstIndex, vertexOffset, firstInstance ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawIndexedIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawIndexedIndirectCount( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } - - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawIndexedIndirectCountAMD( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } - - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndexedIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawIndexedIndirectCountKHR( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirect( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawIndirect( m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectByteCountEXT( uint32_t instanceCount, uint32_t firstInstance, VULKAN_HPP_NAMESPACE::Buffer counterBuffer, VULKAN_HPP_NAMESPACE::DeviceSize counterBufferOffset, uint32_t counterOffset, uint32_t vertexStride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawIndirectByteCountEXT( m_commandBuffer, instanceCount, firstInstance, static_cast( counterBuffer ), static_cast( counterBufferOffset ), counterOffset, vertexStride ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCount( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawIndirectCount( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } - - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountAMD( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawIndirectCountAMD( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } - - template - VULKAN_HPP_INLINE void CommandBuffer::drawIndirectCountKHR( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawIndirectCountKHR( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectCountNV( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::Buffer countBuffer, VULKAN_HPP_NAMESPACE::DeviceSize countBufferOffset, uint32_t maxDrawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawMeshTasksIndirectCountNV( m_commandBuffer, static_cast( buffer ), static_cast( offset ), static_cast( countBuffer ), static_cast( countBufferOffset ), maxDrawCount, stride ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksIndirectNV( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceSize offset, uint32_t drawCount, uint32_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawMeshTasksIndirectNV( m_commandBuffer, static_cast( buffer ), static_cast( offset ), drawCount, stride ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::drawMeshTasksNV( uint32_t taskCount, uint32_t firstTask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdDrawMeshTasksNV( m_commandBuffer, taskCount, firstTask ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::endConditionalRenderingEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndConditionalRenderingEXT( m_commandBuffer ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::endDebugUtilsLabelEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndDebugUtilsLabelEXT( m_commandBuffer ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::endQuery( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndQuery( m_commandBuffer, static_cast( queryPool ), query ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::endQueryIndexedEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, uint32_t index, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndQueryIndexedEXT( m_commandBuffer, static_cast( queryPool ), query, index ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::endRenderPass( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndRenderPass( m_commandBuffer ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( const VULKAN_HPP_NAMESPACE::SubpassEndInfo* pSubpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndRenderPass2( m_commandBuffer, reinterpret_cast( pSubpassEndInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2( const SubpassEndInfo & subpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndRenderPass2( m_commandBuffer, reinterpret_cast( &subpassEndInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const VULKAN_HPP_NAMESPACE::SubpassEndInfo* pSubpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast( pSubpassEndInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::endRenderPass2KHR( const SubpassEndInfo & subpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndRenderPass2KHR( m_commandBuffer, reinterpret_cast( &subpassEndInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::endTransformFeedbackEXT( uint32_t firstCounterBuffer, uint32_t counterBufferCount, const VULKAN_HPP_NAMESPACE::Buffer* pCounterBuffers, const VULKAN_HPP_NAMESPACE::DeviceSize* pCounterBufferOffsets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdEndTransformFeedbackEXT( m_commandBuffer, firstCounterBuffer, counterBufferCount, reinterpret_cast( pCounterBuffers ), reinterpret_cast( pCounterBufferOffsets ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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 - { -#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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::executeCommands( uint32_t commandBufferCount, const VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdExecuteCommands( m_commandBuffer, commandBufferCount, reinterpret_cast( pCommandBuffers ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::executeCommands( ArrayProxy const & commandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdExecuteCommands( m_commandBuffer, commandBuffers.size(), reinterpret_cast( commandBuffers.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV* pGeneratedCommandsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdExecuteGeneratedCommandsNV( m_commandBuffer, static_cast( isPreprocessed ), reinterpret_cast( pGeneratedCommandsInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::executeGeneratedCommandsNV( VULKAN_HPP_NAMESPACE::Bool32 isPreprocessed, const GeneratedCommandsInfoNV & generatedCommandsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdExecuteGeneratedCommandsNV( m_commandBuffer, static_cast( isPreprocessed ), reinterpret_cast( &generatedCommandsInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::fillBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, VULKAN_HPP_NAMESPACE::DeviceSize size, uint32_t data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdFillBuffer( m_commandBuffer, static_cast( dstBuffer ), static_cast( dstOffset ), static_cast( size ), data ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pLabelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( pLabelInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdInsertDebugUtilsLabelEXT( m_commandBuffer, reinterpret_cast( &labelInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::nextSubpass( VULKAN_HPP_NAMESPACE::SubpassContents contents, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdNextSubpass( m_commandBuffer, static_cast( contents ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo* pSubpassBeginInfo, const VULKAN_HPP_NAMESPACE::SubpassEndInfo* pSubpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdNextSubpass2( m_commandBuffer, reinterpret_cast( pSubpassBeginInfo ), reinterpret_cast( pSubpassEndInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2( const SubpassBeginInfo & subpassBeginInfo, const SubpassEndInfo & subpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdNextSubpass2( m_commandBuffer, reinterpret_cast( &subpassBeginInfo ), reinterpret_cast( &subpassEndInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const VULKAN_HPP_NAMESPACE::SubpassBeginInfo* pSubpassBeginInfo, const VULKAN_HPP_NAMESPACE::SubpassEndInfo* pSubpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdNextSubpass2KHR( m_commandBuffer, reinterpret_cast( pSubpassBeginInfo ), reinterpret_cast( pSubpassEndInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::nextSubpass2KHR( const SubpassBeginInfo & subpassBeginInfo, const SubpassEndInfo & subpassEndInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdNextSubpass2KHR( m_commandBuffer, reinterpret_cast( &subpassBeginInfo ), reinterpret_cast( &subpassEndInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags, uint32_t memoryBarrierCount, const VULKAN_HPP_NAMESPACE::MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier* pImageMemoryBarriers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPipelineBarrier( 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 - template - VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier( VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, VULKAN_HPP_NAMESPACE::DependencyFlags dependencyFlags, ArrayProxy const & memoryBarriers, ArrayProxy const & bufferMemoryBarriers, ArrayProxy const & imageMemoryBarriers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2KHR( const VULKAN_HPP_NAMESPACE::DependencyInfoKHR* pDependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPipelineBarrier2KHR( m_commandBuffer, reinterpret_cast( pDependencyInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::pipelineBarrier2KHR( const DependencyInfoKHR & dependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPipelineBarrier2KHR( m_commandBuffer, reinterpret_cast( &dependencyInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsInfoNV* pGeneratedCommandsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPreprocessGeneratedCommandsNV( m_commandBuffer, reinterpret_cast( pGeneratedCommandsInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::preprocessGeneratedCommandsNV( const GeneratedCommandsInfoNV & generatedCommandsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPreprocessGeneratedCommandsNV( m_commandBuffer, reinterpret_cast( &generatedCommandsInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPushConstants( m_commandBuffer, static_cast( layout ), static_cast( stageFlags ), offset, size, pValues ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::pushConstants( VULKAN_HPP_NAMESPACE::PipelineLayout layout, VULKAN_HPP_NAMESPACE::ShaderStageFlags stageFlags, uint32_t offset, ArrayProxy const & values, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPushConstants( m_commandBuffer, static_cast( layout ), static_cast( stageFlags ), offset, values.size() * sizeof( T ), reinterpret_cast( values.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::PipelineLayout layout, uint32_t set, uint32_t descriptorWriteCount, const VULKAN_HPP_NAMESPACE::WriteDescriptorSet* pDescriptorWrites, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( layout ), set, descriptorWriteCount, reinterpret_cast( pDescriptorWrites ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetKHR( VULKAN_HPP_NAMESPACE::PipelineBindPoint pipelineBindPoint, VULKAN_HPP_NAMESPACE::PipelineLayout layout, uint32_t set, ArrayProxy const & descriptorWrites, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPushDescriptorSetKHR( m_commandBuffer, static_cast( pipelineBindPoint ), static_cast( layout ), set, descriptorWrites.size(), reinterpret_cast( descriptorWrites.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::pushDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE::PipelineLayout layout, uint32_t set, const void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdPushDescriptorSetWithTemplateKHR( m_commandBuffer, static_cast( descriptorUpdateTemplate ), static_cast( layout ), set, pData ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::resetEvent( VULKAN_HPP_NAMESPACE::Event event, VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdResetEvent( m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::resetEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stageMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdResetEvent2KHR( m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdResetQueryPool( m_commandBuffer, static_cast( queryPool ), firstQuery, queryCount ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, uint32_t regionCount, const VULKAN_HPP_NAMESPACE::ImageResolve* pRegions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdResolveImage( m_commandBuffer, static_cast( srcImage ), static_cast( srcImageLayout ), static_cast( dstImage ), static_cast( dstImageLayout ), regionCount, reinterpret_cast( pRegions ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::resolveImage( VULKAN_HPP_NAMESPACE::Image srcImage, VULKAN_HPP_NAMESPACE::ImageLayout srcImageLayout, VULKAN_HPP_NAMESPACE::Image dstImage, VULKAN_HPP_NAMESPACE::ImageLayout dstImageLayout, ArrayProxy const & regions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::resolveImage2KHR( const VULKAN_HPP_NAMESPACE::ResolveImageInfo2KHR* pResolveImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdResolveImage2KHR( m_commandBuffer, reinterpret_cast( pResolveImageInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::resolveImage2KHR( const ResolveImageInfo2KHR & resolveImageInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdResolveImage2KHR( m_commandBuffer, reinterpret_cast( &resolveImageInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setBlendConstants( const float blendConstants[4], Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetBlendConstants( m_commandBuffer, blendConstants ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setCheckpointNV( const void* pCheckpointMarker, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetCheckpointNV( m_commandBuffer, pCheckpointMarker ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, uint32_t customSampleOrderCount, const VULKAN_HPP_NAMESPACE::CoarseSampleOrderCustomNV* pCustomSampleOrders, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetCoarseSampleOrderNV( m_commandBuffer, static_cast( sampleOrderType ), customSampleOrderCount, reinterpret_cast( pCustomSampleOrders ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setCoarseSampleOrderNV( VULKAN_HPP_NAMESPACE::CoarseSampleOrderTypeNV sampleOrderType, ArrayProxy const & customSampleOrders, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetCoarseSampleOrderNV( m_commandBuffer, static_cast( sampleOrderType ), customSampleOrders.size(), reinterpret_cast( customSampleOrders.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setCullModeEXT( VULKAN_HPP_NAMESPACE::CullModeFlags cullMode, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetCullModeEXT( m_commandBuffer, static_cast( cullMode ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthBias( float depthBiasConstantFactor, float depthBiasClamp, float depthBiasSlopeFactor, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDepthBias( m_commandBuffer, depthBiasConstantFactor, depthBiasClamp, depthBiasSlopeFactor ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthBounds( float minDepthBounds, float maxDepthBounds, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDepthBounds( m_commandBuffer, minDepthBounds, maxDepthBounds ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthBoundsTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthBoundsTestEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDepthBoundsTestEnableEXT( m_commandBuffer, static_cast( depthBoundsTestEnable ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthCompareOpEXT( VULKAN_HPP_NAMESPACE::CompareOp depthCompareOp, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDepthCompareOpEXT( m_commandBuffer, static_cast( depthCompareOp ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthTestEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDepthTestEnableEXT( m_commandBuffer, static_cast( depthTestEnable ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setDepthWriteEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 depthWriteEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDepthWriteEnableEXT( m_commandBuffer, static_cast( depthWriteEnable ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setDeviceMask( uint32_t deviceMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDeviceMask( m_commandBuffer, deviceMask ); - } - - template - VULKAN_HPP_INLINE void CommandBuffer::setDeviceMaskKHR( uint32_t deviceMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDeviceMaskKHR( m_commandBuffer, deviceMask ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, uint32_t discardRectangleCount, const VULKAN_HPP_NAMESPACE::Rect2D* pDiscardRectangles, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangleCount, reinterpret_cast( pDiscardRectangles ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setDiscardRectangleEXT( uint32_t firstDiscardRectangle, ArrayProxy const & discardRectangles, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetDiscardRectangleEXT( m_commandBuffer, firstDiscardRectangle, discardRectangles.size(), reinterpret_cast( discardRectangles.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setEvent( VULKAN_HPP_NAMESPACE::Event event, VULKAN_HPP_NAMESPACE::PipelineStageFlags stageMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetEvent( m_commandBuffer, static_cast( event ), static_cast( stageMask ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, const VULKAN_HPP_NAMESPACE::DependencyInfoKHR* pDependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetEvent2KHR( m_commandBuffer, static_cast( event ), reinterpret_cast( pDependencyInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setEvent2KHR( VULKAN_HPP_NAMESPACE::Event event, const DependencyInfoKHR & dependencyInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetEvent2KHR( m_commandBuffer, static_cast( event ), reinterpret_cast( &dependencyInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VULKAN_HPP_NAMESPACE::Rect2D* pExclusiveScissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetExclusiveScissorNV( m_commandBuffer, firstExclusiveScissor, exclusiveScissorCount, reinterpret_cast( pExclusiveScissors ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setExclusiveScissorNV( uint32_t firstExclusiveScissor, ArrayProxy const & exclusiveScissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetExclusiveScissorNV( m_commandBuffer, firstExclusiveScissor, exclusiveScissors.size(), reinterpret_cast( exclusiveScissors.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateEnumNV( VULKAN_HPP_NAMESPACE::FragmentShadingRateNV shadingRate, const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetFragmentShadingRateEnumNV( m_commandBuffer, static_cast( shadingRate ), reinterpret_cast( combinerOps ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR( const VULKAN_HPP_NAMESPACE::Extent2D* pFragmentSize, const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetFragmentShadingRateKHR( m_commandBuffer, reinterpret_cast( pFragmentSize ), reinterpret_cast( combinerOps ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setFragmentShadingRateKHR( const Extent2D & fragmentSize, const VULKAN_HPP_NAMESPACE::FragmentShadingRateCombinerOpKHR combinerOps[2], Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetFragmentShadingRateKHR( m_commandBuffer, reinterpret_cast( &fragmentSize ), reinterpret_cast( combinerOps ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setFrontFaceEXT( VULKAN_HPP_NAMESPACE::FrontFace frontFace, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetFrontFaceEXT( m_commandBuffer, static_cast( frontFace ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setLineStippleEXT( uint32_t lineStippleFactor, uint16_t lineStipplePattern, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetLineStippleEXT( m_commandBuffer, lineStippleFactor, lineStipplePattern ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setLineWidth( float lineWidth, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetLineWidth( m_commandBuffer, lineWidth ); - } - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceMarkerInfoINTEL* pMarkerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCmdSetPerformanceMarkerINTEL( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::setPerformanceMarkerINTEL( const PerformanceMarkerInfoINTEL & markerInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkCmdSetPerformanceMarkerINTEL( m_commandBuffer, reinterpret_cast( &markerInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceMarkerINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceOverrideINTEL( const VULKAN_HPP_NAMESPACE::PerformanceOverrideInfoINTEL* pOverrideInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCmdSetPerformanceOverrideINTEL( m_commandBuffer, reinterpret_cast( pOverrideInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::setPerformanceOverrideINTEL( const PerformanceOverrideInfoINTEL & overrideInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkCmdSetPerformanceOverrideINTEL( m_commandBuffer, reinterpret_cast( &overrideInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceOverrideINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::setPerformanceStreamMarkerINTEL( const VULKAN_HPP_NAMESPACE::PerformanceStreamMarkerInfoINTEL* pMarkerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCmdSetPerformanceStreamMarkerINTEL( m_commandBuffer, reinterpret_cast( pMarkerInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::setPerformanceStreamMarkerINTEL( const PerformanceStreamMarkerInfoINTEL & markerInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkCmdSetPerformanceStreamMarkerINTEL( m_commandBuffer, reinterpret_cast( &markerInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::setPerformanceStreamMarkerINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setPrimitiveTopologyEXT( VULKAN_HPP_NAMESPACE::PrimitiveTopology primitiveTopology, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetPrimitiveTopologyEXT( m_commandBuffer, static_cast( primitiveTopology ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setRayTracingPipelineStackSizeKHR( uint32_t pipelineStackSize, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetRayTracingPipelineStackSizeKHR( m_commandBuffer, pipelineStackSize ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const VULKAN_HPP_NAMESPACE::SampleLocationsInfoEXT* pSampleLocationsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast( pSampleLocationsInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setSampleLocationsEXT( const SampleLocationsInfoEXT & sampleLocationsInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetSampleLocationsEXT( m_commandBuffer, reinterpret_cast( &sampleLocationsInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, uint32_t scissorCount, const VULKAN_HPP_NAMESPACE::Rect2D* pScissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissorCount, reinterpret_cast( pScissors ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setScissor( uint32_t firstScissor, ArrayProxy const & scissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetScissor( m_commandBuffer, firstScissor, scissors.size(), reinterpret_cast( scissors.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT( uint32_t scissorCount, const VULKAN_HPP_NAMESPACE::Rect2D* pScissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetScissorWithCountEXT( m_commandBuffer, scissorCount, reinterpret_cast( pScissors ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setScissorWithCountEXT( ArrayProxy const & scissors, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetScissorWithCountEXT( m_commandBuffer, scissors.size(), reinterpret_cast( scissors.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilCompareMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t compareMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetStencilCompareMask( m_commandBuffer, static_cast( faceMask ), compareMask ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilOpEXT( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, VULKAN_HPP_NAMESPACE::StencilOp failOp, VULKAN_HPP_NAMESPACE::StencilOp passOp, VULKAN_HPP_NAMESPACE::StencilOp depthFailOp, VULKAN_HPP_NAMESPACE::CompareOp compareOp, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetStencilOpEXT( m_commandBuffer, static_cast( faceMask ), static_cast( failOp ), static_cast( passOp ), static_cast( depthFailOp ), static_cast( compareOp ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilReference( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t reference, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetStencilReference( m_commandBuffer, static_cast( faceMask ), reference ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilTestEnableEXT( VULKAN_HPP_NAMESPACE::Bool32 stencilTestEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetStencilTestEnableEXT( m_commandBuffer, static_cast( stencilTestEnable ) ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setStencilWriteMask( VULKAN_HPP_NAMESPACE::StencilFaceFlags faceMask, uint32_t writeMask, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetStencilWriteMask( m_commandBuffer, static_cast( faceMask ), writeMask ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, uint32_t viewportCount, const VULKAN_HPP_NAMESPACE::Viewport* pViewports, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetViewport( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast( pViewports ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setViewport( uint32_t firstViewport, ArrayProxy const & viewports, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetViewport( m_commandBuffer, firstViewport, viewports.size(), reinterpret_cast( viewports.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( uint32_t firstViewport, uint32_t viewportCount, const VULKAN_HPP_NAMESPACE::ShadingRatePaletteNV* pShadingRatePalettes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetViewportShadingRatePaletteNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast( pShadingRatePalettes ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportShadingRatePaletteNV( uint32_t firstViewport, ArrayProxy const & shadingRatePalettes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetViewportShadingRatePaletteNV( m_commandBuffer, firstViewport, shadingRatePalettes.size(), reinterpret_cast( shadingRatePalettes.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, uint32_t viewportCount, const VULKAN_HPP_NAMESPACE::ViewportWScalingNV* pViewportWScalings, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportCount, reinterpret_cast( pViewportWScalings ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportWScalingNV( uint32_t firstViewport, ArrayProxy const & viewportWScalings, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetViewportWScalingNV( m_commandBuffer, firstViewport, viewportWScalings.size(), reinterpret_cast( viewportWScalings.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT( uint32_t viewportCount, const VULKAN_HPP_NAMESPACE::Viewport* pViewports, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetViewportWithCountEXT( m_commandBuffer, viewportCount, reinterpret_cast( pViewports ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::setViewportWithCountEXT( ArrayProxy const & viewports, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdSetViewportWithCountEXT( m_commandBuffer, viewports.size(), reinterpret_cast( viewports.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pCallableShaderBindingTable, VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdTraceRaysIndirectKHR( m_commandBuffer, reinterpret_cast( pRaygenShaderBindingTable ), reinterpret_cast( pMissShaderBindingTable ), reinterpret_cast( pHitShaderBindingTable ), reinterpret_cast( pCallableShaderBindingTable ), static_cast( indirectDeviceAddress ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::traceRaysIndirectKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable, const StridedDeviceAddressRegionKHR & missShaderBindingTable, const StridedDeviceAddressRegionKHR & hitShaderBindingTable, const StridedDeviceAddressRegionKHR & callableShaderBindingTable, VULKAN_HPP_NAMESPACE::DeviceAddress indirectDeviceAddress, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR( const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pMissShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pHitShaderBindingTable, const VULKAN_HPP_NAMESPACE::StridedDeviceAddressRegionKHR* pCallableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdTraceRaysKHR( m_commandBuffer, reinterpret_cast( pRaygenShaderBindingTable ), reinterpret_cast( pMissShaderBindingTable ), reinterpret_cast( pHitShaderBindingTable ), reinterpret_cast( pCallableShaderBindingTable ), width, height, depth ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::traceRaysKHR( const StridedDeviceAddressRegionKHR & raygenShaderBindingTable, const StridedDeviceAddressRegionKHR & missShaderBindingTable, const StridedDeviceAddressRegionKHR & hitShaderBindingTable, const StridedDeviceAddressRegionKHR & callableShaderBindingTable, uint32_t width, uint32_t height, uint32_t depth, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::traceRaysNV( VULKAN_HPP_NAMESPACE::Buffer raygenShaderBindingTableBuffer, VULKAN_HPP_NAMESPACE::DeviceSize raygenShaderBindingOffset, VULKAN_HPP_NAMESPACE::Buffer missShaderBindingTableBuffer, VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingOffset, VULKAN_HPP_NAMESPACE::DeviceSize missShaderBindingStride, VULKAN_HPP_NAMESPACE::Buffer hitShaderBindingTableBuffer, VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingOffset, VULKAN_HPP_NAMESPACE::DeviceSize hitShaderBindingStride, VULKAN_HPP_NAMESPACE::Buffer callableShaderBindingTableBuffer, VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingOffset, VULKAN_HPP_NAMESPACE::DeviceSize callableShaderBindingStride, uint32_t width, uint32_t height, uint32_t depth, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdTraceRaysNV( 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 ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, VULKAN_HPP_NAMESPACE::DeviceSize dataSize, const void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdUpdateBuffer( m_commandBuffer, static_cast( dstBuffer ), static_cast( dstOffset ), static_cast( dataSize ), pData ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::updateBuffer( VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, ArrayProxy const & data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdUpdateBuffer( m_commandBuffer, static_cast( dstBuffer ), static_cast( dstOffset ), data.size() * sizeof( T ), reinterpret_cast( data.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::waitEvents( uint32_t eventCount, const VULKAN_HPP_NAMESPACE::Event* pEvents, VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, uint32_t memoryBarrierCount, const VULKAN_HPP_NAMESPACE::MemoryBarrier* pMemoryBarriers, uint32_t bufferMemoryBarrierCount, const VULKAN_HPP_NAMESPACE::BufferMemoryBarrier* pBufferMemoryBarriers, uint32_t imageMemoryBarrierCount, const VULKAN_HPP_NAMESPACE::ImageMemoryBarrier* pImageMemoryBarriers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWaitEvents( 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 - template - VULKAN_HPP_INLINE void CommandBuffer::waitEvents( ArrayProxy const & events, VULKAN_HPP_NAMESPACE::PipelineStageFlags srcStageMask, VULKAN_HPP_NAMESPACE::PipelineStageFlags dstStageMask, ArrayProxy const & memoryBarriers, ArrayProxy const & bufferMemoryBarriers, ArrayProxy const & imageMemoryBarriers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::waitEvents2KHR( uint32_t eventCount, const VULKAN_HPP_NAMESPACE::Event* pEvents, const VULKAN_HPP_NAMESPACE::DependencyInfoKHR* pDependencyInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWaitEvents2KHR( m_commandBuffer, eventCount, reinterpret_cast( pEvents ), reinterpret_cast( pDependencyInfos ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::waitEvents2KHR( ArrayProxy const & events, ArrayProxy const & dependencyInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS - { -#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*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWriteAccelerationStructuresPropertiesKHR( m_commandBuffer, accelerationStructureCount, reinterpret_cast( pAccelerationStructures ), static_cast( queryType ), static_cast( queryPool ), firstQuery ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWriteAccelerationStructuresPropertiesKHR( m_commandBuffer, accelerationStructures.size(), reinterpret_cast( accelerationStructures.data() ), static_cast( queryType ), static_cast( queryPool ), firstQuery ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( uint32_t accelerationStructureCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureNV* pAccelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWriteAccelerationStructuresPropertiesNV( m_commandBuffer, accelerationStructureCount, reinterpret_cast( pAccelerationStructures ), static_cast( queryType ), static_cast( queryPool ), firstQuery ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void CommandBuffer::writeAccelerationStructuresPropertiesNV( ArrayProxy const & accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWriteAccelerationStructuresPropertiesNV( m_commandBuffer, accelerationStructures.size(), reinterpret_cast( accelerationStructures.data() ), static_cast( queryType ), static_cast( queryPool ), firstQuery ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarker2AMD( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, uint32_t marker, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWriteBufferMarker2AMD( m_commandBuffer, static_cast( stage ), static_cast( dstBuffer ), static_cast( dstOffset ), marker ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::writeBufferMarkerAMD( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, VULKAN_HPP_NAMESPACE::Buffer dstBuffer, VULKAN_HPP_NAMESPACE::DeviceSize dstOffset, uint32_t marker, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWriteBufferMarkerAMD( m_commandBuffer, static_cast( pipelineStage ), static_cast( dstBuffer ), static_cast( dstOffset ), marker ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp( VULKAN_HPP_NAMESPACE::PipelineStageFlagBits pipelineStage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWriteTimestamp( m_commandBuffer, static_cast( pipelineStage ), static_cast( queryPool ), query ); - } - - - template - VULKAN_HPP_INLINE void CommandBuffer::writeTimestamp2KHR( VULKAN_HPP_NAMESPACE::PipelineStageFlags2KHR stage, VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t query, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkCmdWriteTimestamp2KHR( m_commandBuffer, static_cast( stage ), static_cast( queryPool ), query ); - } - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::end( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEndCommandBuffer( m_commandBuffer ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::end( Dispatch const & d ) const - { - Result result = static_cast( d.vkEndCommandBuffer( m_commandBuffer ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::end" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result CommandBuffer::reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkResetCommandBuffer( m_commandBuffer, static_cast( flags ) ) ); - } -#else - template - VULKAN_HPP_INLINE typename ResultValueType::type CommandBuffer::reset( VULKAN_HPP_NAMESPACE::CommandBufferResetFlags flags, Dispatch const & d ) const - { - Result result = static_cast( d.vkResetCommandBuffer( m_commandBuffer, static_cast( flags ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::CommandBuffer::reset" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAcquireFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::acquireFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const - { - Result result = static_cast( d.vkAcquireFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireFullScreenExclusiveModeEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireNextImage2KHR( const VULKAN_HPP_NAMESPACE::AcquireNextImageInfoKHR* pAcquireInfo, uint32_t* pImageIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAcquireNextImage2KHR( m_device, reinterpret_cast( pAcquireInfo ), pImageIndex ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::acquireNextImage2KHR( const AcquireNextImageInfoKHR & acquireInfo, Dispatch const & d ) const - { - uint32_t imageIndex; - Result result = static_cast( d.vkAcquireNextImage2KHR( m_device, reinterpret_cast( &acquireInfo ), &imageIndex ) ); - return createResultValue( result, imageIndex, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImage2KHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout, VULKAN_HPP_NAMESPACE::Result::eNotReady, VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireNextImageKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, uint64_t timeout, VULKAN_HPP_NAMESPACE::Semaphore semaphore, VULKAN_HPP_NAMESPACE::Fence fence, uint32_t* pImageIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAcquireNextImageKHR( m_device, static_cast( swapchain ), timeout, static_cast( semaphore ), static_cast( fence ), pImageIndex ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::acquireNextImageKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, uint64_t timeout, VULKAN_HPP_NAMESPACE::Semaphore semaphore, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d ) const - { - uint32_t imageIndex; - Result result = static_cast( d.vkAcquireNextImageKHR( m_device, static_cast( swapchain ), timeout, static_cast( semaphore ), static_cast( fence ), &imageIndex ) ); - return createResultValue( result, imageIndex, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireNextImageKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout, VULKAN_HPP_NAMESPACE::Result::eNotReady, VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquirePerformanceConfigurationINTEL( const VULKAN_HPP_NAMESPACE::PerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL* pConfiguration, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAcquirePerformanceConfigurationINTEL( m_device, reinterpret_cast( pAcquireInfo ), reinterpret_cast< VkPerformanceConfigurationINTEL *>( pConfiguration ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::acquirePerformanceConfigurationINTEL( const PerformanceConfigurationAcquireInfoINTEL & acquireInfo, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration; - Result result = static_cast( d.vkAcquirePerformanceConfigurationINTEL( m_device, reinterpret_cast( &acquireInfo ), reinterpret_cast( &configuration ) ) ); - return createResultValue( result, configuration, VULKAN_HPP_NAMESPACE_STRING "::Device::acquirePerformanceConfigurationINTEL" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::acquirePerformanceConfigurationINTELUnique( const PerformanceConfigurationAcquireInfoINTEL & acquireInfo, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration; - Result result = static_cast( d.vkAcquirePerformanceConfigurationINTEL( m_device, reinterpret_cast( &acquireInfo ), reinterpret_cast( &configuration ) ) ); - ObjectRelease deleter( *this, d ); - return createResultValue( result, configuration, VULKAN_HPP_NAMESPACE_STRING "::Device::acquirePerformanceConfigurationINTELUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::acquireProfilingLockKHR( const VULKAN_HPP_NAMESPACE::AcquireProfilingLockInfoKHR* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAcquireProfilingLockKHR( m_device, reinterpret_cast( pInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::acquireProfilingLockKHR( const AcquireProfilingLockInfoKHR & info, Dispatch const & d ) const - { - Result result = static_cast( d.vkAcquireProfilingLockKHR( m_device, reinterpret_cast( &info ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::acquireProfilingLockKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::allocateCommandBuffers( const VULKAN_HPP_NAMESPACE::CommandBufferAllocateInfo* pAllocateInfo, VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAllocateCommandBuffers( m_device, reinterpret_cast( pAllocateInfo ), reinterpret_cast< VkCommandBuffer *>( pCommandBuffers ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, Dispatch const & d ) const - { - std::vector commandBuffers( allocateInfo.commandBufferCount ); - Result result = static_cast( d.vkAllocateCommandBuffers( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); - return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffers" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateCommandBuffers( const CommandBufferAllocateInfo & allocateInfo, CommandBufferAllocator & commandBufferAllocator, Dispatch const & d ) const - { - std::vector commandBuffers( allocateInfo.commandBufferCount, commandBufferAllocator ); - Result result = static_cast( d.vkAllocateCommandBuffers( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); - return createResultValue( result, commandBuffers, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffers" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType, CommandBufferAllocator>>::type Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, Dispatch const & d ) const - { - std::vector, CommandBufferAllocator> uniqueCommandBuffers; - std::vector commandBuffers( allocateInfo.commandBufferCount ); - Result result = static_cast( d.vkAllocateCommandBuffers( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); - if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) - { - uniqueCommandBuffers.reserve( allocateInfo.commandBufferCount ); - PoolFree deleter( *this, allocateInfo.commandPool, d ); - for ( size_t i=0; i < allocateInfo.commandBufferCount; i++ ) - { - uniqueCommandBuffers.push_back( UniqueHandle( commandBuffers[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniqueCommandBuffers ), VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" ); - } - - template >::value, int>::type > - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType, CommandBufferAllocator>>::type Device::allocateCommandBuffersUnique( const CommandBufferAllocateInfo & allocateInfo, CommandBufferAllocator & commandBufferAllocator, Dispatch const & d ) const - { - std::vector, CommandBufferAllocator> uniqueCommandBuffers( commandBufferAllocator ); - std::vector commandBuffers( allocateInfo.commandBufferCount ); - Result result = static_cast( d.vkAllocateCommandBuffers( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( commandBuffers.data() ) ) ); - if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) - { - uniqueCommandBuffers.reserve( allocateInfo.commandBufferCount ); - PoolFree deleter( *this, allocateInfo.commandPool, d ); - for ( size_t i=0; i < allocateInfo.commandBufferCount; i++ ) - { - uniqueCommandBuffers.push_back( UniqueHandle( commandBuffers[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniqueCommandBuffers ), VULKAN_HPP_NAMESPACE_STRING "::Device::allocateCommandBuffersUnique" ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::allocateDescriptorSets( const VULKAN_HPP_NAMESPACE::DescriptorSetAllocateInfo* pAllocateInfo, VULKAN_HPP_NAMESPACE::DescriptorSet* pDescriptorSets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAllocateDescriptorSets( m_device, reinterpret_cast( pAllocateInfo ), reinterpret_cast< VkDescriptorSet *>( pDescriptorSets ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const & d ) const - { - std::vector descriptorSets( allocateInfo.descriptorSetCount ); - Result result = static_cast( d.vkAllocateDescriptorSets( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); - return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSets" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateDescriptorSets( const DescriptorSetAllocateInfo & allocateInfo, DescriptorSetAllocator & descriptorSetAllocator, Dispatch const & d ) const - { - std::vector descriptorSets( allocateInfo.descriptorSetCount, descriptorSetAllocator ); - Result result = static_cast( d.vkAllocateDescriptorSets( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); - return createResultValue( result, descriptorSets, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSets" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType, DescriptorSetAllocator>>::type Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, Dispatch const & d ) const - { - std::vector, DescriptorSetAllocator> uniqueDescriptorSets; - std::vector descriptorSets( allocateInfo.descriptorSetCount ); - Result result = static_cast( d.vkAllocateDescriptorSets( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); - if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) - { - uniqueDescriptorSets.reserve( allocateInfo.descriptorSetCount ); - PoolFree deleter( *this, allocateInfo.descriptorPool, d ); - for ( size_t i=0; i < allocateInfo.descriptorSetCount; i++ ) - { - uniqueDescriptorSets.push_back( UniqueHandle( descriptorSets[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniqueDescriptorSets ), VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" ); - } - - template >::value, int>::type > - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType, DescriptorSetAllocator>>::type Device::allocateDescriptorSetsUnique( const DescriptorSetAllocateInfo & allocateInfo, DescriptorSetAllocator & descriptorSetAllocator, Dispatch const & d ) const - { - std::vector, DescriptorSetAllocator> uniqueDescriptorSets( descriptorSetAllocator ); - std::vector descriptorSets( allocateInfo.descriptorSetCount ); - Result result = static_cast( d.vkAllocateDescriptorSets( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( descriptorSets.data() ) ) ); - if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) - { - uniqueDescriptorSets.reserve( allocateInfo.descriptorSetCount ); - PoolFree deleter( *this, allocateInfo.descriptorPool, d ); - for ( size_t i=0; i < allocateInfo.descriptorSetCount; i++ ) - { - uniqueDescriptorSets.push_back( UniqueHandle( descriptorSets[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniqueDescriptorSets ), VULKAN_HPP_NAMESPACE_STRING "::Device::allocateDescriptorSetsUnique" ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::allocateMemory( const VULKAN_HPP_NAMESPACE::MemoryAllocateInfo* pAllocateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DeviceMemory* pMemory, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAllocateMemory( m_device, reinterpret_cast( pAllocateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkDeviceMemory *>( pMemory ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::allocateMemory( const MemoryAllocateInfo & allocateInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DeviceMemory memory; - Result result = static_cast( d.vkAllocateMemory( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &memory ) ) ); - return createResultValue( result, memory, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateMemory" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::allocateMemoryUnique( const MemoryAllocateInfo & allocateInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DeviceMemory memory; - Result result = static_cast( d.vkAllocateMemory( m_device, reinterpret_cast( &allocateInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &memory ) ) ); - ObjectFree deleter( *this, allocator, d ); - return createResultValue( result, memory, VULKAN_HPP_NAMESPACE_STRING "::Device::allocateMemoryUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindAccelerationStructureMemoryNV( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindAccelerationStructureMemoryInfoNV* pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkBindAccelerationStructureMemoryNV( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindAccelerationStructureMemoryNV( ArrayProxy const & bindInfos, Dispatch const & d ) const - { - Result result = static_cast( d.vkBindAccelerationStructureMemoryNV( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindAccelerationStructureMemoryNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindBufferMemory( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkBindBufferMemory( m_device, static_cast( buffer ), static_cast( memory ), static_cast( memoryOffset ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindBufferMemory( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, Dispatch const & d ) const - { - Result result = static_cast( d.vkBindBufferMemory( m_device, static_cast( buffer ), static_cast( memory ), static_cast( memoryOffset ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindBufferMemory2( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo* pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkBindBufferMemory2( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindBufferMemory2( ArrayProxy const & bindInfos, Dispatch const & d ) const - { - Result result = static_cast( d.vkBindBufferMemory2( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindBufferMemory2KHR( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindBufferMemoryInfo* pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkBindBufferMemory2KHR( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindBufferMemory2KHR( ArrayProxy const & bindInfos, Dispatch const & d ) const - { - Result result = static_cast( d.vkBindBufferMemory2KHR( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindBufferMemory2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindImageMemory( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkBindImageMemory( m_device, static_cast( image ), static_cast( memory ), static_cast( memoryOffset ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindImageMemory( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize memoryOffset, Dispatch const & d ) const - { - Result result = static_cast( d.vkBindImageMemory( m_device, static_cast( image ), static_cast( memory ), static_cast( memoryOffset ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindImageMemory2( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo* pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkBindImageMemory2( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindImageMemory2( ArrayProxy const & bindInfos, Dispatch const & d ) const - { - Result result = static_cast( d.vkBindImageMemory2( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::bindImageMemory2KHR( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindImageMemoryInfo* pBindInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkBindImageMemory2KHR( m_device, bindInfoCount, reinterpret_cast( pBindInfos ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::bindImageMemory2KHR( ArrayProxy const & bindInfos, Dispatch const & d ) const - { - Result result = static_cast( d.vkBindImageMemory2KHR( m_device, bindInfos.size(), reinterpret_cast( bindInfos.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::bindImageMemory2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::buildAccelerationStructuresKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, uint32_t infoCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR* pInfos, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildRangeInfoKHR* const * ppBuildRangeInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkBuildAccelerationStructuresKHR( m_device, static_cast( deferredOperation ), infoCount, reinterpret_cast( pInfos ), reinterpret_cast( ppBuildRangeInfos ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::buildAccelerationStructuresKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, ArrayProxy const & infos, ArrayProxy const & pBuildRangeInfos, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS - { -#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() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::buildAccelerationStructuresKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::compileDeferredNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t shader, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCompileDeferredNV( m_device, static_cast( pipeline ), shader ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::compileDeferredNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t shader, Dispatch const & d ) const - { - Result result = static_cast( d.vkCompileDeferredNV( m_device, static_cast( pipeline ), shader ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::compileDeferredNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureInfoKHR* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCopyAccelerationStructureKHR( m_device, static_cast( deferredOperation ), reinterpret_cast( pInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const CopyAccelerationStructureInfoKHR & info, Dispatch const & d ) const - { - Result result = static_cast( d.vkCopyAccelerationStructureKHR( m_device, static_cast( deferredOperation ), reinterpret_cast( &info ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const VULKAN_HPP_NAMESPACE::CopyAccelerationStructureToMemoryInfoKHR* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCopyAccelerationStructureToMemoryKHR( m_device, static_cast( deferredOperation ), reinterpret_cast( pInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyAccelerationStructureToMemoryKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const CopyAccelerationStructureToMemoryInfoKHR & info, Dispatch const & d ) const - { - Result result = static_cast( d.vkCopyAccelerationStructureToMemoryKHR( m_device, static_cast( deferredOperation ), reinterpret_cast( &info ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyAccelerationStructureToMemoryKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const VULKAN_HPP_NAMESPACE::CopyMemoryToAccelerationStructureInfoKHR* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCopyMemoryToAccelerationStructureKHR( m_device, static_cast( deferredOperation ), reinterpret_cast( pInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::copyMemoryToAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, const CopyMemoryToAccelerationStructureInfoKHR & info, Dispatch const & d ) const - { - Result result = static_cast( d.vkCopyMemoryToAccelerationStructureKHR( m_device, static_cast( deferredOperation ), reinterpret_cast( &info ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::copyMemoryToAccelerationStructureKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createAccelerationStructureKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructure, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateAccelerationStructureKHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkAccelerationStructureKHR *>( pAccelerationStructure ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createAccelerationStructureKHR( const AccelerationStructureCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure; - Result result = static_cast( d.vkCreateAccelerationStructureKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &accelerationStructure ) ) ); - return createResultValue( result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createAccelerationStructureKHRUnique( const AccelerationStructureCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure; - Result result = static_cast( d.vkCreateAccelerationStructureKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &accelerationStructure ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createAccelerationStructureNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureCreateInfoNV* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::AccelerationStructureNV* pAccelerationStructure, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateAccelerationStructureNV( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkAccelerationStructureNV *>( pAccelerationStructure ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::createAccelerationStructureNV( const AccelerationStructureCreateInfoNV & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure; - Result result = static_cast( d.vkCreateAccelerationStructureNV( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &accelerationStructure ) ) ); - return createResultValue( result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureNV" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createAccelerationStructureNVUnique( const AccelerationStructureCreateInfoNV & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure; - Result result = static_cast( d.vkCreateAccelerationStructureNV( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &accelerationStructure ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, accelerationStructure, VULKAN_HPP_NAMESPACE_STRING "::Device::createAccelerationStructureNVUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createBuffer( const VULKAN_HPP_NAMESPACE::BufferCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Buffer* pBuffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateBuffer( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkBuffer *>( pBuffer ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createBuffer( const BufferCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Buffer buffer; - Result result = static_cast( d.vkCreateBuffer( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &buffer ) ) ); - return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING "::Device::createBuffer" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createBufferUnique( const BufferCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Buffer buffer; - Result result = static_cast( d.vkCreateBuffer( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &buffer ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createBufferView( const VULKAN_HPP_NAMESPACE::BufferViewCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::BufferView* pView, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateBufferView( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkBufferView *>( pView ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createBufferView( const BufferViewCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::BufferView view; - Result result = static_cast( d.vkCreateBufferView( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &view ) ) ); - return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferView" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createBufferViewUnique( const BufferViewCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::BufferView view; - Result result = static_cast( d.vkCreateBufferView( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &view ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING "::Device::createBufferViewUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createCommandPool( const VULKAN_HPP_NAMESPACE::CommandPoolCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::CommandPool* pCommandPool, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateCommandPool( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkCommandPool *>( pCommandPool ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createCommandPool( const CommandPoolCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::CommandPool commandPool; - Result result = static_cast( d.vkCreateCommandPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &commandPool ) ) ); - return createResultValue( result, commandPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createCommandPool" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createCommandPoolUnique( const CommandPoolCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::CommandPool commandPool; - Result result = static_cast( d.vkCreateCommandPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &commandPool ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, commandPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createCommandPoolUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, uint32_t createInfoCount, const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Pipeline* pPipelines, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), createInfoCount, reinterpret_cast( pCreateInfos ), reinterpret_cast( pAllocator ), reinterpret_cast< VkPipeline *>( pPipelines ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelines", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createComputePipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d ) const - { - 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( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelines", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createComputePipeline( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipeline", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createComputePipelinesUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - std::vector, PipelineAllocator> uniquePipelines; - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )|| ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) - { - uniquePipelines.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniquePipelines ), VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template >::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createComputePipelinesUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d ) const - { - std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )|| ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) - { - uniquePipelines.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniquePipelines ), VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelinesUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createComputePipelineUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::ComputePipelineCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateComputePipelines( m_device, static_cast( pipelineCache ), 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING "::Device::createComputePipelineUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT }, deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDeferredOperationKHR( const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DeferredOperationKHR* pDeferredOperation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDeferredOperationKHR( m_device, reinterpret_cast( pAllocator ), reinterpret_cast< VkDeferredOperationKHR *>( pDeferredOperation ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::createDeferredOperationKHR( Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation; - Result result = static_cast( d.vkCreateDeferredOperationKHR( m_device, reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &deferredOperation ) ) ); - return createResultValue( result, deferredOperation, VULKAN_HPP_NAMESPACE_STRING "::Device::createDeferredOperationKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDeferredOperationKHRUnique( Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation; - Result result = static_cast( d.vkCreateDeferredOperationKHR( m_device, reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &deferredOperation ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, deferredOperation, VULKAN_HPP_NAMESPACE_STRING "::Device::createDeferredOperationKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorPool( const VULKAN_HPP_NAMESPACE::DescriptorPoolCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DescriptorPool* pDescriptorPool, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDescriptorPool( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkDescriptorPool *>( pDescriptorPool ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createDescriptorPool( const DescriptorPoolCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool; - Result result = static_cast( d.vkCreateDescriptorPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorPool ) ) ); - return createResultValue( result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorPool" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorPoolUnique( const DescriptorPoolCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool; - Result result = static_cast( d.vkCreateDescriptorPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorPool ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, descriptorPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorPoolUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorSetLayout( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DescriptorSetLayout* pSetLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkDescriptorSetLayout *>( pSetLayout ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createDescriptorSetLayout( const DescriptorSetLayoutCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DescriptorSetLayout setLayout; - Result result = static_cast( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &setLayout ) ) ); - return createResultValue( result, setLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorSetLayout" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorSetLayoutUnique( const DescriptorSetLayoutCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DescriptorSetLayout setLayout; - Result result = static_cast( d.vkCreateDescriptorSetLayout( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &setLayout ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, setLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorSetLayoutUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplate( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkDescriptorUpdateTemplate *>( pDescriptorUpdateTemplate ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createDescriptorUpdateTemplate( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; - Result result = static_cast( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorUpdateTemplate ) ) ); - return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplate" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorUpdateTemplateUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; - Result result = static_cast( d.vkCreateDescriptorUpdateTemplate( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorUpdateTemplate ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createDescriptorUpdateTemplateKHR( const VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplateCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate* pDescriptorUpdateTemplate, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkDescriptorUpdateTemplate *>( pDescriptorUpdateTemplate ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createDescriptorUpdateTemplateKHR( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; - Result result = static_cast( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorUpdateTemplate ) ) ); - return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createDescriptorUpdateTemplateKHRUnique( const DescriptorUpdateTemplateCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate; - Result result = static_cast( d.vkCreateDescriptorUpdateTemplateKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &descriptorUpdateTemplate ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, descriptorUpdateTemplate, VULKAN_HPP_NAMESPACE_STRING "::Device::createDescriptorUpdateTemplateKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createEvent( const VULKAN_HPP_NAMESPACE::EventCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Event* pEvent, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateEvent( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkEvent *>( pEvent ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createEvent( const EventCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Event event; - Result result = static_cast( d.vkCreateEvent( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &event ) ) ); - return createResultValue( result, event, VULKAN_HPP_NAMESPACE_STRING "::Device::createEvent" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createEventUnique( const EventCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Event event; - Result result = static_cast( d.vkCreateEvent( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &event ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, event, VULKAN_HPP_NAMESPACE_STRING "::Device::createEventUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createFence( const VULKAN_HPP_NAMESPACE::FenceCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Fence* pFence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateFence( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkFence *>( pFence ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createFence( const FenceCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Fence fence; - Result result = static_cast( d.vkCreateFence( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::createFence" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createFenceUnique( const FenceCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Fence fence; - Result result = static_cast( d.vkCreateFence( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::createFenceUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createFramebuffer( const VULKAN_HPP_NAMESPACE::FramebufferCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Framebuffer* pFramebuffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateFramebuffer( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkFramebuffer *>( pFramebuffer ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createFramebuffer( const FramebufferCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Framebuffer framebuffer; - Result result = static_cast( d.vkCreateFramebuffer( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &framebuffer ) ) ); - return createResultValue( result, framebuffer, VULKAN_HPP_NAMESPACE_STRING "::Device::createFramebuffer" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createFramebufferUnique( const FramebufferCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Framebuffer framebuffer; - Result result = static_cast( d.vkCreateFramebuffer( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &framebuffer ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, framebuffer, VULKAN_HPP_NAMESPACE_STRING "::Device::createFramebufferUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, uint32_t createInfoCount, const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Pipeline* pPipelines, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), createInfoCount, reinterpret_cast( pCreateInfos ), reinterpret_cast( pAllocator ), reinterpret_cast< VkPipeline *>( pPipelines ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelines", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createGraphicsPipelines( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d ) const - { - 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( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelines", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createGraphicsPipeline( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipeline", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createGraphicsPipelinesUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - std::vector, PipelineAllocator> uniquePipelines; - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )|| ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) - { - uniquePipelines.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniquePipelines ), VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template >::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createGraphicsPipelinesUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d ) const - { - std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )|| ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) - { - uniquePipelines.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniquePipelines ), VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelinesUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createGraphicsPipelineUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::GraphicsPipelineCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateGraphicsPipelines( m_device, static_cast( pipelineCache ), 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING "::Device::createGraphicsPipelineUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT }, deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createImage( const VULKAN_HPP_NAMESPACE::ImageCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Image* pImage, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateImage( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkImage *>( pImage ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createImage( const ImageCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Image image; - Result result = static_cast( d.vkCreateImage( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &image ) ) ); - return createResultValue( result, image, VULKAN_HPP_NAMESPACE_STRING "::Device::createImage" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createImageUnique( const ImageCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Image image; - Result result = static_cast( d.vkCreateImage( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &image ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, image, VULKAN_HPP_NAMESPACE_STRING "::Device::createImageUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createImageView( const VULKAN_HPP_NAMESPACE::ImageViewCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::ImageView* pView, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateImageView( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkImageView *>( pView ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createImageView( const ImageViewCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ImageView view; - Result result = static_cast( d.vkCreateImageView( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &view ) ) ); - return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING "::Device::createImageView" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createImageViewUnique( const ImageViewCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ImageView view; - Result result = static_cast( d.vkCreateImageView( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &view ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, view, VULKAN_HPP_NAMESPACE_STRING "::Device::createImageViewUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createIndirectCommandsLayoutNV( const VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutCreateInfoNV* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV* pIndirectCommandsLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateIndirectCommandsLayoutNV( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkIndirectCommandsLayoutNV *>( pIndirectCommandsLayout ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createIndirectCommandsLayoutNV( const IndirectCommandsLayoutCreateInfoNV & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout; - Result result = static_cast( d.vkCreateIndirectCommandsLayoutNV( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &indirectCommandsLayout ) ) ); - return createResultValue( result, indirectCommandsLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutNV" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createIndirectCommandsLayoutNVUnique( const IndirectCommandsLayoutCreateInfoNV & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout; - Result result = static_cast( d.vkCreateIndirectCommandsLayoutNV( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &indirectCommandsLayout ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, indirectCommandsLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createIndirectCommandsLayoutNVUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createPipelineCache( const VULKAN_HPP_NAMESPACE::PipelineCacheCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::PipelineCache* pPipelineCache, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreatePipelineCache( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkPipelineCache *>( pPipelineCache ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createPipelineCache( const PipelineCacheCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache; - Result result = static_cast( d.vkCreatePipelineCache( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipelineCache ) ) ); - return createResultValue( result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineCache" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createPipelineCacheUnique( const PipelineCacheCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache; - Result result = static_cast( d.vkCreatePipelineCache( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipelineCache ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipelineCache, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineCacheUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createPipelineLayout( const VULKAN_HPP_NAMESPACE::PipelineLayoutCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::PipelineLayout* pPipelineLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreatePipelineLayout( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkPipelineLayout *>( pPipelineLayout ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createPipelineLayout( const PipelineLayoutCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout; - Result result = static_cast( d.vkCreatePipelineLayout( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipelineLayout ) ) ); - return createResultValue( result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineLayout" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createPipelineLayoutUnique( const PipelineLayoutCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout; - Result result = static_cast( d.vkCreatePipelineLayout( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipelineLayout ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipelineLayout, VULKAN_HPP_NAMESPACE_STRING "::Device::createPipelineLayoutUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createPrivateDataSlotEXT( const VULKAN_HPP_NAMESPACE::PrivateDataSlotCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT* pPrivateDataSlot, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreatePrivateDataSlotEXT( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkPrivateDataSlotEXT *>( pPrivateDataSlot ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::createPrivateDataSlotEXT( const PrivateDataSlotCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot; - Result result = static_cast( d.vkCreatePrivateDataSlotEXT( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &privateDataSlot ) ) ); - return createResultValue( result, privateDataSlot, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlotEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createPrivateDataSlotEXTUnique( const PrivateDataSlotCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot; - Result result = static_cast( d.vkCreatePrivateDataSlotEXT( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &privateDataSlot ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, privateDataSlot, VULKAN_HPP_NAMESPACE_STRING "::Device::createPrivateDataSlotEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createQueryPool( const VULKAN_HPP_NAMESPACE::QueryPoolCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::QueryPool* pQueryPool, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateQueryPool( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkQueryPool *>( pQueryPool ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createQueryPool( const QueryPoolCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::QueryPool queryPool; - Result result = static_cast( d.vkCreateQueryPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &queryPool ) ) ); - return createResultValue( result, queryPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createQueryPool" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createQueryPoolUnique( const QueryPoolCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::QueryPool queryPool; - Result result = static_cast( d.vkCreateQueryPool( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &queryPool ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, queryPool, VULKAN_HPP_NAMESPACE_STRING "::Device::createQueryPoolUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRayTracingPipelinesKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, uint32_t createInfoCount, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Pipeline* pPipelines, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateRayTracingPipelinesKHR( m_device, static_cast( deferredOperation ), static_cast( pipelineCache ), createInfoCount, reinterpret_cast( pCreateInfos ), reinterpret_cast( pAllocator ), reinterpret_cast< VkPipeline *>( pPipelines ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelinesKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - 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( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelinesKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d ) const - { - 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( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createRayTracingPipelineKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( m_device, static_cast( deferredOperation ), static_cast( pipelineCache ), 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createRayTracingPipelinesKHRUnique( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - std::vector, PipelineAllocator> uniquePipelines; - 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( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )|| ( result == VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR )|| ( result == VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR )|| ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) - { - uniquePipelines.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniquePipelines ), VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHRUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template >::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createRayTracingPipelinesKHRUnique( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d ) const - { - std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); - 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( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )|| ( result == VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR )|| ( result == VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR )|| ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) - { - uniquePipelines.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniquePipelines ), VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesKHRUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelineKHRUnique( VULKAN_HPP_NAMESPACE::DeferredOperationKHR deferredOperation, VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateRayTracingPipelinesKHR( m_device, static_cast( deferredOperation ), static_cast( pipelineCache ), 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineKHRUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eOperationDeferredKHR, VULKAN_HPP_NAMESPACE::Result::eOperationNotDeferredKHR, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT }, deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRayTracingPipelinesNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, uint32_t createInfoCount, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Pipeline* pPipelines, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), createInfoCount, reinterpret_cast( pCreateInfos ), reinterpret_cast( pAllocator ), reinterpret_cast< VkPipeline *>( pPipelines ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelinesNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNV", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelinesNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d ) const - { - 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( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - return createResultValue( result, pipelines, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNV", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::createRayTracingPipelineNV( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV & createInfo, Optional allocator, Dispatch const & d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineNV", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createRayTracingPipelinesNVUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - std::vector, PipelineAllocator> uniquePipelines; - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )|| ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) - { - uniquePipelines.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniquePipelines ), VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template >::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue, PipelineAllocator>> Device::createRayTracingPipelinesNVUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, ArrayProxy const & createInfos, Optional allocator, PipelineAllocator & pipelineAllocator, Dispatch const & d ) const - { - std::vector, PipelineAllocator> uniquePipelines( pipelineAllocator ); - std::vector pipelines( createInfos.size() ); - Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( pipelines.data() ) ) ); - if ( ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess )|| ( result == VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT ) ) - { - uniquePipelines.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniquePipelines.push_back( UniqueHandle( pipelines[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniquePipelines ), VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelinesNVUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT } ); - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::createRayTracingPipelineNVUnique( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::RayTracingPipelineCreateInfoNV & createInfo, Optional allocator, Dispatch const & d ) const - { - Pipeline pipeline; - Result result = static_cast( d.vkCreateRayTracingPipelinesNV( m_device, static_cast( pipelineCache ), 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &pipeline ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, pipeline, VULKAN_HPP_NAMESPACE_STRING "::Device::createRayTracingPipelineNVUnique", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::ePipelineCompileRequiredEXT }, deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRenderPass( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::RenderPass* pRenderPass, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateRenderPass( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkRenderPass *>( pRenderPass ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createRenderPass( const RenderPassCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRenderPassUnique( const RenderPassCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPassUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRenderPass2( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::RenderPass* pRenderPass, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateRenderPass2( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkRenderPass *>( pRenderPass ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createRenderPass2( const RenderPassCreateInfo2 & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass2( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRenderPass2Unique( const RenderPassCreateInfo2 & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass2( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2Unique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createRenderPass2KHR( const VULKAN_HPP_NAMESPACE::RenderPassCreateInfo2* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::RenderPass* pRenderPass, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkRenderPass *>( pRenderPass ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createRenderPass2KHR( const RenderPassCreateInfo2 & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2KHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createRenderPass2KHRUnique( const RenderPassCreateInfo2 & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::RenderPass renderPass; - Result result = static_cast( d.vkCreateRenderPass2KHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &renderPass ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, renderPass, VULKAN_HPP_NAMESPACE_STRING "::Device::createRenderPass2KHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSampler( const VULKAN_HPP_NAMESPACE::SamplerCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Sampler* pSampler, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateSampler( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSampler *>( pSampler ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createSampler( const SamplerCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Sampler sampler; - Result result = static_cast( d.vkCreateSampler( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &sampler ) ) ); - return createResultValue( result, sampler, VULKAN_HPP_NAMESPACE_STRING "::Device::createSampler" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSamplerUnique( const SamplerCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Sampler sampler; - Result result = static_cast( d.vkCreateSampler( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &sampler ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, sampler, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversion( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion* pYcbcrConversion, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSamplerYcbcrConversion *>( pYcbcrConversion ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createSamplerYcbcrConversion( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; - Result result = static_cast( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &ycbcrConversion ) ) ); - return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversion" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSamplerYcbcrConversionUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; - Result result = static_cast( d.vkCreateSamplerYcbcrConversion( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &ycbcrConversion ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSamplerYcbcrConversionKHR( const VULKAN_HPP_NAMESPACE::SamplerYcbcrConversionCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion* pYcbcrConversion, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSamplerYcbcrConversion *>( pYcbcrConversion ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createSamplerYcbcrConversionKHR( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; - Result result = static_cast( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &ycbcrConversion ) ) ); - return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSamplerYcbcrConversionKHRUnique( const SamplerYcbcrConversionCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion; - Result result = static_cast( d.vkCreateSamplerYcbcrConversionKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &ycbcrConversion ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, ycbcrConversion, VULKAN_HPP_NAMESPACE_STRING "::Device::createSamplerYcbcrConversionKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Semaphore* pSemaphore, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateSemaphore( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSemaphore *>( pSemaphore ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createSemaphore( const SemaphoreCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Semaphore semaphore; - Result result = static_cast( d.vkCreateSemaphore( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &semaphore ) ) ); - return createResultValue( result, semaphore, VULKAN_HPP_NAMESPACE_STRING "::Device::createSemaphore" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSemaphoreUnique( const SemaphoreCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Semaphore semaphore; - Result result = static_cast( d.vkCreateSemaphore( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &semaphore ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, semaphore, VULKAN_HPP_NAMESPACE_STRING "::Device::createSemaphoreUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createShaderModule( const VULKAN_HPP_NAMESPACE::ShaderModuleCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::ShaderModule* pShaderModule, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateShaderModule( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkShaderModule *>( pShaderModule ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createShaderModule( const ShaderModuleCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ShaderModule shaderModule; - Result result = static_cast( d.vkCreateShaderModule( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &shaderModule ) ) ); - return createResultValue( result, shaderModule, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderModule" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createShaderModuleUnique( const ShaderModuleCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ShaderModule shaderModule; - Result result = static_cast( d.vkCreateShaderModule( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &shaderModule ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, shaderModule, VULKAN_HPP_NAMESPACE_STRING "::Device::createShaderModuleUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSharedSwapchainsKHR( uint32_t swapchainCount, const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR* pCreateInfos, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SwapchainKHR* pSwapchains, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateSharedSwapchainsKHR( m_device, swapchainCount, reinterpret_cast( pCreateInfos ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSwapchainKHR *>( pSwapchains ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSharedSwapchainsKHR( ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - std::vector swapchains( createInfos.size() ); - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( swapchains.data() ) ) ); - return createResultValue( result, swapchains, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSharedSwapchainsKHR( ArrayProxy const & createInfos, Optional allocator, SwapchainKHRAllocator & swapchainKHRAllocator, Dispatch const & d ) const - { - std::vector swapchains( createInfos.size(), swapchainKHRAllocator ); - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( swapchains.data() ) ) ); - return createResultValue( result, swapchains, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHR" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createSharedSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - SwapchainKHR swapchain; - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &swapchain ) ) ); - return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType, SwapchainKHRAllocator>>::type Device::createSharedSwapchainsKHRUnique( ArrayProxy const & createInfos, Optional allocator, Dispatch const & d ) const - { - std::vector, SwapchainKHRAllocator> uniqueSwapchains; - std::vector swapchains( createInfos.size() ); - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( swapchains.data() ) ) ); - if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) - { - uniqueSwapchains.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniqueSwapchains.push_back( UniqueHandle( swapchains[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniqueSwapchains ), VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" ); - } - - template >::value, int>::type > - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType, SwapchainKHRAllocator>>::type Device::createSharedSwapchainsKHRUnique( ArrayProxy const & createInfos, Optional allocator, SwapchainKHRAllocator & swapchainKHRAllocator, Dispatch const & d ) const - { - std::vector, SwapchainKHRAllocator> uniqueSwapchains( swapchainKHRAllocator ); - std::vector swapchains( createInfos.size() ); - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, createInfos.size(), reinterpret_cast( createInfos.data() ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( swapchains.data() ) ) ); - if ( result == VULKAN_HPP_NAMESPACE::Result::eSuccess ) - { - uniqueSwapchains.reserve( createInfos.size() ); - ObjectDestroy deleter( *this, allocator, d ); - for ( size_t i=0; i < createInfos.size(); i++ ) - { - uniqueSwapchains.push_back( UniqueHandle( swapchains[i], deleter ) ); - } - } - return createResultValue( result, std::move( uniqueSwapchains ), VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainsKHRUnique" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSharedSwapchainKHRUnique( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - SwapchainKHR swapchain; - Result result = static_cast( d.vkCreateSharedSwapchainsKHR( m_device, 1, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &swapchain ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING "::Device::createSharedSwapchainKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createSwapchainKHR( const VULKAN_HPP_NAMESPACE::SwapchainCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SwapchainKHR* pSwapchain, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateSwapchainKHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSwapchainKHR *>( pSwapchain ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::createSwapchainKHR( const SwapchainCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain; - Result result = static_cast( d.vkCreateSwapchainKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &swapchain ) ) ); - return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING "::Device::createSwapchainKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::createSwapchainKHRUnique( const SwapchainCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain; - Result result = static_cast( d.vkCreateSwapchainKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &swapchain ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, swapchain, VULKAN_HPP_NAMESPACE_STRING "::Device::createSwapchainKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::createValidationCacheEXT( const VULKAN_HPP_NAMESPACE::ValidationCacheCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::ValidationCacheEXT* pValidationCache, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkValidationCacheEXT *>( pValidationCache ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::createValidationCacheEXT( const ValidationCacheCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache; - Result result = static_cast( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &validationCache ) ) ); - return createResultValue( result, validationCache, VULKAN_HPP_NAMESPACE_STRING "::Device::createValidationCacheEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::createValidationCacheEXTUnique( const ValidationCacheCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache; - Result result = static_cast( d.vkCreateValidationCacheEXT( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &validationCache ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, validationCache, VULKAN_HPP_NAMESPACE_STRING "::Device::createValidationCacheEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectNameInfoEXT* pNameInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast( pNameInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::debugMarkerSetObjectNameEXT( const DebugMarkerObjectNameInfoEXT & nameInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkDebugMarkerSetObjectNameEXT( m_device, reinterpret_cast( &nameInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectNameEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::debugMarkerSetObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugMarkerObjectTagInfoEXT* pTagInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast( pTagInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::debugMarkerSetObjectTagEXT( const DebugMarkerObjectTagInfoEXT & tagInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkDebugMarkerSetObjectTagEXT( m_device, reinterpret_cast( &tagInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::debugMarkerSetObjectTagEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::deferredOperationJoinKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkDeferredOperationJoinKHR( m_device, static_cast( operation ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::deferredOperationJoinKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const - { - Result result = static_cast( d.vkDeferredOperationJoinKHR( m_device, static_cast( operation ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::deferredOperationJoinKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eThreadDoneKHR, VULKAN_HPP_NAMESPACE::Result::eThreadIdleKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_INLINE void Device::destroyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyAccelerationStructureKHR( m_device, static_cast( accelerationStructure ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyAccelerationStructureKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyAccelerationStructureKHR( m_device, static_cast( accelerationStructure ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyAccelerationStructureKHR( m_device, static_cast( accelerationStructure ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureKHR accelerationStructure, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyAccelerationStructureKHR( m_device, static_cast( accelerationStructure ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyAccelerationStructureNV( m_device, static_cast( accelerationStructure ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyAccelerationStructureNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyAccelerationStructureNV( m_device, static_cast( accelerationStructure ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyAccelerationStructureNV( m_device, static_cast( accelerationStructure ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyAccelerationStructureNV( m_device, static_cast( accelerationStructure ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyBuffer( VULKAN_HPP_NAMESPACE::Buffer buffer, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Buffer buffer, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Buffer buffer, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyBuffer( m_device, static_cast( buffer ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyBufferView( VULKAN_HPP_NAMESPACE::BufferView bufferView, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::BufferView bufferView, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::BufferView bufferView, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyBufferView( m_device, static_cast( bufferView ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CommandPool commandPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::CommandPool commandPool, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyCommandPool( m_device, static_cast( commandPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyDeferredOperationKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDeferredOperationKHR( m_device, static_cast( operation ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyDeferredOperationKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDeferredOperationKHR( m_device, static_cast( operation ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDeferredOperationKHR( m_device, static_cast( operation ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDeferredOperationKHR( m_device, static_cast( operation ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorPool( m_device, static_cast( descriptorPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorSetLayout( m_device, static_cast( descriptorSetLayout ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyDescriptorSetLayout( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorSetLayout( m_device, static_cast( descriptorSetLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorSetLayout( m_device, static_cast( descriptorSetLayout ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorSetLayout descriptorSetLayout, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorSetLayout( m_device, static_cast( descriptorSetLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplate( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyDescriptorUpdateTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorUpdateTemplateKHR( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDescriptorUpdateTemplate( m_device, static_cast( descriptorUpdateTemplate ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDevice( m_device, reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDevice( m_device, reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyEvent( VULKAN_HPP_NAMESPACE::Event event, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyEvent( VULKAN_HPP_NAMESPACE::Event event, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Event event, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Event event, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyEvent( m_device, static_cast( event ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyFence( VULKAN_HPP_NAMESPACE::Fence fence, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyFence( VULKAN_HPP_NAMESPACE::Fence fence, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Fence fence, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Fence fence, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyFence( m_device, static_cast( fence ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyFramebuffer( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Framebuffer framebuffer, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyFramebuffer( m_device, static_cast( framebuffer ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyImage( VULKAN_HPP_NAMESPACE::Image image, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyImage( VULKAN_HPP_NAMESPACE::Image image, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Image image, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Image image, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyImage( m_device, static_cast( image ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyImageView( VULKAN_HPP_NAMESPACE::ImageView imageView, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyImageView( VULKAN_HPP_NAMESPACE::ImageView imageView, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ImageView imageView, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ImageView imageView, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyImageView( m_device, static_cast( imageView ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyIndirectCommandsLayoutNV( m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyIndirectCommandsLayoutNV( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyIndirectCommandsLayoutNV( m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyIndirectCommandsLayoutNV( m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::IndirectCommandsLayoutNV indirectCommandsLayout, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyIndirectCommandsLayoutNV( m_device, static_cast( indirectCommandsLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyPipeline( VULKAN_HPP_NAMESPACE::Pipeline pipeline, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Pipeline pipeline, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Pipeline pipeline, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipeline( m_device, static_cast( pipeline ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyPipelineCache( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipelineCache( m_device, static_cast( pipelineCache ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyPipelineLayout( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PipelineLayout pipelineLayout, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPipelineLayout( m_device, static_cast( pipelineLayout ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPrivateDataSlotEXT( m_device, static_cast( privateDataSlot ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyPrivateDataSlotEXT( VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPrivateDataSlotEXT( m_device, static_cast( privateDataSlot ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPrivateDataSlotEXT( m_device, static_cast( privateDataSlot ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyPrivateDataSlotEXT( m_device, static_cast( privateDataSlot ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::QueryPool queryPool, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::QueryPool queryPool, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyQueryPool( m_device, static_cast( queryPool ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyRenderPass( VULKAN_HPP_NAMESPACE::RenderPass renderPass, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::RenderPass renderPass, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::RenderPass renderPass, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyRenderPass( m_device, static_cast( renderPass ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroySampler( VULKAN_HPP_NAMESPACE::Sampler sampler, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySampler( VULKAN_HPP_NAMESPACE::Sampler sampler, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Sampler sampler, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Sampler sampler, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySampler( m_device, static_cast( sampler ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySamplerYcbcrConversion( m_device, static_cast( ycbcrConversion ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversion( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySamplerYcbcrConversion( m_device, static_cast( ycbcrConversion ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySamplerYcbcrConversionKHR( m_device, static_cast( ycbcrConversion ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySamplerYcbcrConversionKHR( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySamplerYcbcrConversionKHR( m_device, static_cast( ycbcrConversion ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySamplerYcbcrConversion( m_device, static_cast( ycbcrConversion ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::SamplerYcbcrConversion ycbcrConversion, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySamplerYcbcrConversion( m_device, static_cast( ycbcrConversion ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroySemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySemaphore( VULKAN_HPP_NAMESPACE::Semaphore semaphore, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Semaphore semaphore, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::Semaphore semaphore, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySemaphore( m_device, static_cast( semaphore ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyShaderModule( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyShaderModule( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ShaderModule shaderModule, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyShaderModule( m_device, static_cast( shaderModule ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroySwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroySwapchainKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySwapchainKHR( m_device, static_cast( swapchain ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyValidationCacheEXT( m_device, static_cast( validationCache ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroyValidationCacheEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyValidationCacheEXT( m_device, static_cast( validationCache ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyValidationCacheEXT( m_device, static_cast( validationCache ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::destroy( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyValidationCacheEXT( m_device, static_cast( validationCache ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitIdle( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkDeviceWaitIdle( m_device ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::waitIdle( Dispatch const & d ) const - { - Result result = static_cast( d.vkDeviceWaitIdle( m_device ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitIdle" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, const VULKAN_HPP_NAMESPACE::DisplayPowerInfoEXT* pDisplayPowerInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkDisplayPowerControlEXT( m_device, static_cast( display ), reinterpret_cast( pDisplayPowerInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::displayPowerControlEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayPowerInfoEXT & displayPowerInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkDisplayPowerControlEXT( m_device, static_cast( display ), reinterpret_cast( &displayPowerInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::displayPowerControlEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::flushMappedMemoryRanges( uint32_t memoryRangeCount, const VULKAN_HPP_NAMESPACE::MappedMemoryRange* pMemoryRanges, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkFlushMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast( pMemoryRanges ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::flushMappedMemoryRanges( ArrayProxy const & memoryRanges, Dispatch const & d ) const - { - Result result = static_cast( d.vkFlushMappedMemoryRanges( m_device, memoryRanges.size(), reinterpret_cast( memoryRanges.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::flushMappedMemoryRanges" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::freeCommandBuffers( VULKAN_HPP_NAMESPACE::CommandPool commandPool, uint32_t commandBufferCount, const VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkFreeCommandBuffers( m_device, static_cast( commandPool ), commandBufferCount, reinterpret_cast( pCommandBuffers ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::freeCommandBuffers( VULKAN_HPP_NAMESPACE::CommandPool commandPool, ArrayProxy const & commandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkFreeCommandBuffers( m_device, static_cast( commandPool ), commandBuffers.size(), reinterpret_cast( commandBuffers.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::free( VULKAN_HPP_NAMESPACE::CommandPool commandPool, uint32_t commandBufferCount, const VULKAN_HPP_NAMESPACE::CommandBuffer* pCommandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkFreeCommandBuffers( m_device, static_cast( commandPool ), commandBufferCount, reinterpret_cast( pCommandBuffers ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::free( VULKAN_HPP_NAMESPACE::CommandPool commandPool, ArrayProxy const & commandBuffers, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkFreeCommandBuffers( m_device, static_cast( commandPool ), commandBuffers.size(), reinterpret_cast( commandBuffers.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE Result Device::freeDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, uint32_t descriptorSetCount, const VULKAN_HPP_NAMESPACE::DescriptorSet* pDescriptorSets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkFreeDescriptorSets( m_device, static_cast( descriptorPool ), descriptorSetCount, reinterpret_cast( pDescriptorSets ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::freeDescriptorSets( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, ArrayProxy const & descriptorSets, Dispatch const & d ) const - { - Result result = static_cast( d.vkFreeDescriptorSets( m_device, static_cast( descriptorPool ), descriptorSets.size(), reinterpret_cast( descriptorSets.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::freeDescriptorSets" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE Result Device::free( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, uint32_t descriptorSetCount, const VULKAN_HPP_NAMESPACE::DescriptorSet* pDescriptorSets, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkFreeDescriptorSets( m_device, static_cast( descriptorPool ), descriptorSetCount, reinterpret_cast( pDescriptorSets ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::free( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, ArrayProxy const & descriptorSets, Dispatch const & d ) const - { - Result result = static_cast( d.vkFreeDescriptorSets( m_device, static_cast( descriptorPool ), descriptorSets.size(), reinterpret_cast( descriptorSets.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::free" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::freeMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::freeMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::free( VULKAN_HPP_NAMESPACE::DeviceMemory memory, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::free( VULKAN_HPP_NAMESPACE::DeviceMemory memory, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkFreeMemory( m_device, static_cast( memory ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, const VULKAN_HPP_NAMESPACE::AccelerationStructureBuildGeometryInfoKHR* pBuildInfo, const uint32_t* pMaxPrimitiveCounts, VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR* pSizeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetAccelerationStructureBuildSizesKHR( m_device, static_cast( buildType ), reinterpret_cast( pBuildInfo ), pMaxPrimitiveCounts, reinterpret_cast< VkAccelerationStructureBuildSizesInfoKHR *>( pSizeInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureBuildSizesInfoKHR Device::getAccelerationStructureBuildSizesKHR( VULKAN_HPP_NAMESPACE::AccelerationStructureBuildTypeKHR buildType, const AccelerationStructureBuildGeometryInfoKHR & buildInfo, ArrayProxy const & maxPrimitiveCounts, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS - { -#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*/ - VULKAN_HPP_NAMESPACE::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*/ - - - template - VULKAN_HPP_INLINE DeviceAddress Device::getAccelerationStructureAddressKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureDeviceAddressInfoKHR* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetAccelerationStructureDeviceAddressKHR( m_device, reinterpret_cast( pInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE DeviceAddress Device::getAccelerationStructureAddressKHR( const AccelerationStructureDeviceAddressInfoKHR & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetAccelerationStructureDeviceAddressKHR( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, size_t dataSize, void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetAccelerationStructureHandleNV( m_device, static_cast( accelerationStructure ), dataSize, pData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it.") - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, ArrayProxy const &data, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetAccelerationStructureHandleNV( m_device, static_cast( accelerationStructure ), data.size() * sizeof( T ) , reinterpret_cast( data.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getAccelerationStructureHandleNV" ); - - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, size_t dataSize, Dispatch const & d ) const - { - VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 ); - std::vector data( dataSize / sizeof( T ) ); - Result result = static_cast( d.vkGetAccelerationStructureHandleNV( m_device, static_cast( accelerationStructure ), data.size() * sizeof( T ), reinterpret_cast( data.data() ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureHandleNV" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getAccelerationStructureHandleNV( VULKAN_HPP_NAMESPACE::AccelerationStructureNV accelerationStructure, Dispatch const & d ) const - { - T data; - Result result = static_cast( d.vkGetAccelerationStructureHandleNV( m_device, static_cast( accelerationStructure ), sizeof( T ), reinterpret_cast( &data ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getAccelerationStructureHandleNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getAccelerationStructureMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::AccelerationStructureMemoryRequirementsInfoNV* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR* pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, reinterpret_cast( pInfo ), reinterpret_cast< VkMemoryRequirements2KHR *>( pMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR Device::getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR memoryRequirements; - d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getAccelerationStructureMemoryRequirementsNV( const AccelerationStructureMemoryRequirementsInfoNV & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::MemoryRequirements2KHR & memoryRequirements = structureChain.template get(); - d.vkGetAccelerationStructureMemoryRequirementsNV( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer* buffer, VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, buffer, reinterpret_cast< VkAndroidHardwareBufferPropertiesANDROID *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID properties; - Result result = static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, &buffer, reinterpret_cast( &properties ) ) ); - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING "::Device::getAndroidHardwareBufferPropertiesANDROID" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::getAndroidHardwareBufferPropertiesANDROID( const struct AHardwareBuffer & buffer, Dispatch const & d ) const - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::AndroidHardwareBufferPropertiesANDROID & properties = structureChain.template get(); - Result result = static_cast( d.vkGetAndroidHardwareBufferPropertiesANDROID( m_device, &buffer, reinterpret_cast( &properties ) ) ); - return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::Device::getAndroidHardwareBufferPropertiesANDROID" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - - template - VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetBufferDeviceAddress( m_device, reinterpret_cast( pInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddress( const BufferDeviceAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetBufferDeviceAddress( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetBufferDeviceAddressEXT( m_device, reinterpret_cast( pInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressEXT( const BufferDeviceAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetBufferDeviceAddressEXT( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetBufferDeviceAddressKHR( m_device, reinterpret_cast( pInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE DeviceAddress Device::getBufferAddressKHR( const BufferDeviceAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetBufferDeviceAddressKHR( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements( VULKAN_HPP_NAMESPACE::Buffer buffer, VULKAN_HPP_NAMESPACE::MemoryRequirements* pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetBufferMemoryRequirements( m_device, static_cast( buffer ), reinterpret_cast< VkMemoryRequirements *>( pMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements Device::getBufferMemoryRequirements( VULKAN_HPP_NAMESPACE::Buffer buffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements; - d.vkGetBufferMemoryRequirements( m_device, static_cast( buffer ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast( pInfo ), reinterpret_cast< VkMemoryRequirements2 *>( pMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; - d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements2( const BufferMemoryRequirementsInfo2 & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = structureChain.template get(); - d.vkGetBufferMemoryRequirements2( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getBufferMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::BufferMemoryRequirementsInfo2* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast( pInfo ), reinterpret_cast< VkMemoryRequirements2 *>( pMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; - d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getBufferMemoryRequirements2KHR( const BufferMemoryRequirementsInfo2 & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = structureChain.template get(); - d.vkGetBufferMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetBufferOpaqueCaptureAddress( m_device, reinterpret_cast( pInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddress( const BufferDeviceAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetBufferOpaqueCaptureAddress( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::BufferDeviceAddressInfo* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetBufferOpaqueCaptureAddressKHR( m_device, reinterpret_cast( pInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE uint64_t Device::getBufferOpaqueCaptureAddressKHR( const BufferDeviceAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetBufferOpaqueCaptureAddressKHR( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getCalibratedTimestampsEXT( uint32_t timestampCount, const VULKAN_HPP_NAMESPACE::CalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetCalibratedTimestampsEXT( m_device, timestampCount, reinterpret_cast( pTimestampInfos ), pTimestamps, pMaxDeviation ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it.") - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getCalibratedTimestampsEXT( ArrayProxy const ×tampInfos, ArrayProxy const ×tamps, Dispatch const &d ) const - { - #ifdef VULKAN_HPP_NO_EXCEPTIONS - VULKAN_HPP_ASSERT( timestampInfos.size() == timestamps.size() ); -#else - if ( timestampInfos.size() != timestamps.size() ) - { - throw LogicError( VULKAN_HPP_NAMESPACE_STRING "::VkDevice::getCalibratedTimestampsEXT: timestampInfos.size() != timestamps.size()" ); - } -#endif /*VULKAN_HPP_NO_EXCEPTIONS*/ - uint64_t maxDeviation; - Result result = static_cast( d.vkGetCalibratedTimestampsEXT( m_device, timestampInfos.size() , reinterpret_cast( timestampInfos.data() ), timestamps.data(), &maxDeviation ) ); - return createResultValue( result, maxDeviation, VULKAN_HPP_NAMESPACE_STRING"::Device::getCalibratedTimestampsEXT" ); - - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType, uint64_t>>::type Device::getCalibratedTimestampsEXT( ArrayProxy const & timestampInfos, Dispatch const & d ) const - { - 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 ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType, uint64_t>>::type Device::getCalibratedTimestampsEXT( ArrayProxy const & timestampInfos, Uint64_tAllocator & uint64_tAllocator, Dispatch const & d ) const - { - 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 ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getCalibratedTimestampsEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE uint32_t Device::getDeferredOperationMaxConcurrencyKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetDeferredOperationMaxConcurrencyKHR( m_device, static_cast( operation ) ); - } - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDeferredOperationResultKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetDeferredOperationResultKHR( m_device, static_cast( operation ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getDeferredOperationResultKHR( VULKAN_HPP_NAMESPACE::DeferredOperationKHR operation, Dispatch const & d ) const - { - Result result = static_cast( d.vkGetDeferredOperationResultKHR( m_device, static_cast( operation ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getDeferredOperationResultKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupport( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo* pCreateInfo, VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport* pSupport, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast< VkDescriptorSetLayoutSupport *>( pSupport ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support; - d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); - return support; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getDescriptorSetLayoutSupport( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support = structureChain.template get(); - d.vkGetDescriptorSetLayoutSupport( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getDescriptorSetLayoutSupportKHR( const VULKAN_HPP_NAMESPACE::DescriptorSetLayoutCreateInfo* pCreateInfo, VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport* pSupport, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast( pCreateInfo ), reinterpret_cast< VkDescriptorSetLayoutSupport *>( pSupport ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport support; - d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); - return support; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getDescriptorSetLayoutSupportKHR( const DescriptorSetLayoutCreateInfo & createInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::DescriptorSetLayoutSupport & support = structureChain.template get(); - d.vkGetDescriptorSetLayoutSupportKHR( m_device, reinterpret_cast( &createInfo ), reinterpret_cast( &support ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getAccelerationStructureCompatibilityKHR( const VULKAN_HPP_NAMESPACE::AccelerationStructureVersionInfoKHR* pVersionInfo, VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR* pCompatibility, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetDeviceAccelerationStructureCompatibilityKHR( m_device, reinterpret_cast( pVersionInfo ), reinterpret_cast< VkAccelerationStructureCompatibilityKHR *>( pCompatibility ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR Device::getAccelerationStructureCompatibilityKHR( const AccelerationStructureVersionInfoKHR & versionInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::AccelerationStructureCompatibilityKHR compatibility; - d.vkGetDeviceAccelerationStructureCompatibilityKHR( m_device, reinterpret_cast( &versionInfo ), reinterpret_cast( &compatibility ) ); - return compatibility; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetDeviceGroupPeerMemoryFeatures( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast< VkPeerMemoryFeatureFlags *>( pPeerMemoryFeatures ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeatures( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures; - d.vkGetDeviceGroupPeerMemoryFeatures( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( &peerMemoryFeatures ) ); - return peerMemoryFeatures; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags* pPeerMemoryFeatures, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast< VkPeerMemoryFeatureFlags *>( pPeerMemoryFeatures ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags Device::getGroupPeerMemoryFeaturesKHR( uint32_t heapIndex, uint32_t localDeviceIndex, uint32_t remoteDeviceIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PeerMemoryFeatureFlags peerMemoryFeatures; - d.vkGetDeviceGroupPeerMemoryFeaturesKHR( m_device, heapIndex, localDeviceIndex, remoteDeviceIndex, reinterpret_cast( &peerMemoryFeatures ) ); - return peerMemoryFeatures; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getGroupPresentCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetDeviceGroupPresentCapabilitiesKHR( m_device, reinterpret_cast< VkDeviceGroupPresentCapabilitiesKHR *>( pDeviceGroupPresentCapabilities ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getGroupPresentCapabilitiesKHR( Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DeviceGroupPresentCapabilitiesKHR deviceGroupPresentCapabilities; - Result result = static_cast( d.vkGetDeviceGroupPresentCapabilitiesKHR( m_device, reinterpret_cast( &deviceGroupPresentCapabilities ) ) ); - return createResultValue( result, deviceGroupPresentCapabilities, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupPresentCapabilitiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetDeviceGroupSurfacePresentModes2EXT( m_device, reinterpret_cast( pSurfaceInfo ), reinterpret_cast< VkDeviceGroupPresentModeFlagsKHR *>( pModes ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getGroupSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes; - Result result = static_cast( d.vkGetDeviceGroupSurfacePresentModes2EXT( m_device, reinterpret_cast( &surfaceInfo ), reinterpret_cast( &modes ) ) ); - return createResultValue( result, modes, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModes2EXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR* pModes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, static_cast( surface ), reinterpret_cast< VkDeviceGroupPresentModeFlagsKHR *>( pModes ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getGroupSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DeviceGroupPresentModeFlagsKHR modes; - Result result = static_cast( d.vkGetDeviceGroupSurfacePresentModesKHR( m_device, static_cast( surface ), reinterpret_cast( &modes ) ) ); - return createResultValue( result, modes, VULKAN_HPP_NAMESPACE_STRING "::Device::getGroupSurfacePresentModesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getMemoryCommitment( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize* pCommittedMemoryInBytes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetDeviceMemoryCommitment( m_device, static_cast( memory ), reinterpret_cast< VkDeviceSize *>( pCommittedMemoryInBytes ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::DeviceSize Device::getMemoryCommitment( VULKAN_HPP_NAMESPACE::DeviceMemory memory, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::DeviceSize committedMemoryInBytes; - d.vkGetDeviceMemoryCommitment( m_device, static_cast( memory ), reinterpret_cast( &committedMemoryInBytes ) ); - return committedMemoryInBytes; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddress( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetDeviceMemoryOpaqueCaptureAddress( m_device, reinterpret_cast( pInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddress( const DeviceMemoryOpaqueCaptureAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetDeviceMemoryOpaqueCaptureAddress( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddressKHR( const VULKAN_HPP_NAMESPACE::DeviceMemoryOpaqueCaptureAddressInfo* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetDeviceMemoryOpaqueCaptureAddressKHR( m_device, reinterpret_cast( pInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE uint64_t Device::getMemoryOpaqueCaptureAddressKHR( const DeviceMemoryOpaqueCaptureAddressInfo & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetDeviceMemoryOpaqueCaptureAddressKHR( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const char* pName, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetDeviceProcAddr( m_device, pName ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE PFN_vkVoidFunction Device::getProcAddr( const std::string & name, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetDeviceProcAddr( m_device, name.c_str() ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, VULKAN_HPP_NAMESPACE::Queue* pQueue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast< VkQueue *>( pQueue ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Queue Device::getQueue( uint32_t queueFamilyIndex, uint32_t queueIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::Queue queue; - d.vkGetDeviceQueue( m_device, queueFamilyIndex, queueIndex, reinterpret_cast( &queue ) ); - return queue; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getQueue2( const VULKAN_HPP_NAMESPACE::DeviceQueueInfo2* pQueueInfo, VULKAN_HPP_NAMESPACE::Queue* pQueue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetDeviceQueue2( m_device, reinterpret_cast( pQueueInfo ), reinterpret_cast< VkQueue *>( pQueue ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Queue Device::getQueue2( const DeviceQueueInfo2 & queueInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::Queue queue; - d.vkGetDeviceQueue2( m_device, reinterpret_cast( &queueInfo ), reinterpret_cast( &queue ) ); - return queue; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getEventStatus( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetEventStatus( m_device, static_cast( event ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getEventStatus( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d ) const - { - Result result = static_cast( d.vkGetEventStatus( m_device, static_cast( event ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getEventStatus", { VULKAN_HPP_NAMESPACE::Result::eEventSet, VULKAN_HPP_NAMESPACE::Result::eEventReset } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceFdKHR( const VULKAN_HPP_NAMESPACE::FenceGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetFenceFdKHR( m_device, reinterpret_cast( pGetFdInfo ), pFd ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getFenceFdKHR( const FenceGetFdInfoKHR & getFdInfo, Dispatch const & d ) const - { - int fd; - Result result = static_cast( d.vkGetFenceFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); - return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceStatus( VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetFenceStatus( m_device, static_cast( fence ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceStatus( VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d ) const - { - Result result = static_cast( d.vkGetFenceStatus( m_device, static_cast( fence ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceStatus", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::FenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetFenceWin32HandleKHR( m_device, reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getFenceWin32HandleKHR( const FenceGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const & d ) const - { - HANDLE handle; - Result result = static_cast( d.vkGetFenceWin32HandleKHR( m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); - return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING "::Device::getFenceWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_INLINE void Device::getGeneratedCommandsMemoryRequirementsNV( const VULKAN_HPP_NAMESPACE::GeneratedCommandsMemoryRequirementsInfoNV* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetGeneratedCommandsMemoryRequirementsNV( m_device, reinterpret_cast( pInfo ), reinterpret_cast< VkMemoryRequirements2 *>( pMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 Device::getGeneratedCommandsMemoryRequirementsNV( const GeneratedCommandsMemoryRequirementsInfoNV & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; - d.vkGetGeneratedCommandsMemoryRequirementsNV( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getGeneratedCommandsMemoryRequirementsNV( const GeneratedCommandsMemoryRequirementsInfoNV & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = structureChain.template get(); - d.vkGetGeneratedCommandsMemoryRequirementsNV( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getImageDrmFormatModifierPropertiesEXT( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetImageDrmFormatModifierPropertiesEXT( m_device, static_cast( image ), reinterpret_cast< VkImageDrmFormatModifierPropertiesEXT *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::getImageDrmFormatModifierPropertiesEXT( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ImageDrmFormatModifierPropertiesEXT properties; - Result result = static_cast( d.vkGetImageDrmFormatModifierPropertiesEXT( m_device, static_cast( image ), reinterpret_cast( &properties ) ) ); - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageDrmFormatModifierPropertiesEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getImageMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, VULKAN_HPP_NAMESPACE::MemoryRequirements* pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetImageMemoryRequirements( m_device, static_cast( image ), reinterpret_cast< VkMemoryRequirements *>( pMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements Device::getImageMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::MemoryRequirements memoryRequirements; - d.vkGetImageMemoryRequirements( m_device, static_cast( image ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast( pInfo ), reinterpret_cast< VkMemoryRequirements2 *>( pMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; - d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements2( const ImageMemoryRequirementsInfo2 & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = structureChain.template get(); - d.vkGetImageMemoryRequirements2( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getImageMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageMemoryRequirementsInfo2* pInfo, VULKAN_HPP_NAMESPACE::MemoryRequirements2* pMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast( pInfo ), reinterpret_cast< VkMemoryRequirements2 *>( pMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MemoryRequirements2 Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::MemoryRequirements2 memoryRequirements; - d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return memoryRequirements; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain Device::getImageMemoryRequirements2KHR( const ImageMemoryRequirementsInfo2 & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::MemoryRequirements2 & memoryRequirements = structureChain.template get(); - d.vkGetImageMemoryRequirements2KHR( m_device, reinterpret_cast( &info ), reinterpret_cast( &memoryRequirements ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, uint32_t* pSparseMemoryRequirementCount, VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements* pSparseMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetImageSparseMemoryRequirements( m_device, static_cast( image ), pSparseMemoryRequirementCount, reinterpret_cast< VkSparseImageMemoryRequirements *>( pSparseMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, Dispatch const & d ) const - { - 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() ); - return sparseMemoryRequirements; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements( VULKAN_HPP_NAMESPACE::Image image, SparseImageMemoryRequirementsAllocator & sparseImageMemoryRequirementsAllocator, Dispatch const & d ) const - { - 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() ); - return sparseMemoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetImageSparseMemoryRequirements2( m_device, reinterpret_cast( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast< VkSparseImageMemoryRequirements2 *>( pSparseMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const & d ) const - { - 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() ); - return sparseMemoryRequirements; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements2( const ImageSparseMemoryRequirementsInfo2 & info, SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, Dispatch const & d ) const - { - 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() ); - return sparseMemoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void Device::getImageSparseMemoryRequirements2KHR( const VULKAN_HPP_NAMESPACE::ImageSparseMemoryRequirementsInfo2* pInfo, uint32_t* pSparseMemoryRequirementCount, VULKAN_HPP_NAMESPACE::SparseImageMemoryRequirements2* pSparseMemoryRequirements, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetImageSparseMemoryRequirements2KHR( m_device, reinterpret_cast( pInfo ), pSparseMemoryRequirementCount, reinterpret_cast< VkSparseImageMemoryRequirements2 *>( pSparseMemoryRequirements ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, Dispatch const & d ) const - { - 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() ); - return sparseMemoryRequirements; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Device::getImageSparseMemoryRequirements2KHR( const ImageSparseMemoryRequirementsInfo2 & info, SparseImageMemoryRequirements2Allocator & sparseImageMemoryRequirements2Allocator, Dispatch const & d ) const - { - 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() ); - return sparseMemoryRequirements; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getImageSubresourceLayout( VULKAN_HPP_NAMESPACE::Image image, const VULKAN_HPP_NAMESPACE::ImageSubresource* pSubresource, VULKAN_HPP_NAMESPACE::SubresourceLayout* pLayout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetImageSubresourceLayout( m_device, static_cast( image ), reinterpret_cast( pSubresource ), reinterpret_cast< VkSubresourceLayout *>( pLayout ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::SubresourceLayout Device::getImageSubresourceLayout( VULKAN_HPP_NAMESPACE::Image image, const ImageSubresource & subresource, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::SubresourceLayout layout; - d.vkGetImageSubresourceLayout( m_device, static_cast( image ), reinterpret_cast( &subresource ), reinterpret_cast( &layout ) ); - return layout; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getImageViewAddressNVX( VULKAN_HPP_NAMESPACE::ImageView imageView, VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetImageViewAddressNVX( m_device, static_cast( imageView ), reinterpret_cast< VkImageViewAddressPropertiesNVX *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getImageViewAddressNVX( VULKAN_HPP_NAMESPACE::ImageView imageView, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ImageViewAddressPropertiesNVX properties; - Result result = static_cast( d.vkGetImageViewAddressNVX( m_device, static_cast( imageView ), reinterpret_cast( &properties ) ) ); - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING "::Device::getImageViewAddressNVX" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( const VULKAN_HPP_NAMESPACE::ImageViewHandleInfoNVX* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetImageViewHandleNVX( m_device, reinterpret_cast( pInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE uint32_t Device::getImageViewHandleNVX( const ImageViewHandleInfoNVX & info, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetImageViewHandleNVX( m_device, reinterpret_cast( &info ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryAndroidHardwareBufferANDROID( const VULKAN_HPP_NAMESPACE::MemoryGetAndroidHardwareBufferInfoANDROID* pInfo, struct AHardwareBuffer** pBuffer, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetMemoryAndroidHardwareBufferANDROID( m_device, reinterpret_cast( pInfo ), pBuffer ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryAndroidHardwareBufferANDROID( const MemoryGetAndroidHardwareBufferInfoANDROID & info, Dispatch const & d ) const - { - struct AHardwareBuffer* buffer; - Result result = static_cast( d.vkGetMemoryAndroidHardwareBufferANDROID( m_device, reinterpret_cast( &info ), &buffer ) ); - return createResultValue( result, buffer, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryAndroidHardwareBufferANDROID" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryFdKHR( const VULKAN_HPP_NAMESPACE::MemoryGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetMemoryFdKHR( m_device, reinterpret_cast( pGetFdInfo ), pFd ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryFdKHR( const MemoryGetFdInfoKHR & getFdInfo, Dispatch const & d ) const - { - int fd; - Result result = static_cast( d.vkGetMemoryFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); - return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, int fd, VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR* pMemoryFdProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetMemoryFdPropertiesKHR( m_device, static_cast( handleType ), fd, reinterpret_cast< VkMemoryFdPropertiesKHR *>( pMemoryFdProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryFdPropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, int fd, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::MemoryFdPropertiesKHR memoryFdProperties; - Result result = static_cast( d.vkGetMemoryFdPropertiesKHR( m_device, static_cast( handleType ), fd, reinterpret_cast( &memoryFdProperties ) ) ); - return createResultValue( result, memoryFdProperties, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryFdPropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast( handleType ), pHostPointer, reinterpret_cast< VkMemoryHostPointerPropertiesEXT *>( pMemoryHostPointerProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryHostPointerPropertiesEXT( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, const void* pHostPointer, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::MemoryHostPointerPropertiesEXT memoryHostPointerProperties; - Result result = static_cast( d.vkGetMemoryHostPointerPropertiesEXT( m_device, static_cast( handleType ), pHostPointer, reinterpret_cast( &memoryHostPointerProperties ) ) ); - return createResultValue( result, memoryHostPointerProperties, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryHostPointerPropertiesEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleKHR( const VULKAN_HPP_NAMESPACE::MemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryWin32HandleKHR( const MemoryGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const & d ) const - { - HANDLE handle; - Result result = static_cast( d.vkGetMemoryWin32HandleKHR( m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); - return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType, HANDLE* pHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetMemoryWin32HandleNV( m_device, static_cast( memory ), static_cast( handleType ), pHandle ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryWin32HandleNV( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV handleType, Dispatch const & d ) const - { - HANDLE handle; - Result result = static_cast( d.vkGetMemoryWin32HandleNV( m_device, static_cast( memory ), static_cast( handleType ), &handle ) ); - return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandleNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast( handleType ), handle, reinterpret_cast< VkMemoryWin32HandlePropertiesKHR *>( pMemoryWin32HandleProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getMemoryWin32HandlePropertiesKHR( VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagBits handleType, HANDLE handle, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::MemoryWin32HandlePropertiesKHR memoryWin32HandleProperties; - Result result = static_cast( d.vkGetMemoryWin32HandlePropertiesKHR( m_device, static_cast( handleType ), handle, reinterpret_cast( &memoryWin32HandleProperties ) ) ); - return createResultValue( result, memoryWin32HandleProperties, VULKAN_HPP_NAMESPACE_STRING "::Device::getMemoryWin32HandlePropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, uint32_t* pPresentationTimingCount, VULKAN_HPP_NAMESPACE::PastPresentationTimingGOOGLE* pPresentationTimings, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPastPresentationTimingGOOGLE( m_device, static_cast( swapchain ), pPresentationTimingCount, reinterpret_cast< VkPastPresentationTimingGOOGLE *>( pPresentationTimings ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( presentationTimingCount < presentationTimings.size() ) ) - { - presentationTimings.resize( presentationTimingCount ); - } - return createResultValue( result, presentationTimings, VULKAN_HPP_NAMESPACE_STRING"::Device::getPastPresentationTimingGOOGLE" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPastPresentationTimingGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, PastPresentationTimingGOOGLEAllocator & pastPresentationTimingGOOGLEAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( presentationTimingCount <= presentationTimings.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( presentationTimingCount < presentationTimings.size() ) ) - { - presentationTimings.resize( presentationTimingCount ); - } - return createResultValue( result, presentationTimings, VULKAN_HPP_NAMESPACE_STRING"::Device::getPastPresentationTimingGOOGLE" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter, VULKAN_HPP_NAMESPACE::PerformanceValueINTEL* pValue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPerformanceParameterINTEL( m_device, static_cast( parameter ), reinterpret_cast< VkPerformanceValueINTEL *>( pValue ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getPerformanceParameterINTEL( VULKAN_HPP_NAMESPACE::PerformanceParameterTypeINTEL parameter, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::PerformanceValueINTEL value; - Result result = static_cast( d.vkGetPerformanceParameterINTEL( m_device, static_cast( parameter ), reinterpret_cast( &value ) ) ); - return createResultValue( result, value, VULKAN_HPP_NAMESPACE_STRING "::Device::getPerformanceParameterINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, size_t* pDataSize, void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPipelineCacheData( m_device, static_cast( pipelineCache ), pDataSize, pData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( dataSize <= data.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( dataSize < data.size() ) ) - { - data.resize( dataSize ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineCacheData" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineCacheData( VULKAN_HPP_NAMESPACE::PipelineCache pipelineCache, Uint8_tAllocator & uint8_tAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( dataSize <= data.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( dataSize < data.size() ) ) - { - data.resize( dataSize ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineCacheData" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineExecutableInternalRepresentationsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pInternalRepresentationCount, VULKAN_HPP_NAMESPACE::PipelineExecutableInternalRepresentationKHR* pInternalRepresentations, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( pExecutableInfo ), pInternalRepresentationCount, reinterpret_cast< VkPipelineExecutableInternalRepresentationKHR *>( pInternalRepresentations ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo, Dispatch const & d ) const - { - std::vector internalRepresentations; - uint32_t internalRepresentationCount; - Result result; - do - { - result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( &executableInfo ), &internalRepresentationCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && internalRepresentationCount ) - { - internalRepresentations.resize( internalRepresentationCount ); - result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( &executableInfo ), &internalRepresentationCount, reinterpret_cast( internalRepresentations.data() ) ) ); - VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( internalRepresentationCount < internalRepresentations.size() ) ) - { - internalRepresentations.resize( internalRepresentationCount ); - } - return createResultValue( result, internalRepresentations, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutableInternalRepresentationsKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutableInternalRepresentationsKHR( const PipelineExecutableInfoKHR & executableInfo, PipelineExecutableInternalRepresentationKHRAllocator & pipelineExecutableInternalRepresentationKHRAllocator, Dispatch const & d ) const - { - std::vector internalRepresentations( pipelineExecutableInternalRepresentationKHRAllocator ); - uint32_t internalRepresentationCount; - Result result; - do - { - result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( &executableInfo ), &internalRepresentationCount, nullptr ) ); - if ( ( result == Result::eSuccess ) && internalRepresentationCount ) - { - internalRepresentations.resize( internalRepresentationCount ); - result = static_cast( d.vkGetPipelineExecutableInternalRepresentationsKHR( m_device, reinterpret_cast( &executableInfo ), &internalRepresentationCount, reinterpret_cast( internalRepresentations.data() ) ) ); - VULKAN_HPP_ASSERT( internalRepresentationCount <= internalRepresentations.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( internalRepresentationCount < internalRepresentations.size() ) ) - { - internalRepresentations.resize( internalRepresentationCount ); - } - return createResultValue( result, internalRepresentations, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutableInternalRepresentationsKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineExecutablePropertiesKHR( const VULKAN_HPP_NAMESPACE::PipelineInfoKHR* pPipelineInfo, uint32_t* pExecutableCount, VULKAN_HPP_NAMESPACE::PipelineExecutablePropertiesKHR* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPipelineExecutablePropertiesKHR( m_device, reinterpret_cast( pPipelineInfo ), pExecutableCount, reinterpret_cast< VkPipelineExecutablePropertiesKHR *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( executableCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( executableCount < properties.size() ) ) - { - properties.resize( executableCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutablePropertiesKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutablePropertiesKHR( const PipelineInfoKHR & pipelineInfo, PipelineExecutablePropertiesKHRAllocator & pipelineExecutablePropertiesKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( executableCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( executableCount < properties.size() ) ) - { - properties.resize( executableCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutablePropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getPipelineExecutableStatisticsKHR( const VULKAN_HPP_NAMESPACE::PipelineExecutableInfoKHR* pExecutableInfo, uint32_t* pStatisticCount, VULKAN_HPP_NAMESPACE::PipelineExecutableStatisticKHR* pStatistics, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPipelineExecutableStatisticsKHR( m_device, reinterpret_cast( pExecutableInfo ), pStatisticCount, reinterpret_cast< VkPipelineExecutableStatisticKHR *>( pStatistics ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( statisticCount < statistics.size() ) ) - { - statistics.resize( statisticCount ); - } - return createResultValue( result, statistics, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutableStatisticsKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getPipelineExecutableStatisticsKHR( const PipelineExecutableInfoKHR & executableInfo, PipelineExecutableStatisticKHRAllocator & pipelineExecutableStatisticKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( statisticCount <= statistics.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( statisticCount < statistics.size() ) ) - { - statistics.resize( statisticCount ); - } - return createResultValue( result, statistics, VULKAN_HPP_NAMESPACE_STRING"::Device::getPipelineExecutableStatisticsKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, uint64_t* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPrivateDataEXT( m_device, static_cast( objectType ), objectHandle, static_cast( privateDataSlot ), pData ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint64_t Device::getPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - uint64_t data; - d.vkGetPrivateDataEXT( m_device, static_cast( objectType ), objectHandle, static_cast( privateDataSlot ), &data ); - return data; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, void* pData, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetQueryPoolResults( m_device, static_cast( queryPool ), firstQuery, queryCount, dataSize, pData, static_cast( stride ), static_cast( flags ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it.") - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, ArrayProxy const &data, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetQueryPoolResults( m_device, static_cast( queryPool ), firstQuery, queryCount, data.size() * sizeof( T ) , reinterpret_cast( data.data() ), static_cast( stride ), static_cast( flags ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getQueryPoolResults", { Result::eSuccess, Result::eNotReady } ); - - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue> Device::getQueryPoolResults( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, size_t dataSize, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags, Dispatch const & d ) const - { - VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 ); - std::vector data( dataSize / sizeof( T ) ); - Result result = static_cast( d.vkGetQueryPoolResults( m_device, static_cast( queryPool ), firstQuery, queryCount, data.size() * sizeof( T ), reinterpret_cast( data.data() ), static_cast( stride ), static_cast( flags ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getQueryPoolResults", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } ); - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE ResultValue Device::getQueryPoolResult( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, VULKAN_HPP_NAMESPACE::DeviceSize stride, VULKAN_HPP_NAMESPACE::QueryResultFlags flags, Dispatch const & d ) const - { - T data; - Result result = static_cast( d.vkGetQueryPoolResults( m_device, static_cast( queryPool ), firstQuery, queryCount, sizeof( T ), reinterpret_cast( &data ), static_cast( stride ), static_cast( flags ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getQueryPoolResult", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eNotReady } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( m_device, static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it.") - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy const &data, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( T ) , reinterpret_cast( data.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getRayTracingCaptureReplayShaderGroupHandlesKHR" ); - - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::getRayTracingCaptureReplayShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d ) const - { - VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 ); - std::vector data( dataSize / sizeof( T ) ); - Result result = static_cast( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( T ), reinterpret_cast( data.data() ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingCaptureReplayShaderGroupHandlesKHR" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getRayTracingCaptureReplayShaderGroupHandleKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d ) const - { - T data; - Result result = static_cast( d.vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( m_device, static_cast( pipeline ), firstGroup, groupCount, sizeof( T ), reinterpret_cast( &data ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingCaptureReplayShaderGroupHandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( m_device, static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it.") - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy const &data, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( T ) , reinterpret_cast( data.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getRayTracingShaderGroupHandlesKHR" ); - - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::getRayTracingShaderGroupHandlesKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d ) const - { - VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 ); - std::vector data( dataSize / sizeof( T ) ); - Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( T ), reinterpret_cast( data.data() ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandlesKHR" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getRayTracingShaderGroupHandleKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d ) const - { - T data; - Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesKHR( m_device, static_cast( pipeline ), firstGroup, groupCount, sizeof( T ), reinterpret_cast( &data ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetRayTracingShaderGroupHandlesNV( m_device, static_cast( pipeline ), firstGroup, groupCount, dataSize, pData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it.") - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, ArrayProxy const &data, Dispatch const &d ) const - { - Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesNV( m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( T ) , reinterpret_cast( data.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::getRayTracingShaderGroupHandlesNV" ); - - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::getRayTracingShaderGroupHandlesNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, size_t dataSize, Dispatch const & d ) const - { - VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 ); - std::vector data( dataSize / sizeof( T ) ); - Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesNV( m_device, static_cast( pipeline ), firstGroup, groupCount, data.size() * sizeof( T ), reinterpret_cast( data.data() ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandlesNV" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getRayTracingShaderGroupHandleNV( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t firstGroup, uint32_t groupCount, Dispatch const & d ) const - { - T data; - Result result = static_cast( d.vkGetRayTracingShaderGroupHandlesNV( m_device, static_cast( pipeline ), firstGroup, groupCount, sizeof( T ), reinterpret_cast( &data ) ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::getRayTracingShaderGroupHandleNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE DeviceSize Device::getRayTracingShaderGroupStackSizeKHR( VULKAN_HPP_NAMESPACE::Pipeline pipeline, uint32_t group, VULKAN_HPP_NAMESPACE::ShaderGroupShaderKHR groupShader, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetRayTracingShaderGroupStackSizeKHR( m_device, static_cast( pipeline ), group, static_cast( groupShader ) ) ); - } - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getRefreshCycleDurationGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE* pDisplayTimingProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetRefreshCycleDurationGOOGLE( m_device, static_cast( swapchain ), reinterpret_cast< VkRefreshCycleDurationGOOGLE *>( pDisplayTimingProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getRefreshCycleDurationGOOGLE( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::RefreshCycleDurationGOOGLE displayTimingProperties; - Result result = static_cast( d.vkGetRefreshCycleDurationGOOGLE( m_device, static_cast( swapchain ), reinterpret_cast( &displayTimingProperties ) ) ); - return createResultValue( result, displayTimingProperties, VULKAN_HPP_NAMESPACE_STRING "::Device::getRefreshCycleDurationGOOGLE" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::getRenderAreaGranularity( VULKAN_HPP_NAMESPACE::RenderPass renderPass, VULKAN_HPP_NAMESPACE::Extent2D* pGranularity, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetRenderAreaGranularity( m_device, static_cast( renderPass ), reinterpret_cast< VkExtent2D *>( pGranularity ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::Extent2D Device::getRenderAreaGranularity( VULKAN_HPP_NAMESPACE::RenderPass renderPass, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::Extent2D granularity; - d.vkGetRenderAreaGranularity( m_device, static_cast( renderPass ), reinterpret_cast( &granularity ) ); - return granularity; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreCounterValue( VULKAN_HPP_NAMESPACE::Semaphore semaphore, uint64_t* pValue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetSemaphoreCounterValue( m_device, static_cast( semaphore ), pValue ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreCounterValue( VULKAN_HPP_NAMESPACE::Semaphore semaphore, Dispatch const & d ) const - { - uint64_t value; - Result result = static_cast( d.vkGetSemaphoreCounterValue( m_device, static_cast( semaphore ), &value ) ); - return createResultValue( result, value, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreCounterValue" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreCounterValueKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore, uint64_t* pValue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetSemaphoreCounterValueKHR( m_device, static_cast( semaphore ), pValue ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreCounterValueKHR( VULKAN_HPP_NAMESPACE::Semaphore semaphore, Dispatch const & d ) const - { - uint64_t value; - Result result = static_cast( d.vkGetSemaphoreCounterValueKHR( m_device, static_cast( semaphore ), &value ) ); - return createResultValue( result, value, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreCounterValueKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetFdInfoKHR* pGetFdInfo, int* pFd, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast( pGetFdInfo ), pFd ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreFdKHR( const SemaphoreGetFdInfoKHR & getFdInfo, Dispatch const & d ) const - { - int fd; - Result result = static_cast( d.vkGetSemaphoreFdKHR( m_device, reinterpret_cast( &getFdInfo ), &fd ) ); - return createResultValue( result, fd, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::SemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, HANDLE* pHandle, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast( pGetWin32HandleInfo ), pHandle ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getSemaphoreWin32HandleKHR( const SemaphoreGetWin32HandleInfoKHR & getWin32HandleInfo, Dispatch const & d ) const - { - HANDLE handle; - Result result = static_cast( d.vkGetSemaphoreWin32HandleKHR( m_device, reinterpret_cast( &getWin32HandleInfo ), &handle ) ); - return createResultValue( result, handle, VULKAN_HPP_NAMESPACE_STRING "::Device::getSemaphoreWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, size_t* pInfoSize, void* pInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetShaderInfoAMD( m_device, static_cast( pipeline ), static_cast( shaderStage ), static_cast( infoType ), pInfoSize, pInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( infoSize <= info.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( infoSize < info.size() ) ) - { - info.resize( infoSize ); - } - return createResultValue( result, info, VULKAN_HPP_NAMESPACE_STRING"::Device::getShaderInfoAMD" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getShaderInfoAMD( VULKAN_HPP_NAMESPACE::Pipeline pipeline, VULKAN_HPP_NAMESPACE::ShaderStageFlagBits shaderStage, VULKAN_HPP_NAMESPACE::ShaderInfoTypeAMD infoType, Uint8_tAllocator & uint8_tAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( infoSize <= info.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( infoSize < info.size() ) ) - { - info.resize( infoSize ); - } - return createResultValue( result, info, VULKAN_HPP_NAMESPACE_STRING"::Device::getShaderInfoAMD" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainCounterEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter, uint64_t* pCounterValue, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetSwapchainCounterEXT( m_device, static_cast( swapchain ), static_cast( counter ), pCounterValue ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::getSwapchainCounterEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, VULKAN_HPP_NAMESPACE::SurfaceCounterFlagBitsEXT counter, Dispatch const & d ) const - { - uint64_t counterValue; - Result result = static_cast( d.vkGetSwapchainCounterEXT( m_device, static_cast( swapchain ), static_cast( counter ), &counterValue ) ); - return createResultValue( result, counterValue, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainCounterEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, uint32_t* pSwapchainImageCount, VULKAN_HPP_NAMESPACE::Image* pSwapchainImages, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetSwapchainImagesKHR( m_device, static_cast( swapchain ), pSwapchainImageCount, reinterpret_cast< VkImage *>( pSwapchainImages ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( swapchainImageCount < swapchainImages.size() ) ) - { - swapchainImages.resize( swapchainImageCount ); - } - return createResultValue( result, swapchainImages, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainImagesKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getSwapchainImagesKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, ImageAllocator & imageAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( swapchainImageCount <= swapchainImages.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( swapchainImageCount < swapchainImages.size() ) ) - { - swapchainImages.resize( swapchainImageCount ); - } - return createResultValue( result, swapchainImages, VULKAN_HPP_NAMESPACE_STRING"::Device::getSwapchainImagesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetSwapchainStatusKHR( m_device, static_cast( swapchain ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getSwapchainStatusKHR( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const - { - Result result = static_cast( d.vkGetSwapchainStatusKHR( m_device, static_cast( swapchain ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::getSwapchainStatusKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, size_t* pDataSize, void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetValidationCacheDataEXT( m_device, static_cast( validationCache ), pDataSize, pData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( dataSize <= data.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( dataSize < data.size() ) ) - { - data.resize( dataSize ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getValidationCacheDataEXT" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Device::getValidationCacheDataEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT validationCache, Uint8_tAllocator & uint8_tAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( dataSize <= data.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( dataSize < data.size() ) ) - { - data.resize( dataSize ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::Device::getValidationCacheDataEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importFenceFdKHR( const VULKAN_HPP_NAMESPACE::ImportFenceFdInfoKHR* pImportFenceFdInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkImportFenceFdKHR( m_device, reinterpret_cast( pImportFenceFdInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::importFenceFdKHR( const ImportFenceFdInfoKHR & importFenceFdInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkImportFenceFdKHR( m_device, reinterpret_cast( &importFenceFdInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importFenceWin32HandleKHR( const VULKAN_HPP_NAMESPACE::ImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkImportFenceWin32HandleKHR( m_device, reinterpret_cast( pImportFenceWin32HandleInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::importFenceWin32HandleKHR( const ImportFenceWin32HandleInfoKHR & importFenceWin32HandleInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkImportFenceWin32HandleKHR( m_device, reinterpret_cast( &importFenceWin32HandleInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importFenceWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importSemaphoreFdKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkImportSemaphoreFdKHR( m_device, reinterpret_cast( pImportSemaphoreFdInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::importSemaphoreFdKHR( const ImportSemaphoreFdInfoKHR & importSemaphoreFdInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkImportSemaphoreFdKHR( m_device, reinterpret_cast( &importSemaphoreFdInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreFdKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::importSemaphoreWin32HandleKHR( const VULKAN_HPP_NAMESPACE::ImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast( pImportSemaphoreWin32HandleInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::importSemaphoreWin32HandleKHR( const ImportSemaphoreWin32HandleInfoKHR & importSemaphoreWin32HandleInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkImportSemaphoreWin32HandleKHR( m_device, reinterpret_cast( &importSemaphoreWin32HandleInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::importSemaphoreWin32HandleKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::initializePerformanceApiINTEL( const VULKAN_HPP_NAMESPACE::InitializePerformanceApiInfoINTEL* pInitializeInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkInitializePerformanceApiINTEL( m_device, reinterpret_cast( pInitializeInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::initializePerformanceApiINTEL( const InitializePerformanceApiInfoINTEL & initializeInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkInitializePerformanceApiINTEL( m_device, reinterpret_cast( &initializeInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::initializePerformanceApiINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::invalidateMappedMemoryRanges( uint32_t memoryRangeCount, const VULKAN_HPP_NAMESPACE::MappedMemoryRange* pMemoryRanges, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkInvalidateMappedMemoryRanges( m_device, memoryRangeCount, reinterpret_cast( pMemoryRanges ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::invalidateMappedMemoryRanges( ArrayProxy const & memoryRanges, Dispatch const & d ) const - { - Result result = static_cast( d.vkInvalidateMappedMemoryRanges( m_device, memoryRanges.size(), reinterpret_cast( memoryRanges.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::invalidateMappedMemoryRanges" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::DeviceSize size, VULKAN_HPP_NAMESPACE::MemoryMapFlags flags, void** ppData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkMapMemory( m_device, static_cast( memory ), static_cast( offset ), static_cast( size ), static_cast( flags ), ppData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::mapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, VULKAN_HPP_NAMESPACE::DeviceSize offset, VULKAN_HPP_NAMESPACE::DeviceSize size, VULKAN_HPP_NAMESPACE::MemoryMapFlags flags, Dispatch const & d ) const - { - void* pData; - Result result = static_cast( d.vkMapMemory( m_device, static_cast( memory ), static_cast( offset ), static_cast( size ), static_cast( flags ), &pData ) ); - return createResultValue( result, pData, VULKAN_HPP_NAMESPACE_STRING "::Device::mapMemory" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mergePipelineCaches( VULKAN_HPP_NAMESPACE::PipelineCache dstCache, uint32_t srcCacheCount, const VULKAN_HPP_NAMESPACE::PipelineCache* pSrcCaches, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkMergePipelineCaches( m_device, static_cast( dstCache ), srcCacheCount, reinterpret_cast( pSrcCaches ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::mergePipelineCaches( VULKAN_HPP_NAMESPACE::PipelineCache dstCache, ArrayProxy const & srcCaches, Dispatch const & d ) const - { - Result result = static_cast( d.vkMergePipelineCaches( m_device, static_cast( dstCache ), srcCaches.size(), reinterpret_cast( srcCaches.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mergePipelineCaches" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::mergeValidationCachesEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT dstCache, uint32_t srcCacheCount, const VULKAN_HPP_NAMESPACE::ValidationCacheEXT* pSrcCaches, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkMergeValidationCachesEXT( m_device, static_cast( dstCache ), srcCacheCount, reinterpret_cast( pSrcCaches ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::mergeValidationCachesEXT( VULKAN_HPP_NAMESPACE::ValidationCacheEXT dstCache, ArrayProxy const & srcCaches, Dispatch const & d ) const - { - Result result = static_cast( d.vkMergeValidationCachesEXT( m_device, static_cast( dstCache ), srcCaches.size(), reinterpret_cast( srcCaches.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::mergeValidationCachesEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::registerEventEXT( const VULKAN_HPP_NAMESPACE::DeviceEventInfoEXT* pDeviceEventInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Fence* pFence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkRegisterDeviceEventEXT( m_device, reinterpret_cast( pDeviceEventInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkFence *>( pFence ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::registerEventEXT( const DeviceEventInfoEXT & deviceEventInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Fence fence; - Result result = static_cast( d.vkRegisterDeviceEventEXT( m_device, reinterpret_cast( &deviceEventInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::registerEventEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::registerEventEXTUnique( const DeviceEventInfoEXT & deviceEventInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Fence fence; - Result result = static_cast( d.vkRegisterDeviceEventEXT( m_device, reinterpret_cast( &deviceEventInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::registerEventEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, const VULKAN_HPP_NAMESPACE::DisplayEventInfoEXT* pDisplayEventInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Fence* pFence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkRegisterDisplayEventEXT( m_device, static_cast( display ), reinterpret_cast( pDisplayEventInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkFence *>( pFence ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::registerDisplayEventEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Fence fence; - Result result = static_cast( d.vkRegisterDisplayEventEXT( m_device, static_cast( display ), reinterpret_cast( &displayEventInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::registerDisplayEventEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Device::registerDisplayEventEXTUnique( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayEventInfoEXT & displayEventInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Fence fence; - Result result = static_cast( d.vkRegisterDisplayEventEXT( m_device, static_cast( display ), reinterpret_cast( &displayEventInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &fence ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, fence, VULKAN_HPP_NAMESPACE_STRING "::Device::registerDisplayEventEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::releaseFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkReleaseFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::releaseFullScreenExclusiveModeEXT( VULKAN_HPP_NAMESPACE::SwapchainKHR swapchain, Dispatch const & d ) const - { - Result result = static_cast( d.vkReleaseFullScreenExclusiveModeEXT( m_device, static_cast( swapchain ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releaseFullScreenExclusiveModeEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::releasePerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkReleasePerformanceConfigurationINTEL( m_device, static_cast( configuration ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::releasePerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const - { - Result result = static_cast( d.vkReleasePerformanceConfigurationINTEL( m_device, static_cast( configuration ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::releasePerformanceConfigurationINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::release( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkReleasePerformanceConfigurationINTEL( m_device, static_cast( configuration ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::release( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const - { - Result result = static_cast( d.vkReleasePerformanceConfigurationINTEL( m_device, static_cast( configuration ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::release" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_INLINE void Device::releaseProfilingLockKHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkReleaseProfilingLockKHR( m_device ); - } - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::resetCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkResetCommandPool( m_device, static_cast( commandPool ), static_cast( flags ) ) ); - } -#else - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::resetCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, VULKAN_HPP_NAMESPACE::CommandPoolResetFlags flags, Dispatch const & d ) const - { - Result result = static_cast( d.vkResetCommandPool( m_device, static_cast( commandPool ), static_cast( flags ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetCommandPool" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result Device::resetDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkResetDescriptorPool( m_device, static_cast( descriptorPool ), static_cast( flags ) ) ); - } -#else - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::resetDescriptorPool( VULKAN_HPP_NAMESPACE::DescriptorPool descriptorPool, VULKAN_HPP_NAMESPACE::DescriptorPoolResetFlags flags, Dispatch const & d ) const - { - Result result = static_cast( d.vkResetDescriptorPool( m_device, static_cast( descriptorPool ), static_cast( flags ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetDescriptorPool" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::resetEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkResetEvent( m_device, static_cast( event ) ) ); - } -#else - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::resetEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d ) const - { - Result result = static_cast( d.vkResetEvent( m_device, static_cast( event ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetEvent" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::resetFences( uint32_t fenceCount, const VULKAN_HPP_NAMESPACE::Fence* pFences, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkResetFences( m_device, fenceCount, reinterpret_cast( pFences ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::resetFences( ArrayProxy const & fences, Dispatch const & d ) const - { - Result result = static_cast( d.vkResetFences( m_device, fences.size(), reinterpret_cast( fences.data() ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::resetFences" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::resetQueryPool( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkResetQueryPool( m_device, static_cast( queryPool ), firstQuery, queryCount ); - } - - template - VULKAN_HPP_INLINE void Device::resetQueryPoolEXT( VULKAN_HPP_NAMESPACE::QueryPool queryPool, uint32_t firstQuery, uint32_t queryCount, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkResetQueryPoolEXT( m_device, static_cast( queryPool ), firstQuery, queryCount ); - } - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectNameEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectNameInfoEXT* pNameInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkSetDebugUtilsObjectNameEXT( m_device, reinterpret_cast( pNameInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setDebugUtilsObjectNameEXT( const DebugUtilsObjectNameInfoEXT & nameInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkSetDebugUtilsObjectNameEXT( m_device, reinterpret_cast( &nameInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectNameEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setDebugUtilsObjectTagEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsObjectTagInfoEXT* pTagInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast( pTagInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setDebugUtilsObjectTagEXT( const DebugUtilsObjectTagInfoEXT & tagInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkSetDebugUtilsObjectTagEXT( m_device, reinterpret_cast( &tagInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setDebugUtilsObjectTagEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkSetEvent( m_device, static_cast( event ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::setEvent( VULKAN_HPP_NAMESPACE::Event event, Dispatch const & d ) const - { - Result result = static_cast( d.vkSetEvent( m_device, static_cast( event ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setEvent" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( uint32_t swapchainCount, const VULKAN_HPP_NAMESPACE::SwapchainKHR* pSwapchains, const VULKAN_HPP_NAMESPACE::HdrMetadataEXT* pMetadata, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkSetHdrMetadataEXT( m_device, swapchainCount, reinterpret_cast( pSwapchains ), reinterpret_cast( pMetadata ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::setHdrMetadataEXT( ArrayProxy const & swapchains, ArrayProxy const & metadata, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT_WHEN_NO_EXCEPTIONS - { -#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*/ - - - template - VULKAN_HPP_INLINE void Device::setLocalDimmingAMD( VULKAN_HPP_NAMESPACE::SwapchainKHR swapChain, VULKAN_HPP_NAMESPACE::Bool32 localDimmingEnable, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkSetLocalDimmingAMD( m_device, static_cast( swapChain ), static_cast( localDimmingEnable ) ); - } - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, uint64_t data, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkSetPrivateDataEXT( m_device, static_cast( objectType ), objectHandle, static_cast( privateDataSlot ), data ) ); - } -#else - template - VULKAN_HPP_INLINE typename ResultValueType::type Device::setPrivateDataEXT( VULKAN_HPP_NAMESPACE::ObjectType objectType, uint64_t objectHandle, VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT privateDataSlot, uint64_t data, Dispatch const & d ) const - { - Result result = static_cast( d.vkSetPrivateDataEXT( m_device, static_cast( objectType ), objectHandle, static_cast( privateDataSlot ), data ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::setPrivateDataEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::signalSemaphore( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo* pSignalInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkSignalSemaphore( m_device, reinterpret_cast( pSignalInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::signalSemaphore( const SemaphoreSignalInfo & signalInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkSignalSemaphore( m_device, reinterpret_cast( &signalInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphore" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::signalSemaphoreKHR( const VULKAN_HPP_NAMESPACE::SemaphoreSignalInfo* pSignalInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkSignalSemaphoreKHR( m_device, reinterpret_cast( pSignalInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::signalSemaphoreKHR( const SemaphoreSignalInfo & signalInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkSignalSemaphoreKHR( m_device, reinterpret_cast( &signalInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::signalSemaphoreKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Device::trimCommandPool( VULKAN_HPP_NAMESPACE::CommandPool commandPool, VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkTrimCommandPool( m_device, static_cast( commandPool ), static_cast( flags ) ); - } - - template - VULKAN_HPP_INLINE void Device::trimCommandPoolKHR( VULKAN_HPP_NAMESPACE::CommandPool commandPool, VULKAN_HPP_NAMESPACE::CommandPoolTrimFlags flags, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkTrimCommandPoolKHR( m_device, static_cast( commandPool ), static_cast( flags ) ); - } - - - template - VULKAN_HPP_INLINE void Device::uninitializePerformanceApiINTEL( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkUninitializePerformanceApiINTEL( m_device ); - } - - - template - VULKAN_HPP_INLINE void Device::unmapMemory( VULKAN_HPP_NAMESPACE::DeviceMemory memory, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkUnmapMemory( m_device, static_cast( memory ) ); - } - - - template - VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplate( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkUpdateDescriptorSetWithTemplate( m_device, static_cast( descriptorSet ), static_cast( descriptorUpdateTemplate ), pData ); - } - - template - VULKAN_HPP_INLINE void Device::updateDescriptorSetWithTemplateKHR( VULKAN_HPP_NAMESPACE::DescriptorSet descriptorSet, VULKAN_HPP_NAMESPACE::DescriptorUpdateTemplate descriptorUpdateTemplate, const void* pData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkUpdateDescriptorSetWithTemplateKHR( m_device, static_cast( descriptorSet ), static_cast( descriptorUpdateTemplate ), pData ); - } - - - template - VULKAN_HPP_INLINE void Device::updateDescriptorSets( uint32_t descriptorWriteCount, const VULKAN_HPP_NAMESPACE::WriteDescriptorSet* pDescriptorWrites, uint32_t descriptorCopyCount, const VULKAN_HPP_NAMESPACE::CopyDescriptorSet* pDescriptorCopies, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkUpdateDescriptorSets( m_device, descriptorWriteCount, reinterpret_cast( pDescriptorWrites ), descriptorCopyCount, reinterpret_cast( pDescriptorCopies ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Device::updateDescriptorSets( ArrayProxy const & descriptorWrites, ArrayProxy const & descriptorCopies, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkUpdateDescriptorSets( m_device, descriptorWrites.size(), reinterpret_cast( descriptorWrites.data() ), descriptorCopies.size(), reinterpret_cast( descriptorCopies.data() ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForFences( uint32_t fenceCount, const VULKAN_HPP_NAMESPACE::Fence* pFences, VULKAN_HPP_NAMESPACE::Bool32 waitAll, uint64_t timeout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkWaitForFences( m_device, fenceCount, reinterpret_cast( pFences ), static_cast( waitAll ), timeout ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitForFences( ArrayProxy const & fences, VULKAN_HPP_NAMESPACE::Bool32 waitAll, uint64_t timeout, Dispatch const & d ) const - { - Result result = static_cast( d.vkWaitForFences( m_device, fences.size(), reinterpret_cast( fences.data() ), static_cast( waitAll ), timeout ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitForFences", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphores( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo* pWaitInfo, uint64_t timeout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkWaitSemaphores( m_device, reinterpret_cast( pWaitInfo ), timeout ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphores( const SemaphoreWaitInfo & waitInfo, uint64_t timeout, Dispatch const & d ) const - { - Result result = static_cast( d.vkWaitSemaphores( m_device, reinterpret_cast( &waitInfo ), timeout ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphores", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphoresKHR( const VULKAN_HPP_NAMESPACE::SemaphoreWaitInfo* pWaitInfo, uint64_t timeout, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkWaitSemaphoresKHR( m_device, reinterpret_cast( pWaitInfo ), timeout ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::waitSemaphoresKHR( const SemaphoreWaitInfo & waitInfo, uint64_t timeout, Dispatch const & d ) const - { - Result result = static_cast( d.vkWaitSemaphoresKHR( m_device, reinterpret_cast( &waitInfo ), timeout ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Device::waitSemaphoresKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eTimeout } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Device::writeAccelerationStructuresPropertiesKHR( uint32_t accelerationStructureCount, const VULKAN_HPP_NAMESPACE::AccelerationStructureKHR* pAccelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, size_t dataSize, void* pData, size_t stride, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( m_device, accelerationStructureCount, reinterpret_cast( pAccelerationStructures ), static_cast( queryType ), dataSize, pData, stride ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it.") - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::writeAccelerationStructuresPropertiesKHR( ArrayProxy const &accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, ArrayProxy const &data, size_t stride, Dispatch const &d ) const - { - Result result = static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( m_device, accelerationStructures.size() , reinterpret_cast( accelerationStructures.data() ), static_cast( queryType ), data.size() * sizeof( T ) , reinterpret_cast( data.data() ), stride ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING"::Device::writeAccelerationStructuresPropertiesKHR" ); - - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Device::writeAccelerationStructuresPropertiesKHR( ArrayProxy const & accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, size_t dataSize, size_t stride, Dispatch const & d ) const - { - VULKAN_HPP_ASSERT( dataSize % sizeof( T ) == 0 ); - std::vector data( dataSize / sizeof( T ) ); - Result result = static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( m_device, accelerationStructures.size(), reinterpret_cast( accelerationStructures.data() ), static_cast( queryType ), data.size() * sizeof( T ), reinterpret_cast( data.data() ), stride ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertiesKHR" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Device::writeAccelerationStructuresPropertyKHR( ArrayProxy const & accelerationStructures, VULKAN_HPP_NAMESPACE::QueryType queryType, size_t stride, Dispatch const & d ) const - { - T data; - Result result = static_cast( d.vkWriteAccelerationStructuresPropertiesKHR( m_device, accelerationStructures.size(), reinterpret_cast( accelerationStructures.data() ), static_cast( queryType ), sizeof( T ), reinterpret_cast( &data ), stride ) ); - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING "::Device::writeAccelerationStructuresPropertyKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createAndroidSurfaceKHR( const VULKAN_HPP_NAMESPACE::AndroidSurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createAndroidSurfaceKHR( const AndroidSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createAndroidSurfaceKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createAndroidSurfaceKHRUnique( const AndroidSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateAndroidSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createAndroidSurfaceKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createDebugReportCallbackEXT( const VULKAN_HPP_NAMESPACE::DebugReportCallbackCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT* pCallback, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkDebugReportCallbackEXT *>( pCallback ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Instance::createDebugReportCallbackEXT( const DebugReportCallbackCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback; - Result result = static_cast( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &callback ) ) ); - return createResultValue( result, callback, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugReportCallbackEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createDebugReportCallbackEXTUnique( const DebugReportCallbackCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback; - Result result = static_cast( d.vkCreateDebugReportCallbackEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &callback ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, callback, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugReportCallbackEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createDebugUtilsMessengerEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT* pMessenger, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkDebugUtilsMessengerEXT *>( pMessenger ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type Instance::createDebugUtilsMessengerEXT( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger; - Result result = static_cast( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &messenger ) ) ); - return createResultValue( result, messenger, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugUtilsMessengerEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createDebugUtilsMessengerEXTUnique( const DebugUtilsMessengerCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger; - Result result = static_cast( d.vkCreateDebugUtilsMessengerEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &messenger ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, messenger, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDebugUtilsMessengerEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createDirectFBSurfaceEXT( const VULKAN_HPP_NAMESPACE::DirectFBSurfaceCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDirectFBSurfaceEXT( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createDirectFBSurfaceEXT( const DirectFBSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateDirectFBSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDirectFBSurfaceEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createDirectFBSurfaceEXTUnique( const DirectFBSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateDirectFBSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDirectFBSurfaceEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createDisplayPlaneSurfaceKHR( const VULKAN_HPP_NAMESPACE::DisplaySurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createDisplayPlaneSurfaceKHR( const DisplaySurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDisplayPlaneSurfaceKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createDisplayPlaneSurfaceKHRUnique( const DisplaySurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateDisplayPlaneSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createDisplayPlaneSurfaceKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createHeadlessSurfaceEXT( const VULKAN_HPP_NAMESPACE::HeadlessSurfaceCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateHeadlessSurfaceEXT( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createHeadlessSurfaceEXT( const HeadlessSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateHeadlessSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createHeadlessSurfaceEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createHeadlessSurfaceEXTUnique( const HeadlessSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateHeadlessSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createHeadlessSurfaceEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_IOS_MVK - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createIOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::IOSSurfaceCreateInfoMVK* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createIOSSurfaceMVK( const IOSSurfaceCreateInfoMVK & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createIOSSurfaceMVK" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createIOSSurfaceMVKUnique( const IOSSurfaceCreateInfoMVK & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateIOSSurfaceMVK( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createIOSSurfaceMVKUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_IOS_MVK*/ - - -#ifdef VK_USE_PLATFORM_FUCHSIA - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createImagePipeSurfaceFUCHSIA( const VULKAN_HPP_NAMESPACE::ImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createImagePipeSurfaceFUCHSIA( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createImagePipeSurfaceFUCHSIA" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createImagePipeSurfaceFUCHSIAUnique( const ImagePipeSurfaceCreateInfoFUCHSIA & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateImagePipeSurfaceFUCHSIA( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createImagePipeSurfaceFUCHSIAUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - - -#ifdef VK_USE_PLATFORM_MACOS_MVK - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createMacOSSurfaceMVK( const VULKAN_HPP_NAMESPACE::MacOSSurfaceCreateInfoMVK* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createMacOSSurfaceMVK( const MacOSSurfaceCreateInfoMVK & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMacOSSurfaceMVK" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createMacOSSurfaceMVKUnique( const MacOSSurfaceCreateInfoMVK & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateMacOSSurfaceMVK( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMacOSSurfaceMVKUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ - - -#ifdef VK_USE_PLATFORM_METAL_EXT - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createMetalSurfaceEXT( const VULKAN_HPP_NAMESPACE::MetalSurfaceCreateInfoEXT* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateMetalSurfaceEXT( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createMetalSurfaceEXT( const MetalSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateMetalSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMetalSurfaceEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createMetalSurfaceEXTUnique( const MetalSurfaceCreateInfoEXT & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateMetalSurfaceEXT( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createMetalSurfaceEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_METAL_EXT*/ - - -#ifdef VK_USE_PLATFORM_SCREEN_QNX - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createScreenSurfaceQNX( const VULKAN_HPP_NAMESPACE::ScreenSurfaceCreateInfoQNX* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateScreenSurfaceQNX( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createScreenSurfaceQNX( const ScreenSurfaceCreateInfoQNX & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateScreenSurfaceQNX( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createScreenSurfaceQNX" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createScreenSurfaceQNXUnique( const ScreenSurfaceCreateInfoQNX & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateScreenSurfaceQNX( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createScreenSurfaceQNXUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - - -#ifdef VK_USE_PLATFORM_GGP - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createStreamDescriptorSurfaceGGP( const VULKAN_HPP_NAMESPACE::StreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateStreamDescriptorSurfaceGGP( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createStreamDescriptorSurfaceGGP( const StreamDescriptorSurfaceCreateInfoGGP & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateStreamDescriptorSurfaceGGP( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createStreamDescriptorSurfaceGGP" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createStreamDescriptorSurfaceGGPUnique( const StreamDescriptorSurfaceCreateInfoGGP & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateStreamDescriptorSurfaceGGP( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createStreamDescriptorSurfaceGGPUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_GGP*/ - - -#ifdef VK_USE_PLATFORM_VI_NN - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createViSurfaceNN( const VULKAN_HPP_NAMESPACE::ViSurfaceCreateInfoNN* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createViSurfaceNN( const ViSurfaceCreateInfoNN & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createViSurfaceNN" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createViSurfaceNNUnique( const ViSurfaceCreateInfoNN & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateViSurfaceNN( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createViSurfaceNNUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_VI_NN*/ - - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createWaylandSurfaceKHR( const VULKAN_HPP_NAMESPACE::WaylandSurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createWaylandSurfaceKHR( const WaylandSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWaylandSurfaceKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createWaylandSurfaceKHRUnique( const WaylandSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateWaylandSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWaylandSurfaceKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createWin32SurfaceKHR( const VULKAN_HPP_NAMESPACE::Win32SurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createWin32SurfaceKHR( const Win32SurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWin32SurfaceKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createWin32SurfaceKHRUnique( const Win32SurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateWin32SurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createWin32SurfaceKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - -#ifdef VK_USE_PLATFORM_XCB_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createXcbSurfaceKHR( const VULKAN_HPP_NAMESPACE::XcbSurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createXcbSurfaceKHR( const XcbSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXcbSurfaceKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createXcbSurfaceKHRUnique( const XcbSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateXcbSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXcbSurfaceKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XCB_KHR*/ - - -#ifdef VK_USE_PLATFORM_XLIB_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::createXlibSurfaceKHR( const VULKAN_HPP_NAMESPACE::XlibSurfaceCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::SurfaceKHR* pSurface, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkSurfaceKHR *>( pSurface ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Instance::createXlibSurfaceKHR( const XlibSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXlibSurfaceKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type Instance::createXlibSurfaceKHRUnique( const XlibSurfaceCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceKHR surface; - Result result = static_cast( d.vkCreateXlibSurfaceKHR( m_instance, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &surface ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, surface, VULKAN_HPP_NAMESPACE_STRING "::Instance::createXlibSurfaceKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - - - template - VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const char* pLayerPrefix, const char* pMessage, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDebugReportMessageEXT( m_instance, static_cast( flags ), static_cast( objectType ), object, location, messageCode, pLayerPrefix, pMessage ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::debugReportMessageEXT( VULKAN_HPP_NAMESPACE::DebugReportFlagsEXT flags, VULKAN_HPP_NAMESPACE::DebugReportObjectTypeEXT objectType, uint64_t object, size_t location, int32_t messageCode, const std::string & layerPrefix, const std::string & message, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - 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*/ - - - template - VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast( callback ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroyDebugReportCallbackEXT( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast( callback ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast( callback ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT callback, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDebugReportCallbackEXT( m_instance, static_cast( callback ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast( messenger ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroyDebugUtilsMessengerEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast( messenger ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast( messenger ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT messenger, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyDebugUtilsMessengerEXT( m_instance, static_cast( messenger ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Instance::destroy( const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyInstance( m_instance, reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroy( Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroyInstance( m_instance, reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroySurfaceKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( pAllocator ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::destroy( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Optional allocator, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkDestroySurfaceKHR( m_instance, static_cast( surface ), reinterpret_cast( static_cast( allocator ) ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroups( uint32_t* pPhysicalDeviceGroupCount, VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEnumeratePhysicalDeviceGroups( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast< VkPhysicalDeviceGroupProperties *>( pPhysicalDeviceGroupProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDeviceGroups( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) ) - { - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - } - return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroups" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDeviceGroups( PhysicalDeviceGroupPropertiesAllocator & physicalDeviceGroupPropertiesAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) ) - { - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - } - return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroups" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDeviceGroupsKHR( uint32_t* pPhysicalDeviceGroupCount, VULKAN_HPP_NAMESPACE::PhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEnumeratePhysicalDeviceGroupsKHR( m_instance, pPhysicalDeviceGroupCount, reinterpret_cast< VkPhysicalDeviceGroupProperties *>( pPhysicalDeviceGroupProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDeviceGroupsKHR( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) ) - { - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - } - return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroupsKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDeviceGroupsKHR( PhysicalDeviceGroupPropertiesAllocator & physicalDeviceGroupPropertiesAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( physicalDeviceGroupCount <= physicalDeviceGroupProperties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( physicalDeviceGroupCount < physicalDeviceGroupProperties.size() ) ) - { - physicalDeviceGroupProperties.resize( physicalDeviceGroupCount ); - } - return createResultValue( result, physicalDeviceGroupProperties, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDeviceGroupsKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Instance::enumeratePhysicalDevices( uint32_t* pPhysicalDeviceCount, VULKAN_HPP_NAMESPACE::PhysicalDevice* pPhysicalDevices, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEnumeratePhysicalDevices( m_instance, pPhysicalDeviceCount, reinterpret_cast< VkPhysicalDevice *>( pPhysicalDevices ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDevices( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( physicalDeviceCount < physicalDevices.size() ) ) - { - physicalDevices.resize( physicalDeviceCount ); - } - return createResultValue( result, physicalDevices, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDevices" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type Instance::enumeratePhysicalDevices( PhysicalDeviceAllocator & physicalDeviceAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( physicalDeviceCount <= physicalDevices.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( physicalDeviceCount < physicalDevices.size() ) ) - { - physicalDevices.resize( physicalDeviceCount ); - } - return createResultValue( result, physicalDevices, VULKAN_HPP_NAMESPACE_STRING"::Instance::enumeratePhysicalDevices" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const char* pName, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetInstanceProcAddr( m_instance, pName ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE PFN_vkVoidFunction Instance::getProcAddr( const std::string & name, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetInstanceProcAddr( m_instance, name.c_str() ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, const VULKAN_HPP_NAMESPACE::DebugUtilsMessengerCallbackDataEXT* pCallbackData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkSubmitDebugUtilsMessageEXT( m_instance, static_cast( messageSeverity ), static_cast( messageTypes ), reinterpret_cast( pCallbackData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Instance::submitDebugUtilsMessageEXT( VULKAN_HPP_NAMESPACE::DebugUtilsMessageSeverityFlagBitsEXT messageSeverity, VULKAN_HPP_NAMESPACE::DebugUtilsMessageTypeFlagsEXT messageTypes, const DebugUtilsMessengerCallbackDataEXT & callbackData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkSubmitDebugUtilsMessageEXT( m_instance, static_cast( messageSeverity ), static_cast( messageTypes ), reinterpret_cast( &callbackData ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::acquireWinrtDisplayNV( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAcquireWinrtDisplayNV( m_physicalDevice, static_cast( display ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::acquireWinrtDisplayNV( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const - { - Result result = static_cast( d.vkAcquireWinrtDisplayNV( m_physicalDevice, static_cast( display ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireWinrtDisplayNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::acquireXlibDisplayEXT( Display* dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkAcquireXlibDisplayEXT( m_physicalDevice, dpy, static_cast( display ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::acquireXlibDisplayEXT( Display & dpy, VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const - { - Result result = static_cast( d.vkAcquireXlibDisplayEXT( m_physicalDevice, &dpy, static_cast( display ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::acquireXlibDisplayEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::createDevice( const VULKAN_HPP_NAMESPACE::DeviceCreateInfo* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::Device* pDevice, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDevice( m_physicalDevice, reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkDevice *>( pDevice ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::createDevice( const DeviceCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Device device; - Result result = static_cast( d.vkCreateDevice( m_physicalDevice, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &device ) ) ); - return createResultValue( result, device, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDevice" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::createDeviceUnique( const DeviceCreateInfo & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Device device; - Result result = static_cast( d.vkCreateDevice( m_physicalDevice, reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &device ) ) ); - ObjectDestroy deleter( allocator, d ); - return createResultValue( result, device, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDeviceUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::createDisplayModeKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, const VULKAN_HPP_NAMESPACE::DisplayModeCreateInfoKHR* pCreateInfo, const VULKAN_HPP_NAMESPACE::AllocationCallbacks* pAllocator, VULKAN_HPP_NAMESPACE::DisplayModeKHR* pMode, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkCreateDisplayModeKHR( m_physicalDevice, static_cast( display ), reinterpret_cast( pCreateInfo ), reinterpret_cast( pAllocator ), reinterpret_cast< VkDisplayModeKHR *>( pMode ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::createDisplayModeKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DisplayModeKHR mode; - Result result = static_cast( d.vkCreateDisplayModeKHR( m_physicalDevice, static_cast( display ), reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &mode ) ) ); - return createResultValue( result, mode, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDisplayModeKHR" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::createDisplayModeKHRUnique( VULKAN_HPP_NAMESPACE::DisplayKHR display, const DisplayModeCreateInfoKHR & createInfo, Optional allocator, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DisplayModeKHR mode; - Result result = static_cast( d.vkCreateDisplayModeKHR( m_physicalDevice, static_cast( display ), reinterpret_cast( &createInfo ), reinterpret_cast( static_cast( allocator ) ), reinterpret_cast( &mode ) ) ); - ObjectDestroy deleter( *this, allocator, d ); - return createResultValue( result, mode, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::createDisplayModeKHRUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceExtensionProperties( const char* pLayerName, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::ExtensionProperties* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEnumerateDeviceExtensionProperties( m_physicalDevice, pLayerName, pPropertyCount, reinterpret_cast< VkExtensionProperties *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional layerName, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceExtensionProperties" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateDeviceExtensionProperties( Optional layerName, ExtensionPropertiesAllocator & extensionPropertiesAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceExtensionProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::enumerateDeviceLayerProperties( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::LayerProperties* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEnumerateDeviceLayerProperties( m_physicalDevice, pPropertyCount, reinterpret_cast< VkLayerProperties *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateDeviceLayerProperties( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceLayerProperties" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateDeviceLayerProperties( LayerPropertiesAllocator & layerPropertiesAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateDeviceLayerProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, uint32_t* pCounterCount, VULKAN_HPP_NAMESPACE::PerformanceCounterKHR* pCounters, VULKAN_HPP_NAMESPACE::PerformanceCounterDescriptionKHR* pCounterDescriptions, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( m_physicalDevice, queueFamilyIndex, pCounterCount, reinterpret_cast< VkPerformanceCounterKHR *>( pCounters ), reinterpret_cast< VkPerformanceCounterDescriptionKHR *>( pCounterDescriptions ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it.") - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, ArrayProxy const &counters, Dispatch const &d ) const - { - std::vector counterDescriptions; - uint32_t counterCount; - Result result; - do - { - result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( m_physicalDevice, queueFamilyIndex, counters.size() , reinterpret_cast( counters.data() ), nullptr ) ); - if ( ( result == Result::eSuccess ) && counterCount ) - { - counterDescriptions.resize( counterCount ); - result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( m_physicalDevice, queueFamilyIndex, counters.size() , reinterpret_cast( counters.data() ), reinterpret_cast( counterDescriptions.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( counterCount <= counterDescriptions.size() ); - counterDescriptions.resize( counterCount ); - } - return createResultValue( result, counterDescriptions, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); - - } - - template ::value, int>::type> - VULKAN_HPP_DEPRECATED( "This function is deprecated. Use one of the other flavours of it.") - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, ArrayProxy const &counters, Allocator const& vectorAllocator, Dispatch const &d ) const - { - std::vector counterDescriptions( vectorAllocator ); - uint32_t counterCount; - Result result; - do - { - result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( m_physicalDevice, queueFamilyIndex, counters.size() , reinterpret_cast( counters.data() ), nullptr ) ); - if ( ( result == Result::eSuccess ) && counterCount ) - { - counterDescriptions.resize( counterCount ); - result = static_cast( d.vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( m_physicalDevice, queueFamilyIndex, counters.size() , reinterpret_cast( counters.data() ), reinterpret_cast( counterDescriptions.data() ) ) ); - } - } while ( result == Result::eIncomplete ); - if ( result == Result::eSuccess ) - { - VULKAN_HPP_ASSERT( counterCount <= counterDescriptions.size() ); - counterDescriptions.resize( counterCount ); - } - return createResultValue( result, counterDescriptions, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); - - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, std::vector>>::type PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( counterCount <= counters.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( counterCount < counters.size() ) ) - { - counters.resize( counterCount ); - counterDescriptions.resize( counterCount ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); - } - - template ::value && std::is_same::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType, std::vector>>::type PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR( uint32_t queueFamilyIndex, PerformanceCounterKHRAllocator & performanceCounterKHRAllocator, PerformanceCounterDescriptionKHRAllocator & performanceCounterDescriptionKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( counterCount <= counters.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( counterCount < counters.size() ) ) - { - counters.resize( counterCount ); - counterDescriptions.resize( counterCount ); - } - return createResultValue( result, data, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::enumerateQueueFamilyPerformanceQueryCountersKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayModeProperties2KHR* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetDisplayModeProperties2KHR( m_physicalDevice, static_cast( display ), pPropertyCount, reinterpret_cast< VkDisplayModeProperties2KHR *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModeProperties2KHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayModeProperties2KHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, DisplayModeProperties2KHRAllocator & displayModeProperties2KHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModeProperties2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayModePropertiesKHR* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetDisplayModePropertiesKHR( m_physicalDevice, static_cast( display ), pPropertyCount, reinterpret_cast< VkDisplayModePropertiesKHR *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModePropertiesKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayModePropertiesKHR( VULKAN_HPP_NAMESPACE::DisplayKHR display, DisplayModePropertiesKHRAllocator & displayModePropertiesKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayModePropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilities2KHR( const VULKAN_HPP_NAMESPACE::DisplayPlaneInfo2KHR* pDisplayPlaneInfo, VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR* pCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, reinterpret_cast( pDisplayPlaneInfo ), reinterpret_cast< VkDisplayPlaneCapabilities2KHR *>( pCapabilities ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getDisplayPlaneCapabilities2KHR( const DisplayPlaneInfo2KHR & displayPlaneInfo, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilities2KHR capabilities; - Result result = static_cast( d.vkGetDisplayPlaneCapabilities2KHR( m_physicalDevice, reinterpret_cast( &displayPlaneInfo ), reinterpret_cast( &capabilities ) ) ); - return createResultValue( result, capabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilities2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode, uint32_t planeIndex, VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR* pCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast( mode ), planeIndex, reinterpret_cast< VkDisplayPlaneCapabilitiesKHR *>( pCapabilities ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getDisplayPlaneCapabilitiesKHR( VULKAN_HPP_NAMESPACE::DisplayModeKHR mode, uint32_t planeIndex, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DisplayPlaneCapabilitiesKHR capabilities; - Result result = static_cast( d.vkGetDisplayPlaneCapabilitiesKHR( m_physicalDevice, static_cast( mode ), planeIndex, reinterpret_cast( &capabilities ) ) ); - return createResultValue( result, capabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getDisplayPlaneCapabilitiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, uint32_t* pDisplayCount, VULKAN_HPP_NAMESPACE::DisplayKHR* pDisplays, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetDisplayPlaneSupportedDisplaysKHR( m_physicalDevice, planeIndex, pDisplayCount, reinterpret_cast< VkDisplayKHR *>( pDisplays ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( displayCount <= displays.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( displayCount < displays.size() ) ) - { - displays.resize( displayCount ); - } - return createResultValue( result, displays, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR( uint32_t planeIndex, DisplayKHRAllocator & displayKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( displayCount <= displays.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( displayCount < displays.size() ) ) - { - displays.resize( displayCount ); - } - return createResultValue( result, displays, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneSupportedDisplaysKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getCalibrateableTimeDomainsEXT( uint32_t* pTimeDomainCount, VULKAN_HPP_NAMESPACE::TimeDomainEXT* pTimeDomains, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( m_physicalDevice, pTimeDomainCount, reinterpret_cast< VkTimeDomainEXT *>( pTimeDomains ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCalibrateableTimeDomainsEXT( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( timeDomainCount < timeDomains.size() ) ) - { - timeDomains.resize( timeDomainCount ); - } - return createResultValue( result, timeDomains, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCalibrateableTimeDomainsEXT( TimeDomainEXTAllocator & timeDomainEXTAllocator, Dispatch const & d ) const - { - std::vector timeDomains( timeDomainEXTAllocator ); - 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() ) ) ); - VULKAN_HPP_ASSERT( timeDomainCount <= timeDomains.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( timeDomainCount < timeDomains.size() ) ) - { - timeDomains.resize( timeDomainCount ); - } - return createResultValue( result, timeDomains, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCalibrateableTimeDomainsEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getCooperativeMatrixPropertiesNV( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::CooperativeMatrixPropertiesNV* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( m_physicalDevice, pPropertyCount, reinterpret_cast< VkCooperativeMatrixPropertiesNV *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCooperativeMatrixPropertiesNV( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getCooperativeMatrixPropertiesNV( CooperativeMatrixPropertiesNVAllocator & cooperativeMatrixPropertiesNVAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getCooperativeMatrixPropertiesNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB* dfb, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceDirectFBPresentationSupportEXT( m_physicalDevice, queueFamilyIndex, dfb ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getDirectFBPresentationSupportEXT( uint32_t queueFamilyIndex, IDirectFB & dfb, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetPhysicalDeviceDirectFBPresentationSupportEXT( m_physicalDevice, queueFamilyIndex, &dfb ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlaneProperties2KHR( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayPlaneProperties2KHR* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceDisplayPlaneProperties2KHR( m_physicalDevice, pPropertyCount, reinterpret_cast< VkDisplayPlaneProperties2KHR *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlaneProperties2KHR( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneProperties2KHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlaneProperties2KHR( DisplayPlaneProperties2KHRAllocator & displayPlaneProperties2KHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlaneProperties2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPlanePropertiesKHR( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayPlanePropertiesKHR* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceDisplayPlanePropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast< VkDisplayPlanePropertiesKHR *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlanePropertiesKHR( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlanePropertiesKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPlanePropertiesKHR( DisplayPlanePropertiesKHRAllocator & displayPlanePropertiesKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPlanePropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayProperties2KHR( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayProperties2KHR* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceDisplayProperties2KHR( m_physicalDevice, pPropertyCount, reinterpret_cast< VkDisplayProperties2KHR *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayProperties2KHR( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayProperties2KHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayProperties2KHR( DisplayProperties2KHRAllocator & displayProperties2KHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayProperties2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getDisplayPropertiesKHR( uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::DisplayPropertiesKHR* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceDisplayPropertiesKHR( m_physicalDevice, pPropertyCount, reinterpret_cast< VkDisplayPropertiesKHR *>( pProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPropertiesKHR( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPropertiesKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getDisplayPropertiesKHR( DisplayPropertiesKHRAllocator & displayPropertiesKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( propertyCount <= properties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( propertyCount < properties.size() ) ) - { - properties.resize( propertyCount ); - } - return createResultValue( result, properties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getDisplayPropertiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VULKAN_HPP_NAMESPACE::ExternalBufferProperties* pExternalBufferProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceExternalBufferProperties( m_physicalDevice, reinterpret_cast( pExternalBufferInfo ), reinterpret_cast< VkExternalBufferProperties *>( pExternalBufferProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties PhysicalDevice::getExternalBufferProperties( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties; - d.vkGetPhysicalDeviceExternalBufferProperties( m_physicalDevice, reinterpret_cast( &externalBufferInfo ), reinterpret_cast( &externalBufferProperties ) ); - return externalBufferProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalBufferPropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalBufferInfo* pExternalBufferInfo, VULKAN_HPP_NAMESPACE::ExternalBufferProperties* pExternalBufferProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast( pExternalBufferInfo ), reinterpret_cast< VkExternalBufferProperties *>( pExternalBufferProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalBufferProperties PhysicalDevice::getExternalBufferPropertiesKHR( const PhysicalDeviceExternalBufferInfo & externalBufferInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::ExternalBufferProperties externalBufferProperties; - d.vkGetPhysicalDeviceExternalBufferPropertiesKHR( m_physicalDevice, reinterpret_cast( &externalBufferInfo ), reinterpret_cast( &externalBufferProperties ) ); - return externalBufferProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalFenceProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VULKAN_HPP_NAMESPACE::ExternalFenceProperties* pExternalFenceProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceExternalFenceProperties( m_physicalDevice, reinterpret_cast( pExternalFenceInfo ), reinterpret_cast< VkExternalFenceProperties *>( pExternalFenceProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties PhysicalDevice::getExternalFenceProperties( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties; - d.vkGetPhysicalDeviceExternalFenceProperties( m_physicalDevice, reinterpret_cast( &externalFenceInfo ), reinterpret_cast( &externalFenceProperties ) ); - return externalFenceProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalFencePropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalFenceInfo* pExternalFenceInfo, VULKAN_HPP_NAMESPACE::ExternalFenceProperties* pExternalFenceProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast( pExternalFenceInfo ), reinterpret_cast< VkExternalFenceProperties *>( pExternalFenceProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalFenceProperties PhysicalDevice::getExternalFencePropertiesKHR( const PhysicalDeviceExternalFenceInfo & externalFenceInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::ExternalFenceProperties externalFenceProperties; - d.vkGetPhysicalDeviceExternalFencePropertiesKHR( m_physicalDevice, reinterpret_cast( &externalFenceInfo ), reinterpret_cast( &externalFenceProperties ) ); - return externalFenceProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getExternalImageFormatPropertiesNV( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::ImageTiling tiling, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType, VULKAN_HPP_NAMESPACE::ExternalImageFormatPropertiesNV* pExternalImageFormatProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return 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< VkExternalImageFormatPropertiesNV *>( pExternalImageFormatProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getExternalImageFormatPropertiesNV( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::ImageTiling tiling, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, VULKAN_HPP_NAMESPACE::ExternalMemoryHandleTypeFlagsNV externalHandleType, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::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 ) ) ); - return createResultValue( result, externalImageFormatProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getExternalImageFormatPropertiesNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphoreProperties( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceExternalSemaphoreProperties( m_physicalDevice, reinterpret_cast( pExternalSemaphoreInfo ), reinterpret_cast< VkExternalSemaphoreProperties *>( pExternalSemaphoreProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphoreProperties( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties; - d.vkGetPhysicalDeviceExternalSemaphoreProperties( m_physicalDevice, reinterpret_cast( &externalSemaphoreInfo ), reinterpret_cast( &externalSemaphoreProperties ) ); - return externalSemaphoreProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getExternalSemaphorePropertiesKHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties* pExternalSemaphoreProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast( pExternalSemaphoreInfo ), reinterpret_cast< VkExternalSemaphoreProperties *>( pExternalSemaphoreProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties PhysicalDevice::getExternalSemaphorePropertiesKHR( const PhysicalDeviceExternalSemaphoreInfo & externalSemaphoreInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::ExternalSemaphoreProperties externalSemaphoreProperties; - d.vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( m_physicalDevice, reinterpret_cast( &externalSemaphoreInfo ), reinterpret_cast( &externalSemaphoreProperties ) ); - return externalSemaphoreProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFeatures( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures* pFeatures, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast< VkPhysicalDeviceFeatures *>( pFeatures ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures PhysicalDevice::getFeatures( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures features; - d.vkGetPhysicalDeviceFeatures( m_physicalDevice, reinterpret_cast( &features ) ); - return features; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2* pFeatures, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast< VkPhysicalDeviceFeatures2 *>( pFeatures ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features; - d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( &features ) ); - return features; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFeatures2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features = structureChain.template get(); - d.vkGetPhysicalDeviceFeatures2( m_physicalDevice, reinterpret_cast( &features ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFeatures2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2* pFeatures, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast< VkPhysicalDeviceFeatures2 *>( pFeatures ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 PhysicalDevice::getFeatures2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 features; - d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( &features ) ); - return features; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFeatures2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::PhysicalDeviceFeatures2 & features = structureChain.template get(); - d.vkGetPhysicalDeviceFeatures2KHR( m_physicalDevice, reinterpret_cast( &features ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::FormatProperties* pFormatProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast( format ), reinterpret_cast< VkFormatProperties *>( pFormatProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties PhysicalDevice::getFormatProperties( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::FormatProperties formatProperties; - d.vkGetPhysicalDeviceFormatProperties( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return formatProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::FormatProperties2* pFormatProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast( format ), reinterpret_cast< VkFormatProperties2 *>( pFormatProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2 PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties; - d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return formatProperties; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFormatProperties2( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties = structureChain.template get(); - d.vkGetPhysicalDeviceFormatProperties2( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::FormatProperties2* pFormatProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast( format ), reinterpret_cast< VkFormatProperties2 *>( pFormatProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::FormatProperties2 PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::FormatProperties2 formatProperties; - d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return formatProperties; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getFormatProperties2KHR( VULKAN_HPP_NAMESPACE::Format format, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::FormatProperties2 & formatProperties = structureChain.template get(); - d.vkGetPhysicalDeviceFormatProperties2KHR( m_physicalDevice, static_cast( format ), reinterpret_cast( &formatProperties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getFragmentShadingRatesKHR( uint32_t* pFragmentShadingRateCount, VULKAN_HPP_NAMESPACE::PhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceFragmentShadingRatesKHR( m_physicalDevice, pFragmentShadingRateCount, reinterpret_cast< VkPhysicalDeviceFragmentShadingRateKHR *>( pFragmentShadingRates ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getFragmentShadingRatesKHR( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( fragmentShadingRateCount < fragmentShadingRates.size() ) ) - { - fragmentShadingRates.resize( fragmentShadingRateCount ); - } - return createResultValue( result, fragmentShadingRates, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getFragmentShadingRatesKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getFragmentShadingRatesKHR( PhysicalDeviceFragmentShadingRateKHRAllocator & physicalDeviceFragmentShadingRateKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( fragmentShadingRateCount <= fragmentShadingRates.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( fragmentShadingRateCount < fragmentShadingRates.size() ) ) - { - fragmentShadingRates.resize( fragmentShadingRateCount ); - } - return createResultValue( result, fragmentShadingRates, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getFragmentShadingRatesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::ImageTiling tiling, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, VULKAN_HPP_NAMESPACE::ImageFormatProperties* pImageFormatProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceImageFormatProperties( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( tiling ), static_cast( usage ), static_cast( flags ), reinterpret_cast< VkImageFormatProperties *>( pImageFormatProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::ImageTiling tiling, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageCreateFlags flags, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::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 ) ) ); - return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2* pImageFormatInfo, VULKAN_HPP_NAMESPACE::ImageFormatProperties2* pImageFormatProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast( pImageFormatInfo ), reinterpret_cast< VkImageFormatProperties2 *>( pImageFormatProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties; - Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast( &imageFormatInfo ), reinterpret_cast( &imageFormatProperties ) ) ); - return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getImageFormatProperties2( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d ) const - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties = structureChain.template get(); - Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2( m_physicalDevice, reinterpret_cast( &imageFormatInfo ), reinterpret_cast( &imageFormatProperties ) ) ); - return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceImageFormatInfo2* pImageFormatInfo, VULKAN_HPP_NAMESPACE::ImageFormatProperties2* pImageFormatProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( pImageFormatInfo ), reinterpret_cast< VkImageFormatProperties2 *>( pImageFormatProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::ImageFormatProperties2 imageFormatProperties; - Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( &imageFormatInfo ), reinterpret_cast( &imageFormatProperties ) ) ); - return createResultValue( result, imageFormatProperties, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getImageFormatProperties2KHR" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getImageFormatProperties2KHR( const PhysicalDeviceImageFormatInfo2 & imageFormatInfo, Dispatch const & d ) const - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::ImageFormatProperties2 & imageFormatProperties = structureChain.template get(); - Result result = static_cast( d.vkGetPhysicalDeviceImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( &imageFormatInfo ), reinterpret_cast( &imageFormatProperties ) ) ); - return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getImageFormatProperties2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties* pMemoryProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast< VkPhysicalDeviceMemoryProperties *>( pMemoryProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties PhysicalDevice::getMemoryProperties( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties memoryProperties; - d.vkGetPhysicalDeviceMemoryProperties( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return memoryProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast< VkPhysicalDeviceMemoryProperties2 *>( pMemoryProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties; - d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return memoryProperties; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getMemoryProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties = structureChain.template get(); - d.vkGetPhysicalDeviceMemoryProperties2( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getMemoryProperties2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2* pMemoryProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast< VkPhysicalDeviceMemoryProperties2 *>( pMemoryProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 PhysicalDevice::getMemoryProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 memoryProperties; - d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return memoryProperties; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getMemoryProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::PhysicalDeviceMemoryProperties2 & memoryProperties = structureChain.template get(); - d.vkGetPhysicalDeviceMemoryProperties2KHR( m_physicalDevice, reinterpret_cast( &memoryProperties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT* pMultisampleProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast( samples ), reinterpret_cast< VkMultisamplePropertiesEXT *>( pMultisampleProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT PhysicalDevice::getMultisamplePropertiesEXT( VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::MultisamplePropertiesEXT multisampleProperties; - d.vkGetPhysicalDeviceMultisamplePropertiesEXT( m_physicalDevice, static_cast( samples ), reinterpret_cast( &multisampleProperties ) ); - return multisampleProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, uint32_t* pRectCount, VULKAN_HPP_NAMESPACE::Rect2D* pRects, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDevicePresentRectanglesKHR( m_physicalDevice, static_cast( surface ), pRectCount, reinterpret_cast< VkRect2D *>( pRects ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( rectCount <= rects.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( rectCount < rects.size() ) ) - { - rects.resize( rectCount ); - } - return createResultValue( result, rects, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getPresentRectanglesKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getPresentRectanglesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Rect2DAllocator & rect2DAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( rectCount <= rects.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( rectCount < rects.size() ) ) - { - rects.resize( rectCount ); - } - return createResultValue( result, rects, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getPresentRectanglesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getProperties( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast< VkPhysicalDeviceProperties *>( pProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties PhysicalDevice::getProperties( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties properties; - d.vkGetPhysicalDeviceProperties( m_physicalDevice, reinterpret_cast( &properties ) ); - return properties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getProperties2( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast< VkPhysicalDeviceProperties2 *>( pProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 PhysicalDevice::getProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties; - d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast( &properties ) ); - return properties; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getProperties2( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties = structureChain.template get(); - d.vkGetPhysicalDeviceProperties2( m_physicalDevice, reinterpret_cast( &properties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getProperties2KHR( VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast< VkPhysicalDeviceProperties2 *>( pProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 PhysicalDevice::getProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 properties; - d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast( &properties ) ); - return properties; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE StructureChain PhysicalDevice::getProperties2KHR( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::PhysicalDeviceProperties2 & properties = structureChain.template get(); - d.vkGetPhysicalDeviceProperties2KHR( m_physicalDevice, reinterpret_cast( &properties ) ); - return structureChain; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR( const VULKAN_HPP_NAMESPACE::QueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, uint32_t* pNumPasses, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( m_physicalDevice, reinterpret_cast( pPerformanceQueryCreateInfo ), pNumPasses ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE uint32_t PhysicalDevice::getQueueFamilyPerformanceQueryPassesKHR( const QueryPoolPerformanceCreateInfoKHR & performanceQueryCreateInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - uint32_t numPasses; - d.vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( m_physicalDevice, reinterpret_cast( &performanceQueryCreateInfo ), &numPasses ); - return numPasses; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties( uint32_t* pQueueFamilyPropertyCount, VULKAN_HPP_NAMESPACE::QueueFamilyProperties* pQueueFamilyProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceQueueFamilyProperties( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast< VkQueueFamilyProperties *>( pQueueFamilyProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties( Dispatch const & d ) const - { - 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() ); - return queueFamilyProperties; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties( QueueFamilyPropertiesAllocator & queueFamilyPropertiesAllocator, Dispatch const & d ) const - { - 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() ); - return queueFamilyProperties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2( uint32_t* pQueueFamilyPropertyCount, VULKAN_HPP_NAMESPACE::QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast< VkQueueFamilyProperties2 *>( pQueueFamilyProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2( Dispatch const & d ) const - { - 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() ); - return queueFamilyProperties; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, Dispatch const & d ) const - { - 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() ); - return queueFamilyProperties; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2( Dispatch const & d ) const - { - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - std::vector returnVector( queueFamilyPropertyCount ); - std::vector queueFamilyProperties( queueFamilyPropertyCount ); - for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) - { - queueFamilyProperties[i].pNext = - returnVector[i].template get().pNext; - } - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); - for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) - { - returnVector[i].template get() = queueFamilyProperties[i]; - } - return returnVector; - } - - template ::value, int>::type> - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2( StructureChainAllocator & structureChainAllocator, Dispatch const & d ) const - { - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - std::vector returnVector( queueFamilyPropertyCount, structureChainAllocator ); - std::vector queueFamilyProperties( queueFamilyPropertyCount ); - for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) - { - queueFamilyProperties[i].pNext = - returnVector[i].template get().pNext; - } - d.vkGetPhysicalDeviceQueueFamilyProperties2( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); - for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) - { - returnVector[i].template get() = queueFamilyProperties[i]; - } - return returnVector; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getQueueFamilyProperties2KHR( uint32_t* pQueueFamilyPropertyCount, VULKAN_HPP_NAMESPACE::QueueFamilyProperties2* pQueueFamilyProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, pQueueFamilyPropertyCount, reinterpret_cast< VkQueueFamilyProperties2 *>( pQueueFamilyProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR( Dispatch const & d ) const - { - 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() ); - return queueFamilyProperties; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR( QueueFamilyProperties2Allocator & queueFamilyProperties2Allocator, Dispatch const & d ) const - { - 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() ); - return queueFamilyProperties; - } - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR( Dispatch const & d ) const - { - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - std::vector returnVector( queueFamilyPropertyCount ); - std::vector queueFamilyProperties( queueFamilyPropertyCount ); - for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) - { - queueFamilyProperties[i].pNext = - returnVector[i].template get().pNext; - } - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); - for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) - { - returnVector[i].template get() = queueFamilyProperties[i]; - } - return returnVector; - } - - template ::value, int>::type> - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getQueueFamilyProperties2KHR( StructureChainAllocator & structureChainAllocator, Dispatch const & d ) const - { - uint32_t queueFamilyPropertyCount; - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, nullptr ); - std::vector returnVector( queueFamilyPropertyCount, structureChainAllocator ); - std::vector queueFamilyProperties( queueFamilyPropertyCount ); - for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) - { - queueFamilyProperties[i].pNext = - returnVector[i].template get().pNext; - } - d.vkGetPhysicalDeviceQueueFamilyProperties2KHR( m_physicalDevice, &queueFamilyPropertyCount, reinterpret_cast( queueFamilyProperties.data() ) ); - VULKAN_HPP_ASSERT( queueFamilyPropertyCount <= queueFamilyProperties.size() ); - for ( uint32_t i = 0; i < queueFamilyPropertyCount; i++ ) - { - returnVector[i].template get() = queueFamilyProperties[i]; - } - return returnVector; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_SCREEN_QNX - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, struct _screen_window* window, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceScreenPresentationSupportQNX( m_physicalDevice, queueFamilyIndex, window ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getScreenPresentationSupportQNX( uint32_t queueFamilyIndex, struct _screen_window & window, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetPhysicalDeviceScreenPresentationSupportQNX( m_physicalDevice, queueFamilyIndex, &window ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageTiling tiling, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::SparseImageFormatProperties* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceSparseImageFormatProperties( m_physicalDevice, static_cast( format ), static_cast( type ), static_cast( samples ), static_cast( usage ), static_cast( tiling ), pPropertyCount, reinterpret_cast< VkSparseImageFormatProperties *>( pProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageTiling tiling, Dispatch const & d ) const - { - 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() ); - return properties; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties( VULKAN_HPP_NAMESPACE::Format format, VULKAN_HPP_NAMESPACE::ImageType type, VULKAN_HPP_NAMESPACE::SampleCountFlagBits samples, VULKAN_HPP_NAMESPACE::ImageUsageFlags usage, VULKAN_HPP_NAMESPACE::ImageTiling tiling, SparseImageFormatPropertiesAllocator & sparseImageFormatPropertiesAllocator, Dispatch const & d ) const - { - 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() ); - return properties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceSparseImageFormatProperties2( m_physicalDevice, reinterpret_cast( pFormatInfo ), pPropertyCount, reinterpret_cast< VkSparseImageFormatProperties2 *>( pProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const & d ) const - { - 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() ); - return properties; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties2( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator, Dispatch const & d ) const - { - 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() ); - return properties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - template - VULKAN_HPP_INLINE void PhysicalDevice::getSparseImageFormatProperties2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSparseImageFormatInfo2* pFormatInfo, uint32_t* pPropertyCount, VULKAN_HPP_NAMESPACE::SparseImageFormatProperties2* pProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetPhysicalDeviceSparseImageFormatProperties2KHR( m_physicalDevice, reinterpret_cast( pFormatInfo ), pPropertyCount, reinterpret_cast< VkSparseImageFormatProperties2 *>( pProperties ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, Dispatch const & d ) const - { - 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() ); - return properties; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector PhysicalDevice::getSparseImageFormatProperties2KHR( const PhysicalDeviceSparseImageFormatInfo2 & formatInfo, SparseImageFormatProperties2Allocator & sparseImageFormatProperties2Allocator, Dispatch const & d ) const - { - 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() ); - return properties; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( uint32_t* pCombinationCount, VULKAN_HPP_NAMESPACE::FramebufferMixedSamplesCombinationNV* pCombinations, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( m_physicalDevice, pCombinationCount, reinterpret_cast< VkFramebufferMixedSamplesCombinationNV *>( pCombinations ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( combinationCount < combinations.size() ) ) - { - combinations.resize( combinationCount ); - } - return createResultValue( result, combinations, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV( FramebufferMixedSamplesCombinationNVAllocator & framebufferMixedSamplesCombinationNVAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( combinationCount <= combinations.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( combinationCount < combinations.size() ) ) - { - combinations.resize( combinationCount ); - } - return createResultValue( result, combinations, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSupportedFramebufferMixedSamplesCombinationsNV" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT* pSurfaceCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast( surface ), reinterpret_cast< VkSurfaceCapabilities2EXT *>( pSurfaceCapabilities ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getSurfaceCapabilities2EXT( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceCapabilities2EXT surfaceCapabilities; - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2EXT( m_physicalDevice, static_cast( surface ), reinterpret_cast( &surfaceCapabilities ) ) ); - return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2EXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilities2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR* pSurfaceCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast( pSurfaceInfo ), reinterpret_cast< VkSurfaceCapabilities2KHR *>( pSurfaceCapabilities ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR surfaceCapabilities; - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast( &surfaceInfo ), reinterpret_cast( &surfaceCapabilities ) ) ); - return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilities2KHR" ); - } - - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceCapabilities2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d ) const - { - StructureChain structureChain; - VULKAN_HPP_NAMESPACE::SurfaceCapabilities2KHR & surfaceCapabilities = structureChain.template get(); - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilities2KHR( m_physicalDevice, reinterpret_cast( &surfaceInfo ), reinterpret_cast( &surfaceCapabilities ) ) ); - return createResultValue( result, structureChain, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceCapabilities2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR* pSurfaceCapabilities, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast( surface ), reinterpret_cast< VkSurfaceCapabilitiesKHR *>( pSurfaceCapabilities ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getSurfaceCapabilitiesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::SurfaceCapabilitiesKHR surfaceCapabilities; - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceCapabilitiesKHR( m_physicalDevice, static_cast( surface ), reinterpret_cast( &surfaceCapabilities ) ) ); - return createResultValue( result, surfaceCapabilities, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceCapabilitiesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormats2KHR( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pSurfaceFormatCount, VULKAN_HPP_NAMESPACE::SurfaceFormat2KHR* pSurfaceFormats, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceSurfaceFormats2KHR( m_physicalDevice, reinterpret_cast( pSurfaceInfo ), pSurfaceFormatCount, reinterpret_cast< VkSurfaceFormat2KHR *>( pSurfaceFormats ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( surfaceFormatCount < surfaceFormats.size() ) ) - { - surfaceFormats.resize( surfaceFormatCount ); - } - return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormats2KHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceFormats2KHR( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, SurfaceFormat2KHRAllocator & surfaceFormat2KHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( surfaceFormatCount < surfaceFormats.size() ) ) - { - surfaceFormats.resize( surfaceFormatCount ); - } - return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormats2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, uint32_t* pSurfaceFormatCount, VULKAN_HPP_NAMESPACE::SurfaceFormatKHR* pSurfaceFormats, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceSurfaceFormatsKHR( m_physicalDevice, static_cast( surface ), pSurfaceFormatCount, reinterpret_cast< VkSurfaceFormatKHR *>( pSurfaceFormats ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( surfaceFormatCount < surfaceFormats.size() ) ) - { - surfaceFormats.resize( surfaceFormatCount ); - } - return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormatsKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfaceFormatsKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, SurfaceFormatKHRAllocator & surfaceFormatKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( surfaceFormatCount <= surfaceFormats.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( surfaceFormatCount < surfaceFormats.size() ) ) - { - surfaceFormats.resize( surfaceFormatCount ); - } - return createResultValue( result, surfaceFormats, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfaceFormatsKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModes2EXT( const VULKAN_HPP_NAMESPACE::PhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, uint32_t* pPresentModeCount, VULKAN_HPP_NAMESPACE::PresentModeKHR* pPresentModes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceSurfacePresentModes2EXT( m_physicalDevice, reinterpret_cast( pSurfaceInfo ), pPresentModeCount, reinterpret_cast< VkPresentModeKHR *>( pPresentModes ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( presentModeCount < presentModes.size() ) ) - { - presentModes.resize( presentModeCount ); - } - return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModes2EXT" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfacePresentModes2EXT( const PhysicalDeviceSurfaceInfo2KHR & surfaceInfo, PresentModeKHRAllocator & presentModeKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( presentModeCount < presentModes.size() ) ) - { - presentModes.resize( presentModeCount ); - } - return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModes2EXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, uint32_t* pPresentModeCount, VULKAN_HPP_NAMESPACE::PresentModeKHR* pPresentModes, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceSurfacePresentModesKHR( m_physicalDevice, static_cast( surface ), pPresentModeCount, reinterpret_cast< VkPresentModeKHR *>( pPresentModes ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( presentModeCount < presentModes.size() ) ) - { - presentModes.resize( presentModeCount ); - } - return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModesKHR" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getSurfacePresentModesKHR( VULKAN_HPP_NAMESPACE::SurfaceKHR surface, PresentModeKHRAllocator & presentModeKHRAllocator, Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( presentModeCount <= presentModes.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( presentModeCount < presentModes.size() ) ) - { - presentModes.resize( presentModeCount ); - } - return createResultValue( result, presentModes, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getSurfacePresentModesKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface, VULKAN_HPP_NAMESPACE::Bool32* pSupported, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast( surface ), reinterpret_cast< VkBool32 *>( pSupported ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getSurfaceSupportKHR( uint32_t queueFamilyIndex, VULKAN_HPP_NAMESPACE::SurfaceKHR surface, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::Bool32 supported; - Result result = static_cast( d.vkGetPhysicalDeviceSurfaceSupportKHR( m_physicalDevice, queueFamilyIndex, static_cast( surface ), reinterpret_cast( &supported ) ) ); - return createResultValue( result, supported, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getSurfaceSupportKHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getToolPropertiesEXT( uint32_t* pToolCount, VULKAN_HPP_NAMESPACE::PhysicalDeviceToolPropertiesEXT* pToolProperties, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceToolPropertiesEXT( m_physicalDevice, pToolCount, reinterpret_cast< VkPhysicalDeviceToolPropertiesEXT *>( pToolProperties ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getToolPropertiesEXT( Dispatch const & d ) const - { - 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() ) ) ); - VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( toolCount < toolProperties.size() ) ) - { - toolProperties.resize( toolCount ); - } - return createResultValue( result, toolProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getToolPropertiesEXT" ); - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getToolPropertiesEXT( PhysicalDeviceToolPropertiesEXTAllocator & physicalDeviceToolPropertiesEXTAllocator, Dispatch const & d ) const - { - std::vector toolProperties( physicalDeviceToolPropertiesEXTAllocator ); - 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() ) ) ); - VULKAN_HPP_ASSERT( toolCount <= toolProperties.size() ); - } - } while ( result == Result::eIncomplete ); - if ( ( result == Result::eSuccess ) && ( toolCount < toolProperties.size() ) ) - { - toolProperties.resize( toolCount ); - } - return createResultValue( result, toolProperties, VULKAN_HPP_NAMESPACE_STRING"::PhysicalDevice::getToolPropertiesEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display* display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, display ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWaylandPresentationSupportKHR( uint32_t queueFamilyIndex, struct wl_display & display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetPhysicalDeviceWaylandPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &display ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getWin32PresentationSupportKHR( uint32_t queueFamilyIndex, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceWin32PresentationSupportKHR( m_physicalDevice, queueFamilyIndex ) ); - } -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - -#ifdef VK_USE_PLATFORM_XCB_KHR - template - 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 - { - return static_cast( d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, connection, visual_id ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - 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 - { - return d.vkGetPhysicalDeviceXcbPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &connection, visual_id ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XCB_KHR*/ - - -#ifdef VK_USE_PLATFORM_XLIB_KHR - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display* dpy, VisualID visualID, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, dpy, visualID ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Bool32 PhysicalDevice::getXlibPresentationSupportKHR( uint32_t queueFamilyIndex, Display & dpy, VisualID visualID, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return d.vkGetPhysicalDeviceXlibPresentationSupportKHR( m_physicalDevice, queueFamilyIndex, &dpy, visualID ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - - -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getRandROutputDisplayEXT( Display* dpy, RROutput rrOutput, VULKAN_HPP_NAMESPACE::DisplayKHR* pDisplay, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetRandROutputDisplayEXT( m_physicalDevice, dpy, rrOutput, reinterpret_cast< VkDisplayKHR *>( pDisplay ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getRandROutputDisplayEXT( Display & dpy, RROutput rrOutput, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DisplayKHR display; - Result result = static_cast( d.vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast( &display ) ) ); - return createResultValue( result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getRandROutputDisplayEXT" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getRandROutputDisplayEXTUnique( Display & dpy, RROutput rrOutput, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DisplayKHR display; - Result result = static_cast( d.vkGetRandROutputDisplayEXT( m_physicalDevice, &dpy, rrOutput, reinterpret_cast( &display ) ) ); - ObjectRelease deleter( *this, d ); - return createResultValue( result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getRandROutputDisplayEXTUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - - -#ifdef VK_USE_PLATFORM_WIN32_KHR - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId, VULKAN_HPP_NAMESPACE::DisplayKHR* pDisplay, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkGetWinrtDisplayNV( m_physicalDevice, deviceRelativeId, reinterpret_cast< VkDisplayKHR *>( pDisplay ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::getWinrtDisplayNV( uint32_t deviceRelativeId, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DisplayKHR display; - Result result = static_cast( d.vkGetWinrtDisplayNV( m_physicalDevice, deviceRelativeId, reinterpret_cast( &display ) ) ); - return createResultValue( result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getWinrtDisplayNV" ); - } - -# ifndef VULKAN_HPP_NO_SMART_HANDLE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType>::type PhysicalDevice::getWinrtDisplayNVUnique( uint32_t deviceRelativeId, Dispatch const & d ) const - { - VULKAN_HPP_NAMESPACE::DisplayKHR display; - Result result = static_cast( d.vkGetWinrtDisplayNV( m_physicalDevice, deviceRelativeId, reinterpret_cast( &display ) ) ); - ObjectRelease deleter( *this, d ); - return createResultValue( result, display, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::getWinrtDisplayNVUnique", deleter ); - } -# endif /*VULKAN_HPP_NO_SMART_HANDLE*/ -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE Result PhysicalDevice::releaseDisplayEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast( display ) ) ); - } -#else - template - VULKAN_HPP_INLINE typename ResultValueType::type PhysicalDevice::releaseDisplayEXT( VULKAN_HPP_NAMESPACE::DisplayKHR display, Dispatch const & d ) const - { - Result result = static_cast( d.vkReleaseDisplayEXT( m_physicalDevice, static_cast( display ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::PhysicalDevice::releaseDisplayEXT" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_INLINE void Queue::getCheckpointData2NV( uint32_t* pCheckpointDataCount, VULKAN_HPP_NAMESPACE::CheckpointData2NV* pCheckpointData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetQueueCheckpointData2NV( m_queue, pCheckpointDataCount, reinterpret_cast< VkCheckpointData2NV *>( pCheckpointData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointData2NV( Dispatch const & d ) const - { - 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() ); - return checkpointData; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointData2NV( CheckpointData2NVAllocator & checkpointData2NVAllocator, Dispatch const & d ) const - { - 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() ); - return checkpointData; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Queue::getCheckpointDataNV( uint32_t* pCheckpointDataCount, VULKAN_HPP_NAMESPACE::CheckpointDataNV* pCheckpointData, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkGetQueueCheckpointDataNV( m_queue, pCheckpointDataCount, reinterpret_cast< VkCheckpointDataNV *>( pCheckpointData ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointDataNV( Dispatch const & d ) const - { - 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() ); - return checkpointData; - } - - template ::value, int>::type > - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE std::vector Queue::getCheckpointDataNV( CheckpointDataNVAllocator & checkpointDataNVAllocator, Dispatch const & d ) const - { - 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() ); - return checkpointData; - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pLabelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast( pLabelInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Queue::beginDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkQueueBeginDebugUtilsLabelEXT( m_queue, reinterpret_cast( &labelInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::bindSparse( uint32_t bindInfoCount, const VULKAN_HPP_NAMESPACE::BindSparseInfo* pBindInfo, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkQueueBindSparse( m_queue, bindInfoCount, reinterpret_cast( pBindInfo ), static_cast( fence ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::bindSparse( ArrayProxy const & bindInfo, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d ) const - { - Result result = static_cast( d.vkQueueBindSparse( m_queue, bindInfo.size(), reinterpret_cast( bindInfo.data() ), static_cast( fence ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::bindSparse" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_INLINE void Queue::endDebugUtilsLabelEXT( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkQueueEndDebugUtilsLabelEXT( m_queue ); - } - - - template - VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const VULKAN_HPP_NAMESPACE::DebugUtilsLabelEXT* pLabelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast( pLabelInfo ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_INLINE void Queue::insertDebugUtilsLabelEXT( const DebugUtilsLabelEXT & labelInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - d.vkQueueInsertDebugUtilsLabelEXT( m_queue, reinterpret_cast( &labelInfo ) ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::presentKHR( const VULKAN_HPP_NAMESPACE::PresentInfoKHR* pPresentInfo, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkQueuePresentKHR( m_queue, reinterpret_cast( pPresentInfo ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::presentKHR( const PresentInfoKHR & presentInfo, Dispatch const & d ) const - { - Result result = static_cast( d.vkQueuePresentKHR( m_queue, reinterpret_cast( &presentInfo ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::presentKHR", { VULKAN_HPP_NAMESPACE::Result::eSuccess, VULKAN_HPP_NAMESPACE::Result::eSuboptimalKHR } ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkQueueSetPerformanceConfigurationINTEL( m_queue, static_cast( configuration ) ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::setPerformanceConfigurationINTEL( VULKAN_HPP_NAMESPACE::PerformanceConfigurationINTEL configuration, Dispatch const & d ) const - { - Result result = static_cast( d.vkQueueSetPerformanceConfigurationINTEL( m_queue, static_cast( configuration ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::setPerformanceConfigurationINTEL" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::submit( uint32_t submitCount, const VULKAN_HPP_NAMESPACE::SubmitInfo* pSubmits, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkQueueSubmit( m_queue, submitCount, reinterpret_cast( pSubmits ), static_cast( fence ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::submit( ArrayProxy const & submits, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d ) const - { - Result result = static_cast( d.vkQueueSubmit( m_queue, submits.size(), reinterpret_cast( submits.data() ), static_cast( fence ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::submit2KHR( uint32_t submitCount, const VULKAN_HPP_NAMESPACE::SubmitInfo2KHR* pSubmits, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkQueueSubmit2KHR( m_queue, submitCount, reinterpret_cast( pSubmits ), static_cast( fence ) ) ); - } - -#ifndef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::submit2KHR( ArrayProxy const & submits, VULKAN_HPP_NAMESPACE::Fence fence, Dispatch const & d ) const - { - Result result = static_cast( d.vkQueueSubmit2KHR( m_queue, submits.size(), reinterpret_cast( submits.data() ), static_cast( fence ) ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::submit2KHR" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - - -#ifdef VULKAN_HPP_DISABLE_ENHANCED_MODE - template - VULKAN_HPP_NODISCARD VULKAN_HPP_INLINE Result Queue::waitIdle( Dispatch const & d ) const VULKAN_HPP_NOEXCEPT - { - return static_cast( d.vkQueueWaitIdle( m_queue ) ); - } -#else - template - VULKAN_HPP_NODISCARD_WHEN_NO_EXCEPTIONS VULKAN_HPP_INLINE typename ResultValueType::type Queue::waitIdle( Dispatch const & d ) const - { - Result result = static_cast( d.vkQueueWaitIdle( m_queue ) ); - return createResultValue( result, VULKAN_HPP_NAMESPACE_STRING "::Queue::waitIdle" ); - } -#endif /*VULKAN_HPP_DISABLE_ENHANCED_MODE*/ - -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_ENABLE_BETA_EXTENSIONS - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_ENABLE_BETA_EXTENSIONS*/ -#ifdef 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 }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_GGP - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_GGP*/ - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - template <> struct StructExtends{ enum { value = true }; }; - -#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( __linux__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) - m_library = dlopen( vulkanLibraryName.c_str(), RTLD_NOW | RTLD_LOCAL ); -# elif defined( _WIN32 ) - m_library = ::LoadLibraryA( vulkanLibraryName.c_str() ); -# else -# error unsupported platform -# endif - } - else - { -# if defined( __linux__ ) || defined( __QNXNTO__ ) - m_library = dlopen( "libvulkan.so", RTLD_NOW | RTLD_LOCAL ); - if ( m_library == nullptr ) - { - m_library = dlopen( "libvulkan.so.1", RTLD_NOW | RTLD_LOCAL ); - } -# elif defined( __APPLE__ ) - m_library = dlopen( "libvulkan.dylib", RTLD_NOW | RTLD_LOCAL ); -# elif defined( _WIN32 ) - m_library = ::LoadLibraryA( "vulkan-1.dll" ); -# else -# error unsupported platform -# endif - } - -#ifndef VULKAN_HPP_NO_EXCEPTIONS - if ( m_library == nullptr ) - { - // 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( __linux__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) - dlclose( m_library ); -# elif defined( _WIN32 ) - ::FreeLibrary( m_library ); -# else -# error unsupported platform -# endif - } - } - - template - T getProcAddress( const char* function ) const VULKAN_HPP_NOEXCEPT - { -# if defined( __linux__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) - return (T)dlsym( m_library, function ); -# elif defined( _WIN32 ) - return (T)::GetProcAddress( m_library, function ); -# else -# error unsupported platform -# endif - } - - bool success() const VULKAN_HPP_NOEXCEPT { return m_library != nullptr; } - - private: -# if defined( __linux__ ) || defined( __APPLE__ ) || defined( __QNXNTO__ ) - void * m_library; -# elif defined( _WIN32 ) - ::HINSTANCE m_library; -# else -# error unsupported platform -# endif - }; -#endif - - - class DispatchLoaderDynamic - { - public: -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkAcquireFullScreenExclusiveModeEXT vkAcquireFullScreenExclusiveModeEXT = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkAcquireNextImage2KHR vkAcquireNextImage2KHR = 0; - PFN_vkAcquireNextImageKHR vkAcquireNextImageKHR = 0; - PFN_vkAcquirePerformanceConfigurationINTEL vkAcquirePerformanceConfigurationINTEL = 0; - PFN_vkAcquireProfilingLockKHR vkAcquireProfilingLockKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkAcquireWinrtDisplayNV vkAcquireWinrtDisplayNV = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - PFN_vkAcquireXlibDisplayEXT vkAcquireXlibDisplayEXT = 0; -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - PFN_vkAllocateCommandBuffers vkAllocateCommandBuffers = 0; - PFN_vkAllocateDescriptorSets vkAllocateDescriptorSets = 0; - PFN_vkAllocateMemory vkAllocateMemory = 0; - PFN_vkBeginCommandBuffer vkBeginCommandBuffer = 0; - PFN_vkBindAccelerationStructureMemoryNV vkBindAccelerationStructureMemoryNV = 0; - PFN_vkBindBufferMemory vkBindBufferMemory = 0; - PFN_vkBindBufferMemory2KHR vkBindBufferMemory2KHR = 0; - PFN_vkBindBufferMemory2 vkBindBufferMemory2 = 0; - PFN_vkBindImageMemory vkBindImageMemory = 0; - PFN_vkBindImageMemory2KHR vkBindImageMemory2KHR = 0; - PFN_vkBindImageMemory2 vkBindImageMemory2 = 0; - PFN_vkBuildAccelerationStructuresKHR vkBuildAccelerationStructuresKHR = 0; - PFN_vkCmdBeginConditionalRenderingEXT vkCmdBeginConditionalRenderingEXT = 0; - PFN_vkCmdBeginDebugUtilsLabelEXT vkCmdBeginDebugUtilsLabelEXT = 0; - PFN_vkCmdBeginQuery vkCmdBeginQuery = 0; - PFN_vkCmdBeginQueryIndexedEXT vkCmdBeginQueryIndexedEXT = 0; - PFN_vkCmdBeginRenderPass vkCmdBeginRenderPass = 0; - PFN_vkCmdBeginRenderPass2KHR vkCmdBeginRenderPass2KHR = 0; - PFN_vkCmdBeginRenderPass2 vkCmdBeginRenderPass2 = 0; - PFN_vkCmdBeginTransformFeedbackEXT vkCmdBeginTransformFeedbackEXT = 0; - PFN_vkCmdBindDescriptorSets vkCmdBindDescriptorSets = 0; - PFN_vkCmdBindIndexBuffer vkCmdBindIndexBuffer = 0; - PFN_vkCmdBindPipeline vkCmdBindPipeline = 0; - PFN_vkCmdBindPipelineShaderGroupNV vkCmdBindPipelineShaderGroupNV = 0; - PFN_vkCmdBindShadingRateImageNV vkCmdBindShadingRateImageNV = 0; - PFN_vkCmdBindTransformFeedbackBuffersEXT vkCmdBindTransformFeedbackBuffersEXT = 0; - PFN_vkCmdBindVertexBuffers vkCmdBindVertexBuffers = 0; - PFN_vkCmdBindVertexBuffers2EXT vkCmdBindVertexBuffers2EXT = 0; - PFN_vkCmdBlitImage vkCmdBlitImage = 0; - PFN_vkCmdBlitImage2KHR vkCmdBlitImage2KHR = 0; - PFN_vkCmdBuildAccelerationStructureNV vkCmdBuildAccelerationStructureNV = 0; - PFN_vkCmdBuildAccelerationStructuresIndirectKHR vkCmdBuildAccelerationStructuresIndirectKHR = 0; - PFN_vkCmdBuildAccelerationStructuresKHR vkCmdBuildAccelerationStructuresKHR = 0; - PFN_vkCmdClearAttachments vkCmdClearAttachments = 0; - PFN_vkCmdClearColorImage vkCmdClearColorImage = 0; - PFN_vkCmdClearDepthStencilImage vkCmdClearDepthStencilImage = 0; - PFN_vkCmdCopyAccelerationStructureKHR vkCmdCopyAccelerationStructureKHR = 0; - PFN_vkCmdCopyAccelerationStructureNV vkCmdCopyAccelerationStructureNV = 0; - PFN_vkCmdCopyAccelerationStructureToMemoryKHR vkCmdCopyAccelerationStructureToMemoryKHR = 0; - PFN_vkCmdCopyBuffer vkCmdCopyBuffer = 0; - PFN_vkCmdCopyBuffer2KHR vkCmdCopyBuffer2KHR = 0; - PFN_vkCmdCopyBufferToImage vkCmdCopyBufferToImage = 0; - PFN_vkCmdCopyBufferToImage2KHR vkCmdCopyBufferToImage2KHR = 0; - PFN_vkCmdCopyImage vkCmdCopyImage = 0; - PFN_vkCmdCopyImage2KHR vkCmdCopyImage2KHR = 0; - PFN_vkCmdCopyImageToBuffer vkCmdCopyImageToBuffer = 0; - PFN_vkCmdCopyImageToBuffer2KHR vkCmdCopyImageToBuffer2KHR = 0; - PFN_vkCmdCopyMemoryToAccelerationStructureKHR vkCmdCopyMemoryToAccelerationStructureKHR = 0; - PFN_vkCmdCopyQueryPoolResults vkCmdCopyQueryPoolResults = 0; - PFN_vkCmdDebugMarkerBeginEXT vkCmdDebugMarkerBeginEXT = 0; - PFN_vkCmdDebugMarkerEndEXT vkCmdDebugMarkerEndEXT = 0; - PFN_vkCmdDebugMarkerInsertEXT vkCmdDebugMarkerInsertEXT = 0; - PFN_vkCmdDispatch vkCmdDispatch = 0; - PFN_vkCmdDispatchBaseKHR vkCmdDispatchBaseKHR = 0; - PFN_vkCmdDispatchBase vkCmdDispatchBase = 0; - PFN_vkCmdDispatchIndirect vkCmdDispatchIndirect = 0; - PFN_vkCmdDraw vkCmdDraw = 0; - PFN_vkCmdDrawIndexed vkCmdDrawIndexed = 0; - PFN_vkCmdDrawIndexedIndirect vkCmdDrawIndexedIndirect = 0; - PFN_vkCmdDrawIndexedIndirectCountAMD vkCmdDrawIndexedIndirectCountAMD = 0; - PFN_vkCmdDrawIndexedIndirectCountKHR vkCmdDrawIndexedIndirectCountKHR = 0; - PFN_vkCmdDrawIndexedIndirectCount vkCmdDrawIndexedIndirectCount = 0; - PFN_vkCmdDrawIndirect vkCmdDrawIndirect = 0; - PFN_vkCmdDrawIndirectByteCountEXT vkCmdDrawIndirectByteCountEXT = 0; - PFN_vkCmdDrawIndirectCountAMD vkCmdDrawIndirectCountAMD = 0; - PFN_vkCmdDrawIndirectCountKHR vkCmdDrawIndirectCountKHR = 0; - PFN_vkCmdDrawIndirectCount vkCmdDrawIndirectCount = 0; - PFN_vkCmdDrawMeshTasksIndirectCountNV vkCmdDrawMeshTasksIndirectCountNV = 0; - PFN_vkCmdDrawMeshTasksIndirectNV vkCmdDrawMeshTasksIndirectNV = 0; - PFN_vkCmdDrawMeshTasksNV vkCmdDrawMeshTasksNV = 0; - PFN_vkCmdEndConditionalRenderingEXT vkCmdEndConditionalRenderingEXT = 0; - PFN_vkCmdEndDebugUtilsLabelEXT vkCmdEndDebugUtilsLabelEXT = 0; - PFN_vkCmdEndQuery vkCmdEndQuery = 0; - PFN_vkCmdEndQueryIndexedEXT vkCmdEndQueryIndexedEXT = 0; - PFN_vkCmdEndRenderPass vkCmdEndRenderPass = 0; - PFN_vkCmdEndRenderPass2KHR vkCmdEndRenderPass2KHR = 0; - PFN_vkCmdEndRenderPass2 vkCmdEndRenderPass2 = 0; - PFN_vkCmdEndTransformFeedbackEXT vkCmdEndTransformFeedbackEXT = 0; - PFN_vkCmdExecuteCommands vkCmdExecuteCommands = 0; - PFN_vkCmdExecuteGeneratedCommandsNV vkCmdExecuteGeneratedCommandsNV = 0; - PFN_vkCmdFillBuffer vkCmdFillBuffer = 0; - PFN_vkCmdInsertDebugUtilsLabelEXT vkCmdInsertDebugUtilsLabelEXT = 0; - PFN_vkCmdNextSubpass vkCmdNextSubpass = 0; - PFN_vkCmdNextSubpass2KHR vkCmdNextSubpass2KHR = 0; - PFN_vkCmdNextSubpass2 vkCmdNextSubpass2 = 0; - PFN_vkCmdPipelineBarrier vkCmdPipelineBarrier = 0; - PFN_vkCmdPipelineBarrier2KHR vkCmdPipelineBarrier2KHR = 0; - PFN_vkCmdPreprocessGeneratedCommandsNV vkCmdPreprocessGeneratedCommandsNV = 0; - PFN_vkCmdPushConstants vkCmdPushConstants = 0; - PFN_vkCmdPushDescriptorSetKHR vkCmdPushDescriptorSetKHR = 0; - PFN_vkCmdPushDescriptorSetWithTemplateKHR vkCmdPushDescriptorSetWithTemplateKHR = 0; - PFN_vkCmdResetEvent vkCmdResetEvent = 0; - PFN_vkCmdResetEvent2KHR vkCmdResetEvent2KHR = 0; - PFN_vkCmdResetQueryPool vkCmdResetQueryPool = 0; - PFN_vkCmdResolveImage vkCmdResolveImage = 0; - PFN_vkCmdResolveImage2KHR vkCmdResolveImage2KHR = 0; - PFN_vkCmdSetBlendConstants vkCmdSetBlendConstants = 0; - PFN_vkCmdSetCheckpointNV vkCmdSetCheckpointNV = 0; - PFN_vkCmdSetCoarseSampleOrderNV vkCmdSetCoarseSampleOrderNV = 0; - PFN_vkCmdSetCullModeEXT vkCmdSetCullModeEXT = 0; - PFN_vkCmdSetDepthBias vkCmdSetDepthBias = 0; - PFN_vkCmdSetDepthBounds vkCmdSetDepthBounds = 0; - PFN_vkCmdSetDepthBoundsTestEnableEXT vkCmdSetDepthBoundsTestEnableEXT = 0; - PFN_vkCmdSetDepthCompareOpEXT vkCmdSetDepthCompareOpEXT = 0; - PFN_vkCmdSetDepthTestEnableEXT vkCmdSetDepthTestEnableEXT = 0; - PFN_vkCmdSetDepthWriteEnableEXT vkCmdSetDepthWriteEnableEXT = 0; - PFN_vkCmdSetDeviceMaskKHR vkCmdSetDeviceMaskKHR = 0; - PFN_vkCmdSetDeviceMask vkCmdSetDeviceMask = 0; - PFN_vkCmdSetDiscardRectangleEXT vkCmdSetDiscardRectangleEXT = 0; - PFN_vkCmdSetEvent vkCmdSetEvent = 0; - PFN_vkCmdSetEvent2KHR vkCmdSetEvent2KHR = 0; - PFN_vkCmdSetExclusiveScissorNV vkCmdSetExclusiveScissorNV = 0; - PFN_vkCmdSetFragmentShadingRateEnumNV vkCmdSetFragmentShadingRateEnumNV = 0; - PFN_vkCmdSetFragmentShadingRateKHR vkCmdSetFragmentShadingRateKHR = 0; - PFN_vkCmdSetFrontFaceEXT vkCmdSetFrontFaceEXT = 0; - PFN_vkCmdSetLineStippleEXT vkCmdSetLineStippleEXT = 0; - PFN_vkCmdSetLineWidth vkCmdSetLineWidth = 0; - PFN_vkCmdSetPerformanceMarkerINTEL vkCmdSetPerformanceMarkerINTEL = 0; - PFN_vkCmdSetPerformanceOverrideINTEL vkCmdSetPerformanceOverrideINTEL = 0; - PFN_vkCmdSetPerformanceStreamMarkerINTEL vkCmdSetPerformanceStreamMarkerINTEL = 0; - PFN_vkCmdSetPrimitiveTopologyEXT vkCmdSetPrimitiveTopologyEXT = 0; - PFN_vkCmdSetRayTracingPipelineStackSizeKHR vkCmdSetRayTracingPipelineStackSizeKHR = 0; - PFN_vkCmdSetSampleLocationsEXT vkCmdSetSampleLocationsEXT = 0; - PFN_vkCmdSetScissor vkCmdSetScissor = 0; - PFN_vkCmdSetScissorWithCountEXT vkCmdSetScissorWithCountEXT = 0; - PFN_vkCmdSetStencilCompareMask vkCmdSetStencilCompareMask = 0; - PFN_vkCmdSetStencilOpEXT vkCmdSetStencilOpEXT = 0; - PFN_vkCmdSetStencilReference vkCmdSetStencilReference = 0; - PFN_vkCmdSetStencilTestEnableEXT vkCmdSetStencilTestEnableEXT = 0; - PFN_vkCmdSetStencilWriteMask vkCmdSetStencilWriteMask = 0; - PFN_vkCmdSetViewport vkCmdSetViewport = 0; - PFN_vkCmdSetViewportShadingRatePaletteNV vkCmdSetViewportShadingRatePaletteNV = 0; - PFN_vkCmdSetViewportWScalingNV vkCmdSetViewportWScalingNV = 0; - PFN_vkCmdSetViewportWithCountEXT vkCmdSetViewportWithCountEXT = 0; - PFN_vkCmdTraceRaysIndirectKHR vkCmdTraceRaysIndirectKHR = 0; - PFN_vkCmdTraceRaysKHR vkCmdTraceRaysKHR = 0; - PFN_vkCmdTraceRaysNV vkCmdTraceRaysNV = 0; - PFN_vkCmdUpdateBuffer vkCmdUpdateBuffer = 0; - PFN_vkCmdWaitEvents vkCmdWaitEvents = 0; - PFN_vkCmdWaitEvents2KHR vkCmdWaitEvents2KHR = 0; - PFN_vkCmdWriteAccelerationStructuresPropertiesKHR vkCmdWriteAccelerationStructuresPropertiesKHR = 0; - PFN_vkCmdWriteAccelerationStructuresPropertiesNV vkCmdWriteAccelerationStructuresPropertiesNV = 0; - PFN_vkCmdWriteBufferMarker2AMD vkCmdWriteBufferMarker2AMD = 0; - PFN_vkCmdWriteBufferMarkerAMD vkCmdWriteBufferMarkerAMD = 0; - PFN_vkCmdWriteTimestamp vkCmdWriteTimestamp = 0; - PFN_vkCmdWriteTimestamp2KHR vkCmdWriteTimestamp2KHR = 0; - PFN_vkCompileDeferredNV vkCompileDeferredNV = 0; - PFN_vkCopyAccelerationStructureKHR vkCopyAccelerationStructureKHR = 0; - PFN_vkCopyAccelerationStructureToMemoryKHR vkCopyAccelerationStructureToMemoryKHR = 0; - PFN_vkCopyMemoryToAccelerationStructureKHR vkCopyMemoryToAccelerationStructureKHR = 0; - PFN_vkCreateAccelerationStructureKHR vkCreateAccelerationStructureKHR = 0; - PFN_vkCreateAccelerationStructureNV vkCreateAccelerationStructureNV = 0; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - PFN_vkCreateAndroidSurfaceKHR vkCreateAndroidSurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - PFN_vkCreateBuffer vkCreateBuffer = 0; - PFN_vkCreateBufferView vkCreateBufferView = 0; - PFN_vkCreateCommandPool vkCreateCommandPool = 0; - PFN_vkCreateComputePipelines vkCreateComputePipelines = 0; - PFN_vkCreateDebugReportCallbackEXT vkCreateDebugReportCallbackEXT = 0; - PFN_vkCreateDebugUtilsMessengerEXT vkCreateDebugUtilsMessengerEXT = 0; - PFN_vkCreateDeferredOperationKHR vkCreateDeferredOperationKHR = 0; - PFN_vkCreateDescriptorPool vkCreateDescriptorPool = 0; - PFN_vkCreateDescriptorSetLayout vkCreateDescriptorSetLayout = 0; - PFN_vkCreateDescriptorUpdateTemplateKHR vkCreateDescriptorUpdateTemplateKHR = 0; - PFN_vkCreateDescriptorUpdateTemplate vkCreateDescriptorUpdateTemplate = 0; - PFN_vkCreateDevice vkCreateDevice = 0; -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - PFN_vkCreateDirectFBSurfaceEXT vkCreateDirectFBSurfaceEXT = 0; -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - PFN_vkCreateDisplayModeKHR vkCreateDisplayModeKHR = 0; - PFN_vkCreateDisplayPlaneSurfaceKHR vkCreateDisplayPlaneSurfaceKHR = 0; - PFN_vkCreateEvent vkCreateEvent = 0; - PFN_vkCreateFence vkCreateFence = 0; - PFN_vkCreateFramebuffer vkCreateFramebuffer = 0; - PFN_vkCreateGraphicsPipelines vkCreateGraphicsPipelines = 0; - PFN_vkCreateHeadlessSurfaceEXT vkCreateHeadlessSurfaceEXT = 0; -#ifdef VK_USE_PLATFORM_IOS_MVK - PFN_vkCreateIOSSurfaceMVK vkCreateIOSSurfaceMVK = 0; -#endif /*VK_USE_PLATFORM_IOS_MVK*/ - PFN_vkCreateImage vkCreateImage = 0; -#ifdef VK_USE_PLATFORM_FUCHSIA - PFN_vkCreateImagePipeSurfaceFUCHSIA vkCreateImagePipeSurfaceFUCHSIA = 0; -#endif /*VK_USE_PLATFORM_FUCHSIA*/ - PFN_vkCreateImageView vkCreateImageView = 0; - PFN_vkCreateIndirectCommandsLayoutNV vkCreateIndirectCommandsLayoutNV = 0; - PFN_vkCreateInstance vkCreateInstance = 0; -#ifdef VK_USE_PLATFORM_MACOS_MVK - PFN_vkCreateMacOSSurfaceMVK vkCreateMacOSSurfaceMVK = 0; -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ -#ifdef VK_USE_PLATFORM_METAL_EXT - PFN_vkCreateMetalSurfaceEXT vkCreateMetalSurfaceEXT = 0; -#endif /*VK_USE_PLATFORM_METAL_EXT*/ - PFN_vkCreatePipelineCache vkCreatePipelineCache = 0; - PFN_vkCreatePipelineLayout vkCreatePipelineLayout = 0; - PFN_vkCreatePrivateDataSlotEXT vkCreatePrivateDataSlotEXT = 0; - PFN_vkCreateQueryPool vkCreateQueryPool = 0; - PFN_vkCreateRayTracingPipelinesKHR vkCreateRayTracingPipelinesKHR = 0; - PFN_vkCreateRayTracingPipelinesNV vkCreateRayTracingPipelinesNV = 0; - PFN_vkCreateRenderPass vkCreateRenderPass = 0; - PFN_vkCreateRenderPass2KHR vkCreateRenderPass2KHR = 0; - PFN_vkCreateRenderPass2 vkCreateRenderPass2 = 0; - PFN_vkCreateSampler vkCreateSampler = 0; - PFN_vkCreateSamplerYcbcrConversionKHR vkCreateSamplerYcbcrConversionKHR = 0; - PFN_vkCreateSamplerYcbcrConversion vkCreateSamplerYcbcrConversion = 0; -#ifdef VK_USE_PLATFORM_SCREEN_QNX - PFN_vkCreateScreenSurfaceQNX vkCreateScreenSurfaceQNX = 0; -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - PFN_vkCreateSemaphore vkCreateSemaphore = 0; - PFN_vkCreateShaderModule vkCreateShaderModule = 0; - PFN_vkCreateSharedSwapchainsKHR vkCreateSharedSwapchainsKHR = 0; -#ifdef VK_USE_PLATFORM_GGP - PFN_vkCreateStreamDescriptorSurfaceGGP vkCreateStreamDescriptorSurfaceGGP = 0; -#endif /*VK_USE_PLATFORM_GGP*/ - PFN_vkCreateSwapchainKHR vkCreateSwapchainKHR = 0; - PFN_vkCreateValidationCacheEXT vkCreateValidationCacheEXT = 0; -#ifdef VK_USE_PLATFORM_VI_NN - PFN_vkCreateViSurfaceNN vkCreateViSurfaceNN = 0; -#endif /*VK_USE_PLATFORM_VI_NN*/ -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - PFN_vkCreateWaylandSurfaceKHR vkCreateWaylandSurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkCreateWin32SurfaceKHR vkCreateWin32SurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - PFN_vkCreateXcbSurfaceKHR vkCreateXcbSurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - PFN_vkCreateXlibSurfaceKHR vkCreateXlibSurfaceKHR = 0; -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - PFN_vkDebugMarkerSetObjectNameEXT vkDebugMarkerSetObjectNameEXT = 0; - PFN_vkDebugMarkerSetObjectTagEXT vkDebugMarkerSetObjectTagEXT = 0; - PFN_vkDebugReportMessageEXT vkDebugReportMessageEXT = 0; - PFN_vkDeferredOperationJoinKHR vkDeferredOperationJoinKHR = 0; - PFN_vkDestroyAccelerationStructureKHR vkDestroyAccelerationStructureKHR = 0; - PFN_vkDestroyAccelerationStructureNV vkDestroyAccelerationStructureNV = 0; - PFN_vkDestroyBuffer vkDestroyBuffer = 0; - PFN_vkDestroyBufferView vkDestroyBufferView = 0; - PFN_vkDestroyCommandPool vkDestroyCommandPool = 0; - PFN_vkDestroyDebugReportCallbackEXT vkDestroyDebugReportCallbackEXT = 0; - PFN_vkDestroyDebugUtilsMessengerEXT vkDestroyDebugUtilsMessengerEXT = 0; - PFN_vkDestroyDeferredOperationKHR vkDestroyDeferredOperationKHR = 0; - PFN_vkDestroyDescriptorPool vkDestroyDescriptorPool = 0; - PFN_vkDestroyDescriptorSetLayout vkDestroyDescriptorSetLayout = 0; - PFN_vkDestroyDescriptorUpdateTemplateKHR vkDestroyDescriptorUpdateTemplateKHR = 0; - PFN_vkDestroyDescriptorUpdateTemplate vkDestroyDescriptorUpdateTemplate = 0; - PFN_vkDestroyDevice vkDestroyDevice = 0; - PFN_vkDestroyEvent vkDestroyEvent = 0; - PFN_vkDestroyFence vkDestroyFence = 0; - PFN_vkDestroyFramebuffer vkDestroyFramebuffer = 0; - PFN_vkDestroyImage vkDestroyImage = 0; - PFN_vkDestroyImageView vkDestroyImageView = 0; - PFN_vkDestroyIndirectCommandsLayoutNV vkDestroyIndirectCommandsLayoutNV = 0; - PFN_vkDestroyInstance vkDestroyInstance = 0; - PFN_vkDestroyPipeline vkDestroyPipeline = 0; - PFN_vkDestroyPipelineCache vkDestroyPipelineCache = 0; - PFN_vkDestroyPipelineLayout vkDestroyPipelineLayout = 0; - PFN_vkDestroyPrivateDataSlotEXT vkDestroyPrivateDataSlotEXT = 0; - PFN_vkDestroyQueryPool vkDestroyQueryPool = 0; - PFN_vkDestroyRenderPass vkDestroyRenderPass = 0; - PFN_vkDestroySampler vkDestroySampler = 0; - PFN_vkDestroySamplerYcbcrConversionKHR vkDestroySamplerYcbcrConversionKHR = 0; - PFN_vkDestroySamplerYcbcrConversion vkDestroySamplerYcbcrConversion = 0; - PFN_vkDestroySemaphore vkDestroySemaphore = 0; - PFN_vkDestroyShaderModule vkDestroyShaderModule = 0; - PFN_vkDestroySurfaceKHR vkDestroySurfaceKHR = 0; - PFN_vkDestroySwapchainKHR vkDestroySwapchainKHR = 0; - PFN_vkDestroyValidationCacheEXT vkDestroyValidationCacheEXT = 0; - PFN_vkDeviceWaitIdle vkDeviceWaitIdle = 0; - PFN_vkDisplayPowerControlEXT vkDisplayPowerControlEXT = 0; - PFN_vkEndCommandBuffer vkEndCommandBuffer = 0; - PFN_vkEnumerateDeviceExtensionProperties vkEnumerateDeviceExtensionProperties = 0; - PFN_vkEnumerateDeviceLayerProperties vkEnumerateDeviceLayerProperties = 0; - PFN_vkEnumerateInstanceExtensionProperties vkEnumerateInstanceExtensionProperties = 0; - PFN_vkEnumerateInstanceLayerProperties vkEnumerateInstanceLayerProperties = 0; - PFN_vkEnumerateInstanceVersion vkEnumerateInstanceVersion = 0; - PFN_vkEnumeratePhysicalDeviceGroupsKHR vkEnumeratePhysicalDeviceGroupsKHR = 0; - PFN_vkEnumeratePhysicalDeviceGroups vkEnumeratePhysicalDeviceGroups = 0; - PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = 0; - PFN_vkEnumeratePhysicalDevices vkEnumeratePhysicalDevices = 0; - PFN_vkFlushMappedMemoryRanges vkFlushMappedMemoryRanges = 0; - PFN_vkFreeCommandBuffers vkFreeCommandBuffers = 0; - PFN_vkFreeDescriptorSets vkFreeDescriptorSets = 0; - PFN_vkFreeMemory vkFreeMemory = 0; - PFN_vkGetAccelerationStructureBuildSizesKHR vkGetAccelerationStructureBuildSizesKHR = 0; - PFN_vkGetAccelerationStructureDeviceAddressKHR vkGetAccelerationStructureDeviceAddressKHR = 0; - PFN_vkGetAccelerationStructureHandleNV vkGetAccelerationStructureHandleNV = 0; - PFN_vkGetAccelerationStructureMemoryRequirementsNV vkGetAccelerationStructureMemoryRequirementsNV = 0; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - PFN_vkGetAndroidHardwareBufferPropertiesANDROID vkGetAndroidHardwareBufferPropertiesANDROID = 0; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - PFN_vkGetBufferDeviceAddressEXT vkGetBufferDeviceAddressEXT = 0; - PFN_vkGetBufferDeviceAddressKHR vkGetBufferDeviceAddressKHR = 0; - PFN_vkGetBufferDeviceAddress vkGetBufferDeviceAddress = 0; - PFN_vkGetBufferMemoryRequirements vkGetBufferMemoryRequirements = 0; - PFN_vkGetBufferMemoryRequirements2KHR vkGetBufferMemoryRequirements2KHR = 0; - PFN_vkGetBufferMemoryRequirements2 vkGetBufferMemoryRequirements2 = 0; - PFN_vkGetBufferOpaqueCaptureAddressKHR vkGetBufferOpaqueCaptureAddressKHR = 0; - PFN_vkGetBufferOpaqueCaptureAddress vkGetBufferOpaqueCaptureAddress = 0; - PFN_vkGetCalibratedTimestampsEXT vkGetCalibratedTimestampsEXT = 0; - PFN_vkGetDeferredOperationMaxConcurrencyKHR vkGetDeferredOperationMaxConcurrencyKHR = 0; - PFN_vkGetDeferredOperationResultKHR vkGetDeferredOperationResultKHR = 0; - PFN_vkGetDescriptorSetLayoutSupportKHR vkGetDescriptorSetLayoutSupportKHR = 0; - PFN_vkGetDescriptorSetLayoutSupport vkGetDescriptorSetLayoutSupport = 0; - PFN_vkGetDeviceAccelerationStructureCompatibilityKHR vkGetDeviceAccelerationStructureCompatibilityKHR = 0; - PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR vkGetDeviceGroupPeerMemoryFeaturesKHR = 0; - PFN_vkGetDeviceGroupPeerMemoryFeatures vkGetDeviceGroupPeerMemoryFeatures = 0; - PFN_vkGetDeviceGroupPresentCapabilitiesKHR vkGetDeviceGroupPresentCapabilitiesKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetDeviceGroupSurfacePresentModes2EXT vkGetDeviceGroupSurfacePresentModes2EXT = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetDeviceGroupSurfacePresentModesKHR vkGetDeviceGroupSurfacePresentModesKHR = 0; - PFN_vkGetDeviceMemoryCommitment vkGetDeviceMemoryCommitment = 0; - PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR vkGetDeviceMemoryOpaqueCaptureAddressKHR = 0; - PFN_vkGetDeviceMemoryOpaqueCaptureAddress vkGetDeviceMemoryOpaqueCaptureAddress = 0; - PFN_vkGetDeviceProcAddr vkGetDeviceProcAddr = 0; - PFN_vkGetDeviceQueue vkGetDeviceQueue = 0; - PFN_vkGetDeviceQueue2 vkGetDeviceQueue2 = 0; - PFN_vkGetDisplayModeProperties2KHR vkGetDisplayModeProperties2KHR = 0; - PFN_vkGetDisplayModePropertiesKHR vkGetDisplayModePropertiesKHR = 0; - PFN_vkGetDisplayPlaneCapabilities2KHR vkGetDisplayPlaneCapabilities2KHR = 0; - PFN_vkGetDisplayPlaneCapabilitiesKHR vkGetDisplayPlaneCapabilitiesKHR = 0; - PFN_vkGetDisplayPlaneSupportedDisplaysKHR vkGetDisplayPlaneSupportedDisplaysKHR = 0; - PFN_vkGetEventStatus vkGetEventStatus = 0; - PFN_vkGetFenceFdKHR vkGetFenceFdKHR = 0; - PFN_vkGetFenceStatus vkGetFenceStatus = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetFenceWin32HandleKHR vkGetFenceWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetGeneratedCommandsMemoryRequirementsNV vkGetGeneratedCommandsMemoryRequirementsNV = 0; - PFN_vkGetImageDrmFormatModifierPropertiesEXT vkGetImageDrmFormatModifierPropertiesEXT = 0; - PFN_vkGetImageMemoryRequirements vkGetImageMemoryRequirements = 0; - PFN_vkGetImageMemoryRequirements2KHR vkGetImageMemoryRequirements2KHR = 0; - PFN_vkGetImageMemoryRequirements2 vkGetImageMemoryRequirements2 = 0; - PFN_vkGetImageSparseMemoryRequirements vkGetImageSparseMemoryRequirements = 0; - PFN_vkGetImageSparseMemoryRequirements2KHR vkGetImageSparseMemoryRequirements2KHR = 0; - PFN_vkGetImageSparseMemoryRequirements2 vkGetImageSparseMemoryRequirements2 = 0; - PFN_vkGetImageSubresourceLayout vkGetImageSubresourceLayout = 0; - PFN_vkGetImageViewAddressNVX vkGetImageViewAddressNVX = 0; - PFN_vkGetImageViewHandleNVX vkGetImageViewHandleNVX = 0; - PFN_vkGetInstanceProcAddr vkGetInstanceProcAddr = 0; -#ifdef VK_USE_PLATFORM_ANDROID_KHR - PFN_vkGetMemoryAndroidHardwareBufferANDROID vkGetMemoryAndroidHardwareBufferANDROID = 0; -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - PFN_vkGetMemoryFdKHR vkGetMemoryFdKHR = 0; - PFN_vkGetMemoryFdPropertiesKHR vkGetMemoryFdPropertiesKHR = 0; - PFN_vkGetMemoryHostPointerPropertiesEXT vkGetMemoryHostPointerPropertiesEXT = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetMemoryWin32HandleKHR vkGetMemoryWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetMemoryWin32HandleNV vkGetMemoryWin32HandleNV = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetMemoryWin32HandlePropertiesKHR vkGetMemoryWin32HandlePropertiesKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetPastPresentationTimingGOOGLE vkGetPastPresentationTimingGOOGLE = 0; - PFN_vkGetPerformanceParameterINTEL vkGetPerformanceParameterINTEL = 0; - PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = 0; - PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = 0; -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT vkGetPhysicalDeviceDirectFBPresentationSupportEXT = 0; -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR vkGetPhysicalDeviceDisplayPlaneProperties2KHR = 0; - PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR vkGetPhysicalDeviceDisplayPlanePropertiesKHR = 0; - PFN_vkGetPhysicalDeviceDisplayProperties2KHR vkGetPhysicalDeviceDisplayProperties2KHR = 0; - PFN_vkGetPhysicalDeviceDisplayPropertiesKHR vkGetPhysicalDeviceDisplayPropertiesKHR = 0; - PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR vkGetPhysicalDeviceExternalBufferPropertiesKHR = 0; - PFN_vkGetPhysicalDeviceExternalBufferProperties vkGetPhysicalDeviceExternalBufferProperties = 0; - PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR vkGetPhysicalDeviceExternalFencePropertiesKHR = 0; - PFN_vkGetPhysicalDeviceExternalFenceProperties vkGetPhysicalDeviceExternalFenceProperties = 0; - PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV vkGetPhysicalDeviceExternalImageFormatPropertiesNV = 0; - PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = 0; - PFN_vkGetPhysicalDeviceExternalSemaphoreProperties vkGetPhysicalDeviceExternalSemaphoreProperties = 0; - PFN_vkGetPhysicalDeviceFeatures vkGetPhysicalDeviceFeatures = 0; - PFN_vkGetPhysicalDeviceFeatures2KHR vkGetPhysicalDeviceFeatures2KHR = 0; - PFN_vkGetPhysicalDeviceFeatures2 vkGetPhysicalDeviceFeatures2 = 0; - PFN_vkGetPhysicalDeviceFormatProperties vkGetPhysicalDeviceFormatProperties = 0; - PFN_vkGetPhysicalDeviceFormatProperties2KHR vkGetPhysicalDeviceFormatProperties2KHR = 0; - PFN_vkGetPhysicalDeviceFormatProperties2 vkGetPhysicalDeviceFormatProperties2 = 0; - PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR vkGetPhysicalDeviceFragmentShadingRatesKHR = 0; - PFN_vkGetPhysicalDeviceImageFormatProperties vkGetPhysicalDeviceImageFormatProperties = 0; - PFN_vkGetPhysicalDeviceImageFormatProperties2KHR vkGetPhysicalDeviceImageFormatProperties2KHR = 0; - PFN_vkGetPhysicalDeviceImageFormatProperties2 vkGetPhysicalDeviceImageFormatProperties2 = 0; - PFN_vkGetPhysicalDeviceMemoryProperties vkGetPhysicalDeviceMemoryProperties = 0; - PFN_vkGetPhysicalDeviceMemoryProperties2KHR vkGetPhysicalDeviceMemoryProperties2KHR = 0; - PFN_vkGetPhysicalDeviceMemoryProperties2 vkGetPhysicalDeviceMemoryProperties2 = 0; - PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT vkGetPhysicalDeviceMultisamplePropertiesEXT = 0; - PFN_vkGetPhysicalDevicePresentRectanglesKHR vkGetPhysicalDevicePresentRectanglesKHR = 0; - PFN_vkGetPhysicalDeviceProperties vkGetPhysicalDeviceProperties = 0; - PFN_vkGetPhysicalDeviceProperties2KHR vkGetPhysicalDeviceProperties2KHR = 0; - PFN_vkGetPhysicalDeviceProperties2 vkGetPhysicalDeviceProperties2 = 0; - PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = 0; - PFN_vkGetPhysicalDeviceQueueFamilyProperties vkGetPhysicalDeviceQueueFamilyProperties = 0; - PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR vkGetPhysicalDeviceQueueFamilyProperties2KHR = 0; - PFN_vkGetPhysicalDeviceQueueFamilyProperties2 vkGetPhysicalDeviceQueueFamilyProperties2 = 0; -#ifdef VK_USE_PLATFORM_SCREEN_QNX - PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX vkGetPhysicalDeviceScreenPresentationSupportQNX = 0; -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - PFN_vkGetPhysicalDeviceSparseImageFormatProperties vkGetPhysicalDeviceSparseImageFormatProperties = 0; - PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR vkGetPhysicalDeviceSparseImageFormatProperties2KHR = 0; - PFN_vkGetPhysicalDeviceSparseImageFormatProperties2 vkGetPhysicalDeviceSparseImageFormatProperties2 = 0; - PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = 0; - PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT vkGetPhysicalDeviceSurfaceCapabilities2EXT = 0; - PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR vkGetPhysicalDeviceSurfaceCapabilities2KHR = 0; - PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR vkGetPhysicalDeviceSurfaceCapabilitiesKHR = 0; - PFN_vkGetPhysicalDeviceSurfaceFormats2KHR vkGetPhysicalDeviceSurfaceFormats2KHR = 0; - PFN_vkGetPhysicalDeviceSurfaceFormatsKHR vkGetPhysicalDeviceSurfaceFormatsKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT vkGetPhysicalDeviceSurfacePresentModes2EXT = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetPhysicalDeviceSurfacePresentModesKHR vkGetPhysicalDeviceSurfacePresentModesKHR = 0; - PFN_vkGetPhysicalDeviceSurfaceSupportKHR vkGetPhysicalDeviceSurfaceSupportKHR = 0; - PFN_vkGetPhysicalDeviceToolPropertiesEXT vkGetPhysicalDeviceToolPropertiesEXT = 0; -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR vkGetPhysicalDeviceWaylandPresentationSupportKHR = 0; -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR vkGetPhysicalDeviceWin32PresentationSupportKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR vkGetPhysicalDeviceXcbPresentationSupportKHR = 0; -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR vkGetPhysicalDeviceXlibPresentationSupportKHR = 0; -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - PFN_vkGetPipelineCacheData vkGetPipelineCacheData = 0; - PFN_vkGetPipelineExecutableInternalRepresentationsKHR vkGetPipelineExecutableInternalRepresentationsKHR = 0; - PFN_vkGetPipelineExecutablePropertiesKHR vkGetPipelineExecutablePropertiesKHR = 0; - PFN_vkGetPipelineExecutableStatisticsKHR vkGetPipelineExecutableStatisticsKHR = 0; - PFN_vkGetPrivateDataEXT vkGetPrivateDataEXT = 0; - PFN_vkGetQueryPoolResults vkGetQueryPoolResults = 0; - PFN_vkGetQueueCheckpointData2NV vkGetQueueCheckpointData2NV = 0; - PFN_vkGetQueueCheckpointDataNV vkGetQueueCheckpointDataNV = 0; -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - PFN_vkGetRandROutputDisplayEXT vkGetRandROutputDisplayEXT = 0; -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ - PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = 0; - PFN_vkGetRayTracingShaderGroupHandlesNV vkGetRayTracingShaderGroupHandlesNV = 0; - PFN_vkGetRayTracingShaderGroupHandlesKHR vkGetRayTracingShaderGroupHandlesKHR = 0; - PFN_vkGetRayTracingShaderGroupStackSizeKHR vkGetRayTracingShaderGroupStackSizeKHR = 0; - PFN_vkGetRefreshCycleDurationGOOGLE vkGetRefreshCycleDurationGOOGLE = 0; - PFN_vkGetRenderAreaGranularity vkGetRenderAreaGranularity = 0; - PFN_vkGetSemaphoreCounterValueKHR vkGetSemaphoreCounterValueKHR = 0; - PFN_vkGetSemaphoreCounterValue vkGetSemaphoreCounterValue = 0; - PFN_vkGetSemaphoreFdKHR vkGetSemaphoreFdKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetSemaphoreWin32HandleKHR vkGetSemaphoreWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkGetShaderInfoAMD vkGetShaderInfoAMD = 0; - PFN_vkGetSwapchainCounterEXT vkGetSwapchainCounterEXT = 0; - PFN_vkGetSwapchainImagesKHR vkGetSwapchainImagesKHR = 0; - PFN_vkGetSwapchainStatusKHR vkGetSwapchainStatusKHR = 0; - PFN_vkGetValidationCacheDataEXT vkGetValidationCacheDataEXT = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkGetWinrtDisplayNV vkGetWinrtDisplayNV = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkImportFenceFdKHR vkImportFenceFdKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkImportFenceWin32HandleKHR vkImportFenceWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkImportSemaphoreFdKHR vkImportSemaphoreFdKHR = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkImportSemaphoreWin32HandleKHR vkImportSemaphoreWin32HandleKHR = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkInitializePerformanceApiINTEL vkInitializePerformanceApiINTEL = 0; - PFN_vkInvalidateMappedMemoryRanges vkInvalidateMappedMemoryRanges = 0; - PFN_vkMapMemory vkMapMemory = 0; - PFN_vkMergePipelineCaches vkMergePipelineCaches = 0; - PFN_vkMergeValidationCachesEXT vkMergeValidationCachesEXT = 0; - PFN_vkQueueBeginDebugUtilsLabelEXT vkQueueBeginDebugUtilsLabelEXT = 0; - PFN_vkQueueBindSparse vkQueueBindSparse = 0; - PFN_vkQueueEndDebugUtilsLabelEXT vkQueueEndDebugUtilsLabelEXT = 0; - PFN_vkQueueInsertDebugUtilsLabelEXT vkQueueInsertDebugUtilsLabelEXT = 0; - PFN_vkQueuePresentKHR vkQueuePresentKHR = 0; - PFN_vkQueueSetPerformanceConfigurationINTEL vkQueueSetPerformanceConfigurationINTEL = 0; - PFN_vkQueueSubmit vkQueueSubmit = 0; - PFN_vkQueueSubmit2KHR vkQueueSubmit2KHR = 0; - PFN_vkQueueWaitIdle vkQueueWaitIdle = 0; - PFN_vkRegisterDeviceEventEXT vkRegisterDeviceEventEXT = 0; - PFN_vkRegisterDisplayEventEXT vkRegisterDisplayEventEXT = 0; - PFN_vkReleaseDisplayEXT vkReleaseDisplayEXT = 0; -#ifdef VK_USE_PLATFORM_WIN32_KHR - PFN_vkReleaseFullScreenExclusiveModeEXT vkReleaseFullScreenExclusiveModeEXT = 0; -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - PFN_vkReleasePerformanceConfigurationINTEL vkReleasePerformanceConfigurationINTEL = 0; - PFN_vkReleaseProfilingLockKHR vkReleaseProfilingLockKHR = 0; - PFN_vkResetCommandBuffer vkResetCommandBuffer = 0; - PFN_vkResetCommandPool vkResetCommandPool = 0; - PFN_vkResetDescriptorPool vkResetDescriptorPool = 0; - PFN_vkResetEvent vkResetEvent = 0; - PFN_vkResetFences vkResetFences = 0; - PFN_vkResetQueryPoolEXT vkResetQueryPoolEXT = 0; - PFN_vkResetQueryPool vkResetQueryPool = 0; - PFN_vkSetDebugUtilsObjectNameEXT vkSetDebugUtilsObjectNameEXT = 0; - PFN_vkSetDebugUtilsObjectTagEXT vkSetDebugUtilsObjectTagEXT = 0; - PFN_vkSetEvent vkSetEvent = 0; - PFN_vkSetHdrMetadataEXT vkSetHdrMetadataEXT = 0; - PFN_vkSetLocalDimmingAMD vkSetLocalDimmingAMD = 0; - PFN_vkSetPrivateDataEXT vkSetPrivateDataEXT = 0; - PFN_vkSignalSemaphoreKHR vkSignalSemaphoreKHR = 0; - PFN_vkSignalSemaphore vkSignalSemaphore = 0; - PFN_vkSubmitDebugUtilsMessageEXT vkSubmitDebugUtilsMessageEXT = 0; - PFN_vkTrimCommandPoolKHR vkTrimCommandPoolKHR = 0; - PFN_vkTrimCommandPool vkTrimCommandPool = 0; - PFN_vkUninitializePerformanceApiINTEL vkUninitializePerformanceApiINTEL = 0; - PFN_vkUnmapMemory vkUnmapMemory = 0; - PFN_vkUpdateDescriptorSetWithTemplateKHR vkUpdateDescriptorSetWithTemplateKHR = 0; - PFN_vkUpdateDescriptorSetWithTemplate vkUpdateDescriptorSetWithTemplate = 0; - PFN_vkUpdateDescriptorSets vkUpdateDescriptorSets = 0; - PFN_vkWaitForFences vkWaitForFences = 0; - PFN_vkWaitSemaphoresKHR vkWaitSemaphoresKHR = 0; - PFN_vkWaitSemaphores vkWaitSemaphores = 0; - PFN_vkWriteAccelerationStructuresPropertiesKHR vkWriteAccelerationStructuresPropertiesKHR = 0; - - public: - DispatchLoaderDynamic() VULKAN_HPP_NOEXCEPT = default; - DispatchLoaderDynamic( DispatchLoaderDynamic const & rhs ) VULKAN_HPP_NOEXCEPT = default; - -#if !defined(VK_NO_PROTOTYPES) - // This interface is designed to be used for per-device function pointers in combination with a linked vulkan library. - template - void init(VULKAN_HPP_NAMESPACE::Instance const& instance, VULKAN_HPP_NAMESPACE::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); - } - - // This interface is designed to be used for per-device function pointers in combination with a linked vulkan library. - template - void init(VULKAN_HPP_NAMESPACE::Instance const& instance, VULKAN_HPP_NAMESPACE::Device const& device) VULKAN_HPP_NOEXCEPT - { - static DynamicLoader dl; - init(instance, device, dl); - } -#endif // !defined(VK_NO_PROTOTYPES) - - DispatchLoaderDynamic(PFN_vkGetInstanceProcAddr getInstanceProcAddr) VULKAN_HPP_NOEXCEPT - { - init(getInstanceProcAddr); - } - - void init( PFN_vkGetInstanceProcAddr getInstanceProcAddr ) VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_ASSERT(getInstanceProcAddr); - - vkGetInstanceProcAddr = getInstanceProcAddr; - vkCreateInstance = PFN_vkCreateInstance( vkGetInstanceProcAddr( NULL, "vkCreateInstance" ) ); - vkEnumerateInstanceExtensionProperties = PFN_vkEnumerateInstanceExtensionProperties( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceExtensionProperties" ) ); - vkEnumerateInstanceLayerProperties = PFN_vkEnumerateInstanceLayerProperties( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceLayerProperties" ) ); - vkEnumerateInstanceVersion = PFN_vkEnumerateInstanceVersion( vkGetInstanceProcAddr( NULL, "vkEnumerateInstanceVersion" ) ); - } - - // This interface does not require a linked vulkan library. - DispatchLoaderDynamic( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr getDeviceProcAddr = nullptr ) VULKAN_HPP_NOEXCEPT - { - init( instance, getInstanceProcAddr, device, getDeviceProcAddr ); - } - - // This interface does not require a linked vulkan library. - void init( VkInstance instance, PFN_vkGetInstanceProcAddr getInstanceProcAddr, VkDevice device = VK_NULL_HANDLE, PFN_vkGetDeviceProcAddr /*getDeviceProcAddr*/ = nullptr ) VULKAN_HPP_NOEXCEPT - { - VULKAN_HPP_ASSERT(instance && getInstanceProcAddr); - vkGetInstanceProcAddr = getInstanceProcAddr; - init( VULKAN_HPP_NAMESPACE::Instance(instance) ); - if (device) { - init( VULKAN_HPP_NAMESPACE::Device(device) ); - } - } - - void init( VULKAN_HPP_NAMESPACE::Instance instanceCpp ) VULKAN_HPP_NOEXCEPT - { - VkInstance instance = static_cast(instanceCpp); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkAcquireWinrtDisplayNV = PFN_vkAcquireWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkAcquireWinrtDisplayNV" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - vkAcquireXlibDisplayEXT = PFN_vkAcquireXlibDisplayEXT( vkGetInstanceProcAddr( instance, "vkAcquireXlibDisplayEXT" ) ); -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ -#ifdef VK_USE_PLATFORM_ANDROID_KHR - vkCreateAndroidSurfaceKHR = PFN_vkCreateAndroidSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateAndroidSurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - vkCreateDebugReportCallbackEXT = PFN_vkCreateDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugReportCallbackEXT" ) ); - vkCreateDebugUtilsMessengerEXT = PFN_vkCreateDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkCreateDebugUtilsMessengerEXT" ) ); - vkCreateDevice = PFN_vkCreateDevice( vkGetInstanceProcAddr( instance, "vkCreateDevice" ) ); -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - vkCreateDirectFBSurfaceEXT = PFN_vkCreateDirectFBSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateDirectFBSurfaceEXT" ) ); -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - vkCreateDisplayModeKHR = PFN_vkCreateDisplayModeKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayModeKHR" ) ); - vkCreateDisplayPlaneSurfaceKHR = PFN_vkCreateDisplayPlaneSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateDisplayPlaneSurfaceKHR" ) ); - vkCreateHeadlessSurfaceEXT = PFN_vkCreateHeadlessSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateHeadlessSurfaceEXT" ) ); -#ifdef VK_USE_PLATFORM_IOS_MVK - vkCreateIOSSurfaceMVK = PFN_vkCreateIOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateIOSSurfaceMVK" ) ); -#endif /*VK_USE_PLATFORM_IOS_MVK*/ -#ifdef VK_USE_PLATFORM_FUCHSIA - vkCreateImagePipeSurfaceFUCHSIA = PFN_vkCreateImagePipeSurfaceFUCHSIA( vkGetInstanceProcAddr( instance, "vkCreateImagePipeSurfaceFUCHSIA" ) ); -#endif /*VK_USE_PLATFORM_FUCHSIA*/ -#ifdef VK_USE_PLATFORM_MACOS_MVK - vkCreateMacOSSurfaceMVK = PFN_vkCreateMacOSSurfaceMVK( vkGetInstanceProcAddr( instance, "vkCreateMacOSSurfaceMVK" ) ); -#endif /*VK_USE_PLATFORM_MACOS_MVK*/ -#ifdef VK_USE_PLATFORM_METAL_EXT - vkCreateMetalSurfaceEXT = PFN_vkCreateMetalSurfaceEXT( vkGetInstanceProcAddr( instance, "vkCreateMetalSurfaceEXT" ) ); -#endif /*VK_USE_PLATFORM_METAL_EXT*/ -#ifdef VK_USE_PLATFORM_SCREEN_QNX - vkCreateScreenSurfaceQNX = PFN_vkCreateScreenSurfaceQNX( vkGetInstanceProcAddr( instance, "vkCreateScreenSurfaceQNX" ) ); -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ -#ifdef VK_USE_PLATFORM_GGP - vkCreateStreamDescriptorSurfaceGGP = PFN_vkCreateStreamDescriptorSurfaceGGP( vkGetInstanceProcAddr( instance, "vkCreateStreamDescriptorSurfaceGGP" ) ); -#endif /*VK_USE_PLATFORM_GGP*/ -#ifdef VK_USE_PLATFORM_VI_NN - vkCreateViSurfaceNN = PFN_vkCreateViSurfaceNN( vkGetInstanceProcAddr( instance, "vkCreateViSurfaceNN" ) ); -#endif /*VK_USE_PLATFORM_VI_NN*/ -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - vkCreateWaylandSurfaceKHR = PFN_vkCreateWaylandSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWaylandSurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkCreateWin32SurfaceKHR = PFN_vkCreateWin32SurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateWin32SurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - vkCreateXcbSurfaceKHR = PFN_vkCreateXcbSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXcbSurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - vkCreateXlibSurfaceKHR = PFN_vkCreateXlibSurfaceKHR( vkGetInstanceProcAddr( instance, "vkCreateXlibSurfaceKHR" ) ); -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ - vkDebugReportMessageEXT = PFN_vkDebugReportMessageEXT( vkGetInstanceProcAddr( instance, "vkDebugReportMessageEXT" ) ); - vkDestroyDebugReportCallbackEXT = PFN_vkDestroyDebugReportCallbackEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugReportCallbackEXT" ) ); - vkDestroyDebugUtilsMessengerEXT = PFN_vkDestroyDebugUtilsMessengerEXT( vkGetInstanceProcAddr( instance, "vkDestroyDebugUtilsMessengerEXT" ) ); - vkDestroyInstance = PFN_vkDestroyInstance( vkGetInstanceProcAddr( instance, "vkDestroyInstance" ) ); - vkDestroySurfaceKHR = PFN_vkDestroySurfaceKHR( vkGetInstanceProcAddr( instance, "vkDestroySurfaceKHR" ) ); - vkEnumerateDeviceExtensionProperties = PFN_vkEnumerateDeviceExtensionProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceExtensionProperties" ) ); - vkEnumerateDeviceLayerProperties = PFN_vkEnumerateDeviceLayerProperties( vkGetInstanceProcAddr( instance, "vkEnumerateDeviceLayerProperties" ) ); - vkEnumeratePhysicalDeviceGroupsKHR = PFN_vkEnumeratePhysicalDeviceGroupsKHR( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroupsKHR" ) ); - vkEnumeratePhysicalDeviceGroups = PFN_vkEnumeratePhysicalDeviceGroups( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceGroups" ) ); - if ( !vkEnumeratePhysicalDeviceGroups ) vkEnumeratePhysicalDeviceGroups = vkEnumeratePhysicalDeviceGroupsKHR; - vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR = PFN_vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR" ) ); - vkEnumeratePhysicalDevices = PFN_vkEnumeratePhysicalDevices( vkGetInstanceProcAddr( instance, "vkEnumeratePhysicalDevices" ) ); - vkGetDisplayModeProperties2KHR = PFN_vkGetDisplayModeProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModeProperties2KHR" ) ); - vkGetDisplayModePropertiesKHR = PFN_vkGetDisplayModePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayModePropertiesKHR" ) ); - vkGetDisplayPlaneCapabilities2KHR = PFN_vkGetDisplayPlaneCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilities2KHR" ) ); - vkGetDisplayPlaneCapabilitiesKHR = PFN_vkGetDisplayPlaneCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneCapabilitiesKHR" ) ); - vkGetDisplayPlaneSupportedDisplaysKHR = PFN_vkGetDisplayPlaneSupportedDisplaysKHR( vkGetInstanceProcAddr( instance, "vkGetDisplayPlaneSupportedDisplaysKHR" ) ); - vkGetInstanceProcAddr = PFN_vkGetInstanceProcAddr( vkGetInstanceProcAddr( instance, "vkGetInstanceProcAddr" ) ); - vkGetPhysicalDeviceCalibrateableTimeDomainsEXT = PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCalibrateableTimeDomainsEXT" ) ); - vkGetPhysicalDeviceCooperativeMatrixPropertiesNV = PFN_vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceCooperativeMatrixPropertiesNV" ) ); -#ifdef VK_USE_PLATFORM_DIRECTFB_EXT - vkGetPhysicalDeviceDirectFBPresentationSupportEXT = PFN_vkGetPhysicalDeviceDirectFBPresentationSupportEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDirectFBPresentationSupportEXT" ) ); -#endif /*VK_USE_PLATFORM_DIRECTFB_EXT*/ - vkGetPhysicalDeviceDisplayPlaneProperties2KHR = PFN_vkGetPhysicalDeviceDisplayPlaneProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlaneProperties2KHR" ) ); - vkGetPhysicalDeviceDisplayPlanePropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPlanePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPlanePropertiesKHR" ) ); - vkGetPhysicalDeviceDisplayProperties2KHR = PFN_vkGetPhysicalDeviceDisplayProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayProperties2KHR" ) ); - vkGetPhysicalDeviceDisplayPropertiesKHR = PFN_vkGetPhysicalDeviceDisplayPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceDisplayPropertiesKHR" ) ); - vkGetPhysicalDeviceExternalBufferPropertiesKHR = PFN_vkGetPhysicalDeviceExternalBufferPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferPropertiesKHR" ) ); - vkGetPhysicalDeviceExternalBufferProperties = PFN_vkGetPhysicalDeviceExternalBufferProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalBufferProperties" ) ); - if ( !vkGetPhysicalDeviceExternalBufferProperties ) vkGetPhysicalDeviceExternalBufferProperties = vkGetPhysicalDeviceExternalBufferPropertiesKHR; - vkGetPhysicalDeviceExternalFencePropertiesKHR = PFN_vkGetPhysicalDeviceExternalFencePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFencePropertiesKHR" ) ); - vkGetPhysicalDeviceExternalFenceProperties = PFN_vkGetPhysicalDeviceExternalFenceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalFenceProperties" ) ); - if ( !vkGetPhysicalDeviceExternalFenceProperties ) vkGetPhysicalDeviceExternalFenceProperties = vkGetPhysicalDeviceExternalFencePropertiesKHR; - vkGetPhysicalDeviceExternalImageFormatPropertiesNV = PFN_vkGetPhysicalDeviceExternalImageFormatPropertiesNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalImageFormatPropertiesNV" ) ); - vkGetPhysicalDeviceExternalSemaphorePropertiesKHR = PFN_vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphorePropertiesKHR" ) ); - vkGetPhysicalDeviceExternalSemaphoreProperties = PFN_vkGetPhysicalDeviceExternalSemaphoreProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceExternalSemaphoreProperties" ) ); - if ( !vkGetPhysicalDeviceExternalSemaphoreProperties ) vkGetPhysicalDeviceExternalSemaphoreProperties = vkGetPhysicalDeviceExternalSemaphorePropertiesKHR; - vkGetPhysicalDeviceFeatures = PFN_vkGetPhysicalDeviceFeatures( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures" ) ); - vkGetPhysicalDeviceFeatures2KHR = PFN_vkGetPhysicalDeviceFeatures2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2KHR" ) ); - vkGetPhysicalDeviceFeatures2 = PFN_vkGetPhysicalDeviceFeatures2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFeatures2" ) ); - if ( !vkGetPhysicalDeviceFeatures2 ) vkGetPhysicalDeviceFeatures2 = vkGetPhysicalDeviceFeatures2KHR; - vkGetPhysicalDeviceFormatProperties = PFN_vkGetPhysicalDeviceFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties" ) ); - vkGetPhysicalDeviceFormatProperties2KHR = PFN_vkGetPhysicalDeviceFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2KHR" ) ); - vkGetPhysicalDeviceFormatProperties2 = PFN_vkGetPhysicalDeviceFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFormatProperties2" ) ); - if ( !vkGetPhysicalDeviceFormatProperties2 ) vkGetPhysicalDeviceFormatProperties2 = vkGetPhysicalDeviceFormatProperties2KHR; - vkGetPhysicalDeviceFragmentShadingRatesKHR = PFN_vkGetPhysicalDeviceFragmentShadingRatesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceFragmentShadingRatesKHR" ) ); - vkGetPhysicalDeviceImageFormatProperties = PFN_vkGetPhysicalDeviceImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties" ) ); - vkGetPhysicalDeviceImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2KHR" ) ); - vkGetPhysicalDeviceImageFormatProperties2 = PFN_vkGetPhysicalDeviceImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceImageFormatProperties2" ) ); - if ( !vkGetPhysicalDeviceImageFormatProperties2 ) vkGetPhysicalDeviceImageFormatProperties2 = vkGetPhysicalDeviceImageFormatProperties2KHR; - vkGetPhysicalDeviceMemoryProperties = PFN_vkGetPhysicalDeviceMemoryProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties" ) ); - vkGetPhysicalDeviceMemoryProperties2KHR = PFN_vkGetPhysicalDeviceMemoryProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2KHR" ) ); - vkGetPhysicalDeviceMemoryProperties2 = PFN_vkGetPhysicalDeviceMemoryProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMemoryProperties2" ) ); - if ( !vkGetPhysicalDeviceMemoryProperties2 ) vkGetPhysicalDeviceMemoryProperties2 = vkGetPhysicalDeviceMemoryProperties2KHR; - vkGetPhysicalDeviceMultisamplePropertiesEXT = PFN_vkGetPhysicalDeviceMultisamplePropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceMultisamplePropertiesEXT" ) ); - vkGetPhysicalDevicePresentRectanglesKHR = PFN_vkGetPhysicalDevicePresentRectanglesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDevicePresentRectanglesKHR" ) ); - vkGetPhysicalDeviceProperties = PFN_vkGetPhysicalDeviceProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties" ) ); - vkGetPhysicalDeviceProperties2KHR = PFN_vkGetPhysicalDeviceProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2KHR" ) ); - vkGetPhysicalDeviceProperties2 = PFN_vkGetPhysicalDeviceProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceProperties2" ) ); - if ( !vkGetPhysicalDeviceProperties2 ) vkGetPhysicalDeviceProperties2 = vkGetPhysicalDeviceProperties2KHR; - vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR = PFN_vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR" ) ); - vkGetPhysicalDeviceQueueFamilyProperties = PFN_vkGetPhysicalDeviceQueueFamilyProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties" ) ); - vkGetPhysicalDeviceQueueFamilyProperties2KHR = PFN_vkGetPhysicalDeviceQueueFamilyProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2KHR" ) ); - vkGetPhysicalDeviceQueueFamilyProperties2 = PFN_vkGetPhysicalDeviceQueueFamilyProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceQueueFamilyProperties2" ) ); - if ( !vkGetPhysicalDeviceQueueFamilyProperties2 ) vkGetPhysicalDeviceQueueFamilyProperties2 = vkGetPhysicalDeviceQueueFamilyProperties2KHR; -#ifdef VK_USE_PLATFORM_SCREEN_QNX - vkGetPhysicalDeviceScreenPresentationSupportQNX = PFN_vkGetPhysicalDeviceScreenPresentationSupportQNX( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceScreenPresentationSupportQNX" ) ); -#endif /*VK_USE_PLATFORM_SCREEN_QNX*/ - vkGetPhysicalDeviceSparseImageFormatProperties = PFN_vkGetPhysicalDeviceSparseImageFormatProperties( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties" ) ); - vkGetPhysicalDeviceSparseImageFormatProperties2KHR = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2KHR" ) ); - vkGetPhysicalDeviceSparseImageFormatProperties2 = PFN_vkGetPhysicalDeviceSparseImageFormatProperties2( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSparseImageFormatProperties2" ) ); - if ( !vkGetPhysicalDeviceSparseImageFormatProperties2 ) vkGetPhysicalDeviceSparseImageFormatProperties2 = vkGetPhysicalDeviceSparseImageFormatProperties2KHR; - vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV = PFN_vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV" ) ); - vkGetPhysicalDeviceSurfaceCapabilities2EXT = PFN_vkGetPhysicalDeviceSurfaceCapabilities2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2EXT" ) ); - vkGetPhysicalDeviceSurfaceCapabilities2KHR = PFN_vkGetPhysicalDeviceSurfaceCapabilities2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilities2KHR" ) ); - vkGetPhysicalDeviceSurfaceCapabilitiesKHR = PFN_vkGetPhysicalDeviceSurfaceCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceCapabilitiesKHR" ) ); - vkGetPhysicalDeviceSurfaceFormats2KHR = PFN_vkGetPhysicalDeviceSurfaceFormats2KHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormats2KHR" ) ); - vkGetPhysicalDeviceSurfaceFormatsKHR = PFN_vkGetPhysicalDeviceSurfaceFormatsKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceFormatsKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetPhysicalDeviceSurfacePresentModes2EXT = PFN_vkGetPhysicalDeviceSurfacePresentModes2EXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModes2EXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetPhysicalDeviceSurfacePresentModesKHR = PFN_vkGetPhysicalDeviceSurfacePresentModesKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfacePresentModesKHR" ) ); - vkGetPhysicalDeviceSurfaceSupportKHR = PFN_vkGetPhysicalDeviceSurfaceSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceSurfaceSupportKHR" ) ); - vkGetPhysicalDeviceToolPropertiesEXT = PFN_vkGetPhysicalDeviceToolPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceToolPropertiesEXT" ) ); -#ifdef VK_USE_PLATFORM_WAYLAND_KHR - vkGetPhysicalDeviceWaylandPresentationSupportKHR = PFN_vkGetPhysicalDeviceWaylandPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWaylandPresentationSupportKHR" ) ); -#endif /*VK_USE_PLATFORM_WAYLAND_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetPhysicalDeviceWin32PresentationSupportKHR = PFN_vkGetPhysicalDeviceWin32PresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceWin32PresentationSupportKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_XCB_KHR - vkGetPhysicalDeviceXcbPresentationSupportKHR = PFN_vkGetPhysicalDeviceXcbPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXcbPresentationSupportKHR" ) ); -#endif /*VK_USE_PLATFORM_XCB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_KHR - vkGetPhysicalDeviceXlibPresentationSupportKHR = PFN_vkGetPhysicalDeviceXlibPresentationSupportKHR( vkGetInstanceProcAddr( instance, "vkGetPhysicalDeviceXlibPresentationSupportKHR" ) ); -#endif /*VK_USE_PLATFORM_XLIB_KHR*/ -#ifdef VK_USE_PLATFORM_XLIB_XRANDR_EXT - vkGetRandROutputDisplayEXT = PFN_vkGetRandROutputDisplayEXT( vkGetInstanceProcAddr( instance, "vkGetRandROutputDisplayEXT" ) ); -#endif /*VK_USE_PLATFORM_XLIB_XRANDR_EXT*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetWinrtDisplayNV = PFN_vkGetWinrtDisplayNV( vkGetInstanceProcAddr( instance, "vkGetWinrtDisplayNV" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkReleaseDisplayEXT = PFN_vkReleaseDisplayEXT( vkGetInstanceProcAddr( instance, "vkReleaseDisplayEXT" ) ); - vkSubmitDebugUtilsMessageEXT = PFN_vkSubmitDebugUtilsMessageEXT( vkGetInstanceProcAddr( instance, "vkSubmitDebugUtilsMessageEXT" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT( vkGetInstanceProcAddr( instance, "vkAcquireFullScreenExclusiveModeEXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetInstanceProcAddr( instance, "vkAcquireNextImage2KHR" ) ); - vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetInstanceProcAddr( instance, "vkAcquireNextImageKHR" ) ); - vkAcquirePerformanceConfigurationINTEL = PFN_vkAcquirePerformanceConfigurationINTEL( vkGetInstanceProcAddr( instance, "vkAcquirePerformanceConfigurationINTEL" ) ); - vkAcquireProfilingLockKHR = PFN_vkAcquireProfilingLockKHR( vkGetInstanceProcAddr( instance, "vkAcquireProfilingLockKHR" ) ); - vkAllocateCommandBuffers = PFN_vkAllocateCommandBuffers( vkGetInstanceProcAddr( instance, "vkAllocateCommandBuffers" ) ); - vkAllocateDescriptorSets = PFN_vkAllocateDescriptorSets( vkGetInstanceProcAddr( instance, "vkAllocateDescriptorSets" ) ); - vkAllocateMemory = PFN_vkAllocateMemory( vkGetInstanceProcAddr( instance, "vkAllocateMemory" ) ); - vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetInstanceProcAddr( instance, "vkBeginCommandBuffer" ) ); - vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV( vkGetInstanceProcAddr( instance, "vkBindAccelerationStructureMemoryNV" ) ); - vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetInstanceProcAddr( instance, "vkBindBufferMemory" ) ); - vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetInstanceProcAddr( instance, "vkBindBufferMemory2KHR" ) ); - vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetInstanceProcAddr( instance, "vkBindBufferMemory2" ) ); - if ( !vkBindBufferMemory2 ) vkBindBufferMemory2 = vkBindBufferMemory2KHR; - vkBindImageMemory = PFN_vkBindImageMemory( vkGetInstanceProcAddr( instance, "vkBindImageMemory" ) ); - vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetInstanceProcAddr( instance, "vkBindImageMemory2KHR" ) ); - vkBindImageMemory2 = PFN_vkBindImageMemory2( vkGetInstanceProcAddr( instance, "vkBindImageMemory2" ) ); - if ( !vkBindImageMemory2 ) vkBindImageMemory2 = vkBindImageMemory2KHR; - vkBuildAccelerationStructuresKHR = PFN_vkBuildAccelerationStructuresKHR( vkGetInstanceProcAddr( instance, "vkBuildAccelerationStructuresKHR" ) ); - vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginConditionalRenderingEXT" ) ); - vkCmdBeginDebugUtilsLabelEXT = PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginDebugUtilsLabelEXT" ) ); - vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetInstanceProcAddr( instance, "vkCmdBeginQuery" ) ); - vkCmdBeginQueryIndexedEXT = PFN_vkCmdBeginQueryIndexedEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginQueryIndexedEXT" ) ); - vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass" ) ); - vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2KHR" ) ); - vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetInstanceProcAddr( instance, "vkCmdBeginRenderPass2" ) ); - if ( !vkCmdBeginRenderPass2 ) vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR; - vkCmdBeginTransformFeedbackEXT = PFN_vkCmdBeginTransformFeedbackEXT( vkGetInstanceProcAddr( instance, "vkCmdBeginTransformFeedbackEXT" ) ); - vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets( vkGetInstanceProcAddr( instance, "vkCmdBindDescriptorSets" ) ); - vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetInstanceProcAddr( instance, "vkCmdBindIndexBuffer" ) ); - vkCmdBindPipeline = PFN_vkCmdBindPipeline( vkGetInstanceProcAddr( instance, "vkCmdBindPipeline" ) ); - vkCmdBindPipelineShaderGroupNV = PFN_vkCmdBindPipelineShaderGroupNV( vkGetInstanceProcAddr( instance, "vkCmdBindPipelineShaderGroupNV" ) ); - vkCmdBindShadingRateImageNV = PFN_vkCmdBindShadingRateImageNV( vkGetInstanceProcAddr( instance, "vkCmdBindShadingRateImageNV" ) ); - vkCmdBindTransformFeedbackBuffersEXT = PFN_vkCmdBindTransformFeedbackBuffersEXT( vkGetInstanceProcAddr( instance, "vkCmdBindTransformFeedbackBuffersEXT" ) ); - vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers" ) ); - vkCmdBindVertexBuffers2EXT = PFN_vkCmdBindVertexBuffers2EXT( vkGetInstanceProcAddr( instance, "vkCmdBindVertexBuffers2EXT" ) ); - vkCmdBlitImage = PFN_vkCmdBlitImage( vkGetInstanceProcAddr( instance, "vkCmdBlitImage" ) ); - vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdBlitImage2KHR" ) ); - vkCmdBuildAccelerationStructureNV = PFN_vkCmdBuildAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructureNV" ) ); - vkCmdBuildAccelerationStructuresIndirectKHR = PFN_vkCmdBuildAccelerationStructuresIndirectKHR( vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructuresIndirectKHR" ) ); - vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR( vkGetInstanceProcAddr( instance, "vkCmdBuildAccelerationStructuresKHR" ) ); - vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetInstanceProcAddr( instance, "vkCmdClearAttachments" ) ); - vkCmdClearColorImage = PFN_vkCmdClearColorImage( vkGetInstanceProcAddr( instance, "vkCmdClearColorImage" ) ); - vkCmdClearDepthStencilImage = PFN_vkCmdClearDepthStencilImage( vkGetInstanceProcAddr( instance, "vkCmdClearDepthStencilImage" ) ); - vkCmdCopyAccelerationStructureKHR = PFN_vkCmdCopyAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureKHR" ) ); - vkCmdCopyAccelerationStructureNV = PFN_vkCmdCopyAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureNV" ) ); - vkCmdCopyAccelerationStructureToMemoryKHR = PFN_vkCmdCopyAccelerationStructureToMemoryKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyAccelerationStructureToMemoryKHR" ) ); - vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer" ) ); - vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyBuffer2KHR" ) ); - vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage" ) ); - vkCmdCopyBufferToImage2KHR = PFN_vkCmdCopyBufferToImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyBufferToImage2KHR" ) ); - vkCmdCopyImage = PFN_vkCmdCopyImage( vkGetInstanceProcAddr( instance, "vkCmdCopyImage" ) ); - vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyImage2KHR" ) ); - vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer" ) ); - vkCmdCopyImageToBuffer2KHR = PFN_vkCmdCopyImageToBuffer2KHR( vkGetInstanceProcAddr( instance, "vkCmdCopyImageToBuffer2KHR" ) ); - vkCmdCopyMemoryToAccelerationStructureKHR = PFN_vkCmdCopyMemoryToAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCmdCopyMemoryToAccelerationStructureKHR" ) ); - vkCmdCopyQueryPoolResults = PFN_vkCmdCopyQueryPoolResults( vkGetInstanceProcAddr( instance, "vkCmdCopyQueryPoolResults" ) ); - vkCmdDebugMarkerBeginEXT = PFN_vkCmdDebugMarkerBeginEXT( vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerBeginEXT" ) ); - vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerEndEXT" ) ); - vkCmdDebugMarkerInsertEXT = PFN_vkCmdDebugMarkerInsertEXT( vkGetInstanceProcAddr( instance, "vkCmdDebugMarkerInsertEXT" ) ); - vkCmdDispatch = PFN_vkCmdDispatch( vkGetInstanceProcAddr( instance, "vkCmdDispatch" ) ); - vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetInstanceProcAddr( instance, "vkCmdDispatchBaseKHR" ) ); - vkCmdDispatchBase = PFN_vkCmdDispatchBase( vkGetInstanceProcAddr( instance, "vkCmdDispatchBase" ) ); - if ( !vkCmdDispatchBase ) vkCmdDispatchBase = vkCmdDispatchBaseKHR; - vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetInstanceProcAddr( instance, "vkCmdDispatchIndirect" ) ); - vkCmdDraw = PFN_vkCmdDraw( vkGetInstanceProcAddr( instance, "vkCmdDraw" ) ); - vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexed" ) ); - vkCmdDrawIndexedIndirect = PFN_vkCmdDrawIndexedIndirect( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirect" ) ); - vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountAMD" ) ); - vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCountKHR" ) ); - vkCmdDrawIndexedIndirectCount = PFN_vkCmdDrawIndexedIndirectCount( vkGetInstanceProcAddr( instance, "vkCmdDrawIndexedIndirectCount" ) ); - if ( !vkCmdDrawIndexedIndirectCount ) vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR; - if ( !vkCmdDrawIndexedIndirectCount ) vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD; - vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirect" ) ); - vkCmdDrawIndirectByteCountEXT = PFN_vkCmdDrawIndirectByteCountEXT( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectByteCountEXT" ) ); - vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountAMD" ) ); - vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCountKHR" ) ); - vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetInstanceProcAddr( instance, "vkCmdDrawIndirectCount" ) ); - if ( !vkCmdDrawIndirectCount ) vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR; - if ( !vkCmdDrawIndirectCount ) vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD; - vkCmdDrawMeshTasksIndirectCountNV = PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectCountNV" ) ); - vkCmdDrawMeshTasksIndirectNV = PFN_vkCmdDrawMeshTasksIndirectNV( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksIndirectNV" ) ); - vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetInstanceProcAddr( instance, "vkCmdDrawMeshTasksNV" ) ); - vkCmdEndConditionalRenderingEXT = PFN_vkCmdEndConditionalRenderingEXT( vkGetInstanceProcAddr( instance, "vkCmdEndConditionalRenderingEXT" ) ); - vkCmdEndDebugUtilsLabelEXT = PFN_vkCmdEndDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkCmdEndDebugUtilsLabelEXT" ) ); - vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetInstanceProcAddr( instance, "vkCmdEndQuery" ) ); - vkCmdEndQueryIndexedEXT = PFN_vkCmdEndQueryIndexedEXT( vkGetInstanceProcAddr( instance, "vkCmdEndQueryIndexedEXT" ) ); - vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass" ) ); - vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2KHR" ) ); - vkCmdEndRenderPass2 = PFN_vkCmdEndRenderPass2( vkGetInstanceProcAddr( instance, "vkCmdEndRenderPass2" ) ); - if ( !vkCmdEndRenderPass2 ) vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR; - vkCmdEndTransformFeedbackEXT = PFN_vkCmdEndTransformFeedbackEXT( vkGetInstanceProcAddr( instance, "vkCmdEndTransformFeedbackEXT" ) ); - vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetInstanceProcAddr( instance, "vkCmdExecuteCommands" ) ); - vkCmdExecuteGeneratedCommandsNV = PFN_vkCmdExecuteGeneratedCommandsNV( vkGetInstanceProcAddr( instance, "vkCmdExecuteGeneratedCommandsNV" ) ); - vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetInstanceProcAddr( instance, "vkCmdFillBuffer" ) ); - vkCmdInsertDebugUtilsLabelEXT = PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkCmdInsertDebugUtilsLabelEXT" ) ); - vkCmdNextSubpass = PFN_vkCmdNextSubpass( vkGetInstanceProcAddr( instance, "vkCmdNextSubpass" ) ); - vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2KHR" ) ); - vkCmdNextSubpass2 = PFN_vkCmdNextSubpass2( vkGetInstanceProcAddr( instance, "vkCmdNextSubpass2" ) ); - if ( !vkCmdNextSubpass2 ) vkCmdNextSubpass2 = vkCmdNextSubpass2KHR; - vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier" ) ); - vkCmdPipelineBarrier2KHR = PFN_vkCmdPipelineBarrier2KHR( vkGetInstanceProcAddr( instance, "vkCmdPipelineBarrier2KHR" ) ); - vkCmdPreprocessGeneratedCommandsNV = PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetInstanceProcAddr( instance, "vkCmdPreprocessGeneratedCommandsNV" ) ); - vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetInstanceProcAddr( instance, "vkCmdPushConstants" ) ); - vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetKHR" ) ); - vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR( vkGetInstanceProcAddr( instance, "vkCmdPushDescriptorSetWithTemplateKHR" ) ); - vkCmdResetEvent = PFN_vkCmdResetEvent( vkGetInstanceProcAddr( instance, "vkCmdResetEvent" ) ); - vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetInstanceProcAddr( instance, "vkCmdResetEvent2KHR" ) ); - vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( vkGetInstanceProcAddr( instance, "vkCmdResetQueryPool" ) ); - vkCmdResolveImage = PFN_vkCmdResolveImage( vkGetInstanceProcAddr( instance, "vkCmdResolveImage" ) ); - vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetInstanceProcAddr( instance, "vkCmdResolveImage2KHR" ) ); - vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetInstanceProcAddr( instance, "vkCmdSetBlendConstants" ) ); - vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetInstanceProcAddr( instance, "vkCmdSetCheckpointNV" ) ); - vkCmdSetCoarseSampleOrderNV = PFN_vkCmdSetCoarseSampleOrderNV( vkGetInstanceProcAddr( instance, "vkCmdSetCoarseSampleOrderNV" ) ); - vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetInstanceProcAddr( instance, "vkCmdSetCullModeEXT" ) ); - vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBias" ) ); - vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBounds" ) ); - vkCmdSetDepthBoundsTestEnableEXT = PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthBoundsTestEnableEXT" ) ); - vkCmdSetDepthCompareOpEXT = PFN_vkCmdSetDepthCompareOpEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthCompareOpEXT" ) ); - vkCmdSetDepthTestEnableEXT = PFN_vkCmdSetDepthTestEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthTestEnableEXT" ) ); - vkCmdSetDepthWriteEnableEXT = PFN_vkCmdSetDepthWriteEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDepthWriteEnableEXT" ) ); - vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMaskKHR" ) ); - vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetInstanceProcAddr( instance, "vkCmdSetDeviceMask" ) ); - if ( !vkCmdSetDeviceMask ) vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR; - vkCmdSetDiscardRectangleEXT = PFN_vkCmdSetDiscardRectangleEXT( vkGetInstanceProcAddr( instance, "vkCmdSetDiscardRectangleEXT" ) ); - vkCmdSetEvent = PFN_vkCmdSetEvent( vkGetInstanceProcAddr( instance, "vkCmdSetEvent" ) ); - vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetInstanceProcAddr( instance, "vkCmdSetEvent2KHR" ) ); - vkCmdSetExclusiveScissorNV = PFN_vkCmdSetExclusiveScissorNV( vkGetInstanceProcAddr( instance, "vkCmdSetExclusiveScissorNV" ) ); - vkCmdSetFragmentShadingRateEnumNV = PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetInstanceProcAddr( instance, "vkCmdSetFragmentShadingRateEnumNV" ) ); - vkCmdSetFragmentShadingRateKHR = PFN_vkCmdSetFragmentShadingRateKHR( vkGetInstanceProcAddr( instance, "vkCmdSetFragmentShadingRateKHR" ) ); - vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetInstanceProcAddr( instance, "vkCmdSetFrontFaceEXT" ) ); - vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetInstanceProcAddr( instance, "vkCmdSetLineStippleEXT" ) ); - vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( vkGetInstanceProcAddr( instance, "vkCmdSetLineWidth" ) ); - vkCmdSetPerformanceMarkerINTEL = PFN_vkCmdSetPerformanceMarkerINTEL( vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceMarkerINTEL" ) ); - vkCmdSetPerformanceOverrideINTEL = PFN_vkCmdSetPerformanceOverrideINTEL( vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceOverrideINTEL" ) ); - vkCmdSetPerformanceStreamMarkerINTEL = PFN_vkCmdSetPerformanceStreamMarkerINTEL( vkGetInstanceProcAddr( instance, "vkCmdSetPerformanceStreamMarkerINTEL" ) ); - vkCmdSetPrimitiveTopologyEXT = PFN_vkCmdSetPrimitiveTopologyEXT( vkGetInstanceProcAddr( instance, "vkCmdSetPrimitiveTopologyEXT" ) ); - vkCmdSetRayTracingPipelineStackSizeKHR = PFN_vkCmdSetRayTracingPipelineStackSizeKHR( vkGetInstanceProcAddr( instance, "vkCmdSetRayTracingPipelineStackSizeKHR" ) ); - vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT( vkGetInstanceProcAddr( instance, "vkCmdSetSampleLocationsEXT" ) ); - vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetInstanceProcAddr( instance, "vkCmdSetScissor" ) ); - vkCmdSetScissorWithCountEXT = PFN_vkCmdSetScissorWithCountEXT( vkGetInstanceProcAddr( instance, "vkCmdSetScissorWithCountEXT" ) ); - vkCmdSetStencilCompareMask = PFN_vkCmdSetStencilCompareMask( vkGetInstanceProcAddr( instance, "vkCmdSetStencilCompareMask" ) ); - vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetInstanceProcAddr( instance, "vkCmdSetStencilOpEXT" ) ); - vkCmdSetStencilReference = PFN_vkCmdSetStencilReference( vkGetInstanceProcAddr( instance, "vkCmdSetStencilReference" ) ); - vkCmdSetStencilTestEnableEXT = PFN_vkCmdSetStencilTestEnableEXT( vkGetInstanceProcAddr( instance, "vkCmdSetStencilTestEnableEXT" ) ); - vkCmdSetStencilWriteMask = PFN_vkCmdSetStencilWriteMask( vkGetInstanceProcAddr( instance, "vkCmdSetStencilWriteMask" ) ); - vkCmdSetViewport = PFN_vkCmdSetViewport( vkGetInstanceProcAddr( instance, "vkCmdSetViewport" ) ); - vkCmdSetViewportShadingRatePaletteNV = PFN_vkCmdSetViewportShadingRatePaletteNV( vkGetInstanceProcAddr( instance, "vkCmdSetViewportShadingRatePaletteNV" ) ); - vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV( vkGetInstanceProcAddr( instance, "vkCmdSetViewportWScalingNV" ) ); - vkCmdSetViewportWithCountEXT = PFN_vkCmdSetViewportWithCountEXT( vkGetInstanceProcAddr( instance, "vkCmdSetViewportWithCountEXT" ) ); - vkCmdTraceRaysIndirectKHR = PFN_vkCmdTraceRaysIndirectKHR( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysIndirectKHR" ) ); - vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysKHR" ) ); - vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetInstanceProcAddr( instance, "vkCmdTraceRaysNV" ) ); - vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( vkGetInstanceProcAddr( instance, "vkCmdUpdateBuffer" ) ); - vkCmdWaitEvents = PFN_vkCmdWaitEvents( vkGetInstanceProcAddr( instance, "vkCmdWaitEvents" ) ); - vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetInstanceProcAddr( instance, "vkCmdWaitEvents2KHR" ) ); - vkCmdWriteAccelerationStructuresPropertiesKHR = PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) ); - vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkCmdWriteAccelerationStructuresPropertiesNV( vkGetInstanceProcAddr( instance, "vkCmdWriteAccelerationStructuresPropertiesNV" ) ); - vkCmdWriteBufferMarker2AMD = PFN_vkCmdWriteBufferMarker2AMD( vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarker2AMD" ) ); - vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD( vkGetInstanceProcAddr( instance, "vkCmdWriteBufferMarkerAMD" ) ); - vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp" ) ); - vkCmdWriteTimestamp2KHR = PFN_vkCmdWriteTimestamp2KHR( vkGetInstanceProcAddr( instance, "vkCmdWriteTimestamp2KHR" ) ); - vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetInstanceProcAddr( instance, "vkCompileDeferredNV" ) ); - vkCopyAccelerationStructureKHR = PFN_vkCopyAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCopyAccelerationStructureKHR" ) ); - vkCopyAccelerationStructureToMemoryKHR = PFN_vkCopyAccelerationStructureToMemoryKHR( vkGetInstanceProcAddr( instance, "vkCopyAccelerationStructureToMemoryKHR" ) ); - vkCopyMemoryToAccelerationStructureKHR = PFN_vkCopyMemoryToAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCopyMemoryToAccelerationStructureKHR" ) ); - vkCreateAccelerationStructureKHR = PFN_vkCreateAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureKHR" ) ); - vkCreateAccelerationStructureNV = PFN_vkCreateAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkCreateAccelerationStructureNV" ) ); - vkCreateBuffer = PFN_vkCreateBuffer( vkGetInstanceProcAddr( instance, "vkCreateBuffer" ) ); - vkCreateBufferView = PFN_vkCreateBufferView( vkGetInstanceProcAddr( instance, "vkCreateBufferView" ) ); - vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetInstanceProcAddr( instance, "vkCreateCommandPool" ) ); - vkCreateComputePipelines = PFN_vkCreateComputePipelines( vkGetInstanceProcAddr( instance, "vkCreateComputePipelines" ) ); - vkCreateDeferredOperationKHR = PFN_vkCreateDeferredOperationKHR( vkGetInstanceProcAddr( instance, "vkCreateDeferredOperationKHR" ) ); - vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetInstanceProcAddr( instance, "vkCreateDescriptorPool" ) ); - vkCreateDescriptorSetLayout = PFN_vkCreateDescriptorSetLayout( vkGetInstanceProcAddr( instance, "vkCreateDescriptorSetLayout" ) ); - vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR( vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplateKHR" ) ); - vkCreateDescriptorUpdateTemplate = PFN_vkCreateDescriptorUpdateTemplate( vkGetInstanceProcAddr( instance, "vkCreateDescriptorUpdateTemplate" ) ); - if ( !vkCreateDescriptorUpdateTemplate ) vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR; - vkCreateEvent = PFN_vkCreateEvent( vkGetInstanceProcAddr( instance, "vkCreateEvent" ) ); - vkCreateFence = PFN_vkCreateFence( vkGetInstanceProcAddr( instance, "vkCreateFence" ) ); - vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetInstanceProcAddr( instance, "vkCreateFramebuffer" ) ); - vkCreateGraphicsPipelines = PFN_vkCreateGraphicsPipelines( vkGetInstanceProcAddr( instance, "vkCreateGraphicsPipelines" ) ); - vkCreateImage = PFN_vkCreateImage( vkGetInstanceProcAddr( instance, "vkCreateImage" ) ); - vkCreateImageView = PFN_vkCreateImageView( vkGetInstanceProcAddr( instance, "vkCreateImageView" ) ); - vkCreateIndirectCommandsLayoutNV = PFN_vkCreateIndirectCommandsLayoutNV( vkGetInstanceProcAddr( instance, "vkCreateIndirectCommandsLayoutNV" ) ); - vkCreatePipelineCache = PFN_vkCreatePipelineCache( vkGetInstanceProcAddr( instance, "vkCreatePipelineCache" ) ); - vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetInstanceProcAddr( instance, "vkCreatePipelineLayout" ) ); - vkCreatePrivateDataSlotEXT = PFN_vkCreatePrivateDataSlotEXT( vkGetInstanceProcAddr( instance, "vkCreatePrivateDataSlotEXT" ) ); - vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetInstanceProcAddr( instance, "vkCreateQueryPool" ) ); - vkCreateRayTracingPipelinesKHR = PFN_vkCreateRayTracingPipelinesKHR( vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesKHR" ) ); - vkCreateRayTracingPipelinesNV = PFN_vkCreateRayTracingPipelinesNV( vkGetInstanceProcAddr( instance, "vkCreateRayTracingPipelinesNV" ) ); - vkCreateRenderPass = PFN_vkCreateRenderPass( vkGetInstanceProcAddr( instance, "vkCreateRenderPass" ) ); - vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetInstanceProcAddr( instance, "vkCreateRenderPass2KHR" ) ); - vkCreateRenderPass2 = PFN_vkCreateRenderPass2( vkGetInstanceProcAddr( instance, "vkCreateRenderPass2" ) ); - if ( !vkCreateRenderPass2 ) vkCreateRenderPass2 = vkCreateRenderPass2KHR; - vkCreateSampler = PFN_vkCreateSampler( vkGetInstanceProcAddr( instance, "vkCreateSampler" ) ); - vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR( vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversionKHR" ) ); - vkCreateSamplerYcbcrConversion = PFN_vkCreateSamplerYcbcrConversion( vkGetInstanceProcAddr( instance, "vkCreateSamplerYcbcrConversion" ) ); - if ( !vkCreateSamplerYcbcrConversion ) vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR; - vkCreateSemaphore = PFN_vkCreateSemaphore( vkGetInstanceProcAddr( instance, "vkCreateSemaphore" ) ); - vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetInstanceProcAddr( instance, "vkCreateShaderModule" ) ); - vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR( vkGetInstanceProcAddr( instance, "vkCreateSharedSwapchainsKHR" ) ); - vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetInstanceProcAddr( instance, "vkCreateSwapchainKHR" ) ); - vkCreateValidationCacheEXT = PFN_vkCreateValidationCacheEXT( vkGetInstanceProcAddr( instance, "vkCreateValidationCacheEXT" ) ); - vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT( vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectNameEXT" ) ); - vkDebugMarkerSetObjectTagEXT = PFN_vkDebugMarkerSetObjectTagEXT( vkGetInstanceProcAddr( instance, "vkDebugMarkerSetObjectTagEXT" ) ); - vkDeferredOperationJoinKHR = PFN_vkDeferredOperationJoinKHR( vkGetInstanceProcAddr( instance, "vkDeferredOperationJoinKHR" ) ); - vkDestroyAccelerationStructureKHR = PFN_vkDestroyAccelerationStructureKHR( vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureKHR" ) ); - vkDestroyAccelerationStructureNV = PFN_vkDestroyAccelerationStructureNV( vkGetInstanceProcAddr( instance, "vkDestroyAccelerationStructureNV" ) ); - vkDestroyBuffer = PFN_vkDestroyBuffer( vkGetInstanceProcAddr( instance, "vkDestroyBuffer" ) ); - vkDestroyBufferView = PFN_vkDestroyBufferView( vkGetInstanceProcAddr( instance, "vkDestroyBufferView" ) ); - vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetInstanceProcAddr( instance, "vkDestroyCommandPool" ) ); - vkDestroyDeferredOperationKHR = PFN_vkDestroyDeferredOperationKHR( vkGetInstanceProcAddr( instance, "vkDestroyDeferredOperationKHR" ) ); - vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorPool" ) ); - vkDestroyDescriptorSetLayout = PFN_vkDestroyDescriptorSetLayout( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorSetLayout" ) ); - vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplateKHR" ) ); - vkDestroyDescriptorUpdateTemplate = PFN_vkDestroyDescriptorUpdateTemplate( vkGetInstanceProcAddr( instance, "vkDestroyDescriptorUpdateTemplate" ) ); - if ( !vkDestroyDescriptorUpdateTemplate ) vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR; - vkDestroyDevice = PFN_vkDestroyDevice( vkGetInstanceProcAddr( instance, "vkDestroyDevice" ) ); - vkDestroyEvent = PFN_vkDestroyEvent( vkGetInstanceProcAddr( instance, "vkDestroyEvent" ) ); - vkDestroyFence = PFN_vkDestroyFence( vkGetInstanceProcAddr( instance, "vkDestroyFence" ) ); - vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetInstanceProcAddr( instance, "vkDestroyFramebuffer" ) ); - vkDestroyImage = PFN_vkDestroyImage( vkGetInstanceProcAddr( instance, "vkDestroyImage" ) ); - vkDestroyImageView = PFN_vkDestroyImageView( vkGetInstanceProcAddr( instance, "vkDestroyImageView" ) ); - vkDestroyIndirectCommandsLayoutNV = PFN_vkDestroyIndirectCommandsLayoutNV( vkGetInstanceProcAddr( instance, "vkDestroyIndirectCommandsLayoutNV" ) ); - vkDestroyPipeline = PFN_vkDestroyPipeline( vkGetInstanceProcAddr( instance, "vkDestroyPipeline" ) ); - vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetInstanceProcAddr( instance, "vkDestroyPipelineCache" ) ); - vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout( vkGetInstanceProcAddr( instance, "vkDestroyPipelineLayout" ) ); - vkDestroyPrivateDataSlotEXT = PFN_vkDestroyPrivateDataSlotEXT( vkGetInstanceProcAddr( instance, "vkDestroyPrivateDataSlotEXT" ) ); - vkDestroyQueryPool = PFN_vkDestroyQueryPool( vkGetInstanceProcAddr( instance, "vkDestroyQueryPool" ) ); - vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetInstanceProcAddr( instance, "vkDestroyRenderPass" ) ); - vkDestroySampler = PFN_vkDestroySampler( vkGetInstanceProcAddr( instance, "vkDestroySampler" ) ); - vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR( vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversionKHR" ) ); - vkDestroySamplerYcbcrConversion = PFN_vkDestroySamplerYcbcrConversion( vkGetInstanceProcAddr( instance, "vkDestroySamplerYcbcrConversion" ) ); - if ( !vkDestroySamplerYcbcrConversion ) vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR; - vkDestroySemaphore = PFN_vkDestroySemaphore( vkGetInstanceProcAddr( instance, "vkDestroySemaphore" ) ); - vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetInstanceProcAddr( instance, "vkDestroyShaderModule" ) ); - vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetInstanceProcAddr( instance, "vkDestroySwapchainKHR" ) ); - vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT( vkGetInstanceProcAddr( instance, "vkDestroyValidationCacheEXT" ) ); - vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetInstanceProcAddr( instance, "vkDeviceWaitIdle" ) ); - vkDisplayPowerControlEXT = PFN_vkDisplayPowerControlEXT( vkGetInstanceProcAddr( instance, "vkDisplayPowerControlEXT" ) ); - vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetInstanceProcAddr( instance, "vkEndCommandBuffer" ) ); - vkFlushMappedMemoryRanges = PFN_vkFlushMappedMemoryRanges( vkGetInstanceProcAddr( instance, "vkFlushMappedMemoryRanges" ) ); - vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetInstanceProcAddr( instance, "vkFreeCommandBuffers" ) ); - vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetInstanceProcAddr( instance, "vkFreeDescriptorSets" ) ); - vkFreeMemory = PFN_vkFreeMemory( vkGetInstanceProcAddr( instance, "vkFreeMemory" ) ); - vkGetAccelerationStructureBuildSizesKHR = PFN_vkGetAccelerationStructureBuildSizesKHR( vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureBuildSizesKHR" ) ); - vkGetAccelerationStructureDeviceAddressKHR = PFN_vkGetAccelerationStructureDeviceAddressKHR( vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureDeviceAddressKHR" ) ); - vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV( vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureHandleNV" ) ); - vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkGetAccelerationStructureMemoryRequirementsNV( vkGetInstanceProcAddr( instance, "vkGetAccelerationStructureMemoryRequirementsNV" ) ); -#ifdef VK_USE_PLATFORM_ANDROID_KHR - vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID( vkGetInstanceProcAddr( instance, "vkGetAndroidHardwareBufferPropertiesANDROID" ) ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - vkGetBufferDeviceAddressEXT = PFN_vkGetBufferDeviceAddressEXT( vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddressEXT" ) ); - vkGetBufferDeviceAddressKHR = PFN_vkGetBufferDeviceAddressKHR( vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddressKHR" ) ); - vkGetBufferDeviceAddress = PFN_vkGetBufferDeviceAddress( vkGetInstanceProcAddr( instance, "vkGetBufferDeviceAddress" ) ); - if ( !vkGetBufferDeviceAddress ) vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR; - if ( !vkGetBufferDeviceAddress ) vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT; - vkGetBufferMemoryRequirements = PFN_vkGetBufferMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements" ) ); - vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR( vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2KHR" ) ); - vkGetBufferMemoryRequirements2 = PFN_vkGetBufferMemoryRequirements2( vkGetInstanceProcAddr( instance, "vkGetBufferMemoryRequirements2" ) ); - if ( !vkGetBufferMemoryRequirements2 ) vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR; - vkGetBufferOpaqueCaptureAddressKHR = PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetInstanceProcAddr( instance, "vkGetBufferOpaqueCaptureAddressKHR" ) ); - vkGetBufferOpaqueCaptureAddress = PFN_vkGetBufferOpaqueCaptureAddress( vkGetInstanceProcAddr( instance, "vkGetBufferOpaqueCaptureAddress" ) ); - if ( !vkGetBufferOpaqueCaptureAddress ) vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR; - vkGetCalibratedTimestampsEXT = PFN_vkGetCalibratedTimestampsEXT( vkGetInstanceProcAddr( instance, "vkGetCalibratedTimestampsEXT" ) ); - vkGetDeferredOperationMaxConcurrencyKHR = PFN_vkGetDeferredOperationMaxConcurrencyKHR( vkGetInstanceProcAddr( instance, "vkGetDeferredOperationMaxConcurrencyKHR" ) ); - vkGetDeferredOperationResultKHR = PFN_vkGetDeferredOperationResultKHR( vkGetInstanceProcAddr( instance, "vkGetDeferredOperationResultKHR" ) ); - vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupportKHR" ) ); - vkGetDescriptorSetLayoutSupport = PFN_vkGetDescriptorSetLayoutSupport( vkGetInstanceProcAddr( instance, "vkGetDescriptorSetLayoutSupport" ) ); - if ( !vkGetDescriptorSetLayoutSupport ) vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR; - vkGetDeviceAccelerationStructureCompatibilityKHR = PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) ); - vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) ); - vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPeerMemoryFeatures" ) ); - if ( !vkGetDeviceGroupPeerMemoryFeatures ) vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR; - vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupPresentCapabilitiesKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetDeviceGroupSurfacePresentModes2EXT = PFN_vkGetDeviceGroupSurfacePresentModes2EXT( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModes2EXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceGroupSurfacePresentModesKHR" ) ); - vkGetDeviceMemoryCommitment = PFN_vkGetDeviceMemoryCommitment( vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryCommitment" ) ); - vkGetDeviceMemoryOpaqueCaptureAddressKHR = PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) ); - vkGetDeviceMemoryOpaqueCaptureAddress = PFN_vkGetDeviceMemoryOpaqueCaptureAddress( vkGetInstanceProcAddr( instance, "vkGetDeviceMemoryOpaqueCaptureAddress" ) ); - if ( !vkGetDeviceMemoryOpaqueCaptureAddress ) vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR; - vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetInstanceProcAddr( instance, "vkGetDeviceProcAddr" ) ); - vkGetDeviceQueue = PFN_vkGetDeviceQueue( vkGetInstanceProcAddr( instance, "vkGetDeviceQueue" ) ); - vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetInstanceProcAddr( instance, "vkGetDeviceQueue2" ) ); - vkGetEventStatus = PFN_vkGetEventStatus( vkGetInstanceProcAddr( instance, "vkGetEventStatus" ) ); - vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( vkGetInstanceProcAddr( instance, "vkGetFenceFdKHR" ) ); - vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetInstanceProcAddr( instance, "vkGetFenceStatus" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetFenceWin32HandleKHR = PFN_vkGetFenceWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkGetFenceWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetGeneratedCommandsMemoryRequirementsNV = PFN_vkGetGeneratedCommandsMemoryRequirementsNV( vkGetInstanceProcAddr( instance, "vkGetGeneratedCommandsMemoryRequirementsNV" ) ); - vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkGetImageDrmFormatModifierPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetImageDrmFormatModifierPropertiesEXT" ) ); - vkGetImageMemoryRequirements = PFN_vkGetImageMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements" ) ); - vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR( vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2KHR" ) ); - vkGetImageMemoryRequirements2 = PFN_vkGetImageMemoryRequirements2( vkGetInstanceProcAddr( instance, "vkGetImageMemoryRequirements2" ) ); - if ( !vkGetImageMemoryRequirements2 ) vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR; - vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements( vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements" ) ); - vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR( vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2KHR" ) ); - vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2( vkGetInstanceProcAddr( instance, "vkGetImageSparseMemoryRequirements2" ) ); - if ( !vkGetImageSparseMemoryRequirements2 ) vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR; - vkGetImageSubresourceLayout = PFN_vkGetImageSubresourceLayout( vkGetInstanceProcAddr( instance, "vkGetImageSubresourceLayout" ) ); - vkGetImageViewAddressNVX = PFN_vkGetImageViewAddressNVX( vkGetInstanceProcAddr( instance, "vkGetImageViewAddressNVX" ) ); - vkGetImageViewHandleNVX = PFN_vkGetImageViewHandleNVX( vkGetInstanceProcAddr( instance, "vkGetImageViewHandleNVX" ) ); -#ifdef VK_USE_PLATFORM_ANDROID_KHR - vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID( vkGetInstanceProcAddr( instance, "vkGetMemoryAndroidHardwareBufferANDROID" ) ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryFdKHR" ) ); - vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryFdPropertiesKHR" ) ); - vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT( vkGetInstanceProcAddr( instance, "vkGetMemoryHostPointerPropertiesEXT" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetMemoryWin32HandleKHR = PFN_vkGetMemoryWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV( vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandleNV" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetMemoryWin32HandlePropertiesKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE( vkGetInstanceProcAddr( instance, "vkGetPastPresentationTimingGOOGLE" ) ); - vkGetPerformanceParameterINTEL = PFN_vkGetPerformanceParameterINTEL( vkGetInstanceProcAddr( instance, "vkGetPerformanceParameterINTEL" ) ); - vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetInstanceProcAddr( instance, "vkGetPipelineCacheData" ) ); - vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); - vkGetPipelineExecutablePropertiesKHR = PFN_vkGetPipelineExecutablePropertiesKHR( vkGetInstanceProcAddr( instance, "vkGetPipelineExecutablePropertiesKHR" ) ); - vkGetPipelineExecutableStatisticsKHR = PFN_vkGetPipelineExecutableStatisticsKHR( vkGetInstanceProcAddr( instance, "vkGetPipelineExecutableStatisticsKHR" ) ); - vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetInstanceProcAddr( instance, "vkGetPrivateDataEXT" ) ); - vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetInstanceProcAddr( instance, "vkGetQueryPoolResults" ) ); - vkGetQueueCheckpointData2NV = PFN_vkGetQueueCheckpointData2NV( vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointData2NV" ) ); - vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV( vkGetInstanceProcAddr( instance, "vkGetQueueCheckpointDataNV" ) ); - vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( vkGetInstanceProcAddr( instance, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) ); - vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV( vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesNV" ) ); - vkGetRayTracingShaderGroupHandlesKHR = PFN_vkGetRayTracingShaderGroupHandlesKHR( vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupHandlesKHR" ) ); - if ( !vkGetRayTracingShaderGroupHandlesKHR ) vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV; - vkGetRayTracingShaderGroupStackSizeKHR = PFN_vkGetRayTracingShaderGroupStackSizeKHR( vkGetInstanceProcAddr( instance, "vkGetRayTracingShaderGroupStackSizeKHR" ) ); - vkGetRefreshCycleDurationGOOGLE = PFN_vkGetRefreshCycleDurationGOOGLE( vkGetInstanceProcAddr( instance, "vkGetRefreshCycleDurationGOOGLE" ) ); - vkGetRenderAreaGranularity = PFN_vkGetRenderAreaGranularity( vkGetInstanceProcAddr( instance, "vkGetRenderAreaGranularity" ) ); - vkGetSemaphoreCounterValueKHR = PFN_vkGetSemaphoreCounterValueKHR( vkGetInstanceProcAddr( instance, "vkGetSemaphoreCounterValueKHR" ) ); - vkGetSemaphoreCounterValue = PFN_vkGetSemaphoreCounterValue( vkGetInstanceProcAddr( instance, "vkGetSemaphoreCounterValue" ) ); - if ( !vkGetSemaphoreCounterValue ) vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR; - vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetInstanceProcAddr( instance, "vkGetSemaphoreFdKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetSemaphoreWin32HandleKHR = PFN_vkGetSemaphoreWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkGetSemaphoreWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetInstanceProcAddr( instance, "vkGetShaderInfoAMD" ) ); - vkGetSwapchainCounterEXT = PFN_vkGetSwapchainCounterEXT( vkGetInstanceProcAddr( instance, "vkGetSwapchainCounterEXT" ) ); - vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR( vkGetInstanceProcAddr( instance, "vkGetSwapchainImagesKHR" ) ); - vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR( vkGetInstanceProcAddr( instance, "vkGetSwapchainStatusKHR" ) ); - vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT( vkGetInstanceProcAddr( instance, "vkGetValidationCacheDataEXT" ) ); - vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetInstanceProcAddr( instance, "vkImportFenceFdKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkImportFenceWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetInstanceProcAddr( instance, "vkImportSemaphoreFdKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR( vkGetInstanceProcAddr( instance, "vkImportSemaphoreWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkInitializePerformanceApiINTEL = PFN_vkInitializePerformanceApiINTEL( vkGetInstanceProcAddr( instance, "vkInitializePerformanceApiINTEL" ) ); - vkInvalidateMappedMemoryRanges = PFN_vkInvalidateMappedMemoryRanges( vkGetInstanceProcAddr( instance, "vkInvalidateMappedMemoryRanges" ) ); - vkMapMemory = PFN_vkMapMemory( vkGetInstanceProcAddr( instance, "vkMapMemory" ) ); - vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetInstanceProcAddr( instance, "vkMergePipelineCaches" ) ); - vkMergeValidationCachesEXT = PFN_vkMergeValidationCachesEXT( vkGetInstanceProcAddr( instance, "vkMergeValidationCachesEXT" ) ); - vkQueueBeginDebugUtilsLabelEXT = PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkQueueBeginDebugUtilsLabelEXT" ) ); - vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetInstanceProcAddr( instance, "vkQueueBindSparse" ) ); - vkQueueEndDebugUtilsLabelEXT = PFN_vkQueueEndDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkQueueEndDebugUtilsLabelEXT" ) ); - vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetInstanceProcAddr( instance, "vkQueueInsertDebugUtilsLabelEXT" ) ); - vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetInstanceProcAddr( instance, "vkQueuePresentKHR" ) ); - vkQueueSetPerformanceConfigurationINTEL = PFN_vkQueueSetPerformanceConfigurationINTEL( vkGetInstanceProcAddr( instance, "vkQueueSetPerformanceConfigurationINTEL" ) ); - vkQueueSubmit = PFN_vkQueueSubmit( vkGetInstanceProcAddr( instance, "vkQueueSubmit" ) ); - vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetInstanceProcAddr( instance, "vkQueueSubmit2KHR" ) ); - vkQueueWaitIdle = PFN_vkQueueWaitIdle( vkGetInstanceProcAddr( instance, "vkQueueWaitIdle" ) ); - vkRegisterDeviceEventEXT = PFN_vkRegisterDeviceEventEXT( vkGetInstanceProcAddr( instance, "vkRegisterDeviceEventEXT" ) ); - vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT( vkGetInstanceProcAddr( instance, "vkRegisterDisplayEventEXT" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT( vkGetInstanceProcAddr( instance, "vkReleaseFullScreenExclusiveModeEXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkReleasePerformanceConfigurationINTEL = PFN_vkReleasePerformanceConfigurationINTEL( vkGetInstanceProcAddr( instance, "vkReleasePerformanceConfigurationINTEL" ) ); - vkReleaseProfilingLockKHR = PFN_vkReleaseProfilingLockKHR( vkGetInstanceProcAddr( instance, "vkReleaseProfilingLockKHR" ) ); - vkResetCommandBuffer = PFN_vkResetCommandBuffer( vkGetInstanceProcAddr( instance, "vkResetCommandBuffer" ) ); - vkResetCommandPool = PFN_vkResetCommandPool( vkGetInstanceProcAddr( instance, "vkResetCommandPool" ) ); - vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetInstanceProcAddr( instance, "vkResetDescriptorPool" ) ); - vkResetEvent = PFN_vkResetEvent( vkGetInstanceProcAddr( instance, "vkResetEvent" ) ); - vkResetFences = PFN_vkResetFences( vkGetInstanceProcAddr( instance, "vkResetFences" ) ); - vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetInstanceProcAddr( instance, "vkResetQueryPoolEXT" ) ); - vkResetQueryPool = PFN_vkResetQueryPool( vkGetInstanceProcAddr( instance, "vkResetQueryPool" ) ); - if ( !vkResetQueryPool ) vkResetQueryPool = vkResetQueryPoolEXT; - vkSetDebugUtilsObjectNameEXT = PFN_vkSetDebugUtilsObjectNameEXT( vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectNameEXT" ) ); - vkSetDebugUtilsObjectTagEXT = PFN_vkSetDebugUtilsObjectTagEXT( vkGetInstanceProcAddr( instance, "vkSetDebugUtilsObjectTagEXT" ) ); - vkSetEvent = PFN_vkSetEvent( vkGetInstanceProcAddr( instance, "vkSetEvent" ) ); - vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetInstanceProcAddr( instance, "vkSetHdrMetadataEXT" ) ); - vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetInstanceProcAddr( instance, "vkSetLocalDimmingAMD" ) ); - vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetInstanceProcAddr( instance, "vkSetPrivateDataEXT" ) ); - vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetInstanceProcAddr( instance, "vkSignalSemaphoreKHR" ) ); - vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetInstanceProcAddr( instance, "vkSignalSemaphore" ) ); - if ( !vkSignalSemaphore ) vkSignalSemaphore = vkSignalSemaphoreKHR; - vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetInstanceProcAddr( instance, "vkTrimCommandPoolKHR" ) ); - vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetInstanceProcAddr( instance, "vkTrimCommandPool" ) ); - if ( !vkTrimCommandPool ) vkTrimCommandPool = vkTrimCommandPoolKHR; - vkUninitializePerformanceApiINTEL = PFN_vkUninitializePerformanceApiINTEL( vkGetInstanceProcAddr( instance, "vkUninitializePerformanceApiINTEL" ) ); - vkUnmapMemory = PFN_vkUnmapMemory( vkGetInstanceProcAddr( instance, "vkUnmapMemory" ) ); - vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR( vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplateKHR" ) ); - vkUpdateDescriptorSetWithTemplate = PFN_vkUpdateDescriptorSetWithTemplate( vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSetWithTemplate" ) ); - if ( !vkUpdateDescriptorSetWithTemplate ) vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR; - vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetInstanceProcAddr( instance, "vkUpdateDescriptorSets" ) ); - vkWaitForFences = PFN_vkWaitForFences( vkGetInstanceProcAddr( instance, "vkWaitForFences" ) ); - vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetInstanceProcAddr( instance, "vkWaitSemaphoresKHR" ) ); - vkWaitSemaphores = PFN_vkWaitSemaphores( vkGetInstanceProcAddr( instance, "vkWaitSemaphores" ) ); - if ( !vkWaitSemaphores ) vkWaitSemaphores = vkWaitSemaphoresKHR; - vkWriteAccelerationStructuresPropertiesKHR = PFN_vkWriteAccelerationStructuresPropertiesKHR( vkGetInstanceProcAddr( instance, "vkWriteAccelerationStructuresPropertiesKHR" ) ); - } - - void init( VULKAN_HPP_NAMESPACE::Device deviceCpp ) VULKAN_HPP_NOEXCEPT - { - VkDevice device = static_cast(deviceCpp); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkAcquireFullScreenExclusiveModeEXT = PFN_vkAcquireFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkAcquireFullScreenExclusiveModeEXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkAcquireNextImage2KHR = PFN_vkAcquireNextImage2KHR( vkGetDeviceProcAddr( device, "vkAcquireNextImage2KHR" ) ); - vkAcquireNextImageKHR = PFN_vkAcquireNextImageKHR( vkGetDeviceProcAddr( device, "vkAcquireNextImageKHR" ) ); - vkAcquirePerformanceConfigurationINTEL = PFN_vkAcquirePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkAcquirePerformanceConfigurationINTEL" ) ); - vkAcquireProfilingLockKHR = PFN_vkAcquireProfilingLockKHR( vkGetDeviceProcAddr( device, "vkAcquireProfilingLockKHR" ) ); - vkAllocateCommandBuffers = PFN_vkAllocateCommandBuffers( vkGetDeviceProcAddr( device, "vkAllocateCommandBuffers" ) ); - vkAllocateDescriptorSets = PFN_vkAllocateDescriptorSets( vkGetDeviceProcAddr( device, "vkAllocateDescriptorSets" ) ); - vkAllocateMemory = PFN_vkAllocateMemory( vkGetDeviceProcAddr( device, "vkAllocateMemory" ) ); - vkBeginCommandBuffer = PFN_vkBeginCommandBuffer( vkGetDeviceProcAddr( device, "vkBeginCommandBuffer" ) ); - vkBindAccelerationStructureMemoryNV = PFN_vkBindAccelerationStructureMemoryNV( vkGetDeviceProcAddr( device, "vkBindAccelerationStructureMemoryNV" ) ); - vkBindBufferMemory = PFN_vkBindBufferMemory( vkGetDeviceProcAddr( device, "vkBindBufferMemory" ) ); - vkBindBufferMemory2KHR = PFN_vkBindBufferMemory2KHR( vkGetDeviceProcAddr( device, "vkBindBufferMemory2KHR" ) ); - vkBindBufferMemory2 = PFN_vkBindBufferMemory2( vkGetDeviceProcAddr( device, "vkBindBufferMemory2" ) ); - if ( !vkBindBufferMemory2 ) vkBindBufferMemory2 = vkBindBufferMemory2KHR; - vkBindImageMemory = PFN_vkBindImageMemory( vkGetDeviceProcAddr( device, "vkBindImageMemory" ) ); - vkBindImageMemory2KHR = PFN_vkBindImageMemory2KHR( vkGetDeviceProcAddr( device, "vkBindImageMemory2KHR" ) ); - vkBindImageMemory2 = PFN_vkBindImageMemory2( vkGetDeviceProcAddr( device, "vkBindImageMemory2" ) ); - if ( !vkBindImageMemory2 ) vkBindImageMemory2 = vkBindImageMemory2KHR; - vkBuildAccelerationStructuresKHR = PFN_vkBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkBuildAccelerationStructuresKHR" ) ); - vkCmdBeginConditionalRenderingEXT = PFN_vkCmdBeginConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdBeginConditionalRenderingEXT" ) ); - vkCmdBeginDebugUtilsLabelEXT = PFN_vkCmdBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdBeginDebugUtilsLabelEXT" ) ); - vkCmdBeginQuery = PFN_vkCmdBeginQuery( vkGetDeviceProcAddr( device, "vkCmdBeginQuery" ) ); - vkCmdBeginQueryIndexedEXT = PFN_vkCmdBeginQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdBeginQueryIndexedEXT" ) ); - vkCmdBeginRenderPass = PFN_vkCmdBeginRenderPass( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass" ) ); - vkCmdBeginRenderPass2KHR = PFN_vkCmdBeginRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2KHR" ) ); - vkCmdBeginRenderPass2 = PFN_vkCmdBeginRenderPass2( vkGetDeviceProcAddr( device, "vkCmdBeginRenderPass2" ) ); - if ( !vkCmdBeginRenderPass2 ) vkCmdBeginRenderPass2 = vkCmdBeginRenderPass2KHR; - vkCmdBeginTransformFeedbackEXT = PFN_vkCmdBeginTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdBeginTransformFeedbackEXT" ) ); - vkCmdBindDescriptorSets = PFN_vkCmdBindDescriptorSets( vkGetDeviceProcAddr( device, "vkCmdBindDescriptorSets" ) ); - vkCmdBindIndexBuffer = PFN_vkCmdBindIndexBuffer( vkGetDeviceProcAddr( device, "vkCmdBindIndexBuffer" ) ); - vkCmdBindPipeline = PFN_vkCmdBindPipeline( vkGetDeviceProcAddr( device, "vkCmdBindPipeline" ) ); - vkCmdBindPipelineShaderGroupNV = PFN_vkCmdBindPipelineShaderGroupNV( vkGetDeviceProcAddr( device, "vkCmdBindPipelineShaderGroupNV" ) ); - vkCmdBindShadingRateImageNV = PFN_vkCmdBindShadingRateImageNV( vkGetDeviceProcAddr( device, "vkCmdBindShadingRateImageNV" ) ); - vkCmdBindTransformFeedbackBuffersEXT = PFN_vkCmdBindTransformFeedbackBuffersEXT( vkGetDeviceProcAddr( device, "vkCmdBindTransformFeedbackBuffersEXT" ) ); - vkCmdBindVertexBuffers = PFN_vkCmdBindVertexBuffers( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers" ) ); - vkCmdBindVertexBuffers2EXT = PFN_vkCmdBindVertexBuffers2EXT( vkGetDeviceProcAddr( device, "vkCmdBindVertexBuffers2EXT" ) ); - vkCmdBlitImage = PFN_vkCmdBlitImage( vkGetDeviceProcAddr( device, "vkCmdBlitImage" ) ); - vkCmdBlitImage2KHR = PFN_vkCmdBlitImage2KHR( vkGetDeviceProcAddr( device, "vkCmdBlitImage2KHR" ) ); - vkCmdBuildAccelerationStructureNV = PFN_vkCmdBuildAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructureNV" ) ); - vkCmdBuildAccelerationStructuresIndirectKHR = PFN_vkCmdBuildAccelerationStructuresIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresIndirectKHR" ) ); - vkCmdBuildAccelerationStructuresKHR = PFN_vkCmdBuildAccelerationStructuresKHR( vkGetDeviceProcAddr( device, "vkCmdBuildAccelerationStructuresKHR" ) ); - vkCmdClearAttachments = PFN_vkCmdClearAttachments( vkGetDeviceProcAddr( device, "vkCmdClearAttachments" ) ); - vkCmdClearColorImage = PFN_vkCmdClearColorImage( vkGetDeviceProcAddr( device, "vkCmdClearColorImage" ) ); - vkCmdClearDepthStencilImage = PFN_vkCmdClearDepthStencilImage( vkGetDeviceProcAddr( device, "vkCmdClearDepthStencilImage" ) ); - vkCmdCopyAccelerationStructureKHR = PFN_vkCmdCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureKHR" ) ); - vkCmdCopyAccelerationStructureNV = PFN_vkCmdCopyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureNV" ) ); - vkCmdCopyAccelerationStructureToMemoryKHR = PFN_vkCmdCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCmdCopyAccelerationStructureToMemoryKHR" ) ); - vkCmdCopyBuffer = PFN_vkCmdCopyBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer" ) ); - vkCmdCopyBuffer2KHR = PFN_vkCmdCopyBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBuffer2KHR" ) ); - vkCmdCopyBufferToImage = PFN_vkCmdCopyBufferToImage( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage" ) ); - vkCmdCopyBufferToImage2KHR = PFN_vkCmdCopyBufferToImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyBufferToImage2KHR" ) ); - vkCmdCopyImage = PFN_vkCmdCopyImage( vkGetDeviceProcAddr( device, "vkCmdCopyImage" ) ); - vkCmdCopyImage2KHR = PFN_vkCmdCopyImage2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImage2KHR" ) ); - vkCmdCopyImageToBuffer = PFN_vkCmdCopyImageToBuffer( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer" ) ); - vkCmdCopyImageToBuffer2KHR = PFN_vkCmdCopyImageToBuffer2KHR( vkGetDeviceProcAddr( device, "vkCmdCopyImageToBuffer2KHR" ) ); - vkCmdCopyMemoryToAccelerationStructureKHR = PFN_vkCmdCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCmdCopyMemoryToAccelerationStructureKHR" ) ); - vkCmdCopyQueryPoolResults = PFN_vkCmdCopyQueryPoolResults( vkGetDeviceProcAddr( device, "vkCmdCopyQueryPoolResults" ) ); - vkCmdDebugMarkerBeginEXT = PFN_vkCmdDebugMarkerBeginEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerBeginEXT" ) ); - vkCmdDebugMarkerEndEXT = PFN_vkCmdDebugMarkerEndEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerEndEXT" ) ); - vkCmdDebugMarkerInsertEXT = PFN_vkCmdDebugMarkerInsertEXT( vkGetDeviceProcAddr( device, "vkCmdDebugMarkerInsertEXT" ) ); - vkCmdDispatch = PFN_vkCmdDispatch( vkGetDeviceProcAddr( device, "vkCmdDispatch" ) ); - vkCmdDispatchBaseKHR = PFN_vkCmdDispatchBaseKHR( vkGetDeviceProcAddr( device, "vkCmdDispatchBaseKHR" ) ); - vkCmdDispatchBase = PFN_vkCmdDispatchBase( vkGetDeviceProcAddr( device, "vkCmdDispatchBase" ) ); - if ( !vkCmdDispatchBase ) vkCmdDispatchBase = vkCmdDispatchBaseKHR; - vkCmdDispatchIndirect = PFN_vkCmdDispatchIndirect( vkGetDeviceProcAddr( device, "vkCmdDispatchIndirect" ) ); - vkCmdDraw = PFN_vkCmdDraw( vkGetDeviceProcAddr( device, "vkCmdDraw" ) ); - vkCmdDrawIndexed = PFN_vkCmdDrawIndexed( vkGetDeviceProcAddr( device, "vkCmdDrawIndexed" ) ); - vkCmdDrawIndexedIndirect = PFN_vkCmdDrawIndexedIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirect" ) ); - vkCmdDrawIndexedIndirectCountAMD = PFN_vkCmdDrawIndexedIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountAMD" ) ); - vkCmdDrawIndexedIndirectCountKHR = PFN_vkCmdDrawIndexedIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCountKHR" ) ); - vkCmdDrawIndexedIndirectCount = PFN_vkCmdDrawIndexedIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndexedIndirectCount" ) ); - if ( !vkCmdDrawIndexedIndirectCount ) vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountKHR; - if ( !vkCmdDrawIndexedIndirectCount ) vkCmdDrawIndexedIndirectCount = vkCmdDrawIndexedIndirectCountAMD; - vkCmdDrawIndirect = PFN_vkCmdDrawIndirect( vkGetDeviceProcAddr( device, "vkCmdDrawIndirect" ) ); - vkCmdDrawIndirectByteCountEXT = PFN_vkCmdDrawIndirectByteCountEXT( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectByteCountEXT" ) ); - vkCmdDrawIndirectCountAMD = PFN_vkCmdDrawIndirectCountAMD( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountAMD" ) ); - vkCmdDrawIndirectCountKHR = PFN_vkCmdDrawIndirectCountKHR( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCountKHR" ) ); - vkCmdDrawIndirectCount = PFN_vkCmdDrawIndirectCount( vkGetDeviceProcAddr( device, "vkCmdDrawIndirectCount" ) ); - if ( !vkCmdDrawIndirectCount ) vkCmdDrawIndirectCount = vkCmdDrawIndirectCountKHR; - if ( !vkCmdDrawIndirectCount ) vkCmdDrawIndirectCount = vkCmdDrawIndirectCountAMD; - vkCmdDrawMeshTasksIndirectCountNV = PFN_vkCmdDrawMeshTasksIndirectCountNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectCountNV" ) ); - vkCmdDrawMeshTasksIndirectNV = PFN_vkCmdDrawMeshTasksIndirectNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksIndirectNV" ) ); - vkCmdDrawMeshTasksNV = PFN_vkCmdDrawMeshTasksNV( vkGetDeviceProcAddr( device, "vkCmdDrawMeshTasksNV" ) ); - vkCmdEndConditionalRenderingEXT = PFN_vkCmdEndConditionalRenderingEXT( vkGetDeviceProcAddr( device, "vkCmdEndConditionalRenderingEXT" ) ); - vkCmdEndDebugUtilsLabelEXT = PFN_vkCmdEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdEndDebugUtilsLabelEXT" ) ); - vkCmdEndQuery = PFN_vkCmdEndQuery( vkGetDeviceProcAddr( device, "vkCmdEndQuery" ) ); - vkCmdEndQueryIndexedEXT = PFN_vkCmdEndQueryIndexedEXT( vkGetDeviceProcAddr( device, "vkCmdEndQueryIndexedEXT" ) ); - vkCmdEndRenderPass = PFN_vkCmdEndRenderPass( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass" ) ); - vkCmdEndRenderPass2KHR = PFN_vkCmdEndRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2KHR" ) ); - vkCmdEndRenderPass2 = PFN_vkCmdEndRenderPass2( vkGetDeviceProcAddr( device, "vkCmdEndRenderPass2" ) ); - if ( !vkCmdEndRenderPass2 ) vkCmdEndRenderPass2 = vkCmdEndRenderPass2KHR; - vkCmdEndTransformFeedbackEXT = PFN_vkCmdEndTransformFeedbackEXT( vkGetDeviceProcAddr( device, "vkCmdEndTransformFeedbackEXT" ) ); - vkCmdExecuteCommands = PFN_vkCmdExecuteCommands( vkGetDeviceProcAddr( device, "vkCmdExecuteCommands" ) ); - vkCmdExecuteGeneratedCommandsNV = PFN_vkCmdExecuteGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdExecuteGeneratedCommandsNV" ) ); - vkCmdFillBuffer = PFN_vkCmdFillBuffer( vkGetDeviceProcAddr( device, "vkCmdFillBuffer" ) ); - vkCmdInsertDebugUtilsLabelEXT = PFN_vkCmdInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkCmdInsertDebugUtilsLabelEXT" ) ); - vkCmdNextSubpass = PFN_vkCmdNextSubpass( vkGetDeviceProcAddr( device, "vkCmdNextSubpass" ) ); - vkCmdNextSubpass2KHR = PFN_vkCmdNextSubpass2KHR( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2KHR" ) ); - vkCmdNextSubpass2 = PFN_vkCmdNextSubpass2( vkGetDeviceProcAddr( device, "vkCmdNextSubpass2" ) ); - if ( !vkCmdNextSubpass2 ) vkCmdNextSubpass2 = vkCmdNextSubpass2KHR; - vkCmdPipelineBarrier = PFN_vkCmdPipelineBarrier( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier" ) ); - vkCmdPipelineBarrier2KHR = PFN_vkCmdPipelineBarrier2KHR( vkGetDeviceProcAddr( device, "vkCmdPipelineBarrier2KHR" ) ); - vkCmdPreprocessGeneratedCommandsNV = PFN_vkCmdPreprocessGeneratedCommandsNV( vkGetDeviceProcAddr( device, "vkCmdPreprocessGeneratedCommandsNV" ) ); - vkCmdPushConstants = PFN_vkCmdPushConstants( vkGetDeviceProcAddr( device, "vkCmdPushConstants" ) ); - vkCmdPushDescriptorSetKHR = PFN_vkCmdPushDescriptorSetKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetKHR" ) ); - vkCmdPushDescriptorSetWithTemplateKHR = PFN_vkCmdPushDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkCmdPushDescriptorSetWithTemplateKHR" ) ); - vkCmdResetEvent = PFN_vkCmdResetEvent( vkGetDeviceProcAddr( device, "vkCmdResetEvent" ) ); - vkCmdResetEvent2KHR = PFN_vkCmdResetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdResetEvent2KHR" ) ); - vkCmdResetQueryPool = PFN_vkCmdResetQueryPool( vkGetDeviceProcAddr( device, "vkCmdResetQueryPool" ) ); - vkCmdResolveImage = PFN_vkCmdResolveImage( vkGetDeviceProcAddr( device, "vkCmdResolveImage" ) ); - vkCmdResolveImage2KHR = PFN_vkCmdResolveImage2KHR( vkGetDeviceProcAddr( device, "vkCmdResolveImage2KHR" ) ); - vkCmdSetBlendConstants = PFN_vkCmdSetBlendConstants( vkGetDeviceProcAddr( device, "vkCmdSetBlendConstants" ) ); - vkCmdSetCheckpointNV = PFN_vkCmdSetCheckpointNV( vkGetDeviceProcAddr( device, "vkCmdSetCheckpointNV" ) ); - vkCmdSetCoarseSampleOrderNV = PFN_vkCmdSetCoarseSampleOrderNV( vkGetDeviceProcAddr( device, "vkCmdSetCoarseSampleOrderNV" ) ); - vkCmdSetCullModeEXT = PFN_vkCmdSetCullModeEXT( vkGetDeviceProcAddr( device, "vkCmdSetCullModeEXT" ) ); - vkCmdSetDepthBias = PFN_vkCmdSetDepthBias( vkGetDeviceProcAddr( device, "vkCmdSetDepthBias" ) ); - vkCmdSetDepthBounds = PFN_vkCmdSetDepthBounds( vkGetDeviceProcAddr( device, "vkCmdSetDepthBounds" ) ); - vkCmdSetDepthBoundsTestEnableEXT = PFN_vkCmdSetDepthBoundsTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthBoundsTestEnableEXT" ) ); - vkCmdSetDepthCompareOpEXT = PFN_vkCmdSetDepthCompareOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthCompareOpEXT" ) ); - vkCmdSetDepthTestEnableEXT = PFN_vkCmdSetDepthTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthTestEnableEXT" ) ); - vkCmdSetDepthWriteEnableEXT = PFN_vkCmdSetDepthWriteEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetDepthWriteEnableEXT" ) ); - vkCmdSetDeviceMaskKHR = PFN_vkCmdSetDeviceMaskKHR( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMaskKHR" ) ); - vkCmdSetDeviceMask = PFN_vkCmdSetDeviceMask( vkGetDeviceProcAddr( device, "vkCmdSetDeviceMask" ) ); - if ( !vkCmdSetDeviceMask ) vkCmdSetDeviceMask = vkCmdSetDeviceMaskKHR; - vkCmdSetDiscardRectangleEXT = PFN_vkCmdSetDiscardRectangleEXT( vkGetDeviceProcAddr( device, "vkCmdSetDiscardRectangleEXT" ) ); - vkCmdSetEvent = PFN_vkCmdSetEvent( vkGetDeviceProcAddr( device, "vkCmdSetEvent" ) ); - vkCmdSetEvent2KHR = PFN_vkCmdSetEvent2KHR( vkGetDeviceProcAddr( device, "vkCmdSetEvent2KHR" ) ); - vkCmdSetExclusiveScissorNV = PFN_vkCmdSetExclusiveScissorNV( vkGetDeviceProcAddr( device, "vkCmdSetExclusiveScissorNV" ) ); - vkCmdSetFragmentShadingRateEnumNV = PFN_vkCmdSetFragmentShadingRateEnumNV( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateEnumNV" ) ); - vkCmdSetFragmentShadingRateKHR = PFN_vkCmdSetFragmentShadingRateKHR( vkGetDeviceProcAddr( device, "vkCmdSetFragmentShadingRateKHR" ) ); - vkCmdSetFrontFaceEXT = PFN_vkCmdSetFrontFaceEXT( vkGetDeviceProcAddr( device, "vkCmdSetFrontFaceEXT" ) ); - vkCmdSetLineStippleEXT = PFN_vkCmdSetLineStippleEXT( vkGetDeviceProcAddr( device, "vkCmdSetLineStippleEXT" ) ); - vkCmdSetLineWidth = PFN_vkCmdSetLineWidth( vkGetDeviceProcAddr( device, "vkCmdSetLineWidth" ) ); - vkCmdSetPerformanceMarkerINTEL = PFN_vkCmdSetPerformanceMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceMarkerINTEL" ) ); - vkCmdSetPerformanceOverrideINTEL = PFN_vkCmdSetPerformanceOverrideINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceOverrideINTEL" ) ); - vkCmdSetPerformanceStreamMarkerINTEL = PFN_vkCmdSetPerformanceStreamMarkerINTEL( vkGetDeviceProcAddr( device, "vkCmdSetPerformanceStreamMarkerINTEL" ) ); - vkCmdSetPrimitiveTopologyEXT = PFN_vkCmdSetPrimitiveTopologyEXT( vkGetDeviceProcAddr( device, "vkCmdSetPrimitiveTopologyEXT" ) ); - vkCmdSetRayTracingPipelineStackSizeKHR = PFN_vkCmdSetRayTracingPipelineStackSizeKHR( vkGetDeviceProcAddr( device, "vkCmdSetRayTracingPipelineStackSizeKHR" ) ); - vkCmdSetSampleLocationsEXT = PFN_vkCmdSetSampleLocationsEXT( vkGetDeviceProcAddr( device, "vkCmdSetSampleLocationsEXT" ) ); - vkCmdSetScissor = PFN_vkCmdSetScissor( vkGetDeviceProcAddr( device, "vkCmdSetScissor" ) ); - vkCmdSetScissorWithCountEXT = PFN_vkCmdSetScissorWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetScissorWithCountEXT" ) ); - vkCmdSetStencilCompareMask = PFN_vkCmdSetStencilCompareMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilCompareMask" ) ); - vkCmdSetStencilOpEXT = PFN_vkCmdSetStencilOpEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilOpEXT" ) ); - vkCmdSetStencilReference = PFN_vkCmdSetStencilReference( vkGetDeviceProcAddr( device, "vkCmdSetStencilReference" ) ); - vkCmdSetStencilTestEnableEXT = PFN_vkCmdSetStencilTestEnableEXT( vkGetDeviceProcAddr( device, "vkCmdSetStencilTestEnableEXT" ) ); - vkCmdSetStencilWriteMask = PFN_vkCmdSetStencilWriteMask( vkGetDeviceProcAddr( device, "vkCmdSetStencilWriteMask" ) ); - vkCmdSetViewport = PFN_vkCmdSetViewport( vkGetDeviceProcAddr( device, "vkCmdSetViewport" ) ); - vkCmdSetViewportShadingRatePaletteNV = PFN_vkCmdSetViewportShadingRatePaletteNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportShadingRatePaletteNV" ) ); - vkCmdSetViewportWScalingNV = PFN_vkCmdSetViewportWScalingNV( vkGetDeviceProcAddr( device, "vkCmdSetViewportWScalingNV" ) ); - vkCmdSetViewportWithCountEXT = PFN_vkCmdSetViewportWithCountEXT( vkGetDeviceProcAddr( device, "vkCmdSetViewportWithCountEXT" ) ); - vkCmdTraceRaysIndirectKHR = PFN_vkCmdTraceRaysIndirectKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysIndirectKHR" ) ); - vkCmdTraceRaysKHR = PFN_vkCmdTraceRaysKHR( vkGetDeviceProcAddr( device, "vkCmdTraceRaysKHR" ) ); - vkCmdTraceRaysNV = PFN_vkCmdTraceRaysNV( vkGetDeviceProcAddr( device, "vkCmdTraceRaysNV" ) ); - vkCmdUpdateBuffer = PFN_vkCmdUpdateBuffer( vkGetDeviceProcAddr( device, "vkCmdUpdateBuffer" ) ); - vkCmdWaitEvents = PFN_vkCmdWaitEvents( vkGetDeviceProcAddr( device, "vkCmdWaitEvents" ) ); - vkCmdWaitEvents2KHR = PFN_vkCmdWaitEvents2KHR( vkGetDeviceProcAddr( device, "vkCmdWaitEvents2KHR" ) ); - vkCmdWriteAccelerationStructuresPropertiesKHR = PFN_vkCmdWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesKHR" ) ); - vkCmdWriteAccelerationStructuresPropertiesNV = PFN_vkCmdWriteAccelerationStructuresPropertiesNV( vkGetDeviceProcAddr( device, "vkCmdWriteAccelerationStructuresPropertiesNV" ) ); - vkCmdWriteBufferMarker2AMD = PFN_vkCmdWriteBufferMarker2AMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarker2AMD" ) ); - vkCmdWriteBufferMarkerAMD = PFN_vkCmdWriteBufferMarkerAMD( vkGetDeviceProcAddr( device, "vkCmdWriteBufferMarkerAMD" ) ); - vkCmdWriteTimestamp = PFN_vkCmdWriteTimestamp( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp" ) ); - vkCmdWriteTimestamp2KHR = PFN_vkCmdWriteTimestamp2KHR( vkGetDeviceProcAddr( device, "vkCmdWriteTimestamp2KHR" ) ); - vkCompileDeferredNV = PFN_vkCompileDeferredNV( vkGetDeviceProcAddr( device, "vkCompileDeferredNV" ) ); - vkCopyAccelerationStructureKHR = PFN_vkCopyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureKHR" ) ); - vkCopyAccelerationStructureToMemoryKHR = PFN_vkCopyAccelerationStructureToMemoryKHR( vkGetDeviceProcAddr( device, "vkCopyAccelerationStructureToMemoryKHR" ) ); - vkCopyMemoryToAccelerationStructureKHR = PFN_vkCopyMemoryToAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCopyMemoryToAccelerationStructureKHR" ) ); - vkCreateAccelerationStructureKHR = PFN_vkCreateAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureKHR" ) ); - vkCreateAccelerationStructureNV = PFN_vkCreateAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkCreateAccelerationStructureNV" ) ); - vkCreateBuffer = PFN_vkCreateBuffer( vkGetDeviceProcAddr( device, "vkCreateBuffer" ) ); - vkCreateBufferView = PFN_vkCreateBufferView( vkGetDeviceProcAddr( device, "vkCreateBufferView" ) ); - vkCreateCommandPool = PFN_vkCreateCommandPool( vkGetDeviceProcAddr( device, "vkCreateCommandPool" ) ); - vkCreateComputePipelines = PFN_vkCreateComputePipelines( vkGetDeviceProcAddr( device, "vkCreateComputePipelines" ) ); - vkCreateDeferredOperationKHR = PFN_vkCreateDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkCreateDeferredOperationKHR" ) ); - vkCreateDescriptorPool = PFN_vkCreateDescriptorPool( vkGetDeviceProcAddr( device, "vkCreateDescriptorPool" ) ); - vkCreateDescriptorSetLayout = PFN_vkCreateDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkCreateDescriptorSetLayout" ) ); - vkCreateDescriptorUpdateTemplateKHR = PFN_vkCreateDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplateKHR" ) ); - vkCreateDescriptorUpdateTemplate = PFN_vkCreateDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkCreateDescriptorUpdateTemplate" ) ); - if ( !vkCreateDescriptorUpdateTemplate ) vkCreateDescriptorUpdateTemplate = vkCreateDescriptorUpdateTemplateKHR; - vkCreateEvent = PFN_vkCreateEvent( vkGetDeviceProcAddr( device, "vkCreateEvent" ) ); - vkCreateFence = PFN_vkCreateFence( vkGetDeviceProcAddr( device, "vkCreateFence" ) ); - vkCreateFramebuffer = PFN_vkCreateFramebuffer( vkGetDeviceProcAddr( device, "vkCreateFramebuffer" ) ); - vkCreateGraphicsPipelines = PFN_vkCreateGraphicsPipelines( vkGetDeviceProcAddr( device, "vkCreateGraphicsPipelines" ) ); - vkCreateImage = PFN_vkCreateImage( vkGetDeviceProcAddr( device, "vkCreateImage" ) ); - vkCreateImageView = PFN_vkCreateImageView( vkGetDeviceProcAddr( device, "vkCreateImageView" ) ); - vkCreateIndirectCommandsLayoutNV = PFN_vkCreateIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkCreateIndirectCommandsLayoutNV" ) ); - vkCreatePipelineCache = PFN_vkCreatePipelineCache( vkGetDeviceProcAddr( device, "vkCreatePipelineCache" ) ); - vkCreatePipelineLayout = PFN_vkCreatePipelineLayout( vkGetDeviceProcAddr( device, "vkCreatePipelineLayout" ) ); - vkCreatePrivateDataSlotEXT = PFN_vkCreatePrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkCreatePrivateDataSlotEXT" ) ); - vkCreateQueryPool = PFN_vkCreateQueryPool( vkGetDeviceProcAddr( device, "vkCreateQueryPool" ) ); - vkCreateRayTracingPipelinesKHR = PFN_vkCreateRayTracingPipelinesKHR( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesKHR" ) ); - vkCreateRayTracingPipelinesNV = PFN_vkCreateRayTracingPipelinesNV( vkGetDeviceProcAddr( device, "vkCreateRayTracingPipelinesNV" ) ); - vkCreateRenderPass = PFN_vkCreateRenderPass( vkGetDeviceProcAddr( device, "vkCreateRenderPass" ) ); - vkCreateRenderPass2KHR = PFN_vkCreateRenderPass2KHR( vkGetDeviceProcAddr( device, "vkCreateRenderPass2KHR" ) ); - vkCreateRenderPass2 = PFN_vkCreateRenderPass2( vkGetDeviceProcAddr( device, "vkCreateRenderPass2" ) ); - if ( !vkCreateRenderPass2 ) vkCreateRenderPass2 = vkCreateRenderPass2KHR; - vkCreateSampler = PFN_vkCreateSampler( vkGetDeviceProcAddr( device, "vkCreateSampler" ) ); - vkCreateSamplerYcbcrConversionKHR = PFN_vkCreateSamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversionKHR" ) ); - vkCreateSamplerYcbcrConversion = PFN_vkCreateSamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkCreateSamplerYcbcrConversion" ) ); - if ( !vkCreateSamplerYcbcrConversion ) vkCreateSamplerYcbcrConversion = vkCreateSamplerYcbcrConversionKHR; - vkCreateSemaphore = PFN_vkCreateSemaphore( vkGetDeviceProcAddr( device, "vkCreateSemaphore" ) ); - vkCreateShaderModule = PFN_vkCreateShaderModule( vkGetDeviceProcAddr( device, "vkCreateShaderModule" ) ); - vkCreateSharedSwapchainsKHR = PFN_vkCreateSharedSwapchainsKHR( vkGetDeviceProcAddr( device, "vkCreateSharedSwapchainsKHR" ) ); - vkCreateSwapchainKHR = PFN_vkCreateSwapchainKHR( vkGetDeviceProcAddr( device, "vkCreateSwapchainKHR" ) ); - vkCreateValidationCacheEXT = PFN_vkCreateValidationCacheEXT( vkGetDeviceProcAddr( device, "vkCreateValidationCacheEXT" ) ); - vkDebugMarkerSetObjectNameEXT = PFN_vkDebugMarkerSetObjectNameEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectNameEXT" ) ); - vkDebugMarkerSetObjectTagEXT = PFN_vkDebugMarkerSetObjectTagEXT( vkGetDeviceProcAddr( device, "vkDebugMarkerSetObjectTagEXT" ) ); - vkDeferredOperationJoinKHR = PFN_vkDeferredOperationJoinKHR( vkGetDeviceProcAddr( device, "vkDeferredOperationJoinKHR" ) ); - vkDestroyAccelerationStructureKHR = PFN_vkDestroyAccelerationStructureKHR( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureKHR" ) ); - vkDestroyAccelerationStructureNV = PFN_vkDestroyAccelerationStructureNV( vkGetDeviceProcAddr( device, "vkDestroyAccelerationStructureNV" ) ); - vkDestroyBuffer = PFN_vkDestroyBuffer( vkGetDeviceProcAddr( device, "vkDestroyBuffer" ) ); - vkDestroyBufferView = PFN_vkDestroyBufferView( vkGetDeviceProcAddr( device, "vkDestroyBufferView" ) ); - vkDestroyCommandPool = PFN_vkDestroyCommandPool( vkGetDeviceProcAddr( device, "vkDestroyCommandPool" ) ); - vkDestroyDeferredOperationKHR = PFN_vkDestroyDeferredOperationKHR( vkGetDeviceProcAddr( device, "vkDestroyDeferredOperationKHR" ) ); - vkDestroyDescriptorPool = PFN_vkDestroyDescriptorPool( vkGetDeviceProcAddr( device, "vkDestroyDescriptorPool" ) ); - vkDestroyDescriptorSetLayout = PFN_vkDestroyDescriptorSetLayout( vkGetDeviceProcAddr( device, "vkDestroyDescriptorSetLayout" ) ); - vkDestroyDescriptorUpdateTemplateKHR = PFN_vkDestroyDescriptorUpdateTemplateKHR( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplateKHR" ) ); - vkDestroyDescriptorUpdateTemplate = PFN_vkDestroyDescriptorUpdateTemplate( vkGetDeviceProcAddr( device, "vkDestroyDescriptorUpdateTemplate" ) ); - if ( !vkDestroyDescriptorUpdateTemplate ) vkDestroyDescriptorUpdateTemplate = vkDestroyDescriptorUpdateTemplateKHR; - vkDestroyDevice = PFN_vkDestroyDevice( vkGetDeviceProcAddr( device, "vkDestroyDevice" ) ); - vkDestroyEvent = PFN_vkDestroyEvent( vkGetDeviceProcAddr( device, "vkDestroyEvent" ) ); - vkDestroyFence = PFN_vkDestroyFence( vkGetDeviceProcAddr( device, "vkDestroyFence" ) ); - vkDestroyFramebuffer = PFN_vkDestroyFramebuffer( vkGetDeviceProcAddr( device, "vkDestroyFramebuffer" ) ); - vkDestroyImage = PFN_vkDestroyImage( vkGetDeviceProcAddr( device, "vkDestroyImage" ) ); - vkDestroyImageView = PFN_vkDestroyImageView( vkGetDeviceProcAddr( device, "vkDestroyImageView" ) ); - vkDestroyIndirectCommandsLayoutNV = PFN_vkDestroyIndirectCommandsLayoutNV( vkGetDeviceProcAddr( device, "vkDestroyIndirectCommandsLayoutNV" ) ); - vkDestroyPipeline = PFN_vkDestroyPipeline( vkGetDeviceProcAddr( device, "vkDestroyPipeline" ) ); - vkDestroyPipelineCache = PFN_vkDestroyPipelineCache( vkGetDeviceProcAddr( device, "vkDestroyPipelineCache" ) ); - vkDestroyPipelineLayout = PFN_vkDestroyPipelineLayout( vkGetDeviceProcAddr( device, "vkDestroyPipelineLayout" ) ); - vkDestroyPrivateDataSlotEXT = PFN_vkDestroyPrivateDataSlotEXT( vkGetDeviceProcAddr( device, "vkDestroyPrivateDataSlotEXT" ) ); - vkDestroyQueryPool = PFN_vkDestroyQueryPool( vkGetDeviceProcAddr( device, "vkDestroyQueryPool" ) ); - vkDestroyRenderPass = PFN_vkDestroyRenderPass( vkGetDeviceProcAddr( device, "vkDestroyRenderPass" ) ); - vkDestroySampler = PFN_vkDestroySampler( vkGetDeviceProcAddr( device, "vkDestroySampler" ) ); - vkDestroySamplerYcbcrConversionKHR = PFN_vkDestroySamplerYcbcrConversionKHR( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversionKHR" ) ); - vkDestroySamplerYcbcrConversion = PFN_vkDestroySamplerYcbcrConversion( vkGetDeviceProcAddr( device, "vkDestroySamplerYcbcrConversion" ) ); - if ( !vkDestroySamplerYcbcrConversion ) vkDestroySamplerYcbcrConversion = vkDestroySamplerYcbcrConversionKHR; - vkDestroySemaphore = PFN_vkDestroySemaphore( vkGetDeviceProcAddr( device, "vkDestroySemaphore" ) ); - vkDestroyShaderModule = PFN_vkDestroyShaderModule( vkGetDeviceProcAddr( device, "vkDestroyShaderModule" ) ); - vkDestroySwapchainKHR = PFN_vkDestroySwapchainKHR( vkGetDeviceProcAddr( device, "vkDestroySwapchainKHR" ) ); - vkDestroyValidationCacheEXT = PFN_vkDestroyValidationCacheEXT( vkGetDeviceProcAddr( device, "vkDestroyValidationCacheEXT" ) ); - vkDeviceWaitIdle = PFN_vkDeviceWaitIdle( vkGetDeviceProcAddr( device, "vkDeviceWaitIdle" ) ); - vkDisplayPowerControlEXT = PFN_vkDisplayPowerControlEXT( vkGetDeviceProcAddr( device, "vkDisplayPowerControlEXT" ) ); - vkEndCommandBuffer = PFN_vkEndCommandBuffer( vkGetDeviceProcAddr( device, "vkEndCommandBuffer" ) ); - vkFlushMappedMemoryRanges = PFN_vkFlushMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkFlushMappedMemoryRanges" ) ); - vkFreeCommandBuffers = PFN_vkFreeCommandBuffers( vkGetDeviceProcAddr( device, "vkFreeCommandBuffers" ) ); - vkFreeDescriptorSets = PFN_vkFreeDescriptorSets( vkGetDeviceProcAddr( device, "vkFreeDescriptorSets" ) ); - vkFreeMemory = PFN_vkFreeMemory( vkGetDeviceProcAddr( device, "vkFreeMemory" ) ); - vkGetAccelerationStructureBuildSizesKHR = PFN_vkGetAccelerationStructureBuildSizesKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureBuildSizesKHR" ) ); - vkGetAccelerationStructureDeviceAddressKHR = PFN_vkGetAccelerationStructureDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureDeviceAddressKHR" ) ); - vkGetAccelerationStructureHandleNV = PFN_vkGetAccelerationStructureHandleNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureHandleNV" ) ); - vkGetAccelerationStructureMemoryRequirementsNV = PFN_vkGetAccelerationStructureMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetAccelerationStructureMemoryRequirementsNV" ) ); -#ifdef VK_USE_PLATFORM_ANDROID_KHR - vkGetAndroidHardwareBufferPropertiesANDROID = PFN_vkGetAndroidHardwareBufferPropertiesANDROID( vkGetDeviceProcAddr( device, "vkGetAndroidHardwareBufferPropertiesANDROID" ) ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - vkGetBufferDeviceAddressEXT = PFN_vkGetBufferDeviceAddressEXT( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressEXT" ) ); - vkGetBufferDeviceAddressKHR = PFN_vkGetBufferDeviceAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddressKHR" ) ); - vkGetBufferDeviceAddress = PFN_vkGetBufferDeviceAddress( vkGetDeviceProcAddr( device, "vkGetBufferDeviceAddress" ) ); - if ( !vkGetBufferDeviceAddress ) vkGetBufferDeviceAddress = vkGetBufferDeviceAddressKHR; - if ( !vkGetBufferDeviceAddress ) vkGetBufferDeviceAddress = vkGetBufferDeviceAddressEXT; - vkGetBufferMemoryRequirements = PFN_vkGetBufferMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements" ) ); - vkGetBufferMemoryRequirements2KHR = PFN_vkGetBufferMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2KHR" ) ); - vkGetBufferMemoryRequirements2 = PFN_vkGetBufferMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetBufferMemoryRequirements2" ) ); - if ( !vkGetBufferMemoryRequirements2 ) vkGetBufferMemoryRequirements2 = vkGetBufferMemoryRequirements2KHR; - vkGetBufferOpaqueCaptureAddressKHR = PFN_vkGetBufferOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddressKHR" ) ); - vkGetBufferOpaqueCaptureAddress = PFN_vkGetBufferOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetBufferOpaqueCaptureAddress" ) ); - if ( !vkGetBufferOpaqueCaptureAddress ) vkGetBufferOpaqueCaptureAddress = vkGetBufferOpaqueCaptureAddressKHR; - vkGetCalibratedTimestampsEXT = PFN_vkGetCalibratedTimestampsEXT( vkGetDeviceProcAddr( device, "vkGetCalibratedTimestampsEXT" ) ); - vkGetDeferredOperationMaxConcurrencyKHR = PFN_vkGetDeferredOperationMaxConcurrencyKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationMaxConcurrencyKHR" ) ); - vkGetDeferredOperationResultKHR = PFN_vkGetDeferredOperationResultKHR( vkGetDeviceProcAddr( device, "vkGetDeferredOperationResultKHR" ) ); - vkGetDescriptorSetLayoutSupportKHR = PFN_vkGetDescriptorSetLayoutSupportKHR( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupportKHR" ) ); - vkGetDescriptorSetLayoutSupport = PFN_vkGetDescriptorSetLayoutSupport( vkGetDeviceProcAddr( device, "vkGetDescriptorSetLayoutSupport" ) ); - if ( !vkGetDescriptorSetLayoutSupport ) vkGetDescriptorSetLayoutSupport = vkGetDescriptorSetLayoutSupportKHR; - vkGetDeviceAccelerationStructureCompatibilityKHR = PFN_vkGetDeviceAccelerationStructureCompatibilityKHR( vkGetDeviceProcAddr( device, "vkGetDeviceAccelerationStructureCompatibilityKHR" ) ); - vkGetDeviceGroupPeerMemoryFeaturesKHR = PFN_vkGetDeviceGroupPeerMemoryFeaturesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeaturesKHR" ) ); - vkGetDeviceGroupPeerMemoryFeatures = PFN_vkGetDeviceGroupPeerMemoryFeatures( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPeerMemoryFeatures" ) ); - if ( !vkGetDeviceGroupPeerMemoryFeatures ) vkGetDeviceGroupPeerMemoryFeatures = vkGetDeviceGroupPeerMemoryFeaturesKHR; - vkGetDeviceGroupPresentCapabilitiesKHR = PFN_vkGetDeviceGroupPresentCapabilitiesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupPresentCapabilitiesKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetDeviceGroupSurfacePresentModes2EXT = PFN_vkGetDeviceGroupSurfacePresentModes2EXT( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModes2EXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetDeviceGroupSurfacePresentModesKHR = PFN_vkGetDeviceGroupSurfacePresentModesKHR( vkGetDeviceProcAddr( device, "vkGetDeviceGroupSurfacePresentModesKHR" ) ); - vkGetDeviceMemoryCommitment = PFN_vkGetDeviceMemoryCommitment( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryCommitment" ) ); - vkGetDeviceMemoryOpaqueCaptureAddressKHR = PFN_vkGetDeviceMemoryOpaqueCaptureAddressKHR( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddressKHR" ) ); - vkGetDeviceMemoryOpaqueCaptureAddress = PFN_vkGetDeviceMemoryOpaqueCaptureAddress( vkGetDeviceProcAddr( device, "vkGetDeviceMemoryOpaqueCaptureAddress" ) ); - if ( !vkGetDeviceMemoryOpaqueCaptureAddress ) vkGetDeviceMemoryOpaqueCaptureAddress = vkGetDeviceMemoryOpaqueCaptureAddressKHR; - vkGetDeviceProcAddr = PFN_vkGetDeviceProcAddr( vkGetDeviceProcAddr( device, "vkGetDeviceProcAddr" ) ); - vkGetDeviceQueue = PFN_vkGetDeviceQueue( vkGetDeviceProcAddr( device, "vkGetDeviceQueue" ) ); - vkGetDeviceQueue2 = PFN_vkGetDeviceQueue2( vkGetDeviceProcAddr( device, "vkGetDeviceQueue2" ) ); - vkGetEventStatus = PFN_vkGetEventStatus( vkGetDeviceProcAddr( device, "vkGetEventStatus" ) ); - vkGetFenceFdKHR = PFN_vkGetFenceFdKHR( vkGetDeviceProcAddr( device, "vkGetFenceFdKHR" ) ); - vkGetFenceStatus = PFN_vkGetFenceStatus( vkGetDeviceProcAddr( device, "vkGetFenceStatus" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetFenceWin32HandleKHR = PFN_vkGetFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetFenceWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetGeneratedCommandsMemoryRequirementsNV = PFN_vkGetGeneratedCommandsMemoryRequirementsNV( vkGetDeviceProcAddr( device, "vkGetGeneratedCommandsMemoryRequirementsNV" ) ); - vkGetImageDrmFormatModifierPropertiesEXT = PFN_vkGetImageDrmFormatModifierPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetImageDrmFormatModifierPropertiesEXT" ) ); - vkGetImageMemoryRequirements = PFN_vkGetImageMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements" ) ); - vkGetImageMemoryRequirements2KHR = PFN_vkGetImageMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2KHR" ) ); - vkGetImageMemoryRequirements2 = PFN_vkGetImageMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageMemoryRequirements2" ) ); - if ( !vkGetImageMemoryRequirements2 ) vkGetImageMemoryRequirements2 = vkGetImageMemoryRequirements2KHR; - vkGetImageSparseMemoryRequirements = PFN_vkGetImageSparseMemoryRequirements( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements" ) ); - vkGetImageSparseMemoryRequirements2KHR = PFN_vkGetImageSparseMemoryRequirements2KHR( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2KHR" ) ); - vkGetImageSparseMemoryRequirements2 = PFN_vkGetImageSparseMemoryRequirements2( vkGetDeviceProcAddr( device, "vkGetImageSparseMemoryRequirements2" ) ); - if ( !vkGetImageSparseMemoryRequirements2 ) vkGetImageSparseMemoryRequirements2 = vkGetImageSparseMemoryRequirements2KHR; - vkGetImageSubresourceLayout = PFN_vkGetImageSubresourceLayout( vkGetDeviceProcAddr( device, "vkGetImageSubresourceLayout" ) ); - vkGetImageViewAddressNVX = PFN_vkGetImageViewAddressNVX( vkGetDeviceProcAddr( device, "vkGetImageViewAddressNVX" ) ); - vkGetImageViewHandleNVX = PFN_vkGetImageViewHandleNVX( vkGetDeviceProcAddr( device, "vkGetImageViewHandleNVX" ) ); -#ifdef VK_USE_PLATFORM_ANDROID_KHR - vkGetMemoryAndroidHardwareBufferANDROID = PFN_vkGetMemoryAndroidHardwareBufferANDROID( vkGetDeviceProcAddr( device, "vkGetMemoryAndroidHardwareBufferANDROID" ) ); -#endif /*VK_USE_PLATFORM_ANDROID_KHR*/ - vkGetMemoryFdKHR = PFN_vkGetMemoryFdKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdKHR" ) ); - vkGetMemoryFdPropertiesKHR = PFN_vkGetMemoryFdPropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryFdPropertiesKHR" ) ); - vkGetMemoryHostPointerPropertiesEXT = PFN_vkGetMemoryHostPointerPropertiesEXT( vkGetDeviceProcAddr( device, "vkGetMemoryHostPointerPropertiesEXT" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetMemoryWin32HandleKHR = PFN_vkGetMemoryWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetMemoryWin32HandleNV = PFN_vkGetMemoryWin32HandleNV( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandleNV" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetMemoryWin32HandlePropertiesKHR = PFN_vkGetMemoryWin32HandlePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetMemoryWin32HandlePropertiesKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetPastPresentationTimingGOOGLE = PFN_vkGetPastPresentationTimingGOOGLE( vkGetDeviceProcAddr( device, "vkGetPastPresentationTimingGOOGLE" ) ); - vkGetPerformanceParameterINTEL = PFN_vkGetPerformanceParameterINTEL( vkGetDeviceProcAddr( device, "vkGetPerformanceParameterINTEL" ) ); - vkGetPipelineCacheData = PFN_vkGetPipelineCacheData( vkGetDeviceProcAddr( device, "vkGetPipelineCacheData" ) ); - vkGetPipelineExecutableInternalRepresentationsKHR = PFN_vkGetPipelineExecutableInternalRepresentationsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableInternalRepresentationsKHR" ) ); - vkGetPipelineExecutablePropertiesKHR = PFN_vkGetPipelineExecutablePropertiesKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutablePropertiesKHR" ) ); - vkGetPipelineExecutableStatisticsKHR = PFN_vkGetPipelineExecutableStatisticsKHR( vkGetDeviceProcAddr( device, "vkGetPipelineExecutableStatisticsKHR" ) ); - vkGetPrivateDataEXT = PFN_vkGetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkGetPrivateDataEXT" ) ); - vkGetQueryPoolResults = PFN_vkGetQueryPoolResults( vkGetDeviceProcAddr( device, "vkGetQueryPoolResults" ) ); - vkGetQueueCheckpointData2NV = PFN_vkGetQueueCheckpointData2NV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointData2NV" ) ); - vkGetQueueCheckpointDataNV = PFN_vkGetQueueCheckpointDataNV( vkGetDeviceProcAddr( device, "vkGetQueueCheckpointDataNV" ) ); - vkGetRayTracingCaptureReplayShaderGroupHandlesKHR = PFN_vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingCaptureReplayShaderGroupHandlesKHR" ) ); - vkGetRayTracingShaderGroupHandlesNV = PFN_vkGetRayTracingShaderGroupHandlesNV( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesNV" ) ); - vkGetRayTracingShaderGroupHandlesKHR = PFN_vkGetRayTracingShaderGroupHandlesKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupHandlesKHR" ) ); - if ( !vkGetRayTracingShaderGroupHandlesKHR ) vkGetRayTracingShaderGroupHandlesKHR = vkGetRayTracingShaderGroupHandlesNV; - vkGetRayTracingShaderGroupStackSizeKHR = PFN_vkGetRayTracingShaderGroupStackSizeKHR( vkGetDeviceProcAddr( device, "vkGetRayTracingShaderGroupStackSizeKHR" ) ); - vkGetRefreshCycleDurationGOOGLE = PFN_vkGetRefreshCycleDurationGOOGLE( vkGetDeviceProcAddr( device, "vkGetRefreshCycleDurationGOOGLE" ) ); - vkGetRenderAreaGranularity = PFN_vkGetRenderAreaGranularity( vkGetDeviceProcAddr( device, "vkGetRenderAreaGranularity" ) ); - vkGetSemaphoreCounterValueKHR = PFN_vkGetSemaphoreCounterValueKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValueKHR" ) ); - vkGetSemaphoreCounterValue = PFN_vkGetSemaphoreCounterValue( vkGetDeviceProcAddr( device, "vkGetSemaphoreCounterValue" ) ); - if ( !vkGetSemaphoreCounterValue ) vkGetSemaphoreCounterValue = vkGetSemaphoreCounterValueKHR; - vkGetSemaphoreFdKHR = PFN_vkGetSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreFdKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkGetSemaphoreWin32HandleKHR = PFN_vkGetSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkGetSemaphoreWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkGetShaderInfoAMD = PFN_vkGetShaderInfoAMD( vkGetDeviceProcAddr( device, "vkGetShaderInfoAMD" ) ); - vkGetSwapchainCounterEXT = PFN_vkGetSwapchainCounterEXT( vkGetDeviceProcAddr( device, "vkGetSwapchainCounterEXT" ) ); - vkGetSwapchainImagesKHR = PFN_vkGetSwapchainImagesKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainImagesKHR" ) ); - vkGetSwapchainStatusKHR = PFN_vkGetSwapchainStatusKHR( vkGetDeviceProcAddr( device, "vkGetSwapchainStatusKHR" ) ); - vkGetValidationCacheDataEXT = PFN_vkGetValidationCacheDataEXT( vkGetDeviceProcAddr( device, "vkGetValidationCacheDataEXT" ) ); - vkImportFenceFdKHR = PFN_vkImportFenceFdKHR( vkGetDeviceProcAddr( device, "vkImportFenceFdKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkImportFenceWin32HandleKHR = PFN_vkImportFenceWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportFenceWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkImportSemaphoreFdKHR = PFN_vkImportSemaphoreFdKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreFdKHR" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkImportSemaphoreWin32HandleKHR = PFN_vkImportSemaphoreWin32HandleKHR( vkGetDeviceProcAddr( device, "vkImportSemaphoreWin32HandleKHR" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkInitializePerformanceApiINTEL = PFN_vkInitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkInitializePerformanceApiINTEL" ) ); - vkInvalidateMappedMemoryRanges = PFN_vkInvalidateMappedMemoryRanges( vkGetDeviceProcAddr( device, "vkInvalidateMappedMemoryRanges" ) ); - vkMapMemory = PFN_vkMapMemory( vkGetDeviceProcAddr( device, "vkMapMemory" ) ); - vkMergePipelineCaches = PFN_vkMergePipelineCaches( vkGetDeviceProcAddr( device, "vkMergePipelineCaches" ) ); - vkMergeValidationCachesEXT = PFN_vkMergeValidationCachesEXT( vkGetDeviceProcAddr( device, "vkMergeValidationCachesEXT" ) ); - vkQueueBeginDebugUtilsLabelEXT = PFN_vkQueueBeginDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueBeginDebugUtilsLabelEXT" ) ); - vkQueueBindSparse = PFN_vkQueueBindSparse( vkGetDeviceProcAddr( device, "vkQueueBindSparse" ) ); - vkQueueEndDebugUtilsLabelEXT = PFN_vkQueueEndDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueEndDebugUtilsLabelEXT" ) ); - vkQueueInsertDebugUtilsLabelEXT = PFN_vkQueueInsertDebugUtilsLabelEXT( vkGetDeviceProcAddr( device, "vkQueueInsertDebugUtilsLabelEXT" ) ); - vkQueuePresentKHR = PFN_vkQueuePresentKHR( vkGetDeviceProcAddr( device, "vkQueuePresentKHR" ) ); - vkQueueSetPerformanceConfigurationINTEL = PFN_vkQueueSetPerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkQueueSetPerformanceConfigurationINTEL" ) ); - vkQueueSubmit = PFN_vkQueueSubmit( vkGetDeviceProcAddr( device, "vkQueueSubmit" ) ); - vkQueueSubmit2KHR = PFN_vkQueueSubmit2KHR( vkGetDeviceProcAddr( device, "vkQueueSubmit2KHR" ) ); - vkQueueWaitIdle = PFN_vkQueueWaitIdle( vkGetDeviceProcAddr( device, "vkQueueWaitIdle" ) ); - vkRegisterDeviceEventEXT = PFN_vkRegisterDeviceEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDeviceEventEXT" ) ); - vkRegisterDisplayEventEXT = PFN_vkRegisterDisplayEventEXT( vkGetDeviceProcAddr( device, "vkRegisterDisplayEventEXT" ) ); -#ifdef VK_USE_PLATFORM_WIN32_KHR - vkReleaseFullScreenExclusiveModeEXT = PFN_vkReleaseFullScreenExclusiveModeEXT( vkGetDeviceProcAddr( device, "vkReleaseFullScreenExclusiveModeEXT" ) ); -#endif /*VK_USE_PLATFORM_WIN32_KHR*/ - vkReleasePerformanceConfigurationINTEL = PFN_vkReleasePerformanceConfigurationINTEL( vkGetDeviceProcAddr( device, "vkReleasePerformanceConfigurationINTEL" ) ); - vkReleaseProfilingLockKHR = PFN_vkReleaseProfilingLockKHR( vkGetDeviceProcAddr( device, "vkReleaseProfilingLockKHR" ) ); - vkResetCommandBuffer = PFN_vkResetCommandBuffer( vkGetDeviceProcAddr( device, "vkResetCommandBuffer" ) ); - vkResetCommandPool = PFN_vkResetCommandPool( vkGetDeviceProcAddr( device, "vkResetCommandPool" ) ); - vkResetDescriptorPool = PFN_vkResetDescriptorPool( vkGetDeviceProcAddr( device, "vkResetDescriptorPool" ) ); - vkResetEvent = PFN_vkResetEvent( vkGetDeviceProcAddr( device, "vkResetEvent" ) ); - vkResetFences = PFN_vkResetFences( vkGetDeviceProcAddr( device, "vkResetFences" ) ); - vkResetQueryPoolEXT = PFN_vkResetQueryPoolEXT( vkGetDeviceProcAddr( device, "vkResetQueryPoolEXT" ) ); - vkResetQueryPool = PFN_vkResetQueryPool( vkGetDeviceProcAddr( device, "vkResetQueryPool" ) ); - if ( !vkResetQueryPool ) vkResetQueryPool = vkResetQueryPoolEXT; - vkSetDebugUtilsObjectNameEXT = PFN_vkSetDebugUtilsObjectNameEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectNameEXT" ) ); - vkSetDebugUtilsObjectTagEXT = PFN_vkSetDebugUtilsObjectTagEXT( vkGetDeviceProcAddr( device, "vkSetDebugUtilsObjectTagEXT" ) ); - vkSetEvent = PFN_vkSetEvent( vkGetDeviceProcAddr( device, "vkSetEvent" ) ); - vkSetHdrMetadataEXT = PFN_vkSetHdrMetadataEXT( vkGetDeviceProcAddr( device, "vkSetHdrMetadataEXT" ) ); - vkSetLocalDimmingAMD = PFN_vkSetLocalDimmingAMD( vkGetDeviceProcAddr( device, "vkSetLocalDimmingAMD" ) ); - vkSetPrivateDataEXT = PFN_vkSetPrivateDataEXT( vkGetDeviceProcAddr( device, "vkSetPrivateDataEXT" ) ); - vkSignalSemaphoreKHR = PFN_vkSignalSemaphoreKHR( vkGetDeviceProcAddr( device, "vkSignalSemaphoreKHR" ) ); - vkSignalSemaphore = PFN_vkSignalSemaphore( vkGetDeviceProcAddr( device, "vkSignalSemaphore" ) ); - if ( !vkSignalSemaphore ) vkSignalSemaphore = vkSignalSemaphoreKHR; - vkTrimCommandPoolKHR = PFN_vkTrimCommandPoolKHR( vkGetDeviceProcAddr( device, "vkTrimCommandPoolKHR" ) ); - vkTrimCommandPool = PFN_vkTrimCommandPool( vkGetDeviceProcAddr( device, "vkTrimCommandPool" ) ); - if ( !vkTrimCommandPool ) vkTrimCommandPool = vkTrimCommandPoolKHR; - vkUninitializePerformanceApiINTEL = PFN_vkUninitializePerformanceApiINTEL( vkGetDeviceProcAddr( device, "vkUninitializePerformanceApiINTEL" ) ); - vkUnmapMemory = PFN_vkUnmapMemory( vkGetDeviceProcAddr( device, "vkUnmapMemory" ) ); - vkUpdateDescriptorSetWithTemplateKHR = PFN_vkUpdateDescriptorSetWithTemplateKHR( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplateKHR" ) ); - vkUpdateDescriptorSetWithTemplate = PFN_vkUpdateDescriptorSetWithTemplate( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSetWithTemplate" ) ); - if ( !vkUpdateDescriptorSetWithTemplate ) vkUpdateDescriptorSetWithTemplate = vkUpdateDescriptorSetWithTemplateKHR; - vkUpdateDescriptorSets = PFN_vkUpdateDescriptorSets( vkGetDeviceProcAddr( device, "vkUpdateDescriptorSets" ) ); - vkWaitForFences = PFN_vkWaitForFences( vkGetDeviceProcAddr( device, "vkWaitForFences" ) ); - vkWaitSemaphoresKHR = PFN_vkWaitSemaphoresKHR( vkGetDeviceProcAddr( device, "vkWaitSemaphoresKHR" ) ); - vkWaitSemaphores = PFN_vkWaitSemaphores( vkGetDeviceProcAddr( device, "vkWaitSemaphores" ) ); - if ( !vkWaitSemaphores ) vkWaitSemaphores = vkWaitSemaphoresKHR; - vkWriteAccelerationStructuresPropertiesKHR = PFN_vkWriteAccelerationStructuresPropertiesKHR( vkGetDeviceProcAddr( device, "vkWriteAccelerationStructuresPropertiesKHR" ) ); - } - }; - -} // namespace VULKAN_HPP_NAMESPACE - -namespace std -{ - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureKHR const& accelerationStructureKHR) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(accelerationStructureKHR)); - } - }; - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::AccelerationStructureNV const& accelerationStructureNV) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(accelerationStructureNV)); - } - }; - - 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::BufferView const& bufferView) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(bufferView)); - } - }; - - 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::CommandPool const& commandPool) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(commandPool)); - } - }; - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugReportCallbackEXT const& debugReportCallbackEXT) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(debugReportCallbackEXT)); - } - }; - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::DebugUtilsMessengerEXT const& debugUtilsMessengerEXT) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(debugUtilsMessengerEXT)); - } - }; - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::DeferredOperationKHR const& deferredOperationKHR) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(deferredOperationKHR)); - } - }; - - 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::DescriptorUpdateTemplate const& descriptorUpdateTemplate) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(descriptorUpdateTemplate)); - } - }; - - 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::DeviceMemory const& deviceMemory) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(deviceMemory)); - } - }; - - 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)); - } - }; - - 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::Fence const& fence) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(fence)); - } - }; - - 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::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::IndirectCommandsLayoutNV const& indirectCommandsLayoutNV) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(indirectCommandsLayoutNV)); - } - }; - - 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::PerformanceConfigurationINTEL const& performanceConfigurationINTEL) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(performanceConfigurationINTEL)); - } - }; - - 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::Pipeline const& pipeline) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(pipeline)); - } - }; - - 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::PipelineLayout const& pipelineLayout) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(pipelineLayout)); - } - }; - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::PrivateDataSlotEXT const& privateDataSlotEXT) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(privateDataSlotEXT)); - } - }; - - 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::Queue const& queue) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(queue)); - } - }; - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::RenderPass const& renderPass) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(renderPass)); - } - }; - - 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::SamplerYcbcrConversion const& samplerYcbcrConversion) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(samplerYcbcrConversion)); - } - }; - - 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::ShaderModule const& shaderModule) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(shaderModule)); - } - }; - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::SurfaceKHR const& surfaceKHR) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(surfaceKHR)); - } - }; - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::SwapchainKHR const& swapchainKHR) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(swapchainKHR)); - } - }; - - template <> struct hash - { - std::size_t operator()(VULKAN_HPP_NAMESPACE::ValidationCacheEXT const& validationCacheEXT) const VULKAN_HPP_NOEXCEPT - { - return std::hash{}(static_cast(validationCacheEXT)); - } - }; -} // namespace std -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_android.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_android.h deleted file mode 100644 index 2160e3e7c6..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_android.h +++ /dev/null @@ -1,112 +0,0 @@ -#ifndef VULKAN_ANDROID_H_ -#define VULKAN_ANDROID_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateAndroidSurfaceKHR( - VkInstance instance, - const VkAndroidSurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - - -#define VK_ANDROID_external_memory_android_hardware_buffer 1 -struct AHardwareBuffer; -#define VK_ANDROID_EXTERNAL_MEMORY_ANDROID_HARDWARE_BUFFER_SPEC_VERSION 3 -#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 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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetAndroidHardwareBufferPropertiesANDROID( - VkDevice device, - const struct AHardwareBuffer* buffer, - VkAndroidHardwareBufferPropertiesANDROID* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryAndroidHardwareBufferANDROID( - VkDevice device, - const VkMemoryGetAndroidHardwareBufferInfoANDROID* pInfo, - struct AHardwareBuffer** pBuffer); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_beta.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_beta.h deleted file mode 100644 index bef8ce3489..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_beta.h +++ /dev/null @@ -1,56 +0,0 @@ -#ifndef VULKAN_BETA_H_ -#define VULKAN_BETA_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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; - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_core.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_core.h deleted file mode 100644 index 1423598a9c..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_core.h +++ /dev/null @@ -1,12189 +0,0 @@ -#ifndef VULKAN_CORE_H_ -#define VULKAN_CORE_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#define VK_VERSION_1_0 1 -#include "vk_platform.h" - -#define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; - - -#if !defined(VK_DEFINE_NON_DISPATCHABLE_HANDLE) -#if defined(__LP64__) || defined(_WIN64) || (defined(__x86_64__) && !defined(__ILP32__) ) || defined(_M_X64) || defined(__ia64) || defined (_M_IA64) || defined(__aarch64__) || defined(__powerpc64__) - #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_VERSION(major, minor, patch) \ - ((((uint32_t)(major)) << 22) | (((uint32_t)(minor)) << 12) | ((uint32_t)(patch))) - -// DEPRECATED: This define has been removed. Specific version defines (e.g. VK_API_VERSION_1_0), or the VK_MAKE_VERSION macro, should be used instead. -//#define VK_API_VERSION VK_MAKE_VERSION(1, 0, 0) // Patch version should always be set to 0 - -// Vulkan 1.0 version number -#define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0)// Patch version should always be set to 0 - -// Version of this file -#define VK_HEADER_VERSION 171 - -// Complete version of this file -#define VK_HEADER_VERSION_COMPLETE VK_MAKE_VERSION(1, 2, VK_HEADER_VERSION) - -#define VK_VERSION_MAJOR(version) ((uint32_t)(version) >> 22) -#define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) -#define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) - -#define VK_NULL_HANDLE 0 - -typedef uint32_t VkBool32; -typedef uint64_t VkDeviceAddress; -typedef uint64_t VkDeviceSize; -typedef uint32_t VkFlags; -typedef uint32_t VkSampleMask; -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImage) -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(VkEvent) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkQueryPool) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkBufferView) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkImageView) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkShaderModule) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineCache) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipelineLayout) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPipeline) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkRenderPass) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSetLayout) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSampler) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorSet) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorPool) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkFramebuffer) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkCommandPool) -#define VK_ATTACHMENT_UNUSED (~0U) -#define VK_FALSE 0 -#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_SUBPASS_EXTERNAL (~0U) -#define VK_TRUE 1 -#define VK_WHOLE_SIZE (~0ULL) -#define VK_MAX_MEMORY_TYPES 32 -#define VK_MAX_MEMORY_HEAPS 16 -#define VK_MAX_PHYSICAL_DEVICE_NAME_SIZE 256 -#define VK_UUID_SIZE 16 -#define VK_MAX_EXTENSION_NAME_SIZE 256 -#define VK_MAX_DESCRIPTION_SIZE 256 - -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_OUT_OF_POOL_MEMORY = -1000069000, - VK_ERROR_INVALID_EXTERNAL_HANDLE = -1000072003, - VK_ERROR_FRAGMENTATION = -1000161000, - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS = -1000257000, - VK_ERROR_SURFACE_LOST_KHR = -1000000000, - VK_ERROR_NATIVE_WINDOW_IN_USE_KHR = -1000000001, - VK_SUBOPTIMAL_KHR = 1000001003, - VK_ERROR_OUT_OF_DATE_KHR = -1000001004, - VK_ERROR_INCOMPATIBLE_DISPLAY_KHR = -1000003001, - VK_ERROR_VALIDATION_FAILED_EXT = -1000011001, - VK_ERROR_INVALID_SHADER_NV = -1000012000, - VK_ERROR_INVALID_DRM_FORMAT_MODIFIER_PLANE_LAYOUT_EXT = -1000158000, - VK_ERROR_NOT_PERMITTED_EXT = -1000174001, - VK_ERROR_FULL_SCREEN_EXCLUSIVE_MODE_LOST_EXT = -1000255000, - VK_THREAD_IDLE_KHR = 1000268000, - VK_THREAD_DONE_KHR = 1000268001, - VK_OPERATION_DEFERRED_KHR = 1000268002, - VK_OPERATION_NOT_DEFERRED_KHR = 1000268003, - VK_PIPELINE_COMPILE_REQUIRED_EXT = 1000297000, - VK_ERROR_OUT_OF_POOL_MEMORY_KHR = 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_INVALID_DEVICE_ADDRESS_EXT = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, - VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS_KHR = VK_ERROR_INVALID_OPAQUE_CAPTURE_ADDRESS, - VK_ERROR_PIPELINE_COMPILE_REQUIRED_EXT = VK_PIPELINE_COMPILE_REQUIRED_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_PHYSICAL_DEVICE_SUBGROUP_PROPERTIES = 1000094000, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_INFO = 1000157000, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_INFO = 1000157001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_16BIT_STORAGE_FEATURES = 1000083000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_REQUIREMENTS = 1000127000, - VK_STRUCTURE_TYPE_MEMORY_DEDICATED_ALLOCATE_INFO = 1000127001, - VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_FLAGS_INFO = 1000060000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_RENDER_PASS_BEGIN_INFO = 1000060003, - VK_STRUCTURE_TYPE_DEVICE_GROUP_COMMAND_BUFFER_BEGIN_INFO = 1000060004, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SUBMIT_INFO = 1000060005, - VK_STRUCTURE_TYPE_DEVICE_GROUP_BIND_SPARSE_INFO = 1000060006, - VK_STRUCTURE_TYPE_BIND_BUFFER_MEMORY_DEVICE_GROUP_INFO = 1000060013, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_DEVICE_GROUP_INFO = 1000060014, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_GROUP_PROPERTIES = 1000070000, - VK_STRUCTURE_TYPE_DEVICE_GROUP_DEVICE_CREATE_INFO = 1000070001, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_REQUIREMENTS_INFO_2 = 1000146000, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_REQUIREMENTS_INFO_2 = 1000146001, - VK_STRUCTURE_TYPE_IMAGE_SPARSE_MEMORY_REQUIREMENTS_INFO_2 = 1000146002, - VK_STRUCTURE_TYPE_MEMORY_REQUIREMENTS_2 = 1000146003, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_MEMORY_REQUIREMENTS_2 = 1000146004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2 = 1000059000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROPERTIES_2 = 1000059001, - VK_STRUCTURE_TYPE_FORMAT_PROPERTIES_2 = 1000059002, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_PROPERTIES_2 = 1000059003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_FORMAT_INFO_2 = 1000059004, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_PROPERTIES_2 = 1000059005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PROPERTIES_2 = 1000059006, - VK_STRUCTURE_TYPE_SPARSE_IMAGE_FORMAT_PROPERTIES_2 = 1000059007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SPARSE_IMAGE_FORMAT_INFO_2 = 1000059008, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_POINT_CLIPPING_PROPERTIES = 1000117000, - VK_STRUCTURE_TYPE_RENDER_PASS_INPUT_ATTACHMENT_ASPECT_CREATE_INFO = 1000117001, - VK_STRUCTURE_TYPE_IMAGE_VIEW_USAGE_CREATE_INFO = 1000117002, - VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_DOMAIN_ORIGIN_STATE_CREATE_INFO = 1000117003, - VK_STRUCTURE_TYPE_RENDER_PASS_MULTIVIEW_CREATE_INFO = 1000053000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_FEATURES = 1000053001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PROPERTIES = 1000053002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VARIABLE_POINTERS_FEATURES = 1000120000, - VK_STRUCTURE_TYPE_PROTECTED_SUBMIT_INFO = 1000145000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_FEATURES = 1000145001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PROTECTED_MEMORY_PROPERTIES = 1000145002, - VK_STRUCTURE_TYPE_DEVICE_QUEUE_INFO_2 = 1000145003, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_CREATE_INFO = 1000156000, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_INFO = 1000156001, - VK_STRUCTURE_TYPE_BIND_IMAGE_PLANE_MEMORY_INFO = 1000156002, - VK_STRUCTURE_TYPE_IMAGE_PLANE_MEMORY_REQUIREMENTS_INFO = 1000156003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_YCBCR_CONVERSION_FEATURES = 1000156004, - VK_STRUCTURE_TYPE_SAMPLER_YCBCR_CONVERSION_IMAGE_FORMAT_PROPERTIES = 1000156005, - VK_STRUCTURE_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_CREATE_INFO = 1000085000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_IMAGE_FORMAT_INFO = 1000071000, - VK_STRUCTURE_TYPE_EXTERNAL_IMAGE_FORMAT_PROPERTIES = 1000071001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_BUFFER_INFO = 1000071002, - VK_STRUCTURE_TYPE_EXTERNAL_BUFFER_PROPERTIES = 1000071003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ID_PROPERTIES = 1000071004, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_BUFFER_CREATE_INFO = 1000072000, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO = 1000072001, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO = 1000072002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_FENCE_INFO = 1000112000, - VK_STRUCTURE_TYPE_EXTERNAL_FENCE_PROPERTIES = 1000112001, - VK_STRUCTURE_TYPE_EXPORT_FENCE_CREATE_INFO = 1000113000, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_CREATE_INFO = 1000077000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_SEMAPHORE_INFO = 1000076000, - VK_STRUCTURE_TYPE_EXTERNAL_SEMAPHORE_PROPERTIES = 1000076001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MAINTENANCE_3_PROPERTIES = 1000168000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_SUPPORT = 1000168001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DRAW_PARAMETERS_FEATURES = 1000063000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_FEATURES = 49, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_1_PROPERTIES = 50, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_FEATURES = 51, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_1_2_PROPERTIES = 52, - VK_STRUCTURE_TYPE_IMAGE_FORMAT_LIST_CREATE_INFO = 1000147000, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_2 = 1000109000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_2 = 1000109001, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_2 = 1000109002, - VK_STRUCTURE_TYPE_SUBPASS_DEPENDENCY_2 = 1000109003, - VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO_2 = 1000109004, - VK_STRUCTURE_TYPE_SUBPASS_BEGIN_INFO = 1000109005, - VK_STRUCTURE_TYPE_SUBPASS_END_INFO = 1000109006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_8BIT_STORAGE_FEATURES = 1000177000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DRIVER_PROPERTIES = 1000196000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_INT64_FEATURES = 1000180000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_FLOAT16_INT8_FEATURES = 1000082000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FLOAT_CONTROLS_PROPERTIES = 1000197000, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_BINDING_FLAGS_CREATE_INFO = 1000161000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_FEATURES = 1000161001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DESCRIPTOR_INDEXING_PROPERTIES = 1000161002, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_ALLOCATE_INFO = 1000161003, - VK_STRUCTURE_TYPE_DESCRIPTOR_SET_VARIABLE_DESCRIPTOR_COUNT_LAYOUT_SUPPORT = 1000161004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_STENCIL_RESOLVE_PROPERTIES = 1000199000, - VK_STRUCTURE_TYPE_SUBPASS_DESCRIPTION_DEPTH_STENCIL_RESOLVE = 1000199001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES = 1000221000, - VK_STRUCTURE_TYPE_IMAGE_STENCIL_USAGE_CREATE_INFO = 1000246000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLER_FILTER_MINMAX_PROPERTIES = 1000130000, - VK_STRUCTURE_TYPE_SAMPLER_REDUCTION_MODE_CREATE_INFO = 1000130001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VULKAN_MEMORY_MODEL_FEATURES = 1000211000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGELESS_FRAMEBUFFER_FEATURES = 1000108000, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENTS_CREATE_INFO = 1000108001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_ATTACHMENT_IMAGE_INFO = 1000108002, - VK_STRUCTURE_TYPE_RENDER_PASS_ATTACHMENT_BEGIN_INFO = 1000108003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_UNIFORM_BUFFER_STANDARD_LAYOUT_FEATURES = 1000253000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SUBGROUP_EXTENDED_TYPES_FEATURES = 1000175000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SEPARATE_DEPTH_STENCIL_LAYOUTS_FEATURES = 1000241000, - VK_STRUCTURE_TYPE_ATTACHMENT_REFERENCE_STENCIL_LAYOUT = 1000241001, - VK_STRUCTURE_TYPE_ATTACHMENT_DESCRIPTION_STENCIL_LAYOUT = 1000241002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES = 1000261000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_FEATURES = 1000207000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TIMELINE_SEMAPHORE_PROPERTIES = 1000207001, - VK_STRUCTURE_TYPE_SEMAPHORE_TYPE_CREATE_INFO = 1000207002, - VK_STRUCTURE_TYPE_TIMELINE_SEMAPHORE_SUBMIT_INFO = 1000207003, - VK_STRUCTURE_TYPE_SEMAPHORE_WAIT_INFO = 1000207004, - VK_STRUCTURE_TYPE_SEMAPHORE_SIGNAL_INFO = 1000207005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES = 1000257000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_INFO = 1000244001, - VK_STRUCTURE_TYPE_BUFFER_OPAQUE_CAPTURE_ADDRESS_CREATE_INFO = 1000257002, - VK_STRUCTURE_TYPE_MEMORY_OPAQUE_CAPTURE_ADDRESS_ALLOCATE_INFO = 1000257003, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OPAQUE_CAPTURE_ADDRESS_INFO = 1000257004, - VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR = 1000001000, - VK_STRUCTURE_TYPE_PRESENT_INFO_KHR = 1000001001, - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_CAPABILITIES_KHR = 1000060007, - VK_STRUCTURE_TYPE_IMAGE_SWAPCHAIN_CREATE_INFO_KHR = 1000060008, - VK_STRUCTURE_TYPE_BIND_IMAGE_MEMORY_SWAPCHAIN_INFO_KHR = 1000060009, - VK_STRUCTURE_TYPE_ACQUIRE_NEXT_IMAGE_INFO_KHR = 1000060010, - VK_STRUCTURE_TYPE_DEVICE_GROUP_PRESENT_INFO_KHR = 1000060011, - VK_STRUCTURE_TYPE_DEVICE_GROUP_SWAPCHAIN_CREATE_INFO_KHR = 1000060012, - VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR = 1000002000, - VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR = 1000002001, - VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR = 1000003000, - VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR = 1000004000, - VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR = 1000005000, - VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR = 1000006000, - VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, - VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, - VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, - VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_NAME_INFO_EXT = 1000022000, - VK_STRUCTURE_TYPE_DEBUG_MARKER_OBJECT_TAG_INFO_EXT = 1000022001, - VK_STRUCTURE_TYPE_DEBUG_MARKER_MARKER_INFO_EXT = 1000022002, - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_IMAGE_CREATE_INFO_NV = 1000026000, - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_BUFFER_CREATE_INFO_NV = 1000026001, - VK_STRUCTURE_TYPE_DEDICATED_ALLOCATION_MEMORY_ALLOCATE_INFO_NV = 1000026002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_FEATURES_EXT = 1000028000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TRANSFORM_FEEDBACK_PROPERTIES_EXT = 1000028001, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_STREAM_CREATE_INFO_EXT = 1000028002, - VK_STRUCTURE_TYPE_IMAGE_VIEW_HANDLE_INFO_NVX = 1000030000, - VK_STRUCTURE_TYPE_IMAGE_VIEW_ADDRESS_PROPERTIES_NVX = 1000030001, - VK_STRUCTURE_TYPE_TEXTURE_LOD_GATHER_FORMAT_PROPERTIES_AMD = 1000041000, - VK_STRUCTURE_TYPE_STREAM_DESCRIPTOR_SURFACE_CREATE_INFO_GGP = 1000049000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CORNER_SAMPLED_IMAGE_FEATURES_NV = 1000050000, - VK_STRUCTURE_TYPE_EXTERNAL_MEMORY_IMAGE_CREATE_INFO_NV = 1000056000, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_ALLOCATE_INFO_NV = 1000056001, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057000, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_NV = 1000057001, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_NV = 1000058000, - VK_STRUCTURE_TYPE_VALIDATION_FLAGS_EXT = 1000061000, - VK_STRUCTURE_TYPE_VI_SURFACE_CREATE_INFO_NN = 1000062000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXTURE_COMPRESSION_ASTC_HDR_FEATURES_EXT = 1000066000, - VK_STRUCTURE_TYPE_IMAGE_VIEW_ASTC_DECODE_MODE_EXT = 1000067000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ASTC_DECODE_FEATURES_EXT = 1000067001, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073000, - VK_STRUCTURE_TYPE_EXPORT_MEMORY_WIN32_HANDLE_INFO_KHR = 1000073001, - VK_STRUCTURE_TYPE_MEMORY_WIN32_HANDLE_PROPERTIES_KHR = 1000073002, - VK_STRUCTURE_TYPE_MEMORY_GET_WIN32_HANDLE_INFO_KHR = 1000073003, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_FD_INFO_KHR = 1000074000, - VK_STRUCTURE_TYPE_MEMORY_FD_PROPERTIES_KHR = 1000074001, - VK_STRUCTURE_TYPE_MEMORY_GET_FD_INFO_KHR = 1000074002, - VK_STRUCTURE_TYPE_WIN32_KEYED_MUTEX_ACQUIRE_RELEASE_INFO_KHR = 1000075000, - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078000, - VK_STRUCTURE_TYPE_EXPORT_SEMAPHORE_WIN32_HANDLE_INFO_KHR = 1000078001, - VK_STRUCTURE_TYPE_D3D12_FENCE_SUBMIT_INFO_KHR = 1000078002, - VK_STRUCTURE_TYPE_SEMAPHORE_GET_WIN32_HANDLE_INFO_KHR = 1000078003, - VK_STRUCTURE_TYPE_IMPORT_SEMAPHORE_FD_INFO_KHR = 1000079000, - VK_STRUCTURE_TYPE_SEMAPHORE_GET_FD_INFO_KHR = 1000079001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PUSH_DESCRIPTOR_PROPERTIES_KHR = 1000080000, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_CONDITIONAL_RENDERING_INFO_EXT = 1000081000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONDITIONAL_RENDERING_FEATURES_EXT = 1000081001, - VK_STRUCTURE_TYPE_CONDITIONAL_RENDERING_BEGIN_INFO_EXT = 1000081002, - VK_STRUCTURE_TYPE_PRESENT_REGIONS_KHR = 1000084000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_W_SCALING_STATE_CREATE_INFO_NV = 1000087000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_EXT = 1000090000, - VK_STRUCTURE_TYPE_DISPLAY_POWER_INFO_EXT = 1000091000, - VK_STRUCTURE_TYPE_DEVICE_EVENT_INFO_EXT = 1000091001, - VK_STRUCTURE_TYPE_DISPLAY_EVENT_INFO_EXT = 1000091002, - VK_STRUCTURE_TYPE_SWAPCHAIN_COUNTER_CREATE_INFO_EXT = 1000091003, - VK_STRUCTURE_TYPE_PRESENT_TIMES_INFO_GOOGLE = 1000092000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MULTIVIEW_PER_VIEW_ATTRIBUTES_PROPERTIES_NVX = 1000097000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_SWIZZLE_STATE_CREATE_INFO_NV = 1000098000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DISCARD_RECTANGLE_PROPERTIES_EXT = 1000099000, - VK_STRUCTURE_TYPE_PIPELINE_DISCARD_RECTANGLE_STATE_CREATE_INFO_EXT = 1000099001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CONSERVATIVE_RASTERIZATION_PROPERTIES_EXT = 1000101000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_CONSERVATIVE_STATE_CREATE_INFO_EXT = 1000101001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEPTH_CLIP_ENABLE_FEATURES_EXT = 1000102000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_DEPTH_CLIP_STATE_CREATE_INFO_EXT = 1000102001, - VK_STRUCTURE_TYPE_HDR_METADATA_EXT = 1000105000, - VK_STRUCTURE_TYPE_SHARED_PRESENT_SURFACE_CAPABILITIES_KHR = 1000111000, - VK_STRUCTURE_TYPE_IMPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114000, - VK_STRUCTURE_TYPE_EXPORT_FENCE_WIN32_HANDLE_INFO_KHR = 1000114001, - VK_STRUCTURE_TYPE_FENCE_GET_WIN32_HANDLE_INFO_KHR = 1000114002, - VK_STRUCTURE_TYPE_IMPORT_FENCE_FD_INFO_KHR = 1000115000, - VK_STRUCTURE_TYPE_FENCE_GET_FD_INFO_KHR = 1000115001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_FEATURES_KHR = 1000116000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PERFORMANCE_QUERY_PROPERTIES_KHR = 1000116001, - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_CREATE_INFO_KHR = 1000116002, - VK_STRUCTURE_TYPE_PERFORMANCE_QUERY_SUBMIT_INFO_KHR = 1000116003, - VK_STRUCTURE_TYPE_ACQUIRE_PROFILING_LOCK_INFO_KHR = 1000116004, - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_KHR = 1000116005, - VK_STRUCTURE_TYPE_PERFORMANCE_COUNTER_DESCRIPTION_KHR = 1000116006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SURFACE_INFO_2_KHR = 1000119000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_2_KHR = 1000119001, - VK_STRUCTURE_TYPE_SURFACE_FORMAT_2_KHR = 1000119002, - VK_STRUCTURE_TYPE_DISPLAY_PROPERTIES_2_KHR = 1000121000, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_PROPERTIES_2_KHR = 1000121001, - VK_STRUCTURE_TYPE_DISPLAY_MODE_PROPERTIES_2_KHR = 1000121002, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_INFO_2_KHR = 1000121003, - VK_STRUCTURE_TYPE_DISPLAY_PLANE_CAPABILITIES_2_KHR = 1000121004, - VK_STRUCTURE_TYPE_IOS_SURFACE_CREATE_INFO_MVK = 1000122000, - VK_STRUCTURE_TYPE_MACOS_SURFACE_CREATE_INFO_MVK = 1000123000, - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_NAME_INFO_EXT = 1000128000, - VK_STRUCTURE_TYPE_DEBUG_UTILS_OBJECT_TAG_INFO_EXT = 1000128001, - VK_STRUCTURE_TYPE_DEBUG_UTILS_LABEL_EXT = 1000128002, - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CALLBACK_DATA_EXT = 1000128003, - VK_STRUCTURE_TYPE_DEBUG_UTILS_MESSENGER_CREATE_INFO_EXT = 1000128004, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_USAGE_ANDROID = 1000129000, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_PROPERTIES_ANDROID = 1000129001, - VK_STRUCTURE_TYPE_ANDROID_HARDWARE_BUFFER_FORMAT_PROPERTIES_ANDROID = 1000129002, - VK_STRUCTURE_TYPE_IMPORT_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129003, - VK_STRUCTURE_TYPE_MEMORY_GET_ANDROID_HARDWARE_BUFFER_INFO_ANDROID = 1000129004, - VK_STRUCTURE_TYPE_EXTERNAL_FORMAT_ANDROID = 1000129005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_FEATURES_EXT = 1000138000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INLINE_UNIFORM_BLOCK_PROPERTIES_EXT = 1000138001, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_INLINE_UNIFORM_BLOCK_EXT = 1000138002, - VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_INLINE_UNIFORM_BLOCK_CREATE_INFO_EXT = 1000138003, - VK_STRUCTURE_TYPE_SAMPLE_LOCATIONS_INFO_EXT = 1000143000, - VK_STRUCTURE_TYPE_RENDER_PASS_SAMPLE_LOCATIONS_BEGIN_INFO_EXT = 1000143001, - VK_STRUCTURE_TYPE_PIPELINE_SAMPLE_LOCATIONS_STATE_CREATE_INFO_EXT = 1000143002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SAMPLE_LOCATIONS_PROPERTIES_EXT = 1000143003, - VK_STRUCTURE_TYPE_MULTISAMPLE_PROPERTIES_EXT = 1000143004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_FEATURES_EXT = 1000148000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BLEND_OPERATION_ADVANCED_PROPERTIES_EXT = 1000148001, - VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_ADVANCED_STATE_CREATE_INFO_EXT = 1000148002, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_TO_COLOR_STATE_CREATE_INFO_NV = 1000149000, - VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET_ACCELERATION_STRUCTURE_KHR = 1000150007, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_GEOMETRY_INFO_KHR = 1000150000, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_DEVICE_ADDRESS_INFO_KHR = 1000150002, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_AABBS_DATA_KHR = 1000150003, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_INSTANCES_DATA_KHR = 1000150004, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_TRIANGLES_DATA_KHR = 1000150005, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_GEOMETRY_KHR = 1000150006, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_VERSION_INFO_KHR = 1000150009, - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_INFO_KHR = 1000150010, - VK_STRUCTURE_TYPE_COPY_ACCELERATION_STRUCTURE_TO_MEMORY_INFO_KHR = 1000150011, - VK_STRUCTURE_TYPE_COPY_MEMORY_TO_ACCELERATION_STRUCTURE_INFO_KHR = 1000150012, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_FEATURES_KHR = 1000150013, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ACCELERATION_STRUCTURE_PROPERTIES_KHR = 1000150014, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_CREATE_INFO_KHR = 1000150017, - VK_STRUCTURE_TYPE_ACCELERATION_STRUCTURE_BUILD_SIZES_INFO_KHR = 1000150020, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_FEATURES_KHR = 1000347000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_TRACING_PIPELINE_PROPERTIES_KHR = 1000347001, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_CREATE_INFO_KHR = 1000150015, - VK_STRUCTURE_TYPE_RAY_TRACING_SHADER_GROUP_CREATE_INFO_KHR = 1000150016, - VK_STRUCTURE_TYPE_RAY_TRACING_PIPELINE_INTERFACE_CREATE_INFO_KHR = 1000150018, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_RAY_QUERY_FEATURES_KHR = 1000348013, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_MODULATION_STATE_CREATE_INFO_NV = 1000152000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_FEATURES_NV = 1000154000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_SM_BUILTINS_PROPERTIES_NV = 1000154001, - VK_STRUCTURE_TYPE_DRM_FORMAT_MODIFIER_PROPERTIES_LIST_EXT = 1000158000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_DRM_FORMAT_MODIFIER_INFO_EXT = 1000158002, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_LIST_CREATE_INFO_EXT = 1000158003, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_EXPLICIT_CREATE_INFO_EXT = 1000158004, - VK_STRUCTURE_TYPE_IMAGE_DRM_FORMAT_MODIFIER_PROPERTIES_EXT = 1000158005, - VK_STRUCTURE_TYPE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160000, - VK_STRUCTURE_TYPE_SHADER_MODULE_VALIDATION_CACHE_CREATE_INFO_EXT = 1000160001, -#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_DEVICE_QUEUE_GLOBAL_PRIORITY_CREATE_INFO_EXT = 1000174000, - VK_STRUCTURE_TYPE_IMPORT_MEMORY_HOST_POINTER_INFO_EXT = 1000178000, - VK_STRUCTURE_TYPE_MEMORY_HOST_POINTER_PROPERTIES_EXT = 1000178001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTERNAL_MEMORY_HOST_PROPERTIES_EXT = 1000178002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CLOCK_FEATURES_KHR = 1000181000, - VK_STRUCTURE_TYPE_PIPELINE_COMPILER_CONTROL_CREATE_INFO_AMD = 1000183000, - VK_STRUCTURE_TYPE_CALIBRATED_TIMESTAMP_INFO_EXT = 1000184000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_AMD = 1000185000, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_OVERALLOCATION_CREATE_INFO_AMD = 1000189000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_PROPERTIES_EXT = 1000190000, - VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_DIVISOR_STATE_CREATE_INFO_EXT = 1000190001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_VERTEX_ATTRIBUTE_DIVISOR_FEATURES_EXT = 1000190002, - VK_STRUCTURE_TYPE_PRESENT_FRAME_TOKEN_GGP = 1000191000, - VK_STRUCTURE_TYPE_PIPELINE_CREATION_FEEDBACK_CREATE_INFO_EXT = 1000192000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COMPUTE_SHADER_DERIVATIVES_FEATURES_NV = 1000201000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_FEATURES_NV = 1000202000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MESH_SHADER_PROPERTIES_NV = 1000202001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_BARYCENTRIC_FEATURES_NV = 1000203000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_FOOTPRINT_FEATURES_NV = 1000204000, - VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_EXCLUSIVE_SCISSOR_STATE_CREATE_INFO_NV = 1000205000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXCLUSIVE_SCISSOR_FEATURES_NV = 1000205002, - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_NV = 1000206000, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_NV = 1000206001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_INTEGER_FUNCTIONS_2_FEATURES_INTEL = 1000209000, - VK_STRUCTURE_TYPE_QUERY_POOL_PERFORMANCE_QUERY_CREATE_INFO_INTEL = 1000210000, - VK_STRUCTURE_TYPE_INITIALIZE_PERFORMANCE_API_INFO_INTEL = 1000210001, - VK_STRUCTURE_TYPE_PERFORMANCE_MARKER_INFO_INTEL = 1000210002, - VK_STRUCTURE_TYPE_PERFORMANCE_STREAM_MARKER_INFO_INTEL = 1000210003, - VK_STRUCTURE_TYPE_PERFORMANCE_OVERRIDE_INFO_INTEL = 1000210004, - VK_STRUCTURE_TYPE_PERFORMANCE_CONFIGURATION_ACQUIRE_INFO_INTEL = 1000210005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PCI_BUS_INFO_PROPERTIES_EXT = 1000212000, - VK_STRUCTURE_TYPE_DISPLAY_NATIVE_HDR_SURFACE_CAPABILITIES_AMD = 1000213000, - VK_STRUCTURE_TYPE_SWAPCHAIN_DISPLAY_NATIVE_HDR_CREATE_INFO_AMD = 1000213001, - VK_STRUCTURE_TYPE_IMAGEPIPE_SURFACE_CREATE_INFO_FUCHSIA = 1000214000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_TERMINATE_INVOCATION_FEATURES_KHR = 1000215000, - VK_STRUCTURE_TYPE_METAL_SURFACE_CREATE_INFO_EXT = 1000217000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_FEATURES_EXT = 1000218000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_PROPERTIES_EXT = 1000218001, - VK_STRUCTURE_TYPE_RENDER_PASS_FRAGMENT_DENSITY_MAP_CREATE_INFO_EXT = 1000218002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_PROPERTIES_EXT = 1000225000, - VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_REQUIRED_SUBGROUP_SIZE_CREATE_INFO_EXT = 1000225001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SUBGROUP_SIZE_CONTROL_FEATURES_EXT = 1000225002, - VK_STRUCTURE_TYPE_FRAGMENT_SHADING_RATE_ATTACHMENT_INFO_KHR = 1000226000, - VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_STATE_CREATE_INFO_KHR = 1000226001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_PROPERTIES_KHR = 1000226002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_FEATURES_KHR = 1000226003, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_KHR = 1000226004, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_CORE_PROPERTIES_2_AMD = 1000227000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COHERENT_MEMORY_FEATURES_AMD = 1000229000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_IMAGE_ATOMIC_INT64_FEATURES_EXT = 1000234000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_BUDGET_PROPERTIES_EXT = 1000237000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MEMORY_PRIORITY_FEATURES_EXT = 1000238000, - VK_STRUCTURE_TYPE_MEMORY_PRIORITY_ALLOCATE_INFO_EXT = 1000238001, - VK_STRUCTURE_TYPE_SURFACE_PROTECTED_CAPABILITIES_KHR = 1000239000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEDICATED_ALLOCATION_IMAGE_ALIASING_FEATURES_NV = 1000240000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_BUFFER_DEVICE_ADDRESS_FEATURES_EXT = 1000244000, - VK_STRUCTURE_TYPE_BUFFER_DEVICE_ADDRESS_CREATE_INFO_EXT = 1000244002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TOOL_PROPERTIES_EXT = 1000245000, - VK_STRUCTURE_TYPE_VALIDATION_FEATURES_EXT = 1000247000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_FEATURES_NV = 1000249000, - VK_STRUCTURE_TYPE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COOPERATIVE_MATRIX_PROPERTIES_NV = 1000249002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_COVERAGE_REDUCTION_MODE_FEATURES_NV = 1000250000, - VK_STRUCTURE_TYPE_PIPELINE_COVERAGE_REDUCTION_STATE_CREATE_INFO_NV = 1000250001, - VK_STRUCTURE_TYPE_FRAMEBUFFER_MIXED_SAMPLES_COMBINATION_NV = 1000250002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADER_INTERLOCK_FEATURES_EXT = 1000251000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_YCBCR_IMAGE_ARRAYS_FEATURES_EXT = 1000252000, - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_INFO_EXT = 1000255000, - VK_STRUCTURE_TYPE_SURFACE_CAPABILITIES_FULL_SCREEN_EXCLUSIVE_EXT = 1000255002, - VK_STRUCTURE_TYPE_SURFACE_FULL_SCREEN_EXCLUSIVE_WIN32_INFO_EXT = 1000255001, - VK_STRUCTURE_TYPE_HEADLESS_SURFACE_CREATE_INFO_EXT = 1000256000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_FEATURES_EXT = 1000259000, - VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_LINE_STATE_CREATE_INFO_EXT = 1000259001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_LINE_RASTERIZATION_PROPERTIES_EXT = 1000259002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_ATOMIC_FLOAT_FEATURES_EXT = 1000260000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_INDEX_TYPE_UINT8_FEATURES_EXT = 1000265000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_EXTENDED_DYNAMIC_STATE_FEATURES_EXT = 1000267000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_EXECUTABLE_PROPERTIES_FEATURES_KHR = 1000269000, - VK_STRUCTURE_TYPE_PIPELINE_INFO_KHR = 1000269001, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_PROPERTIES_KHR = 1000269002, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INFO_KHR = 1000269003, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_STATISTIC_KHR = 1000269004, - VK_STRUCTURE_TYPE_PIPELINE_EXECUTABLE_INTERNAL_REPRESENTATION_KHR = 1000269005, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SHADER_DEMOTE_TO_HELPER_INVOCATION_FEATURES_EXT = 1000276000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_PROPERTIES_NV = 1000277000, - VK_STRUCTURE_TYPE_GRAPHICS_SHADER_GROUP_CREATE_INFO_NV = 1000277001, - VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_SHADER_GROUPS_CREATE_INFO_NV = 1000277002, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_TOKEN_NV = 1000277003, - VK_STRUCTURE_TYPE_INDIRECT_COMMANDS_LAYOUT_CREATE_INFO_NV = 1000277004, - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_INFO_NV = 1000277005, - VK_STRUCTURE_TYPE_GENERATED_COMMANDS_MEMORY_REQUIREMENTS_INFO_NV = 1000277006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_GENERATED_COMMANDS_FEATURES_NV = 1000277007, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_FEATURES_EXT = 1000281000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_TEXEL_BUFFER_ALIGNMENT_PROPERTIES_EXT = 1000281001, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_RENDER_PASS_TRANSFORM_INFO_QCOM = 1000282000, - VK_STRUCTURE_TYPE_RENDER_PASS_TRANSFORM_BEGIN_INFO_QCOM = 1000282001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DEVICE_MEMORY_REPORT_FEATURES_EXT = 1000284000, - VK_STRUCTURE_TYPE_DEVICE_DEVICE_MEMORY_REPORT_CREATE_INFO_EXT = 1000284001, - VK_STRUCTURE_TYPE_DEVICE_MEMORY_REPORT_CALLBACK_DATA_EXT = 1000284002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_FEATURES_EXT = 1000286000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ROBUSTNESS_2_PROPERTIES_EXT = 1000286001, - VK_STRUCTURE_TYPE_SAMPLER_CUSTOM_BORDER_COLOR_CREATE_INFO_EXT = 1000287000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_PROPERTIES_EXT = 1000287001, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_CUSTOM_BORDER_COLOR_FEATURES_EXT = 1000287002, - VK_STRUCTURE_TYPE_PIPELINE_LIBRARY_CREATE_INFO_KHR = 1000290000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PRIVATE_DATA_FEATURES_EXT = 1000295000, - VK_STRUCTURE_TYPE_DEVICE_PRIVATE_DATA_CREATE_INFO_EXT = 1000295001, - VK_STRUCTURE_TYPE_PRIVATE_DATA_SLOT_CREATE_INFO_EXT = 1000295002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_PIPELINE_CREATION_CACHE_CONTROL_FEATURES_EXT = 1000297000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_DIAGNOSTICS_CONFIG_FEATURES_NV = 1000300000, - VK_STRUCTURE_TYPE_DEVICE_DIAGNOSTICS_CONFIG_CREATE_INFO_NV = 1000300001, - VK_STRUCTURE_TYPE_MEMORY_BARRIER_2_KHR = 1000314000, - VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER_2_KHR = 1000314001, - VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER_2_KHR = 1000314002, - VK_STRUCTURE_TYPE_DEPENDENCY_INFO_KHR = 1000314003, - VK_STRUCTURE_TYPE_SUBMIT_INFO_2_KHR = 1000314004, - VK_STRUCTURE_TYPE_SEMAPHORE_SUBMIT_INFO_KHR = 1000314005, - VK_STRUCTURE_TYPE_COMMAND_BUFFER_SUBMIT_INFO_KHR = 1000314006, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SYNCHRONIZATION_2_FEATURES_KHR = 1000314007, - VK_STRUCTURE_TYPE_QUEUE_FAMILY_CHECKPOINT_PROPERTIES_2_NV = 1000314008, - VK_STRUCTURE_TYPE_CHECKPOINT_DATA_2_NV = 1000314009, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_ZERO_INITIALIZE_WORKGROUP_MEMORY_FEATURES_KHR = 1000325000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_PROPERTIES_NV = 1000326000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_SHADING_RATE_ENUMS_FEATURES_NV = 1000326001, - VK_STRUCTURE_TYPE_PIPELINE_FRAGMENT_SHADING_RATE_ENUM_STATE_CREATE_INFO_NV = 1000326002, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_FEATURES_EXT = 1000332000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FRAGMENT_DENSITY_MAP_2_PROPERTIES_EXT = 1000332001, - VK_STRUCTURE_TYPE_COPY_COMMAND_TRANSFORM_INFO_QCOM = 1000333000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_IMAGE_ROBUSTNESS_FEATURES_EXT = 1000335000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_WORKGROUP_MEMORY_EXPLICIT_LAYOUT_FEATURES_KHR = 1000336000, - VK_STRUCTURE_TYPE_COPY_BUFFER_INFO_2_KHR = 1000337000, - VK_STRUCTURE_TYPE_COPY_IMAGE_INFO_2_KHR = 1000337001, - VK_STRUCTURE_TYPE_COPY_BUFFER_TO_IMAGE_INFO_2_KHR = 1000337002, - VK_STRUCTURE_TYPE_COPY_IMAGE_TO_BUFFER_INFO_2_KHR = 1000337003, - VK_STRUCTURE_TYPE_BLIT_IMAGE_INFO_2_KHR = 1000337004, - VK_STRUCTURE_TYPE_RESOLVE_IMAGE_INFO_2_KHR = 1000337005, - VK_STRUCTURE_TYPE_BUFFER_COPY_2_KHR = 1000337006, - VK_STRUCTURE_TYPE_IMAGE_COPY_2_KHR = 1000337007, - VK_STRUCTURE_TYPE_IMAGE_BLIT_2_KHR = 1000337008, - VK_STRUCTURE_TYPE_BUFFER_IMAGE_COPY_2_KHR = 1000337009, - VK_STRUCTURE_TYPE_IMAGE_RESOLVE_2_KHR = 1000337010, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_4444_FORMATS_FEATURES_EXT = 1000340000, - VK_STRUCTURE_TYPE_DIRECTFB_SURFACE_CREATE_INFO_EXT = 1000346000, - VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_MUTABLE_DESCRIPTOR_TYPE_FEATURES_VALVE = 1000351000, - VK_STRUCTURE_TYPE_MUTABLE_DESCRIPTOR_TYPE_CREATE_INFO_VALVE = 1000351002, - VK_STRUCTURE_TYPE_SCREEN_SURFACE_CREATE_INFO_QNX = 1000378000, - 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 = VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT, - 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_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_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 = 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_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_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_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_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_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 = 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_SCALAR_BLOCK_LAYOUT_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_SCALAR_BLOCK_LAYOUT_FEATURES, - 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_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_HOST_QUERY_RESET_FEATURES_EXT = VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_HOST_QUERY_RESET_FEATURES, - VK_STRUCTURE_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkStructureType; - -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_PRESENT_SRC_KHR = 1000001002, - VK_IMAGE_LAYOUT_SHARED_PRESENT_KHR = 1000111000, - VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV = 1000164003, - VK_IMAGE_LAYOUT_FRAGMENT_DENSITY_MAP_OPTIMAL_EXT = 1000218000, - VK_IMAGE_LAYOUT_READ_ONLY_OPTIMAL_KHR = 1000314000, - VK_IMAGE_LAYOUT_ATTACHMENT_OPTIMAL_KHR = 1000314001, - 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_FRAGMENT_SHADING_RATE_ATTACHMENT_OPTIMAL_KHR = VK_IMAGE_LAYOUT_SHADING_RATE_OPTIMAL_NV, - 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_MAX_ENUM = 0x7FFFFFFF -} VkImageLayout; - -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_SAMPLER_YCBCR_CONVERSION = 1000156000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE = 1000085000, - VK_OBJECT_TYPE_SURFACE_KHR = 1000000000, - VK_OBJECT_TYPE_SWAPCHAIN_KHR = 1000001000, - VK_OBJECT_TYPE_DISPLAY_KHR = 1000002000, - VK_OBJECT_TYPE_DISPLAY_MODE_KHR = 1000002001, - VK_OBJECT_TYPE_DEBUG_REPORT_CALLBACK_EXT = 1000011000, - VK_OBJECT_TYPE_DEBUG_UTILS_MESSENGER_EXT = 1000128000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, - VK_OBJECT_TYPE_VALIDATION_CACHE_EXT = 1000160000, - VK_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_OBJECT_TYPE_PERFORMANCE_CONFIGURATION_INTEL = 1000210000, - VK_OBJECT_TYPE_DEFERRED_OPERATION_KHR = 1000268000, - VK_OBJECT_TYPE_INDIRECT_COMMANDS_LAYOUT_NV = 1000277000, - VK_OBJECT_TYPE_PRIVATE_DATA_SLOT_EXT = 1000295000, - VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE_KHR = VK_OBJECT_TYPE_DESCRIPTOR_UPDATE_TEMPLATE, - VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION_KHR = VK_OBJECT_TYPE_SAMPLER_YCBCR_CONVERSION, - VK_OBJECT_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkObjectType; - -typedef enum VkVendorId { - 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_MAX_ENUM = 0x7FFFFFFF -} VkVendorId; - -typedef enum VkPipelineCacheHeaderVersion { - VK_PIPELINE_CACHE_HEADER_VERSION_ONE = 1, - VK_PIPELINE_CACHE_HEADER_VERSION_MAX_ENUM = 0x7FFFFFFF -} VkPipelineCacheHeaderVersion; - -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_PVRTC1_2BPP_UNORM_BLOCK_IMG = 1000054000, - VK_FORMAT_PVRTC1_4BPP_UNORM_BLOCK_IMG = 1000054001, - VK_FORMAT_PVRTC2_2BPP_UNORM_BLOCK_IMG = 1000054002, - VK_FORMAT_PVRTC2_4BPP_UNORM_BLOCK_IMG = 1000054003, - VK_FORMAT_PVRTC1_2BPP_SRGB_BLOCK_IMG = 1000054004, - VK_FORMAT_PVRTC1_4BPP_SRGB_BLOCK_IMG = 1000054005, - VK_FORMAT_PVRTC2_2BPP_SRGB_BLOCK_IMG = 1000054006, - VK_FORMAT_PVRTC2_4BPP_SRGB_BLOCK_IMG = 1000054007, - VK_FORMAT_ASTC_4x4_SFLOAT_BLOCK_EXT = 1000066000, - VK_FORMAT_ASTC_5x4_SFLOAT_BLOCK_EXT = 1000066001, - VK_FORMAT_ASTC_5x5_SFLOAT_BLOCK_EXT = 1000066002, - VK_FORMAT_ASTC_6x5_SFLOAT_BLOCK_EXT = 1000066003, - VK_FORMAT_ASTC_6x6_SFLOAT_BLOCK_EXT = 1000066004, - VK_FORMAT_ASTC_8x5_SFLOAT_BLOCK_EXT = 1000066005, - VK_FORMAT_ASTC_8x6_SFLOAT_BLOCK_EXT = 1000066006, - VK_FORMAT_ASTC_8x8_SFLOAT_BLOCK_EXT = 1000066007, - VK_FORMAT_ASTC_10x5_SFLOAT_BLOCK_EXT = 1000066008, - VK_FORMAT_ASTC_10x6_SFLOAT_BLOCK_EXT = 1000066009, - VK_FORMAT_ASTC_10x8_SFLOAT_BLOCK_EXT = 1000066010, - VK_FORMAT_ASTC_10x10_SFLOAT_BLOCK_EXT = 1000066011, - VK_FORMAT_ASTC_12x10_SFLOAT_BLOCK_EXT = 1000066012, - VK_FORMAT_ASTC_12x12_SFLOAT_BLOCK_EXT = 1000066013, - VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT = 1000340000, - VK_FORMAT_A4B4G4R4_UNORM_PACK16_EXT = 1000340001, - VK_FORMAT_G8B8G8R8_422_UNORM_KHR = 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_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_TRANSFORM_FEEDBACK_STREAM_EXT = 1000028004, - VK_QUERY_TYPE_PERFORMANCE_QUERY_KHR = 1000116000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_KHR = 1000150000, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_SERIALIZATION_SIZE_KHR = 1000150001, - VK_QUERY_TYPE_ACCELERATION_STRUCTURE_COMPACTED_SIZE_NV = 1000165000, - VK_QUERY_TYPE_PERFORMANCE_QUERY_INTEL = 1000210000, - VK_QUERY_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkQueryType; - -typedef enum VkSharingMode { - VK_SHARING_MODE_EXCLUSIVE = 0, - VK_SHARING_MODE_CONCURRENT = 1, - VK_SHARING_MODE_MAX_ENUM = 0x7FFFFFFF -} VkSharingMode; - -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 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 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 VkDynamicState { - VK_DYNAMIC_STATE_VIEWPORT = 0, - VK_DYNAMIC_STATE_SCISSOR = 1, - VK_DYNAMIC_STATE_LINE_WIDTH = 2, - VK_DYNAMIC_STATE_DEPTH_BIAS = 3, - VK_DYNAMIC_STATE_BLEND_CONSTANTS = 4, - VK_DYNAMIC_STATE_DEPTH_BOUNDS = 5, - VK_DYNAMIC_STATE_STENCIL_COMPARE_MASK = 6, - VK_DYNAMIC_STATE_STENCIL_WRITE_MASK = 7, - VK_DYNAMIC_STATE_STENCIL_REFERENCE = 8, - VK_DYNAMIC_STATE_VIEWPORT_W_SCALING_NV = 1000087000, - VK_DYNAMIC_STATE_DISCARD_RECTANGLE_EXT = 1000099000, - VK_DYNAMIC_STATE_SAMPLE_LOCATIONS_EXT = 1000143000, - VK_DYNAMIC_STATE_RAY_TRACING_PIPELINE_STACK_SIZE_KHR = 1000347000, - VK_DYNAMIC_STATE_VIEWPORT_SHADING_RATE_PALETTE_NV = 1000164004, - VK_DYNAMIC_STATE_VIEWPORT_COARSE_SAMPLE_ORDER_NV = 1000164006, - VK_DYNAMIC_STATE_EXCLUSIVE_SCISSOR_NV = 1000205001, - VK_DYNAMIC_STATE_FRAGMENT_SHADING_RATE_KHR = 1000226000, - VK_DYNAMIC_STATE_LINE_STIPPLE_EXT = 1000259000, - VK_DYNAMIC_STATE_CULL_MODE_EXT = 1000267000, - VK_DYNAMIC_STATE_FRONT_FACE_EXT = 1000267001, - VK_DYNAMIC_STATE_PRIMITIVE_TOPOLOGY_EXT = 1000267002, - VK_DYNAMIC_STATE_VIEWPORT_WITH_COUNT_EXT = 1000267003, - VK_DYNAMIC_STATE_SCISSOR_WITH_COUNT_EXT = 1000267004, - VK_DYNAMIC_STATE_VERTEX_INPUT_BINDING_STRIDE_EXT = 1000267005, - VK_DYNAMIC_STATE_DEPTH_TEST_ENABLE_EXT = 1000267006, - VK_DYNAMIC_STATE_DEPTH_WRITE_ENABLE_EXT = 1000267007, - VK_DYNAMIC_STATE_DEPTH_COMPARE_OP_EXT = 1000267008, - VK_DYNAMIC_STATE_DEPTH_BOUNDS_TEST_ENABLE_EXT = 1000267009, - VK_DYNAMIC_STATE_STENCIL_TEST_ENABLE_EXT = 1000267010, - VK_DYNAMIC_STATE_STENCIL_OP_EXT = 1000267011, - VK_DYNAMIC_STATE_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 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 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 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 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_IMG = 1000015000, - VK_FILTER_CUBIC_EXT = VK_FILTER_CUBIC_IMG, - 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 = VK_SAMPLER_ADDRESS_MODE_MIRROR_CLAMP_TO_EDGE, - VK_SAMPLER_ADDRESS_MODE_MAX_ENUM = 0x7FFFFFFF -} VkSamplerAddressMode; - -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_EXT = 1000138000, - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_KHR = 1000150000, - VK_DESCRIPTOR_TYPE_ACCELERATION_STRUCTURE_NV = 1000165000, - VK_DESCRIPTOR_TYPE_MUTABLE_VALVE = 1000351000, - VK_DESCRIPTOR_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorType; - -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_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_QCOM = 1000301000, - VK_ATTACHMENT_STORE_OP_MAX_ENUM = 0x7FFFFFFF -} VkAttachmentStoreOp; - -typedef enum VkPipelineBindPoint { - VK_PIPELINE_BIND_POINT_GRAPHICS = 0, - VK_PIPELINE_BIND_POINT_COMPUTE = 1, - VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR = 1000165000, - VK_PIPELINE_BIND_POINT_RAY_TRACING_NV = VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR, - VK_PIPELINE_BIND_POINT_MAX_ENUM = 0x7FFFFFFF -} VkPipelineBindPoint; - -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_NONE_KHR = 1000165000, - VK_INDEX_TYPE_UINT8_EXT = 1000265000, - VK_INDEX_TYPE_NONE_NV = VK_INDEX_TYPE_NONE_KHR, - VK_INDEX_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkIndexType; - -typedef enum VkSubpassContents { - VK_SUBPASS_CONTENTS_INLINE = 0, - VK_SUBPASS_CONTENTS_SECONDARY_COMMAND_BUFFERS = 1, - VK_SUBPASS_CONTENTS_MAX_ENUM = 0x7FFFFFFF -} VkSubpassContents; - -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_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_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000, - VK_ACCESS_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000, - VK_ACCESS_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000, - VK_ACCESS_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000, - VK_ACCESS_NONE_KHR = 0, - 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_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = VK_ACCESS_SHADING_RATE_IMAGE_READ_BIT_NV, - VK_ACCESS_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkAccessFlagBits; -typedef VkFlags VkAccessFlags; - -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_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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageAspectFlagBits; -typedef VkFlags VkImageAspectFlags; - -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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG = 0x00002000, - VK_FORMAT_FEATURE_ACCELERATION_STRUCTURE_VERTEX_BUFFER_BIT_KHR = 0x20000000, - VK_FORMAT_FEATURE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x01000000, - VK_FORMAT_FEATURE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x40000000, - 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_SAMPLED_IMAGE_FILTER_CUBIC_BIT_EXT = VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_CUBIC_BIT_IMG, - 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_SAMPLE_LOCATIONS_COMPATIBLE_DEPTH_BIT_EXT = 0x00001000, - VK_IMAGE_CREATE_SUBSAMPLED_BIT_EXT = 0x00004000, - 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_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_SHADING_RATE_IMAGE_BIT_NV = 0x00000100, - VK_IMAGE_USAGE_FRAGMENT_DENSITY_MAP_BIT_EXT = 0x00000200, - VK_IMAGE_USAGE_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_IMAGE_USAGE_SHADING_RATE_IMAGE_BIT_NV, - VK_IMAGE_USAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkImageUsageFlagBits; -typedef VkFlags VkImageUsageFlags; -typedef VkFlags VkInstanceCreateFlags; - -typedef enum VkMemoryHeapFlagBits { - VK_MEMORY_HEAP_DEVICE_LOCAL_BIT = 0x00000001, - VK_MEMORY_HEAP_MULTI_INSTANCE_BIT = 0x00000002, - 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_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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkQueueFlagBits; -typedef VkFlags VkQueueFlags; -typedef VkFlags VkDeviceCreateFlags; - -typedef enum VkDeviceQueueCreateFlagBits { - VK_DEVICE_QUEUE_CREATE_PROTECTED_BIT = 0x00000001, - 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_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_SHADING_RATE_IMAGE_BIT_NV = 0x00400000, - VK_PIPELINE_STAGE_TASK_SHADER_BIT_NV = 0x00080000, - VK_PIPELINE_STAGE_MESH_SHADER_BIT_NV = 0x00100000, - VK_PIPELINE_STAGE_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000, - VK_PIPELINE_STAGE_COMMAND_PREPROCESS_BIT_NV = 0x00020000, - VK_PIPELINE_STAGE_NONE_KHR = 0, - 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_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = VK_PIPELINE_STAGE_SHADING_RATE_IMAGE_BIT_NV, - VK_PIPELINE_STAGE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineStageFlagBits; -typedef VkFlags VkPipelineStageFlags; -typedef VkFlags VkMemoryMapFlags; - -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 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 VkFenceCreateFlagBits { - VK_FENCE_CREATE_SIGNALED_BIT = 0x00000001, - VK_FENCE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkFenceCreateFlagBits; -typedef VkFlags VkFenceCreateFlags; -typedef VkFlags VkSemaphoreCreateFlags; - -typedef enum VkEventCreateFlagBits { - VK_EVENT_CREATE_DEVICE_ONLY_BIT_KHR = 0x00000001, - VK_EVENT_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkEventCreateFlagBits; -typedef VkFlags VkEventCreateFlags; - -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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkQueryPipelineStatisticFlagBits; -typedef VkFlags VkQueryPipelineStatisticFlags; -typedef VkFlags VkQueryPoolCreateFlags; - -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_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_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_TRANSFORM_FEEDBACK_BUFFER_BIT_EXT = 0x00000800, - VK_BUFFER_USAGE_TRANSFORM_FEEDBACK_COUNTER_BUFFER_BIT_EXT = 0x00001000, - VK_BUFFER_USAGE_CONDITIONAL_RENDERING_BIT_EXT = 0x00000200, - 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_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 VkFlags VkBufferViewCreateFlags; - -typedef enum VkImageViewCreateFlagBits { - VK_IMAGE_VIEW_CREATE_FRAGMENT_DENSITY_MAP_DYNAMIC_BIT_EXT = 0x00000001, - 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 VkShaderModuleCreateFlagBits { - VK_SHADER_MODULE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkShaderModuleCreateFlagBits; -typedef VkFlags VkShaderModuleCreateFlags; - -typedef enum VkPipelineCacheCreateFlagBits { - VK_PIPELINE_CACHE_CREATE_EXTERNALLY_SYNCHRONIZED_BIT_EXT = 0x00000001, - VK_PIPELINE_CACHE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineCacheCreateFlagBits; -typedef VkFlags VkPipelineCacheCreateFlags; - -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 VkPipelineCreateFlagBits { - VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT = 0x00000001, - VK_PIPELINE_CREATE_ALLOW_DERIVATIVES_BIT = 0x00000002, - VK_PIPELINE_CREATE_DERIVATIVE_BIT = 0x00000004, - VK_PIPELINE_CREATE_VIEW_INDEX_FROM_DEVICE_INDEX_BIT = 0x00000008, - VK_PIPELINE_CREATE_DISPATCH_BASE_BIT = 0x00000010, - 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_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_FAIL_ON_PIPELINE_COMPILE_REQUIRED_BIT_EXT = 0x00000100, - VK_PIPELINE_CREATE_EARLY_RETURN_ON_FAILURE_BIT_EXT = 0x00000200, - 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_KHR = VK_PIPELINE_CREATE_DISPATCH_BASE, - VK_PIPELINE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineCreateFlagBits; -typedef VkFlags VkPipelineCreateFlags; - -typedef enum VkPipelineShaderStageCreateFlagBits { - VK_PIPELINE_SHADER_STAGE_CREATE_ALLOW_VARYING_SUBGROUP_SIZE_BIT_EXT = 0x00000001, - VK_PIPELINE_SHADER_STAGE_CREATE_REQUIRE_FULL_SUBGROUPS_BIT_EXT = 0x00000002, - VK_PIPELINE_SHADER_STAGE_CREATE_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkPipelineShaderStageCreateFlagBits; -typedef VkFlags VkPipelineShaderStageCreateFlags; - -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_NV = 0x00000040, - VK_SHADER_STAGE_MESH_BIT_NV = 0x00000080, - 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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkShaderStageFlagBits; - -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 VkFlags VkPipelineVertexInputStateCreateFlags; -typedef VkFlags VkPipelineInputAssemblyStateCreateFlags; -typedef VkFlags VkPipelineTessellationStateCreateFlags; -typedef VkFlags VkPipelineViewportStateCreateFlags; -typedef VkFlags VkPipelineRasterizationStateCreateFlags; -typedef VkFlags VkPipelineMultisampleStateCreateFlags; -typedef VkFlags VkPipelineDepthStencilStateCreateFlags; -typedef VkFlags VkPipelineColorBlendStateCreateFlags; -typedef VkFlags VkPipelineDynamicStateCreateFlags; -typedef VkFlags VkPipelineLayoutCreateFlags; -typedef VkFlags VkShaderStageFlags; - -typedef enum VkSamplerCreateFlagBits { - VK_SAMPLER_CREATE_SUBSAMPLED_BIT_EXT = 0x00000001, - VK_SAMPLER_CREATE_SUBSAMPLED_COARSE_RECONSTRUCTION_BIT_EXT = 0x00000002, - 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_VALVE = 0x00000004, - VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT_EXT = VK_DESCRIPTOR_POOL_CREATE_UPDATE_AFTER_BIND_BIT, - 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_KHR = 0x00000001, - VK_DESCRIPTOR_SET_LAYOUT_CREATE_HOST_ONLY_POOL_BIT_VALVE = 0x00000004, - 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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorSetLayoutCreateFlagBits; -typedef VkFlags VkDescriptorSetLayoutCreateFlags; - -typedef enum VkAttachmentDescriptionFlagBits { - VK_ATTACHMENT_DESCRIPTION_MAY_ALIAS_BIT = 0x00000001, - VK_ATTACHMENT_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkAttachmentDescriptionFlagBits; -typedef VkFlags VkAttachmentDescriptionFlags; - -typedef enum VkDependencyFlagBits { - VK_DEPENDENCY_BY_REGION_BIT = 0x00000001, - VK_DEPENDENCY_DEVICE_GROUP_BIT = 0x00000004, - VK_DEPENDENCY_VIEW_LOCAL_BIT = 0x00000002, - 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 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_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_FRAGMENT_REGION_BIT_QCOM = 0x00000004, - VK_SUBPASS_DESCRIPTION_SHADER_RESOLVE_BIT_QCOM = 0x00000008, - VK_SUBPASS_DESCRIPTION_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkSubpassDescriptionFlagBits; -typedef VkFlags VkSubpassDescriptionFlags; - -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 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 VkQueryControlFlagBits { - VK_QUERY_CONTROL_PRECISE_BIT = 0x00000001, - VK_QUERY_CONTROL_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkQueryControlFlagBits; -typedef VkFlags VkQueryControlFlags; - -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 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 = 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 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 VkDispatchIndirectCommand { - uint32_t x; - uint32_t y; - uint32_t z; -} VkDispatchIndirectCommand; - -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 VkImageSubresourceRange { - VkImageAspectFlags aspectMask; - uint32_t baseMipLevel; - uint32_t levelCount; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkImageSubresourceRange; - -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 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; - uint32_t enabledLayerCount; - 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 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 VkImageSubresource { - VkImageAspectFlags aspectMask; - uint32_t mipLevel; - uint32_t arrayLayer; -} VkImageSubresource; - -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 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 VkSparseImageFormatProperties { - VkImageAspectFlags aspectMask; - VkExtent3D imageGranularity; - VkSparseImageFormatFlags flags; -} VkSparseImageFormatProperties; - -typedef struct VkSparseImageMemoryRequirements { - VkSparseImageFormatProperties formatProperties; - uint32_t imageMipTailFirstLod; - VkDeviceSize imageMipTailSize; - VkDeviceSize imageMipTailOffset; - VkDeviceSize imageMipTailStride; -} VkSparseImageMemoryRequirements; - -typedef struct VkFenceCreateInfo { - VkStructureType sType; - const void* pNext; - VkFenceCreateFlags flags; -} VkFenceCreateInfo; - -typedef struct VkSemaphoreCreateInfo { - VkStructureType sType; - const void* pNext; - VkSemaphoreCreateFlags flags; -} VkSemaphoreCreateInfo; - -typedef struct VkEventCreateInfo { - VkStructureType sType; - const void* pNext; - VkEventCreateFlags flags; -} VkEventCreateInfo; - -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 VkBufferViewCreateInfo { - VkStructureType sType; - const void* pNext; - VkBufferViewCreateFlags flags; - VkBuffer buffer; - VkFormat format; - VkDeviceSize offset; - VkDeviceSize range; -} VkBufferViewCreateInfo; - -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 VkImageViewCreateInfo { - VkStructureType sType; - const void* pNext; - VkImageViewCreateFlags flags; - VkImage image; - VkImageViewType viewType; - VkFormat format; - VkComponentMapping components; - VkImageSubresourceRange subresourceRange; -} VkImageViewCreateInfo; - -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 VkVertexInputBindingDescription { - uint32_t binding; - uint32_t stride; - VkVertexInputRate inputRate; -} VkVertexInputBindingDescription; - -typedef struct VkVertexInputAttributeDescription { - uint32_t location; - uint32_t binding; - VkFormat format; - uint32_t offset; -} VkVertexInputAttributeDescription; - -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 VkPipelineInputAssemblyStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineInputAssemblyStateCreateFlags flags; - VkPrimitiveTopology topology; - VkBool32 primitiveRestartEnable; -} VkPipelineInputAssemblyStateCreateInfo; - -typedef struct VkPipelineTessellationStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineTessellationStateCreateFlags flags; - uint32_t patchControlPoints; -} VkPipelineTessellationStateCreateInfo; - -typedef struct VkViewport { - float x; - float y; - float width; - float height; - float minDepth; - float maxDepth; -} VkViewport; - -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 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 VkPipelineMultisampleStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineMultisampleStateCreateFlags flags; - VkSampleCountFlagBits rasterizationSamples; - VkBool32 sampleShadingEnable; - float minSampleShading; - const VkSampleMask* pSampleMask; - VkBool32 alphaToCoverageEnable; - VkBool32 alphaToOneEnable; -} VkPipelineMultisampleStateCreateInfo; - -typedef struct VkStencilOpState { - VkStencilOp failOp; - VkStencilOp passOp; - VkStencilOp depthFailOp; - VkCompareOp compareOp; - uint32_t compareMask; - uint32_t writeMask; - uint32_t reference; -} VkStencilOpState; - -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 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 VkPipelineDynamicStateCreateInfo { - VkStructureType sType; - const void* pNext; - VkPipelineDynamicStateCreateFlags flags; - uint32_t dynamicStateCount; - const VkDynamicState* pDynamicStates; -} VkPipelineDynamicStateCreateInfo; - -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 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 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 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 VkSubpassDependency { - uint32_t srcSubpass; - uint32_t dstSubpass; - VkPipelineStageFlags srcStageMask; - VkPipelineStageFlags dstStageMask; - VkAccessFlags srcAccessMask; - VkAccessFlags dstAccessMask; - VkDependencyFlags dependencyFlags; -} VkSubpassDependency; - -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 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 union VkClearColorValue { - float float32[4]; - int32_t int32[4]; - uint32_t uint32[4]; -} VkClearColorValue; - -typedef struct VkClearDepthStencilValue { - float depth; - uint32_t stencil; -} VkClearDepthStencilValue; - -typedef union VkClearValue { - VkClearColorValue color; - VkClearDepthStencilValue depthStencil; -} VkClearValue; - -typedef struct VkClearAttachment { - VkImageAspectFlags aspectMask; - uint32_t colorAttachment; - VkClearValue clearValue; -} VkClearAttachment; - -typedef struct VkClearRect { - VkRect2D rect; - uint32_t baseArrayLayer; - uint32_t layerCount; -} VkClearRect; - -typedef struct VkImageBlit { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffsets[2]; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffsets[2]; -} VkImageBlit; - -typedef struct VkImageCopy { - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageCopy; - -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_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_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_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_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_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_vkCreateGraphicsPipelines)(VkDevice device, VkPipelineCache pipelineCache, uint32_t createInfoCount, const VkGraphicsPipelineCreateInfo* pCreateInfos, const VkAllocationCallbacks* pAllocator, VkPipeline* pPipelines); -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 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 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_vkCmdBindPipeline)(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipelineBindPoint, VkPipeline pipeline); -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_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_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_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_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_vkCmdBlitImage)(VkCommandBuffer commandBuffer, VkImage srcImage, VkImageLayout srcImageLayout, VkImage dstImage, VkImageLayout dstImageLayout, uint32_t regionCount, const VkImageBlit* pRegions, VkFilter filter); -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_vkCmdClearColorImage)(VkCommandBuffer commandBuffer, VkImage image, VkImageLayout imageLayout, const VkClearColorValue* pColor, uint32_t rangeCount, const VkImageSubresourceRange* pRanges); -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_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_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_vkCmdPushConstants)(VkCommandBuffer commandBuffer, VkPipelineLayout layout, VkShaderStageFlags stageFlags, uint32_t offset, uint32_t size, const void* pValues); -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); -typedef void (VKAPI_PTR *PFN_vkCmdExecuteCommands)(VkCommandBuffer commandBuffer, uint32_t commandBufferCount, const VkCommandBuffer* pCommandBuffers); - -#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 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 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 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 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 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 vkCreateGraphicsPipelines( - VkDevice device, - VkPipelineCache pipelineCache, - uint32_t createInfoCount, - const VkGraphicsPipelineCreateInfo* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkPipeline* pPipelines); - -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 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 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 vkCmdBindPipeline( - VkCommandBuffer commandBuffer, - VkPipelineBindPoint pipelineBindPoint, - VkPipeline pipeline); - -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 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 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 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 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 vkCmdBlitImage( - VkCommandBuffer commandBuffer, - VkImage srcImage, - VkImageLayout srcImageLayout, - VkImage dstImage, - VkImageLayout dstImageLayout, - uint32_t regionCount, - const VkImageBlit* pRegions, - VkFilter filter); - -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 vkCmdClearColorImage( - VkCommandBuffer commandBuffer, - VkImage image, - VkImageLayout imageLayout, - const VkClearColorValue* pColor, - uint32_t rangeCount, - const VkImageSubresourceRange* pRanges); - -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 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 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 vkCmdPushConstants( - VkCommandBuffer commandBuffer, - VkPipelineLayout layout, - VkShaderStageFlags stageFlags, - uint32_t offset, - uint32_t size, - const void* pValues); - -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); - -VKAPI_ATTR void VKAPI_CALL vkCmdExecuteCommands( - VkCommandBuffer commandBuffer, - uint32_t commandBufferCount, - const VkCommandBuffer* pCommandBuffers); -#endif - - -#define VK_VERSION_1_1 1 -// Vulkan 1.1 version number -#define VK_API_VERSION_1_1 VK_MAKE_VERSION(1, 1, 0)// Patch version should always be set to 0 - -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkSamplerYcbcrConversion) -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDescriptorUpdateTemplate) -#define VK_MAX_DEVICE_GROUP_SIZE 32 -#define VK_LUID_SIZE 8 -#define VK_QUEUE_FAMILY_EXTERNAL (~0U-1) - -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 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 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 VkDescriptorUpdateTemplateType { - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET = 0, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_PUSH_DESCRIPTORS_KHR = 1, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET_KHR = VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_DESCRIPTOR_SET, - VK_DESCRIPTOR_UPDATE_TEMPLATE_TYPE_MAX_ENUM = 0x7FFFFFFF -} VkDescriptorUpdateTemplateType; - -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_PARTITIONED_BIT_NV = 0x00000100, - 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_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 VkFlags VkDescriptorUpdateTemplateCreateFlags; - -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_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_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 struct VkPhysicalDeviceSubgroupProperties { - VkStructureType sType; - void* pNext; - uint32_t subgroupSize; - VkShaderStageFlags supportedStages; - VkSubgroupFeatureFlags supportedOperations; - VkBool32 quadOperationsInAllStages; -} VkPhysicalDeviceSubgroupProperties; - -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 VkPhysicalDevice16BitStorageFeatures { - VkStructureType sType; - void* pNext; - VkBool32 storageBuffer16BitAccess; - VkBool32 uniformAndStorageBuffer16BitAccess; - VkBool32 storagePushConstant16; - VkBool32 storageInputOutput16; -} VkPhysicalDevice16BitStorageFeatures; - -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 VkDeviceGroupRenderPassBeginInfo { - VkStructureType sType; - const void* pNext; - uint32_t deviceMask; - uint32_t deviceRenderAreaCount; - const VkRect2D* pDeviceRenderAreas; -} VkDeviceGroupRenderPassBeginInfo; - -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 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 VkImageViewUsageCreateInfo { - VkStructureType sType; - const void* pNext; - VkImageUsageFlags usage; -} VkImageViewUsageCreateInfo; - -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 VkPhysicalDeviceVariablePointersFeatures { - VkStructureType sType; - void* pNext; - VkBool32 variablePointersStorageBuffer; - VkBool32 variablePointers; -} VkPhysicalDeviceVariablePointersFeatures; - -typedef VkPhysicalDeviceVariablePointersFeatures VkPhysicalDeviceVariablePointerFeatures; - -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 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 VkBindImagePlaneMemoryInfo { - VkStructureType sType; - const void* pNext; - VkImageAspectFlagBits planeAspect; -} VkBindImagePlaneMemoryInfo; - -typedef struct VkImagePlaneMemoryRequirementsInfo { - VkStructureType sType; - const void* pNext; - VkImageAspectFlagBits planeAspect; -} VkImagePlaneMemoryRequirementsInfo; - -typedef struct VkPhysicalDeviceSamplerYcbcrConversionFeatures { - VkStructureType sType; - void* pNext; - VkBool32 samplerYcbcrConversion; -} VkPhysicalDeviceSamplerYcbcrConversionFeatures; - -typedef struct VkSamplerYcbcrConversionImageFormatProperties { - VkStructureType sType; - void* pNext; - uint32_t combinedImageSamplerDescriptorCount; -} VkSamplerYcbcrConversionImageFormatProperties; - -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 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 VkPhysicalDeviceMaintenance3Properties { - VkStructureType sType; - void* pNext; - uint32_t maxPerSetDescriptors; - VkDeviceSize maxMemoryAllocationSize; -} VkPhysicalDeviceMaintenance3Properties; - -typedef struct VkDescriptorSetLayoutSupport { - VkStructureType sType; - void* pNext; - VkBool32 supported; -} VkDescriptorSetLayoutSupport; - -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 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_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 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); -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_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_vkGetDescriptorSetLayoutSupport)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); - -#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 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 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 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); - -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 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 vkGetDescriptorSetLayoutSupport( - VkDevice device, - const VkDescriptorSetLayoutCreateInfo* pCreateInfo, - VkDescriptorSetLayoutSupport* pSupport); -#endif - - -#define VK_VERSION_1_2 1 -// Vulkan 1.2 version number -#define VK_API_VERSION_1_2 VK_MAKE_VERSION(1, 2, 0)// Patch version should always be set to 0 - -#define VK_MAX_DRIVER_NAME_SIZE 256 -#define VK_MAX_DRIVER_INFO_SIZE 256 - -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_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 VkSamplerReductionMode { - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE = 0, - VK_SAMPLER_REDUCTION_MODE_MIN = 1, - VK_SAMPLER_REDUCTION_MODE_MAX = 2, - VK_SAMPLER_REDUCTION_MODE_WEIGHTED_AVERAGE_EXT = 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 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 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_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_FLAG_BITS_MAX_ENUM = 0x7FFFFFFF -} VkResolveModeFlagBits; -typedef VkFlags VkResolveModeFlags; - -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 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 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 VkConformanceVersion { - uint8_t major; - uint8_t minor; - uint8_t subminor; - uint8_t patch; -} VkConformanceVersion; - -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 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 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 VkSubpassBeginInfo { - VkStructureType sType; - const void* pNext; - VkSubpassContents contents; -} VkSubpassBeginInfo; - -typedef struct VkSubpassEndInfo { - VkStructureType sType; - const void* pNext; -} VkSubpassEndInfo; - -typedef struct VkPhysicalDevice8BitStorageFeatures { - VkStructureType sType; - void* pNext; - VkBool32 storageBuffer8BitAccess; - VkBool32 uniformAndStorageBuffer8BitAccess; - VkBool32 storagePushConstant8; -} VkPhysicalDevice8BitStorageFeatures; - -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 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 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 VkPhysicalDeviceScalarBlockLayoutFeatures { - VkStructureType sType; - void* pNext; - VkBool32 scalarBlockLayout; -} VkPhysicalDeviceScalarBlockLayoutFeatures; - -typedef struct VkImageStencilUsageCreateInfo { - VkStructureType sType; - const void* pNext; - VkImageUsageFlags stencilUsage; -} VkImageStencilUsageCreateInfo; - -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 VkPhysicalDeviceVulkanMemoryModelFeatures { - VkStructureType sType; - void* pNext; - VkBool32 vulkanMemoryModel; - VkBool32 vulkanMemoryModelDeviceScope; - VkBool32 vulkanMemoryModelAvailabilityVisibilityChains; -} VkPhysicalDeviceVulkanMemoryModelFeatures; - -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 VkFramebufferAttachmentsCreateInfo { - VkStructureType sType; - const void* pNext; - uint32_t attachmentImageInfoCount; - const VkFramebufferAttachmentImageInfo* pAttachmentImageInfos; -} VkFramebufferAttachmentsCreateInfo; - -typedef struct VkRenderPassAttachmentBeginInfo { - VkStructureType sType; - const void* pNext; - uint32_t attachmentCount; - const VkImageView* pAttachments; -} VkRenderPassAttachmentBeginInfo; - -typedef struct VkPhysicalDeviceUniformBufferStandardLayoutFeatures { - VkStructureType sType; - void* pNext; - VkBool32 uniformBufferStandardLayout; -} VkPhysicalDeviceUniformBufferStandardLayoutFeatures; - -typedef struct VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures { - VkStructureType sType; - void* pNext; - VkBool32 shaderSubgroupExtendedTypes; -} VkPhysicalDeviceShaderSubgroupExtendedTypesFeatures; - -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 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 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); -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); - -#ifndef VK_NO_PROTOTYPES -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); - -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); -#endif - - -#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_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 = 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 = VK_COLOR_SPACE_SRGB_NONLINEAR_KHR, - 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 -VKAPI_ATTR void VKAPI_CALL vkDestroySurfaceKHR( - VkInstance instance, - VkSurfaceKHR surface, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - VkSurfaceKHR surface, - VkBool32* pSupported); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilitiesKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - VkSurfaceCapabilitiesKHR* pSurfaceCapabilities); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormatsKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - uint32_t* pSurfaceFormatCount, - VkSurfaceFormatKHR* pSurfaceFormats); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModesKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - uint32_t* pPresentModeCount, - VkPresentModeKHR* pPresentModes); -#endif - - -#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_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; - const 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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSwapchainKHR( - VkDevice device, - const VkSwapchainCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSwapchainKHR* pSwapchain); - -VKAPI_ATTR void VKAPI_CALL vkDestroySwapchainKHR( - VkDevice device, - VkSwapchainKHR swapchain, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainImagesKHR( - VkDevice device, - VkSwapchainKHR swapchain, - uint32_t* pSwapchainImageCount, - VkImage* pSwapchainImages); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImageKHR( - VkDevice device, - VkSwapchainKHR swapchain, - uint64_t timeout, - VkSemaphore semaphore, - VkFence fence, - uint32_t* pImageIndex); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueuePresentKHR( - VkQueue queue, - const VkPresentInfoKHR* pPresentInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupPresentCapabilitiesKHR( - VkDevice device, - VkDeviceGroupPresentCapabilitiesKHR* pDeviceGroupPresentCapabilities); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModesKHR( - VkDevice device, - VkSurfaceKHR surface, - VkDeviceGroupPresentModeFlagsKHR* pModes); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDevicePresentRectanglesKHR( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - uint32_t* pRectCount, - VkRect2D* pRects); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireNextImage2KHR( - VkDevice device, - const VkAcquireNextImageInfoKHR* pAcquireInfo, - uint32_t* pImageIndex); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPropertiesKHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayPropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlanePropertiesKHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayPlanePropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneSupportedDisplaysKHR( - VkPhysicalDevice physicalDevice, - uint32_t planeIndex, - uint32_t* pDisplayCount, - VkDisplayKHR* pDisplays); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModePropertiesKHR( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display, - uint32_t* pPropertyCount, - VkDisplayModePropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayModeKHR( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display, - const VkDisplayModeCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDisplayModeKHR* pMode); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilitiesKHR( - VkPhysicalDevice physicalDevice, - VkDisplayModeKHR mode, - uint32_t planeIndex, - VkDisplayPlaneCapabilitiesKHR* pCapabilities); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDisplayPlaneSurfaceKHR( - VkInstance instance, - const VkDisplaySurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( - VkDevice device, - uint32_t swapchainCount, - const VkSwapchainCreateInfoKHR* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkSwapchainKHR* pSwapchains); -#endif - - -#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" - - -#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; - - - -#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 -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFeatures2KHR( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceFeatures2* pFeatures); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceProperties2KHR( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceProperties2* pProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceFormatProperties2KHR( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkFormatProperties2* pFormatProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceImageFormatProperties2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceImageFormatInfo2* pImageFormatInfo, - VkImageFormatProperties2* pImageFormatProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyProperties2KHR( - VkPhysicalDevice physicalDevice, - uint32_t* pQueueFamilyPropertyCount, - VkQueueFamilyProperties2* pQueueFamilyProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMemoryProperties2KHR( - VkPhysicalDevice physicalDevice, - VkPhysicalDeviceMemoryProperties2* pMemoryProperties); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceSparseImageFormatProperties2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSparseImageFormatInfo2* pFormatInfo, - uint32_t* pPropertyCount, - VkSparseImageFormatProperties2* pProperties); -#endif - - -#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 -VKAPI_ATTR void VKAPI_CALL vkGetDeviceGroupPeerMemoryFeaturesKHR( - VkDevice device, - uint32_t heapIndex, - uint32_t localDeviceIndex, - uint32_t remoteDeviceIndex, - VkPeerMemoryFeatureFlags* pPeerMemoryFeatures); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDeviceMaskKHR( - VkCommandBuffer commandBuffer, - uint32_t deviceMask); - -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 - - -#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" - - -#define VK_KHR_maintenance1 1 -#define VK_KHR_MAINTENANCE1_SPEC_VERSION 2 -#define VK_KHR_MAINTENANCE1_EXTENSION_NAME "VK_KHR_maintenance1" -typedef VkCommandPoolTrimFlags VkCommandPoolTrimFlagsKHR; - -typedef void (VKAPI_PTR *PFN_vkTrimCommandPoolKHR)(VkDevice device, VkCommandPool commandPool, VkCommandPoolTrimFlags flags); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkTrimCommandPoolKHR( - VkDevice device, - VkCommandPool commandPool, - VkCommandPoolTrimFlags flags); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceGroupsKHR( - VkInstance instance, - uint32_t* pPhysicalDeviceGroupCount, - VkPhysicalDeviceGroupProperties* pPhysicalDeviceGroupProperties); -#endif - - -#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 -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalBufferPropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalBufferInfo* pExternalBufferInfo, - VkExternalBufferProperties* pExternalBufferProperties); -#endif - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdKHR( - VkDevice device, - const VkMemoryGetFdInfoKHR* pGetFdInfo, - int* pFd); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryFdPropertiesKHR( - VkDevice device, - VkExternalMemoryHandleTypeFlagBits handleType, - int fd, - VkMemoryFdPropertiesKHR* pMemoryFdProperties); -#endif - - -#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 -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalSemaphorePropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalSemaphoreInfo* pExternalSemaphoreInfo, - VkExternalSemaphoreProperties* pExternalSemaphoreProperties); -#endif - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreFdKHR( - VkDevice device, - const VkImportSemaphoreFdInfoKHR* pImportSemaphoreFdInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreFdKHR( - VkDevice device, - const VkSemaphoreGetFdInfoKHR* pGetFdInfo, - int* pFd); -#endif - - -#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 struct VkPhysicalDevicePushDescriptorPropertiesKHR { - VkStructureType sType; - void* pNext; - uint32_t maxPushDescriptors; -} 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 -VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetKHR( - VkCommandBuffer commandBuffer, - VkPipelineBindPoint pipelineBindPoint, - VkPipelineLayout layout, - uint32_t set, - uint32_t descriptorWriteCount, - const VkWriteDescriptorSet* pDescriptorWrites); - -VKAPI_ATTR void VKAPI_CALL vkCmdPushDescriptorSetWithTemplateKHR( - VkCommandBuffer commandBuffer, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - VkPipelineLayout layout, - uint32_t set, - const void* pData); -#endif - - -#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; - - - -#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; - - - -#define VK_KHR_incremental_present 1 -#define VK_KHR_INCREMENTAL_PRESENT_SPEC_VERSION 1 -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDescriptorUpdateTemplateKHR( - VkDevice device, - const VkDescriptorUpdateTemplateCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDescriptorUpdateTemplate* pDescriptorUpdateTemplate); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDescriptorUpdateTemplateKHR( - VkDevice device, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkUpdateDescriptorSetWithTemplateKHR( - VkDevice device, - VkDescriptorSet descriptorSet, - VkDescriptorUpdateTemplate descriptorUpdateTemplate, - const void* pData); -#endif - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRenderPass2KHR( - VkDevice device, - const VkRenderPassCreateInfo2* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkRenderPass* pRenderPass); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginRenderPass2KHR( - VkCommandBuffer commandBuffer, - const VkRenderPassBeginInfo* pRenderPassBegin, - const VkSubpassBeginInfo* pSubpassBeginInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdNextSubpass2KHR( - VkCommandBuffer commandBuffer, - const VkSubpassBeginInfo* pSubpassBeginInfo, - const VkSubpassEndInfo* pSubpassEndInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndRenderPass2KHR( - VkCommandBuffer commandBuffer, - const VkSubpassEndInfo* pSubpassEndInfo); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainStatusKHR( - VkDevice device, - VkSwapchainKHR swapchain); -#endif - - -#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 -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceExternalFencePropertiesKHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceExternalFenceInfo* pExternalFenceInfo, - VkExternalFenceProperties* pExternalFenceProperties); -#endif - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceFdKHR( - VkDevice device, - const VkImportFenceFdInfoKHR* pImportFenceFdInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceFdKHR( - VkDevice device, - const VkFenceGetFdInfoKHR* pGetFdInfo, - int* pFd); -#endif - - -#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 = VK_PERFORMANCE_COUNTER_SCOPE_COMMAND_BUFFER_KHR, - VK_QUERY_SCOPE_RENDER_PASS_KHR = VK_PERFORMANCE_COUNTER_SCOPE_RENDER_PASS_KHR, - 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 = VK_PERFORMANCE_COUNTER_DESCRIPTION_PERFORMANCE_IMPACTING_BIT_KHR, - 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; - const void* pNext; - VkPerformanceCounterUnitKHR unit; - VkPerformanceCounterScopeKHR scope; - VkPerformanceCounterStorageKHR storage; - uint8_t uuid[VK_UUID_SIZE]; -} VkPerformanceCounterKHR; - -typedef struct VkPerformanceCounterDescriptionKHR { - VkStructureType sType; - const 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 -VKAPI_ATTR VkResult VKAPI_CALL vkEnumeratePhysicalDeviceQueueFamilyPerformanceQueryCountersKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - uint32_t* pCounterCount, - VkPerformanceCounterKHR* pCounters, - VkPerformanceCounterDescriptionKHR* pCounterDescriptions); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceQueueFamilyPerformanceQueryPassesKHR( - VkPhysicalDevice physicalDevice, - const VkQueryPoolPerformanceCreateInfoKHR* pPerformanceQueryCreateInfo, - uint32_t* pNumPasses); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireProfilingLockKHR( - VkDevice device, - const VkAcquireProfilingLockInfoKHR* pInfo); - -VKAPI_ATTR void VKAPI_CALL vkReleaseProfilingLockKHR( - VkDevice device); -#endif - - -#define VK_KHR_maintenance2 1 -#define VK_KHR_MAINTENANCE2_SPEC_VERSION 1 -#define VK_KHR_MAINTENANCE2_EXTENSION_NAME "VK_KHR_maintenance2" -typedef VkPointClippingBehavior VkPointClippingBehaviorKHR; - -typedef VkTessellationDomainOrigin VkTessellationDomainOriginKHR; - -typedef VkPhysicalDevicePointClippingProperties VkPhysicalDevicePointClippingPropertiesKHR; - -typedef VkRenderPassInputAttachmentAspectCreateInfo VkRenderPassInputAttachmentAspectCreateInfoKHR; - -typedef VkInputAttachmentAspectReference VkInputAttachmentAspectReferenceKHR; - -typedef VkImageViewUsageCreateInfo VkImageViewUsageCreateInfoKHR; - -typedef VkPipelineTessellationDomainOriginStateCreateInfo VkPipelineTessellationDomainOriginStateCreateInfoKHR; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - VkSurfaceCapabilities2KHR* pSurfaceCapabilities); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceFormats2KHR( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - uint32_t* pSurfaceFormatCount, - VkSurfaceFormat2KHR* pSurfaceFormats); -#endif - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayProperties2KHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayProperties2KHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceDisplayPlaneProperties2KHR( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkDisplayPlaneProperties2KHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayModeProperties2KHR( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display, - uint32_t* pPropertyCount, - VkDisplayModeProperties2KHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDisplayPlaneCapabilities2KHR( - VkPhysicalDevice physicalDevice, - const VkDisplayPlaneInfo2KHR* pDisplayPlaneInfo, - VkDisplayPlaneCapabilities2KHR* pCapabilities); -#endif - - -#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; - - - -#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" - - -#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" - - -#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 -VKAPI_ATTR void VKAPI_CALL vkGetImageMemoryRequirements2KHR( - VkDevice device, - const VkImageMemoryRequirementsInfo2* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetBufferMemoryRequirements2KHR( - VkDevice device, - const VkBufferMemoryRequirementsInfo2* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkGetImageSparseMemoryRequirements2KHR( - VkDevice device, - const VkImageSparseMemoryRequirementsInfo2* pInfo, - uint32_t* pSparseMemoryRequirementCount, - VkSparseImageMemoryRequirements2* pSparseMemoryRequirements); -#endif - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateSamplerYcbcrConversionKHR( - VkDevice device, - const VkSamplerYcbcrConversionCreateInfo* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSamplerYcbcrConversion* pYcbcrConversion); - -VKAPI_ATTR void VKAPI_CALL vkDestroySamplerYcbcrConversionKHR( - VkDevice device, - VkSamplerYcbcrConversion ycbcrConversion, - const VkAllocationCallbacks* pAllocator); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkBindBufferMemory2KHR( - VkDevice device, - uint32_t bindInfoCount, - const VkBindBufferMemoryInfo* pBindInfos); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindImageMemory2KHR( - VkDevice device, - uint32_t bindInfoCount, - const VkBindImageMemoryInfo* pBindInfos); -#endif - - -#define VK_KHR_maintenance3 1 -#define VK_KHR_MAINTENANCE3_SPEC_VERSION 1 -#define VK_KHR_MAINTENANCE3_EXTENSION_NAME "VK_KHR_maintenance3" -typedef VkPhysicalDeviceMaintenance3Properties VkPhysicalDeviceMaintenance3PropertiesKHR; - -typedef VkDescriptorSetLayoutSupport VkDescriptorSetLayoutSupportKHR; - -typedef void (VKAPI_PTR *PFN_vkGetDescriptorSetLayoutSupportKHR)(VkDevice device, const VkDescriptorSetLayoutCreateInfo* pCreateInfo, VkDescriptorSetLayoutSupport* pSupport); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkGetDescriptorSetLayoutSupportKHR( - VkDevice device, - const VkDescriptorSetLayoutCreateInfo* pCreateInfo, - VkDescriptorSetLayoutSupport* pSupport); -#endif - - -#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 -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountKHR( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountKHR( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); -#endif - - -#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; - - - -#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; - - - -#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; - - - -#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; - - - -#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; - - - -#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; - - - -#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; - - - -#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" - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreCounterValueKHR( - VkDevice device, - VkSemaphore semaphore, - uint64_t* pValue); - -VKAPI_ATTR VkResult VKAPI_CALL vkWaitSemaphoresKHR( - VkDevice device, - const VkSemaphoreWaitInfo* pWaitInfo, - uint64_t timeout); - -VKAPI_ATTR VkResult VKAPI_CALL vkSignalSemaphoreKHR( - VkDevice device, - const VkSemaphoreSignalInfo* pSignalInfo); -#endif - - -#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; - - - -#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 struct VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 shaderTerminateInvocation; -} VkPhysicalDeviceShaderTerminateInvocationFeaturesKHR; - - - -#define VK_KHR_fragment_shading_rate 1 -#define VK_KHR_FRAGMENT_SHADING_RATE_SPEC_VERSION 1 -#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 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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceFragmentShadingRatesKHR( - VkPhysicalDevice physicalDevice, - uint32_t* pFragmentShadingRateCount, - VkPhysicalDeviceFragmentShadingRateKHR* pFragmentShadingRates); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateKHR( - VkCommandBuffer commandBuffer, - const VkExtent2D* pFragmentSize, - const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); -#endif - - -#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" - - -#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; - const void* pNext; - VkBool32 supportsProtected; -} VkSurfaceProtectedCapabilitiesKHR; - - - -#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; - - - -#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; - - - -#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 -VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressKHR( - VkDevice device, - const VkBufferDeviceAddressInfo* pInfo); - -VKAPI_ATTR uint64_t VKAPI_CALL vkGetBufferOpaqueCaptureAddressKHR( - VkDevice device, - const VkBufferDeviceAddressInfo* pInfo); - -VKAPI_ATTR uint64_t VKAPI_CALL vkGetDeviceMemoryOpaqueCaptureAddressKHR( - VkDevice device, - const VkDeviceMemoryOpaqueCaptureAddressInfo* pInfo); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDeferredOperationKHR( - VkDevice device, - const VkAllocationCallbacks* pAllocator, - VkDeferredOperationKHR* pDeferredOperation); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDeferredOperationKHR( - VkDevice device, - VkDeferredOperationKHR operation, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR uint32_t VKAPI_CALL vkGetDeferredOperationMaxConcurrencyKHR( - VkDevice device, - VkDeferredOperationKHR operation); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeferredOperationResultKHR( - VkDevice device, - VkDeferredOperationKHR operation); - -VKAPI_ATTR VkResult VKAPI_CALL vkDeferredOperationJoinKHR( - VkDevice device, - VkDeferredOperationKHR operation); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutablePropertiesKHR( - VkDevice device, - const VkPipelineInfoKHR* pPipelineInfo, - uint32_t* pExecutableCount, - VkPipelineExecutablePropertiesKHR* pProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableStatisticsKHR( - VkDevice device, - const VkPipelineExecutableInfoKHR* pExecutableInfo, - uint32_t* pStatisticCount, - VkPipelineExecutableStatisticKHR* pStatistics); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPipelineExecutableInternalRepresentationsKHR( - VkDevice device, - const VkPipelineExecutableInfoKHR* pExecutableInfo, - uint32_t* pInternalRepresentationCount, - VkPipelineExecutableInternalRepresentationKHR* pInternalRepresentations); -#endif - - -#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; - - - -#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" - - -#define VK_KHR_synchronization2 1 -typedef uint64_t VkFlags64; -#define VK_KHR_SYNCHRONIZATION_2_SPEC_VERSION 1 -#define VK_KHR_SYNCHRONIZATION_2_EXTENSION_NAME "VK_KHR_synchronization2" -typedef VkFlags64 VkPipelineStageFlags2KHR; - -// Flag bits for VkPipelineStageFlags2KHR -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_NONE_KHR = 0; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_TOP_OF_PIPE_BIT_KHR = 0x00000001; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_DRAW_INDIRECT_BIT_KHR = 0x00000002; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_VERTEX_INPUT_BIT_KHR = 0x00000004; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_VERTEX_SHADER_BIT_KHR = 0x00000008; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_TESSELLATION_CONTROL_SHADER_BIT_KHR = 0x00000010; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_TESSELLATION_EVALUATION_SHADER_BIT_KHR = 0x00000020; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_GEOMETRY_SHADER_BIT_KHR = 0x00000040; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADER_BIT_KHR = 0x00000080; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_EARLY_FRAGMENT_TESTS_BIT_KHR = 0x00000100; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_LATE_FRAGMENT_TESTS_BIT_KHR = 0x00000200; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_COLOR_ATTACHMENT_OUTPUT_BIT_KHR = 0x00000400; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_COMPUTE_SHADER_BIT_KHR = 0x00000800; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_ALL_TRANSFER_BIT_KHR = 0x00001000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_TRANSFER_BIT_KHR = 0x00001000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_BOTTOM_OF_PIPE_BIT_KHR = 0x00002000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_HOST_BIT_KHR = 0x00004000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_ALL_GRAPHICS_BIT_KHR = 0x00008000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_ALL_COMMANDS_BIT_KHR = 0x00010000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_COPY_BIT_KHR = 0x100000000ULL; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_RESOLVE_BIT_KHR = 0x200000000ULL; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_BLIT_BIT_KHR = 0x400000000ULL; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_CLEAR_BIT_KHR = 0x800000000ULL; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_INDEX_INPUT_BIT_KHR = 0x1000000000ULL; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_VERTEX_ATTRIBUTE_INPUT_BIT_KHR = 0x2000000000ULL; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_PRE_RASTERIZATION_SHADERS_BIT_KHR = 0x4000000000ULL; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_TRANSFORM_FEEDBACK_BIT_EXT = 0x01000000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_CONDITIONAL_RENDERING_BIT_EXT = 0x00040000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_COMMAND_PREPROCESS_BIT_NV = 0x00020000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_FRAGMENT_SHADING_RATE_ATTACHMENT_BIT_KHR = 0x00400000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_SHADING_RATE_IMAGE_BIT_NV = 0x00400000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_KHR = 0x02000000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_KHR = 0x00200000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_RAY_TRACING_SHADER_BIT_NV = 0x00200000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_ACCELERATION_STRUCTURE_BUILD_BIT_NV = 0x02000000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_FRAGMENT_DENSITY_PROCESS_BIT_EXT = 0x00800000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_TASK_SHADER_BIT_NV = 0x00080000; -static const VkPipelineStageFlags2KHR VK_PIPELINE_STAGE_2_MESH_SHADER_BIT_NV = 0x00100000; - -typedef VkFlags64 VkAccessFlags2KHR; - -// Flag bits for VkAccessFlags2KHR -static const VkAccessFlags2KHR VK_ACCESS_2_NONE_KHR = 0; -static const VkAccessFlags2KHR VK_ACCESS_2_INDIRECT_COMMAND_READ_BIT_KHR = 0x00000001; -static const VkAccessFlags2KHR VK_ACCESS_2_INDEX_READ_BIT_KHR = 0x00000002; -static const VkAccessFlags2KHR VK_ACCESS_2_VERTEX_ATTRIBUTE_READ_BIT_KHR = 0x00000004; -static const VkAccessFlags2KHR VK_ACCESS_2_UNIFORM_READ_BIT_KHR = 0x00000008; -static const VkAccessFlags2KHR VK_ACCESS_2_INPUT_ATTACHMENT_READ_BIT_KHR = 0x00000010; -static const VkAccessFlags2KHR VK_ACCESS_2_SHADER_READ_BIT_KHR = 0x00000020; -static const VkAccessFlags2KHR VK_ACCESS_2_SHADER_WRITE_BIT_KHR = 0x00000040; -static const VkAccessFlags2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_BIT_KHR = 0x00000080; -static const VkAccessFlags2KHR VK_ACCESS_2_COLOR_ATTACHMENT_WRITE_BIT_KHR = 0x00000100; -static const VkAccessFlags2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_READ_BIT_KHR = 0x00000200; -static const VkAccessFlags2KHR VK_ACCESS_2_DEPTH_STENCIL_ATTACHMENT_WRITE_BIT_KHR = 0x00000400; -static const VkAccessFlags2KHR VK_ACCESS_2_TRANSFER_READ_BIT_KHR = 0x00000800; -static const VkAccessFlags2KHR VK_ACCESS_2_TRANSFER_WRITE_BIT_KHR = 0x00001000; -static const VkAccessFlags2KHR VK_ACCESS_2_HOST_READ_BIT_KHR = 0x00002000; -static const VkAccessFlags2KHR VK_ACCESS_2_HOST_WRITE_BIT_KHR = 0x00004000; -static const VkAccessFlags2KHR VK_ACCESS_2_MEMORY_READ_BIT_KHR = 0x00008000; -static const VkAccessFlags2KHR VK_ACCESS_2_MEMORY_WRITE_BIT_KHR = 0x00010000; -static const VkAccessFlags2KHR VK_ACCESS_2_SHADER_SAMPLED_READ_BIT_KHR = 0x100000000ULL; -static const VkAccessFlags2KHR VK_ACCESS_2_SHADER_STORAGE_READ_BIT_KHR = 0x200000000ULL; -static const VkAccessFlags2KHR VK_ACCESS_2_SHADER_STORAGE_WRITE_BIT_KHR = 0x400000000ULL; -static const VkAccessFlags2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_WRITE_BIT_EXT = 0x02000000; -static const VkAccessFlags2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_READ_BIT_EXT = 0x04000000; -static const VkAccessFlags2KHR VK_ACCESS_2_TRANSFORM_FEEDBACK_COUNTER_WRITE_BIT_EXT = 0x08000000; -static const VkAccessFlags2KHR VK_ACCESS_2_CONDITIONAL_RENDERING_READ_BIT_EXT = 0x00100000; -static const VkAccessFlags2KHR VK_ACCESS_2_COMMAND_PREPROCESS_READ_BIT_NV = 0x00020000; -static const VkAccessFlags2KHR VK_ACCESS_2_COMMAND_PREPROCESS_WRITE_BIT_NV = 0x00040000; -static const VkAccessFlags2KHR VK_ACCESS_2_FRAGMENT_SHADING_RATE_ATTACHMENT_READ_BIT_KHR = 0x00800000; -static const VkAccessFlags2KHR VK_ACCESS_2_SHADING_RATE_IMAGE_READ_BIT_NV = 0x00800000; -static const VkAccessFlags2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_KHR = 0x00200000; -static const VkAccessFlags2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_KHR = 0x00400000; -static const VkAccessFlags2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_READ_BIT_NV = 0x00200000; -static const VkAccessFlags2KHR VK_ACCESS_2_ACCELERATION_STRUCTURE_WRITE_BIT_NV = 0x00400000; -static const VkAccessFlags2KHR VK_ACCESS_2_FRAGMENT_DENSITY_MAP_READ_BIT_EXT = 0x01000000; -static const VkAccessFlags2KHR VK_ACCESS_2_COLOR_ATTACHMENT_READ_NONCOHERENT_BIT_EXT = 0x00080000; - - -typedef enum VkSubmitFlagBitsKHR { - VK_SUBMIT_PROTECTED_BIT_KHR = 0x00000001, - VK_SUBMIT_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkSubmitFlagBitsKHR; -typedef VkFlags VkSubmitFlagsKHR; -typedef struct VkMemoryBarrier2KHR { - VkStructureType sType; - const void* pNext; - VkPipelineStageFlags2KHR srcStageMask; - VkAccessFlags2KHR srcAccessMask; - VkPipelineStageFlags2KHR dstStageMask; - VkAccessFlags2KHR dstAccessMask; -} VkMemoryBarrier2KHR; - -typedef struct VkBufferMemoryBarrier2KHR { - VkStructureType sType; - const void* pNext; - VkPipelineStageFlags2KHR srcStageMask; - VkAccessFlags2KHR srcAccessMask; - VkPipelineStageFlags2KHR dstStageMask; - VkAccessFlags2KHR dstAccessMask; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkBuffer buffer; - VkDeviceSize offset; - VkDeviceSize size; -} VkBufferMemoryBarrier2KHR; - -typedef struct VkImageMemoryBarrier2KHR { - VkStructureType sType; - const void* pNext; - VkPipelineStageFlags2KHR srcStageMask; - VkAccessFlags2KHR srcAccessMask; - VkPipelineStageFlags2KHR dstStageMask; - VkAccessFlags2KHR dstAccessMask; - VkImageLayout oldLayout; - VkImageLayout newLayout; - uint32_t srcQueueFamilyIndex; - uint32_t dstQueueFamilyIndex; - VkImage image; - VkImageSubresourceRange subresourceRange; -} VkImageMemoryBarrier2KHR; - -typedef struct VkDependencyInfoKHR { - VkStructureType sType; - const void* pNext; - VkDependencyFlags dependencyFlags; - uint32_t memoryBarrierCount; - const VkMemoryBarrier2KHR* pMemoryBarriers; - uint32_t bufferMemoryBarrierCount; - const VkBufferMemoryBarrier2KHR* pBufferMemoryBarriers; - uint32_t imageMemoryBarrierCount; - const VkImageMemoryBarrier2KHR* pImageMemoryBarriers; -} VkDependencyInfoKHR; - -typedef struct VkSemaphoreSubmitInfoKHR { - VkStructureType sType; - const void* pNext; - VkSemaphore semaphore; - uint64_t value; - VkPipelineStageFlags2KHR stageMask; - uint32_t deviceIndex; -} VkSemaphoreSubmitInfoKHR; - -typedef struct VkCommandBufferSubmitInfoKHR { - VkStructureType sType; - const void* pNext; - VkCommandBuffer commandBuffer; - uint32_t deviceMask; -} VkCommandBufferSubmitInfoKHR; - -typedef struct VkSubmitInfo2KHR { - VkStructureType sType; - const void* pNext; - VkSubmitFlagsKHR flags; - uint32_t waitSemaphoreInfoCount; - const VkSemaphoreSubmitInfoKHR* pWaitSemaphoreInfos; - uint32_t commandBufferInfoCount; - const VkCommandBufferSubmitInfoKHR* pCommandBufferInfos; - uint32_t signalSemaphoreInfoCount; - const VkSemaphoreSubmitInfoKHR* pSignalSemaphoreInfos; -} VkSubmitInfo2KHR; - -typedef struct VkPhysicalDeviceSynchronization2FeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 synchronization2; -} VkPhysicalDeviceSynchronization2FeaturesKHR; - -typedef struct VkQueueFamilyCheckpointProperties2NV { - VkStructureType sType; - void* pNext; - VkPipelineStageFlags2KHR checkpointExecutionStageMask; -} VkQueueFamilyCheckpointProperties2NV; - -typedef struct VkCheckpointData2NV { - VkStructureType sType; - void* pNext; - VkPipelineStageFlags2KHR stage; - void* pCheckpointMarker; -} VkCheckpointData2NV; - -typedef void (VKAPI_PTR *PFN_vkCmdSetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, const VkDependencyInfoKHR* pDependencyInfo); -typedef void (VKAPI_PTR *PFN_vkCmdResetEvent2KHR)(VkCommandBuffer commandBuffer, VkEvent event, VkPipelineStageFlags2KHR stageMask); -typedef void (VKAPI_PTR *PFN_vkCmdWaitEvents2KHR)(VkCommandBuffer commandBuffer, uint32_t eventCount, const VkEvent* pEvents, const VkDependencyInfoKHR* pDependencyInfos); -typedef void (VKAPI_PTR *PFN_vkCmdPipelineBarrier2KHR)(VkCommandBuffer commandBuffer, const VkDependencyInfoKHR* pDependencyInfo); -typedef void (VKAPI_PTR *PFN_vkCmdWriteTimestamp2KHR)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkQueryPool queryPool, uint32_t query); -typedef VkResult (VKAPI_PTR *PFN_vkQueueSubmit2KHR)(VkQueue queue, uint32_t submitCount, const VkSubmitInfo2KHR* pSubmits, VkFence fence); -typedef void (VKAPI_PTR *PFN_vkCmdWriteBufferMarker2AMD)(VkCommandBuffer commandBuffer, VkPipelineStageFlags2KHR stage, VkBuffer dstBuffer, VkDeviceSize dstOffset, uint32_t marker); -typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointData2NV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointData2NV* pCheckpointData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetEvent2KHR( - VkCommandBuffer commandBuffer, - VkEvent event, - const VkDependencyInfoKHR* pDependencyInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdResetEvent2KHR( - VkCommandBuffer commandBuffer, - VkEvent event, - VkPipelineStageFlags2KHR stageMask); - -VKAPI_ATTR void VKAPI_CALL vkCmdWaitEvents2KHR( - VkCommandBuffer commandBuffer, - uint32_t eventCount, - const VkEvent* pEvents, - const VkDependencyInfoKHR* pDependencyInfos); - -VKAPI_ATTR void VKAPI_CALL vkCmdPipelineBarrier2KHR( - VkCommandBuffer commandBuffer, - const VkDependencyInfoKHR* pDependencyInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteTimestamp2KHR( - VkCommandBuffer commandBuffer, - VkPipelineStageFlags2KHR stage, - VkQueryPool queryPool, - uint32_t query); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueueSubmit2KHR( - VkQueue queue, - uint32_t submitCount, - const VkSubmitInfo2KHR* pSubmits, - VkFence fence); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarker2AMD( - VkCommandBuffer commandBuffer, - VkPipelineStageFlags2KHR stage, - VkBuffer dstBuffer, - VkDeviceSize dstOffset, - uint32_t marker); - -VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointData2NV( - VkQueue queue, - uint32_t* pCheckpointDataCount, - VkCheckpointData2NV* pCheckpointData); -#endif - - -#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 struct VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR { - VkStructureType sType; - void* pNext; - VkBool32 shaderZeroInitializeWorkgroupMemory; -} VkPhysicalDeviceZeroInitializeWorkgroupMemoryFeaturesKHR; - - - -#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; - - - -#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 struct VkBufferCopy2KHR { - VkStructureType sType; - const void* pNext; - VkDeviceSize srcOffset; - VkDeviceSize dstOffset; - VkDeviceSize size; -} VkBufferCopy2KHR; - -typedef struct VkCopyBufferInfo2KHR { - VkStructureType sType; - const void* pNext; - VkBuffer srcBuffer; - VkBuffer dstBuffer; - uint32_t regionCount; - const VkBufferCopy2KHR* pRegions; -} VkCopyBufferInfo2KHR; - -typedef struct VkImageCopy2KHR { - VkStructureType sType; - const void* pNext; - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageCopy2KHR; - -typedef struct VkCopyImageInfo2KHR { - VkStructureType sType; - const void* pNext; - VkImage srcImage; - VkImageLayout srcImageLayout; - VkImage dstImage; - VkImageLayout dstImageLayout; - uint32_t regionCount; - const VkImageCopy2KHR* pRegions; -} VkCopyImageInfo2KHR; - -typedef struct VkBufferImageCopy2KHR { - VkStructureType sType; - const void* pNext; - VkDeviceSize bufferOffset; - uint32_t bufferRowLength; - uint32_t bufferImageHeight; - VkImageSubresourceLayers imageSubresource; - VkOffset3D imageOffset; - VkExtent3D imageExtent; -} VkBufferImageCopy2KHR; - -typedef struct VkCopyBufferToImageInfo2KHR { - VkStructureType sType; - const void* pNext; - VkBuffer srcBuffer; - VkImage dstImage; - VkImageLayout dstImageLayout; - uint32_t regionCount; - const VkBufferImageCopy2KHR* pRegions; -} VkCopyBufferToImageInfo2KHR; - -typedef struct VkCopyImageToBufferInfo2KHR { - VkStructureType sType; - const void* pNext; - VkImage srcImage; - VkImageLayout srcImageLayout; - VkBuffer dstBuffer; - uint32_t regionCount; - const VkBufferImageCopy2KHR* pRegions; -} VkCopyImageToBufferInfo2KHR; - -typedef struct VkImageBlit2KHR { - VkStructureType sType; - const void* pNext; - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffsets[2]; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffsets[2]; -} VkImageBlit2KHR; - -typedef struct VkBlitImageInfo2KHR { - VkStructureType sType; - const void* pNext; - VkImage srcImage; - VkImageLayout srcImageLayout; - VkImage dstImage; - VkImageLayout dstImageLayout; - uint32_t regionCount; - const VkImageBlit2KHR* pRegions; - VkFilter filter; -} VkBlitImageInfo2KHR; - -typedef struct VkImageResolve2KHR { - VkStructureType sType; - const void* pNext; - VkImageSubresourceLayers srcSubresource; - VkOffset3D srcOffset; - VkImageSubresourceLayers dstSubresource; - VkOffset3D dstOffset; - VkExtent3D extent; -} VkImageResolve2KHR; - -typedef struct VkResolveImageInfo2KHR { - VkStructureType sType; - const void* pNext; - VkImage srcImage; - VkImageLayout srcImageLayout; - VkImage dstImage; - VkImageLayout dstImageLayout; - uint32_t regionCount; - const VkImageResolve2KHR* pRegions; -} VkResolveImageInfo2KHR; - -typedef void (VKAPI_PTR *PFN_vkCmdCopyBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferInfo2KHR* pCopyBufferInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageInfo2KHR* pCopyImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyBufferToImage2KHR)(VkCommandBuffer commandBuffer, const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdCopyImageToBuffer2KHR)(VkCommandBuffer commandBuffer, const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo); -typedef void (VKAPI_PTR *PFN_vkCmdBlitImage2KHR)(VkCommandBuffer commandBuffer, const VkBlitImageInfo2KHR* pBlitImageInfo); -typedef void (VKAPI_PTR *PFN_vkCmdResolveImage2KHR)(VkCommandBuffer commandBuffer, const VkResolveImageInfo2KHR* pResolveImageInfo); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdCopyBuffer2KHR( - VkCommandBuffer commandBuffer, - const VkCopyBufferInfo2KHR* pCopyBufferInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyImage2KHR( - VkCommandBuffer commandBuffer, - const VkCopyImageInfo2KHR* pCopyImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyBufferToImage2KHR( - VkCommandBuffer commandBuffer, - const VkCopyBufferToImageInfo2KHR* pCopyBufferToImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyImageToBuffer2KHR( - VkCommandBuffer commandBuffer, - const VkCopyImageToBufferInfo2KHR* pCopyImageToBufferInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdBlitImage2KHR( - VkCommandBuffer commandBuffer, - const VkBlitImageInfo2KHR* pBlitImageInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdResolveImage2KHR( - VkCommandBuffer commandBuffer, - const VkResolveImageInfo2KHR* pResolveImageInfo); -#endif - - -#define VK_EXT_debug_report 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkDebugReportCallbackEXT) -#define VK_EXT_DEBUG_REPORT_SPEC_VERSION 9 -#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_ACCELERATION_STRUCTURE_KHR_EXT = 1000150000, - VK_DEBUG_REPORT_OBJECT_TYPE_ACCELERATION_STRUCTURE_NV_EXT = 1000165000, - 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 = 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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugReportCallbackEXT( - VkInstance instance, - const VkDebugReportCallbackCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDebugReportCallbackEXT* pCallback); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDebugReportCallbackEXT( - VkInstance instance, - VkDebugReportCallbackEXT callback, - const VkAllocationCallbacks* pAllocator); - -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 - - -#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" - - -#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" - - -#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" - - -#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; - - - -#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" - - -#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" - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectTagEXT( - VkDevice device, - const VkDebugMarkerObjectTagInfoEXT* pTagInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkDebugMarkerSetObjectNameEXT( - VkDevice device, - const VkDebugMarkerObjectNameInfoEXT* pNameInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerBeginEXT( - VkCommandBuffer commandBuffer, - const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerEndEXT( - VkCommandBuffer commandBuffer); - -VKAPI_ATTR void VKAPI_CALL vkCmdDebugMarkerInsertEXT( - VkCommandBuffer commandBuffer, - const VkDebugMarkerMarkerInfoEXT* pMarkerInfo); -#endif - - -#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" - - -#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; - - - -#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 -VKAPI_ATTR void VKAPI_CALL vkCmdBindTransformFeedbackBuffersEXT( - VkCommandBuffer commandBuffer, - uint32_t firstBinding, - uint32_t bindingCount, - const VkBuffer* pBuffers, - const VkDeviceSize* pOffsets, - const VkDeviceSize* pSizes); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginTransformFeedbackEXT( - VkCommandBuffer commandBuffer, - uint32_t firstCounterBuffer, - uint32_t counterBufferCount, - const VkBuffer* pCounterBuffers, - const VkDeviceSize* pCounterBufferOffsets); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndTransformFeedbackEXT( - VkCommandBuffer commandBuffer, - uint32_t firstCounterBuffer, - uint32_t counterBufferCount, - const VkBuffer* pCounterBuffers, - const VkDeviceSize* pCounterBufferOffsets); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginQueryIndexedEXT( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t query, - VkQueryControlFlags flags, - uint32_t index); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndQueryIndexedEXT( - VkCommandBuffer commandBuffer, - VkQueryPool queryPool, - uint32_t query, - uint32_t index); - -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 - - -#define VK_NVX_image_view_handle 1 -#define VK_NVX_IMAGE_VIEW_HANDLE_SPEC_VERSION 2 -#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 VkResult (VKAPI_PTR *PFN_vkGetImageViewAddressNVX)(VkDevice device, VkImageView imageView, VkImageViewAddressPropertiesNVX* pProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR uint32_t VKAPI_CALL vkGetImageViewHandleNVX( - VkDevice device, - const VkImageViewHandleInfoNVX* pInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetImageViewAddressNVX( - VkDevice device, - VkImageView imageView, - VkImageViewAddressPropertiesNVX* pProperties); -#endif - - -#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 -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndirectCountAMD( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawIndexedIndirectCountAMD( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); -#endif - - -#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" - - -#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" - - -#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" - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetShaderInfoAMD( - VkDevice device, - VkPipeline pipeline, - VkShaderStageFlagBits shaderStage, - VkShaderInfoTypeAMD infoType, - size_t* pInfoSize, - void* pInfo); -#endif - - -#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" - - -#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; - - - -#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" - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceExternalImageFormatPropertiesNV( - VkPhysicalDevice physicalDevice, - VkFormat format, - VkImageType type, - VkImageTiling tiling, - VkImageUsageFlags usage, - VkImageCreateFlags flags, - VkExternalMemoryHandleTypeFlagsNV externalHandleType, - VkExternalImageFormatPropertiesNV* pExternalImageFormatProperties); -#endif - - -#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; - - - -#define VK_EXT_validation_flags 1 -#define VK_EXT_VALIDATION_FLAGS_SPEC_VERSION 2 -#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; - - - -#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" - - -#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" - - -#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 struct VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 textureCompressionASTC_HDR; -} VkPhysicalDeviceTextureCompressionASTCHDRFeaturesEXT; - - - -#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; - - - -#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 enum VkConditionalRenderingFlagBitsEXT { - VK_CONDITIONAL_RENDERING_INVERTED_BIT_EXT = 0x00000001, - VK_CONDITIONAL_RENDERING_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkConditionalRenderingFlagBitsEXT; -typedef VkFlags VkConditionalRenderingFlagsEXT; -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 -VKAPI_ATTR void VKAPI_CALL vkCmdBeginConditionalRenderingEXT( - VkCommandBuffer commandBuffer, - const VkConditionalRenderingBeginInfoEXT* pConditionalRenderingBegin); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndConditionalRenderingEXT( - VkCommandBuffer commandBuffer); -#endif - - -#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 -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWScalingNV( - VkCommandBuffer commandBuffer, - uint32_t firstViewport, - uint32_t viewportCount, - const VkViewportWScalingNV* pViewportWScalings); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkReleaseDisplayEXT( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display); -#endif - - -#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 = 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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfaceCapabilities2EXT( - VkPhysicalDevice physicalDevice, - VkSurfaceKHR surface, - VkSurfaceCapabilities2EXT* pSurfaceCapabilities); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkDisplayPowerControlEXT( - VkDevice device, - VkDisplayKHR display, - const VkDisplayPowerInfoEXT* pDisplayPowerInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDeviceEventEXT( - VkDevice device, - const VkDeviceEventInfoEXT* pDeviceEventInfo, - const VkAllocationCallbacks* pAllocator, - VkFence* pFence); - -VKAPI_ATTR VkResult VKAPI_CALL vkRegisterDisplayEventEXT( - VkDevice device, - VkDisplayKHR display, - const VkDisplayEventInfoEXT* pDisplayEventInfo, - const VkAllocationCallbacks* pAllocator, - VkFence* pFence); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSwapchainCounterEXT( - VkDevice device, - VkSwapchainKHR swapchain, - VkSurfaceCounterFlagBitsEXT counter, - uint64_t* pCounterValue); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetRefreshCycleDurationGOOGLE( - VkDevice device, - VkSwapchainKHR swapchain, - VkRefreshCycleDurationGOOGLE* pDisplayTimingProperties); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPastPresentationTimingGOOGLE( - VkDevice device, - VkSwapchainKHR swapchain, - uint32_t* pPresentationTimingCount, - VkPastPresentationTimingGOOGLE* pPresentationTimings); -#endif - - -#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" - - -#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" - - -#define VK_NV_viewport_array2 1 -#define VK_NV_VIEWPORT_ARRAY2_SPEC_VERSION 1 -#define VK_NV_VIEWPORT_ARRAY2_EXTENSION_NAME "VK_NV_viewport_array2" - - -#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; - - - -#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; - - - -#define VK_EXT_discard_rectangles 1 -#define VK_EXT_DISCARD_RECTANGLES_SPEC_VERSION 1 -#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); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetDiscardRectangleEXT( - VkCommandBuffer commandBuffer, - uint32_t firstDiscardRectangle, - uint32_t discardRectangleCount, - const VkRect2D* pDiscardRectangles); -#endif - - -#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; - - - -#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; - - - -#define VK_EXT_swapchain_colorspace 1 -#define VK_EXT_SWAPCHAIN_COLOR_SPACE_SPEC_VERSION 4 -#define VK_EXT_SWAPCHAIN_COLOR_SPACE_EXTENSION_NAME "VK_EXT_swapchain_colorspace" - - -#define VK_EXT_hdr_metadata 1 -#define VK_EXT_HDR_METADATA_SPEC_VERSION 2 -#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 -VKAPI_ATTR void VKAPI_CALL vkSetHdrMetadataEXT( - VkDevice device, - uint32_t swapchainCount, - const VkSwapchainKHR* pSwapchains, - const VkHdrMetadataEXT* pMetadata); -#endif - - -#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" - - -#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 (~0U-2) - - -#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_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 -VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectNameEXT( - VkDevice device, - const VkDebugUtilsObjectNameInfoEXT* pNameInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkSetDebugUtilsObjectTagEXT( - VkDevice device, - const VkDebugUtilsObjectTagInfoEXT* pTagInfo); - -VKAPI_ATTR void VKAPI_CALL vkQueueBeginDebugUtilsLabelEXT( - VkQueue queue, - const VkDebugUtilsLabelEXT* pLabelInfo); - -VKAPI_ATTR void VKAPI_CALL vkQueueEndDebugUtilsLabelEXT( - VkQueue queue); - -VKAPI_ATTR void VKAPI_CALL vkQueueInsertDebugUtilsLabelEXT( - VkQueue queue, - const VkDebugUtilsLabelEXT* pLabelInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdBeginDebugUtilsLabelEXT( - VkCommandBuffer commandBuffer, - const VkDebugUtilsLabelEXT* pLabelInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdEndDebugUtilsLabelEXT( - VkCommandBuffer commandBuffer); - -VKAPI_ATTR void VKAPI_CALL vkCmdInsertDebugUtilsLabelEXT( - VkCommandBuffer commandBuffer, - const VkDebugUtilsLabelEXT* pLabelInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDebugUtilsMessengerEXT( - VkInstance instance, - const VkDebugUtilsMessengerCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkDebugUtilsMessengerEXT* pMessenger); - -VKAPI_ATTR void VKAPI_CALL vkDestroyDebugUtilsMessengerEXT( - VkInstance instance, - VkDebugUtilsMessengerEXT messenger, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkSubmitDebugUtilsMessageEXT( - VkInstance instance, - VkDebugUtilsMessageSeverityFlagBitsEXT messageSeverity, - VkDebugUtilsMessageTypeFlagsEXT messageTypes, - const VkDebugUtilsMessengerCallbackDataEXT* pCallbackData); -#endif - - -#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; - - - -#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" - - -#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" - - -#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" - - -#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 struct VkPhysicalDeviceInlineUniformBlockFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 inlineUniformBlock; - VkBool32 descriptorBindingInlineUniformBlockUpdateAfterBind; -} VkPhysicalDeviceInlineUniformBlockFeaturesEXT; - -typedef struct VkPhysicalDeviceInlineUniformBlockPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t maxInlineUniformBlockSize; - uint32_t maxPerStageDescriptorInlineUniformBlocks; - uint32_t maxPerStageDescriptorUpdateAfterBindInlineUniformBlocks; - uint32_t maxDescriptorSetInlineUniformBlocks; - uint32_t maxDescriptorSetUpdateAfterBindInlineUniformBlocks; -} VkPhysicalDeviceInlineUniformBlockPropertiesEXT; - -typedef struct VkWriteDescriptorSetInlineUniformBlockEXT { - VkStructureType sType; - const void* pNext; - uint32_t dataSize; - const void* pData; -} VkWriteDescriptorSetInlineUniformBlockEXT; - -typedef struct VkDescriptorPoolInlineUniformBlockCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t maxInlineUniformBlockBindings; -} VkDescriptorPoolInlineUniformBlockCreateInfoEXT; - - - -#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" - - -#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 -VKAPI_ATTR void VKAPI_CALL vkCmdSetSampleLocationsEXT( - VkCommandBuffer commandBuffer, - const VkSampleLocationsInfoEXT* pSampleLocationsInfo); - -VKAPI_ATTR void VKAPI_CALL vkGetPhysicalDeviceMultisamplePropertiesEXT( - VkPhysicalDevice physicalDevice, - VkSampleCountFlagBits samples, - VkMultisamplePropertiesEXT* pMultisampleProperties); -#endif - - -#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; - - - -#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; - - - -#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; - - - -#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" - - -#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; - - - -#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" - - -#define VK_EXT_image_drm_format_modifier 1 -#define VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_SPEC_VERSION 1 -#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 VkResult (VKAPI_PTR *PFN_vkGetImageDrmFormatModifierPropertiesEXT)(VkDevice device, VkImage image, VkImageDrmFormatModifierPropertiesEXT* pProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetImageDrmFormatModifierPropertiesEXT( - VkDevice device, - VkImage image, - VkImageDrmFormatModifierPropertiesEXT* pProperties); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateValidationCacheEXT( - VkDevice device, - const VkValidationCacheCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkValidationCacheEXT* pValidationCache); - -VKAPI_ATTR void VKAPI_CALL vkDestroyValidationCacheEXT( - VkDevice device, - VkValidationCacheEXT validationCache, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkMergeValidationCachesEXT( - VkDevice device, - VkValidationCacheEXT dstCache, - uint32_t srcCacheCount, - const VkValidationCacheEXT* pSrcCaches); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetValidationCacheDataEXT( - VkDevice device, - VkValidationCacheEXT validationCache, - size_t* pDataSize, - void* pData); -#endif - - -#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; - - - -#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" - - -#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 -VKAPI_ATTR void VKAPI_CALL vkCmdBindShadingRateImageNV( - VkCommandBuffer commandBuffer, - VkImageView imageView, - VkImageLayout imageLayout); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportShadingRatePaletteNV( - VkCommandBuffer commandBuffer, - uint32_t firstViewport, - uint32_t viewportCount, - const VkShadingRatePaletteNV* pShadingRatePalettes); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetCoarseSampleOrderNV( - VkCommandBuffer commandBuffer, - VkCoarseSampleOrderTypeNV sampleOrderType, - uint32_t customSampleOrderCount, - const VkCoarseSampleOrderCustomNV* pCustomSampleOrders); -#endif - - -#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_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 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 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_FRONT_COUNTERCLOCKWISE_BIT_KHR = 0x00000002, - VK_GEOMETRY_INSTANCE_FORCE_OPAQUE_BIT_KHR = 0x00000004, - VK_GEOMETRY_INSTANCE_FORCE_NO_OPAQUE_BIT_KHR = 0x00000008, - 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_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_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_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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureNV( - VkDevice device, - const VkAccelerationStructureCreateInfoNV* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkAccelerationStructureNV* pAccelerationStructure); - -VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureNV( - VkDevice device, - VkAccelerationStructureNV accelerationStructure, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureMemoryRequirementsNV( - VkDevice device, - const VkAccelerationStructureMemoryRequirementsInfoNV* pInfo, - VkMemoryRequirements2KHR* pMemoryRequirements); - -VKAPI_ATTR VkResult VKAPI_CALL vkBindAccelerationStructureMemoryNV( - VkDevice device, - uint32_t bindInfoCount, - const VkBindAccelerationStructureMemoryInfoNV* pBindInfos); - -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); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureNV( - VkCommandBuffer commandBuffer, - VkAccelerationStructureNV dst, - VkAccelerationStructureNV src, - VkCopyAccelerationStructureModeKHR mode); - -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); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesNV( - VkDevice device, - VkPipelineCache pipelineCache, - uint32_t createInfoCount, - const VkRayTracingPipelineCreateInfoNV* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkPipeline* pPipelines); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesKHR( - VkDevice device, - VkPipeline pipeline, - uint32_t firstGroup, - uint32_t groupCount, - size_t dataSize, - void* pData); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingShaderGroupHandlesNV( - VkDevice device, - VkPipeline pipeline, - uint32_t firstGroup, - uint32_t groupCount, - size_t dataSize, - void* pData); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetAccelerationStructureHandleNV( - VkDevice device, - VkAccelerationStructureNV accelerationStructure, - size_t dataSize, - void* pData); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesNV( - VkCommandBuffer commandBuffer, - uint32_t accelerationStructureCount, - const VkAccelerationStructureNV* pAccelerationStructures, - VkQueryType queryType, - VkQueryPool queryPool, - uint32_t firstQuery); - -VKAPI_ATTR VkResult VKAPI_CALL vkCompileDeferredNV( - VkDevice device, - VkPipeline pipeline, - uint32_t shader); -#endif - - -#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; - - - -#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; - - - -#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" - - -#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 enum VkQueueGlobalPriorityEXT { - VK_QUEUE_GLOBAL_PRIORITY_LOW_EXT = 128, - VK_QUEUE_GLOBAL_PRIORITY_MEDIUM_EXT = 256, - VK_QUEUE_GLOBAL_PRIORITY_HIGH_EXT = 512, - VK_QUEUE_GLOBAL_PRIORITY_REALTIME_EXT = 1024, - VK_QUEUE_GLOBAL_PRIORITY_MAX_ENUM_EXT = 0x7FFFFFFF -} VkQueueGlobalPriorityEXT; -typedef struct VkDeviceQueueGlobalPriorityCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkQueueGlobalPriorityEXT globalPriority; -} VkDeviceQueueGlobalPriorityCreateInfoEXT; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryHostPointerPropertiesEXT( - VkDevice device, - VkExternalMemoryHandleTypeFlagBits handleType, - const void* pHostPointer, - VkMemoryHostPointerPropertiesEXT* pMemoryHostPointerProperties); -#endif - - -#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); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdWriteBufferMarkerAMD( - VkCommandBuffer commandBuffer, - VkPipelineStageFlagBits pipelineStage, - VkBuffer dstBuffer, - VkDeviceSize dstOffset, - uint32_t marker); -#endif - - -#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; - - - -#define VK_EXT_calibrated_timestamps 1 -#define VK_EXT_CALIBRATED_TIMESTAMPS_SPEC_VERSION 1 -#define VK_EXT_CALIBRATED_TIMESTAMPS_EXTENSION_NAME "VK_EXT_calibrated_timestamps" - -typedef enum VkTimeDomainEXT { - VK_TIME_DOMAIN_DEVICE_EXT = 0, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_EXT = 1, - VK_TIME_DOMAIN_CLOCK_MONOTONIC_RAW_EXT = 2, - VK_TIME_DOMAIN_QUERY_PERFORMANCE_COUNTER_EXT = 3, - VK_TIME_DOMAIN_MAX_ENUM_EXT = 0x7FFFFFFF -} VkTimeDomainEXT; -typedef struct VkCalibratedTimestampInfoEXT { - VkStructureType sType; - const void* pNext; - VkTimeDomainEXT timeDomain; -} VkCalibratedTimestampInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceCalibrateableTimeDomainsEXT)(VkPhysicalDevice physicalDevice, uint32_t* pTimeDomainCount, VkTimeDomainEXT* pTimeDomains); -typedef VkResult (VKAPI_PTR *PFN_vkGetCalibratedTimestampsEXT)(VkDevice device, uint32_t timestampCount, const VkCalibratedTimestampInfoEXT* pTimestampInfos, uint64_t* pTimestamps, uint64_t* pMaxDeviation); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCalibrateableTimeDomainsEXT( - VkPhysicalDevice physicalDevice, - uint32_t* pTimeDomainCount, - VkTimeDomainEXT* pTimeDomains); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetCalibratedTimestampsEXT( - VkDevice device, - uint32_t timestampCount, - const VkCalibratedTimestampInfoEXT* pTimestampInfos, - uint64_t* pTimestamps, - uint64_t* pMaxDeviation); -#endif - - -#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; - - - -#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; - - - -#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 struct VkVertexInputBindingDivisorDescriptionEXT { - uint32_t binding; - uint32_t divisor; -} VkVertexInputBindingDivisorDescriptionEXT; - -typedef struct VkPipelineVertexInputDivisorStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t vertexBindingDivisorCount; - const VkVertexInputBindingDivisorDescriptionEXT* pVertexBindingDivisors; -} VkPipelineVertexInputDivisorStateCreateInfoEXT; - -typedef struct VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 vertexAttributeInstanceRateDivisor; - VkBool32 vertexAttributeInstanceRateZeroDivisor; -} VkPhysicalDeviceVertexAttributeDivisorFeaturesEXT; - - - -#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 enum VkPipelineCreationFeedbackFlagBitsEXT { - VK_PIPELINE_CREATION_FEEDBACK_VALID_BIT_EXT = 0x00000001, - VK_PIPELINE_CREATION_FEEDBACK_APPLICATION_PIPELINE_CACHE_HIT_BIT_EXT = 0x00000002, - VK_PIPELINE_CREATION_FEEDBACK_BASE_PIPELINE_ACCELERATION_BIT_EXT = 0x00000004, - VK_PIPELINE_CREATION_FEEDBACK_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkPipelineCreationFeedbackFlagBitsEXT; -typedef VkFlags VkPipelineCreationFeedbackFlagsEXT; -typedef struct VkPipelineCreationFeedbackEXT { - VkPipelineCreationFeedbackFlagsEXT flags; - uint64_t duration; -} VkPipelineCreationFeedbackEXT; - -typedef struct VkPipelineCreationFeedbackCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPipelineCreationFeedbackEXT* pPipelineCreationFeedback; - uint32_t pipelineStageCreationFeedbackCount; - VkPipelineCreationFeedbackEXT* pPipelineStageCreationFeedbacks; -} VkPipelineCreationFeedbackCreateInfoEXT; - - - -#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" - - -#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 struct VkPhysicalDeviceComputeShaderDerivativesFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 computeDerivativeGroupQuads; - VkBool32 computeDerivativeGroupLinear; -} VkPhysicalDeviceComputeShaderDerivativesFeaturesNV; - - - -#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 -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksNV( - VkCommandBuffer commandBuffer, - uint32_t taskCount, - uint32_t firstTask); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectNV( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - uint32_t drawCount, - uint32_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdDrawMeshTasksIndirectCountNV( - VkCommandBuffer commandBuffer, - VkBuffer buffer, - VkDeviceSize offset, - VkBuffer countBuffer, - VkDeviceSize countBufferOffset, - uint32_t maxDrawCount, - uint32_t stride); -#endif - - -#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 struct VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV { - VkStructureType sType; - void* pNext; - VkBool32 fragmentShaderBarycentric; -} VkPhysicalDeviceFragmentShaderBarycentricFeaturesNV; - - - -#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; - - - -#define VK_NV_scissor_exclusive 1 -#define VK_NV_SCISSOR_EXCLUSIVE_SPEC_VERSION 1 -#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_vkCmdSetExclusiveScissorNV)(VkCommandBuffer commandBuffer, uint32_t firstExclusiveScissor, uint32_t exclusiveScissorCount, const VkRect2D* pExclusiveScissors); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetExclusiveScissorNV( - VkCommandBuffer commandBuffer, - uint32_t firstExclusiveScissor, - uint32_t exclusiveScissorCount, - const VkRect2D* pExclusiveScissors); -#endif - - -#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 void (VKAPI_PTR *PFN_vkCmdSetCheckpointNV)(VkCommandBuffer commandBuffer, const void* pCheckpointMarker); -typedef void (VKAPI_PTR *PFN_vkGetQueueCheckpointDataNV)(VkQueue queue, uint32_t* pCheckpointDataCount, VkCheckpointDataNV* pCheckpointData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetCheckpointNV( - VkCommandBuffer commandBuffer, - const void* pCheckpointMarker); - -VKAPI_ATTR void VKAPI_CALL vkGetQueueCheckpointDataNV( - VkQueue queue, - uint32_t* pCheckpointDataCount, - VkCheckpointDataNV* pCheckpointData); -#endif - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkInitializePerformanceApiINTEL( - VkDevice device, - const VkInitializePerformanceApiInfoINTEL* pInitializeInfo); - -VKAPI_ATTR void VKAPI_CALL vkUninitializePerformanceApiINTEL( - VkDevice device); - -VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceMarkerINTEL( - VkCommandBuffer commandBuffer, - const VkPerformanceMarkerInfoINTEL* pMarkerInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceStreamMarkerINTEL( - VkCommandBuffer commandBuffer, - const VkPerformanceStreamMarkerInfoINTEL* pMarkerInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCmdSetPerformanceOverrideINTEL( - VkCommandBuffer commandBuffer, - const VkPerformanceOverrideInfoINTEL* pOverrideInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquirePerformanceConfigurationINTEL( - VkDevice device, - const VkPerformanceConfigurationAcquireInfoINTEL* pAcquireInfo, - VkPerformanceConfigurationINTEL* pConfiguration); - -VKAPI_ATTR VkResult VKAPI_CALL vkReleasePerformanceConfigurationINTEL( - VkDevice device, - VkPerformanceConfigurationINTEL configuration); - -VKAPI_ATTR VkResult VKAPI_CALL vkQueueSetPerformanceConfigurationINTEL( - VkQueue queue, - VkPerformanceConfigurationINTEL configuration); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetPerformanceParameterINTEL( - VkDevice device, - VkPerformanceParameterTypeINTEL parameter, - VkPerformanceValueINTEL* pValue); -#endif - - -#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; - - - -#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 -VKAPI_ATTR void VKAPI_CALL vkSetLocalDimmingAMD( - VkDevice device, - VkSwapchainKHR swapChain, - VkBool32 localDimmingEnable); -#endif - - -#define VK_EXT_fragment_density_map 1 -#define VK_EXT_FRAGMENT_DENSITY_MAP_SPEC_VERSION 1 -#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; - - - -#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; - - - -#define VK_GOOGLE_hlsl_functionality1 1 -#define VK_GOOGLE_HLSL_FUNCTIONALITY1_SPEC_VERSION 1 -#define VK_GOOGLE_HLSL_FUNCTIONALITY1_EXTENSION_NAME "VK_GOOGLE_hlsl_functionality1" - - -#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" - - -#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 struct VkPhysicalDeviceSubgroupSizeControlFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 subgroupSizeControl; - VkBool32 computeFullSubgroups; -} VkPhysicalDeviceSubgroupSizeControlFeaturesEXT; - -typedef struct VkPhysicalDeviceSubgroupSizeControlPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t minSubgroupSize; - uint32_t maxSubgroupSize; - uint32_t maxComputeWorkgroupSubgroups; - VkShaderStageFlags requiredSubgroupSizeStages; -} VkPhysicalDeviceSubgroupSizeControlPropertiesEXT; - -typedef struct VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT { - VkStructureType sType; - void* pNext; - uint32_t requiredSubgroupSize; -} VkPipelineShaderStageRequiredSubgroupSizeCreateInfoEXT; - - - -#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; - - - -#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; - - - -#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; - - - -#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; - - - -#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; - - - -#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; - - - -#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 -VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetBufferDeviceAddressEXT( - VkDevice device, - const VkBufferDeviceAddressInfo* pInfo); -#endif - - -#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 enum VkToolPurposeFlagBitsEXT { - VK_TOOL_PURPOSE_VALIDATION_BIT_EXT = 0x00000001, - VK_TOOL_PURPOSE_PROFILING_BIT_EXT = 0x00000002, - VK_TOOL_PURPOSE_TRACING_BIT_EXT = 0x00000004, - VK_TOOL_PURPOSE_ADDITIONAL_FEATURES_BIT_EXT = 0x00000008, - VK_TOOL_PURPOSE_MODIFYING_FEATURES_BIT_EXT = 0x00000010, - VK_TOOL_PURPOSE_DEBUG_REPORTING_BIT_EXT = 0x00000020, - VK_TOOL_PURPOSE_DEBUG_MARKERS_BIT_EXT = 0x00000040, - VK_TOOL_PURPOSE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkToolPurposeFlagBitsEXT; -typedef VkFlags VkToolPurposeFlagsEXT; -typedef struct VkPhysicalDeviceToolPropertiesEXT { - VkStructureType sType; - void* pNext; - char name[VK_MAX_EXTENSION_NAME_SIZE]; - char version[VK_MAX_EXTENSION_NAME_SIZE]; - VkToolPurposeFlagsEXT purposes; - char description[VK_MAX_DESCRIPTION_SIZE]; - char layer[VK_MAX_EXTENSION_NAME_SIZE]; -} VkPhysicalDeviceToolPropertiesEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkGetPhysicalDeviceToolPropertiesEXT)(VkPhysicalDevice physicalDevice, uint32_t* pToolCount, VkPhysicalDeviceToolPropertiesEXT* pToolProperties); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceToolPropertiesEXT( - VkPhysicalDevice physicalDevice, - uint32_t* pToolCount, - VkPhysicalDeviceToolPropertiesEXT* pToolProperties); -#endif - - -#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; - - - -#define VK_EXT_validation_features 1 -#define VK_EXT_VALIDATION_FEATURES_SPEC_VERSION 4 -#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_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; - - - -#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 enum VkComponentTypeNV { - VK_COMPONENT_TYPE_FLOAT16_NV = 0, - VK_COMPONENT_TYPE_FLOAT32_NV = 1, - VK_COMPONENT_TYPE_FLOAT64_NV = 2, - VK_COMPONENT_TYPE_SINT8_NV = 3, - VK_COMPONENT_TYPE_SINT16_NV = 4, - VK_COMPONENT_TYPE_SINT32_NV = 5, - VK_COMPONENT_TYPE_SINT64_NV = 6, - VK_COMPONENT_TYPE_UINT8_NV = 7, - VK_COMPONENT_TYPE_UINT16_NV = 8, - VK_COMPONENT_TYPE_UINT32_NV = 9, - VK_COMPONENT_TYPE_UINT64_NV = 10, - VK_COMPONENT_TYPE_MAX_ENUM_NV = 0x7FFFFFFF -} VkComponentTypeNV; - -typedef enum VkScopeNV { - VK_SCOPE_DEVICE_NV = 1, - VK_SCOPE_WORKGROUP_NV = 2, - VK_SCOPE_SUBGROUP_NV = 3, - VK_SCOPE_QUEUE_FAMILY_NV = 5, - VK_SCOPE_MAX_ENUM_NV = 0x7FFFFFFF -} 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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceCooperativeMatrixPropertiesNV( - VkPhysicalDevice physicalDevice, - uint32_t* pPropertyCount, - VkCooperativeMatrixPropertiesNV* pProperties); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSupportedFramebufferMixedSamplesCombinationsNV( - VkPhysicalDevice physicalDevice, - uint32_t* pCombinationCount, - VkFramebufferMixedSamplesCombinationNV* pCombinations); -#endif - - -#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; - - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateHeadlessSurfaceEXT( - VkInstance instance, - const VkHeadlessSurfaceCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - - -#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 enum VkLineRasterizationModeEXT { - VK_LINE_RASTERIZATION_MODE_DEFAULT_EXT = 0, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_EXT = 1, - VK_LINE_RASTERIZATION_MODE_BRESENHAM_EXT = 2, - VK_LINE_RASTERIZATION_MODE_RECTANGULAR_SMOOTH_EXT = 3, - VK_LINE_RASTERIZATION_MODE_MAX_ENUM_EXT = 0x7FFFFFFF -} VkLineRasterizationModeEXT; -typedef struct VkPhysicalDeviceLineRasterizationFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 rectangularLines; - VkBool32 bresenhamLines; - VkBool32 smoothLines; - VkBool32 stippledRectangularLines; - VkBool32 stippledBresenhamLines; - VkBool32 stippledSmoothLines; -} VkPhysicalDeviceLineRasterizationFeaturesEXT; - -typedef struct VkPhysicalDeviceLineRasterizationPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t lineSubPixelPrecisionBits; -} VkPhysicalDeviceLineRasterizationPropertiesEXT; - -typedef struct VkPipelineRasterizationLineStateCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkLineRasterizationModeEXT lineRasterizationMode; - VkBool32 stippledLineEnable; - uint32_t lineStippleFactor; - uint16_t lineStipplePattern; -} VkPipelineRasterizationLineStateCreateInfoEXT; - -typedef void (VKAPI_PTR *PFN_vkCmdSetLineStippleEXT)(VkCommandBuffer commandBuffer, uint32_t lineStippleFactor, uint16_t lineStipplePattern); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR void VKAPI_CALL vkCmdSetLineStippleEXT( - VkCommandBuffer commandBuffer, - uint32_t lineStippleFactor, - uint16_t lineStipplePattern); -#endif - - -#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; - - - -#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 -VKAPI_ATTR void VKAPI_CALL vkResetQueryPoolEXT( - VkDevice device, - VkQueryPool queryPool, - uint32_t firstQuery, - uint32_t queryCount); -#endif - - -#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 struct VkPhysicalDeviceIndexTypeUint8FeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 indexTypeUint8; -} VkPhysicalDeviceIndexTypeUint8FeaturesEXT; - - - -#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 -VKAPI_ATTR void VKAPI_CALL vkCmdSetCullModeEXT( - VkCommandBuffer commandBuffer, - VkCullModeFlags cullMode); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetFrontFaceEXT( - VkCommandBuffer commandBuffer, - VkFrontFace frontFace); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetPrimitiveTopologyEXT( - VkCommandBuffer commandBuffer, - VkPrimitiveTopology primitiveTopology); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetViewportWithCountEXT( - VkCommandBuffer commandBuffer, - uint32_t viewportCount, - const VkViewport* pViewports); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetScissorWithCountEXT( - VkCommandBuffer commandBuffer, - uint32_t scissorCount, - const VkRect2D* pScissors); - -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); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthTestEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 depthTestEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthWriteEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 depthWriteEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthCompareOpEXT( - VkCommandBuffer commandBuffer, - VkCompareOp depthCompareOp); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetDepthBoundsTestEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 depthBoundsTestEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilTestEnableEXT( - VkCommandBuffer commandBuffer, - VkBool32 stencilTestEnable); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetStencilOpEXT( - VkCommandBuffer commandBuffer, - VkStencilFaceFlags faceMask, - VkStencilOp failOp, - VkStencilOp passOp, - VkStencilOp depthFailOp, - VkCompareOp compareOp); -#endif - - -#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 struct VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 shaderDemoteToHelperInvocation; -} VkPhysicalDeviceShaderDemoteToHelperInvocationFeaturesEXT; - - - -#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_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 -VKAPI_ATTR void VKAPI_CALL vkGetGeneratedCommandsMemoryRequirementsNV( - VkDevice device, - const VkGeneratedCommandsMemoryRequirementsInfoNV* pInfo, - VkMemoryRequirements2* pMemoryRequirements); - -VKAPI_ATTR void VKAPI_CALL vkCmdPreprocessGeneratedCommandsNV( - VkCommandBuffer commandBuffer, - const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdExecuteGeneratedCommandsNV( - VkCommandBuffer commandBuffer, - VkBool32 isPreprocessed, - const VkGeneratedCommandsInfoNV* pGeneratedCommandsInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdBindPipelineShaderGroupNV( - VkCommandBuffer commandBuffer, - VkPipelineBindPoint pipelineBindPoint, - VkPipeline pipeline, - uint32_t groupIndex); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateIndirectCommandsLayoutNV( - VkDevice device, - const VkIndirectCommandsLayoutCreateInfoNV* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkIndirectCommandsLayoutNV* pIndirectCommandsLayout); - -VKAPI_ATTR void VKAPI_CALL vkDestroyIndirectCommandsLayoutNV( - VkDevice device, - VkIndirectCommandsLayoutNV indirectCommandsLayout, - const VkAllocationCallbacks* pAllocator); -#endif - - -#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 struct VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT { - VkStructureType sType; - void* pNext; - VkDeviceSize storageTexelBufferOffsetAlignmentBytes; - VkBool32 storageTexelBufferOffsetSingleTexelAlignment; - VkDeviceSize uniformTexelBufferOffsetAlignmentBytes; - VkBool32 uniformTexelBufferOffsetSingleTexelAlignment; -} VkPhysicalDeviceTexelBufferAlignmentPropertiesEXT; - - - -#define VK_QCOM_render_pass_transform 1 -#define VK_QCOM_RENDER_PASS_TRANSFORM_SPEC_VERSION 1 -#define VK_QCOM_RENDER_PASS_TRANSFORM_EXTENSION_NAME "VK_QCOM_render_pass_transform" -typedef struct VkRenderPassTransformBeginInfoQCOM { - VkStructureType sType; - void* pNext; - VkSurfaceTransformFlagBitsKHR transform; -} VkRenderPassTransformBeginInfoQCOM; - -typedef struct VkCommandBufferInheritanceRenderPassTransformInfoQCOM { - VkStructureType sType; - void* pNext; - VkSurfaceTransformFlagBitsKHR transform; - VkRect2D renderArea; -} VkCommandBufferInheritanceRenderPassTransformInfoQCOM; - - - -#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; - const 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; - - - -#define VK_EXT_robustness2 1 -#define VK_EXT_ROBUSTNESS_2_SPEC_VERSION 1 -#define VK_EXT_ROBUSTNESS_2_EXTENSION_NAME "VK_EXT_robustness2" -typedef struct VkPhysicalDeviceRobustness2FeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 robustBufferAccess2; - VkBool32 robustImageAccess2; - VkBool32 nullDescriptor; -} VkPhysicalDeviceRobustness2FeaturesEXT; - -typedef struct VkPhysicalDeviceRobustness2PropertiesEXT { - VkStructureType sType; - void* pNext; - VkDeviceSize robustStorageBufferAccessSizeAlignment; - VkDeviceSize robustUniformBufferAccessSizeAlignment; -} VkPhysicalDeviceRobustness2PropertiesEXT; - - - -#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 VkSamplerCustomBorderColorCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkClearColorValue customBorderColor; - VkFormat format; -} VkSamplerCustomBorderColorCreateInfoEXT; - -typedef struct VkPhysicalDeviceCustomBorderColorPropertiesEXT { - VkStructureType sType; - void* pNext; - uint32_t maxCustomBorderColorSamplers; -} VkPhysicalDeviceCustomBorderColorPropertiesEXT; - -typedef struct VkPhysicalDeviceCustomBorderColorFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 customBorderColors; - VkBool32 customBorderColorWithoutFormat; -} VkPhysicalDeviceCustomBorderColorFeaturesEXT; - - - -#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" - - -#define VK_EXT_private_data 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkPrivateDataSlotEXT) -#define VK_EXT_PRIVATE_DATA_SPEC_VERSION 1 -#define VK_EXT_PRIVATE_DATA_EXTENSION_NAME "VK_EXT_private_data" - -typedef enum VkPrivateDataSlotCreateFlagBitsEXT { - VK_PRIVATE_DATA_SLOT_CREATE_FLAG_BITS_MAX_ENUM_EXT = 0x7FFFFFFF -} VkPrivateDataSlotCreateFlagBitsEXT; -typedef VkFlags VkPrivateDataSlotCreateFlagsEXT; -typedef struct VkPhysicalDevicePrivateDataFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 privateData; -} VkPhysicalDevicePrivateDataFeaturesEXT; - -typedef struct VkDevicePrivateDataCreateInfoEXT { - VkStructureType sType; - const void* pNext; - uint32_t privateDataSlotRequestCount; -} VkDevicePrivateDataCreateInfoEXT; - -typedef struct VkPrivateDataSlotCreateInfoEXT { - VkStructureType sType; - const void* pNext; - VkPrivateDataSlotCreateFlagsEXT flags; -} VkPrivateDataSlotCreateInfoEXT; - -typedef VkResult (VKAPI_PTR *PFN_vkCreatePrivateDataSlotEXT)(VkDevice device, const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, const VkAllocationCallbacks* pAllocator, VkPrivateDataSlotEXT* pPrivateDataSlot); -typedef void (VKAPI_PTR *PFN_vkDestroyPrivateDataSlotEXT)(VkDevice device, VkPrivateDataSlotEXT privateDataSlot, const VkAllocationCallbacks* pAllocator); -typedef VkResult (VKAPI_PTR *PFN_vkSetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t data); -typedef void (VKAPI_PTR *PFN_vkGetPrivateDataEXT)(VkDevice device, VkObjectType objectType, uint64_t objectHandle, VkPrivateDataSlotEXT privateDataSlot, uint64_t* pData); - -#ifndef VK_NO_PROTOTYPES -VKAPI_ATTR VkResult VKAPI_CALL vkCreatePrivateDataSlotEXT( - VkDevice device, - const VkPrivateDataSlotCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkPrivateDataSlotEXT* pPrivateDataSlot); - -VKAPI_ATTR void VKAPI_CALL vkDestroyPrivateDataSlotEXT( - VkDevice device, - VkPrivateDataSlotEXT privateDataSlot, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR VkResult VKAPI_CALL vkSetPrivateDataEXT( - VkDevice device, - VkObjectType objectType, - uint64_t objectHandle, - VkPrivateDataSlotEXT privateDataSlot, - uint64_t data); - -VKAPI_ATTR void VKAPI_CALL vkGetPrivateDataEXT( - VkDevice device, - VkObjectType objectType, - uint64_t objectHandle, - VkPrivateDataSlotEXT privateDataSlot, - uint64_t* pData); -#endif - - -#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 struct VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 pipelineCreationCacheControl; -} VkPhysicalDevicePipelineCreationCacheControlFeaturesEXT; - - - -#define VK_NV_device_diagnostics_config 1 -#define VK_NV_DEVICE_DIAGNOSTICS_CONFIG_SPEC_VERSION 1 -#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_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; - - - -#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" - - -#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 -VKAPI_ATTR void VKAPI_CALL vkCmdSetFragmentShadingRateEnumNV( - VkCommandBuffer commandBuffer, - VkFragmentShadingRateNV shadingRate, - const VkFragmentShadingRateCombinerOpKHR combinerOps[2]); -#endif - - -#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; - - - -#define VK_QCOM_rotated_copy_commands 1 -#define VK_QCOM_ROTATED_COPY_COMMANDS_SPEC_VERSION 0 -#define VK_QCOM_ROTATED_COPY_COMMANDS_EXTENSION_NAME "VK_QCOM_rotated_copy_commands" -typedef struct VkCopyCommandTransformInfoQCOM { - VkStructureType sType; - const void* pNext; - VkSurfaceTransformFlagBitsKHR transform; -} VkCopyCommandTransformInfoQCOM; - - - -#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 struct VkPhysicalDeviceImageRobustnessFeaturesEXT { - VkStructureType sType; - void* pNext; - VkBool32 robustImageAccess; -} VkPhysicalDeviceImageRobustnessFeaturesEXT; - - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireWinrtDisplayNV( - VkPhysicalDevice physicalDevice, - VkDisplayKHR display); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetWinrtDisplayNV( - VkPhysicalDevice physicalDevice, - uint32_t deviceRelativeId, - VkDisplayKHR* pDisplay); -#endif - - -#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 VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE { - VkStructureType sType; - void* pNext; - VkBool32 mutableDescriptorType; -} VkPhysicalDeviceMutableDescriptorTypeFeaturesVALVE; - -typedef struct VkMutableDescriptorTypeListVALVE { - uint32_t descriptorTypeCount; - const VkDescriptorType* pDescriptorTypes; -} VkMutableDescriptorTypeListVALVE; - -typedef struct VkMutableDescriptorTypeCreateInfoVALVE { - VkStructureType sType; - const void* pNext; - uint32_t mutableDescriptorTypeListCount; - const VkMutableDescriptorTypeListVALVE* pMutableDescriptorTypeLists; -} VkMutableDescriptorTypeCreateInfoVALVE; - - - -#define VK_KHR_acceleration_structure 1 -VK_DEFINE_NON_DISPATCHABLE_HANDLE(VkAccelerationStructureKHR) -#define VK_KHR_ACCELERATION_STRUCTURE_SPEC_VERSION 11 -#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 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 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 VkAccelerationStructureCreateFlagBitsKHR { - VK_ACCELERATION_STRUCTURE_CREATE_DEVICE_ADDRESS_CAPTURE_REPLAY_BIT_KHR = 0x00000001, - VK_ACCELERATION_STRUCTURE_CREATE_FLAG_BITS_MAX_ENUM_KHR = 0x7FFFFFFF -} VkAccelerationStructureCreateFlagBitsKHR; -typedef VkFlags VkAccelerationStructureCreateFlagsKHR; -typedef union VkDeviceOrHostAddressKHR { - VkDeviceAddress deviceAddress; - void* hostAddress; -} VkDeviceOrHostAddressKHR; - -typedef union VkDeviceOrHostAddressConstKHR { - VkDeviceAddress deviceAddress; - const void* hostAddress; -} VkDeviceOrHostAddressConstKHR; - -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 struct VkAccelerationStructureBuildSizesInfoKHR { - VkStructureType sType; - const void* pNext; - VkDeviceSize accelerationStructureSize; - VkDeviceSize updateScratchSize; - VkDeviceSize buildScratchSize; -} VkAccelerationStructureBuildSizesInfoKHR; - -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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateAccelerationStructureKHR( - VkDevice device, - const VkAccelerationStructureCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkAccelerationStructureKHR* pAccelerationStructure); - -VKAPI_ATTR void VKAPI_CALL vkDestroyAccelerationStructureKHR( - VkDevice device, - VkAccelerationStructureKHR accelerationStructure, - const VkAllocationCallbacks* pAllocator); - -VKAPI_ATTR void VKAPI_CALL vkCmdBuildAccelerationStructuresKHR( - VkCommandBuffer commandBuffer, - uint32_t infoCount, - const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, - const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); - -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); - -VKAPI_ATTR VkResult VKAPI_CALL vkBuildAccelerationStructuresKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - uint32_t infoCount, - const VkAccelerationStructureBuildGeometryInfoKHR* pInfos, - const VkAccelerationStructureBuildRangeInfoKHR* const* ppBuildRangeInfos); - -VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - const VkCopyAccelerationStructureInfoKHR* pInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCopyAccelerationStructureToMemoryKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkCopyMemoryToAccelerationStructureKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkWriteAccelerationStructuresPropertiesKHR( - VkDevice device, - uint32_t accelerationStructureCount, - const VkAccelerationStructureKHR* pAccelerationStructures, - VkQueryType queryType, - size_t dataSize, - void* pData, - size_t stride); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureKHR( - VkCommandBuffer commandBuffer, - const VkCopyAccelerationStructureInfoKHR* pInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyAccelerationStructureToMemoryKHR( - VkCommandBuffer commandBuffer, - const VkCopyAccelerationStructureToMemoryInfoKHR* pInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdCopyMemoryToAccelerationStructureKHR( - VkCommandBuffer commandBuffer, - const VkCopyMemoryToAccelerationStructureInfoKHR* pInfo); - -VKAPI_ATTR VkDeviceAddress VKAPI_CALL vkGetAccelerationStructureDeviceAddressKHR( - VkDevice device, - const VkAccelerationStructureDeviceAddressInfoKHR* pInfo); - -VKAPI_ATTR void VKAPI_CALL vkCmdWriteAccelerationStructuresPropertiesKHR( - VkCommandBuffer commandBuffer, - uint32_t accelerationStructureCount, - const VkAccelerationStructureKHR* pAccelerationStructures, - VkQueryType queryType, - VkQueryPool queryPool, - uint32_t firstQuery); - -VKAPI_ATTR void VKAPI_CALL vkGetDeviceAccelerationStructureCompatibilityKHR( - VkDevice device, - const VkAccelerationStructureVersionInfoKHR* pVersionInfo, - VkAccelerationStructureCompatibilityKHR* pCompatibility); - -VKAPI_ATTR void VKAPI_CALL vkGetAccelerationStructureBuildSizesKHR( - VkDevice device, - VkAccelerationStructureBuildTypeKHR buildType, - const VkAccelerationStructureBuildGeometryInfoKHR* pBuildInfo, - const uint32_t* pMaxPrimitiveCounts, - VkAccelerationStructureBuildSizesInfoKHR* pSizeInfo); -#endif - - -#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 VkStridedDeviceAddressRegionKHR { - VkDeviceAddress deviceAddress; - VkDeviceSize stride; - VkDeviceSize size; -} VkStridedDeviceAddressRegionKHR; - -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 -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); - -VKAPI_ATTR VkResult VKAPI_CALL vkCreateRayTracingPipelinesKHR( - VkDevice device, - VkDeferredOperationKHR deferredOperation, - VkPipelineCache pipelineCache, - uint32_t createInfoCount, - const VkRayTracingPipelineCreateInfoKHR* pCreateInfos, - const VkAllocationCallbacks* pAllocator, - VkPipeline* pPipelines); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetRayTracingCaptureReplayShaderGroupHandlesKHR( - VkDevice device, - VkPipeline pipeline, - uint32_t firstGroup, - uint32_t groupCount, - size_t dataSize, - void* pData); - -VKAPI_ATTR void VKAPI_CALL vkCmdTraceRaysIndirectKHR( - VkCommandBuffer commandBuffer, - const VkStridedDeviceAddressRegionKHR* pRaygenShaderBindingTable, - const VkStridedDeviceAddressRegionKHR* pMissShaderBindingTable, - const VkStridedDeviceAddressRegionKHR* pHitShaderBindingTable, - const VkStridedDeviceAddressRegionKHR* pCallableShaderBindingTable, - VkDeviceAddress indirectDeviceAddress); - -VKAPI_ATTR VkDeviceSize VKAPI_CALL vkGetRayTracingShaderGroupStackSizeKHR( - VkDevice device, - VkPipeline pipeline, - uint32_t group, - VkShaderGroupShaderKHR groupShader); - -VKAPI_ATTR void VKAPI_CALL vkCmdSetRayTracingPipelineStackSizeKHR( - VkCommandBuffer commandBuffer, - uint32_t pipelineStackSize); -#endif - - -#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; - - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_directfb.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_directfb.h deleted file mode 100644 index 8eaac6e48d..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_directfb.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef VULKAN_DIRECTFB_H_ -#define VULKAN_DIRECTFB_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateDirectFBSurfaceEXT( - VkInstance instance, - const VkDirectFBSurfaceCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceDirectFBPresentationSupportEXT( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - IDirectFB* dfb); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_fuchsia.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_fuchsia.h deleted file mode 100644 index 75284eca71..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_fuchsia.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef VULKAN_FUCHSIA_H_ -#define VULKAN_FUCHSIA_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateImagePipeSurfaceFUCHSIA( - VkInstance instance, - const VkImagePipeSurfaceCreateInfoFUCHSIA* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_ggp.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_ggp.h deleted file mode 100644 index 9a6a582c5b..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_ggp.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef VULKAN_GGP_H_ -#define VULKAN_GGP_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateStreamDescriptorSurfaceGGP( - VkInstance instance, - const VkStreamDescriptorSurfaceCreateInfoGGP* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - - -#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/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_ios.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_ios.h deleted file mode 100644 index 6e7e6afea6..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_ios.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef VULKAN_IOS_H_ -#define VULKAN_IOS_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateIOSSurfaceMVK( - VkInstance instance, - const VkIOSSurfaceCreateInfoMVK* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_macos.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_macos.h deleted file mode 100644 index c49b123d07..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_macos.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef VULKAN_MACOS_H_ -#define VULKAN_MACOS_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateMacOSSurfaceMVK( - VkInstance instance, - const VkMacOSSurfaceCreateInfoMVK* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_metal.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_metal.h deleted file mode 100644 index 5cf4a703ac..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_metal.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef VULKAN_METAL_H_ -#define VULKAN_METAL_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateMetalSurfaceEXT( - VkInstance instance, - const VkMetalSurfaceCreateInfoEXT* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_vi.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_vi.h deleted file mode 100644 index 9e0dcca200..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_vi.h +++ /dev/null @@ -1,47 +0,0 @@ -#ifndef VULKAN_VI_H_ -#define VULKAN_VI_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateViSurfaceNN( - VkInstance instance, - const VkViSurfaceCreateInfoNN* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_wayland.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_wayland.h deleted file mode 100644 index 2a329be9dd..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_wayland.h +++ /dev/null @@ -1,54 +0,0 @@ -#ifndef VULKAN_WAYLAND_H_ -#define VULKAN_WAYLAND_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateWaylandSurfaceKHR( - VkInstance instance, - const VkWaylandSurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWaylandPresentationSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - struct wl_display* display); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_win32.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_win32.h deleted file mode 100644 index 1b680f0b1a..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_win32.h +++ /dev/null @@ -1,315 +0,0 @@ -#ifndef VULKAN_WIN32_H_ -#define VULKAN_WIN32_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateWin32SurfaceKHR( - VkInstance instance, - const VkWin32SurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceWin32PresentationSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleKHR( - VkDevice device, - const VkMemoryGetWin32HandleInfoKHR* pGetWin32HandleInfo, - HANDLE* pHandle); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandlePropertiesKHR( - VkDevice device, - VkExternalMemoryHandleTypeFlagBits handleType, - HANDLE handle, - VkMemoryWin32HandlePropertiesKHR* pMemoryWin32HandleProperties); -#endif - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkImportSemaphoreWin32HandleKHR( - VkDevice device, - const VkImportSemaphoreWin32HandleInfoKHR* pImportSemaphoreWin32HandleInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetSemaphoreWin32HandleKHR( - VkDevice device, - const VkSemaphoreGetWin32HandleInfoKHR* pGetWin32HandleInfo, - HANDLE* pHandle); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkImportFenceWin32HandleKHR( - VkDevice device, - const VkImportFenceWin32HandleInfoKHR* pImportFenceWin32HandleInfo); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetFenceWin32HandleKHR( - VkDevice device, - const VkFenceGetWin32HandleInfoKHR* pGetWin32HandleInfo, - HANDLE* pHandle); -#endif - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetMemoryWin32HandleNV( - VkDevice device, - VkDeviceMemory memory, - VkExternalMemoryHandleTypeFlagsNV handleType, - HANDLE* pHandle); -#endif - - -#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; - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkGetPhysicalDeviceSurfacePresentModes2EXT( - VkPhysicalDevice physicalDevice, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - uint32_t* pPresentModeCount, - VkPresentModeKHR* pPresentModes); - -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireFullScreenExclusiveModeEXT( - VkDevice device, - VkSwapchainKHR swapchain); - -VKAPI_ATTR VkResult VKAPI_CALL vkReleaseFullScreenExclusiveModeEXT( - VkDevice device, - VkSwapchainKHR swapchain); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetDeviceGroupSurfacePresentModes2EXT( - VkDevice device, - const VkPhysicalDeviceSurfaceInfo2KHR* pSurfaceInfo, - VkDeviceGroupPresentModeFlagsKHR* pModes); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xcb.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xcb.h deleted file mode 100644 index 5ba2ad850a..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xcb.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef VULKAN_XCB_H_ -#define VULKAN_XCB_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateXcbSurfaceKHR( - VkInstance instance, - const VkXcbSurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXcbPresentationSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - xcb_connection_t* connection, - xcb_visualid_t visual_id); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xlib.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xlib.h deleted file mode 100644 index 75c75dc2e3..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xlib.h +++ /dev/null @@ -1,55 +0,0 @@ -#ifndef VULKAN_XLIB_H_ -#define VULKAN_XLIB_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkCreateXlibSurfaceKHR( - VkInstance instance, - const VkXlibSurfaceCreateInfoKHR* pCreateInfo, - const VkAllocationCallbacks* pAllocator, - VkSurfaceKHR* pSurface); - -VKAPI_ATTR VkBool32 VKAPI_CALL vkGetPhysicalDeviceXlibPresentationSupportKHR( - VkPhysicalDevice physicalDevice, - uint32_t queueFamilyIndex, - Display* dpy, - VisualID visualID); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xlib_xrandr.h b/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xlib_xrandr.h deleted file mode 100644 index fa27493422..0000000000 --- a/alvr/server/cpp/platform/win32/amf/include/core/vulkan/vulkan_xlib_xrandr.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef VULKAN_XLIB_XRANDR_H_ -#define VULKAN_XLIB_XRANDR_H_ 1 - -/* -** Copyright 2015-2021 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 - - - -#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 -VKAPI_ATTR VkResult VKAPI_CALL vkAcquireXlibDisplayEXT( - VkPhysicalDevice physicalDevice, - Display* dpy, - VkDisplayKHR display); - -VKAPI_ATTR VkResult VKAPI_CALL vkGetRandROutputDisplayEXT( - VkPhysicalDevice physicalDevice, - Display* dpy, - RROutput rrOutput, - VkDisplayKHR* pDisplay); -#endif - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/alvr/server/cpp/platform/win32/amf/common/AMFFactory.cpp b/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp similarity index 90% rename from alvr/server/cpp/platform/win32/amf/common/AMFFactory.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp index f45765f07e..8077c273f3 100644 --- a/alvr/server/cpp/platform/win32/amf/common/AMFFactory.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,10 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -33,7 +34,16 @@ #include "AMFFactory.h" #include "Thread.h" +#ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wexit-time-destructors" + #pragma clang diagnostic ignored "-Wglobal-constructors" +#endif + AMFFactoryHelper g_AMFFactory; +#ifdef __clang__ + #pragma clang diagnostic pop +#endif #ifdef AMF_CORE_STATIC extern "C" @@ -58,7 +68,7 @@ AMFFactoryHelper::~AMFFactoryHelper() Terminate(); } //------------------------------------------------------------------------------------------------- -AMF_RESULT AMFFactoryHelper::Init() +AMF_RESULT AMFFactoryHelper::Init(const wchar_t* dllName) { #ifndef AMF_CORE_STATIC if (m_hDLLHandle != NULL) @@ -66,7 +76,13 @@ AMF_RESULT AMFFactoryHelper::Init() amf_atomic_inc(&m_iRefCount); return AMF_OK; } - m_hDLLHandle = amf_load_library(AMF_DLL_NAME); + + const wchar_t* dllName_ = dllName == NULL ? AMF_DLL_NAME : dllName; +#if defined (_WIN32) || defined (__APPLE__) + m_hDLLHandle = amf_load_library(dllName_); +#else + m_hDLLHandle = amf_load_library1(dllName_, false); //load with local flags +#endif if(m_hDLLHandle == NULL) { return AMF_FAIL; @@ -110,10 +126,10 @@ AMF_RESULT AMFFactoryHelper::Init() AMF_RESULT AMFFactoryHelper::Terminate() { if(m_hDLLHandle != NULL) - { + { amf_atomic_dec(&m_iRefCount); if(m_iRefCount == 0) - { + { amf_free_library(m_hDLLHandle); m_hDLLHandle = NULL; m_pFactory= NULL; @@ -150,14 +166,14 @@ AMF_RESULT AMFFactoryHelper::LoadExternalComponent(amf::AMFContext* pContext, c { // check passed in parameters if (!pContext || !dll || !function) - { + { return AMF_INVALID_ARG; } // check if DLL has already been loaded amf_handle hDll = NULL; for (std::vector::iterator it = m_extComponents.begin(); it != m_extComponents.end(); ++it) - { + { #if defined(_WIN32) if (wcsicmp(it->m_DLL.c_str(), dll) == 0) // ignore case on Windows #elif defined(__linux) // Linux @@ -174,7 +190,7 @@ AMF_RESULT AMFFactoryHelper::LoadExternalComponent(amf::AMFContext* pContext, c return AMF_UNEXPECTED; } } - // DLL wasn't loaded before so load it now and + // DLL wasn't loaded before so load it now and // add it to the internal list if (hDll == NULL) { @@ -183,13 +199,17 @@ AMF_RESULT AMFFactoryHelper::LoadExternalComponent(amf::AMFContext* pContext, c component.m_hDLLHandle = NULL; component.m_DLL = dll; +#if defined(_WIN32) || defined(__APPLE__) hDll = amf_load_library(dll); +#else + hDll = amf_load_library1(dll, false); //global flag set to true +#endif if (hDll == NULL) return AMF_FAIL; // since LoadLibrary succeeded add the information // into the internal list so we can properly free - // the DLL later on, even if we fail to get the + // the DLL later on, even if we fail to get the // required information from it... component.m_hDLLHandle = hDll; amf_atomic_inc(&component.m_iRefCount); @@ -208,11 +228,11 @@ AMF_RESULT AMFFactoryHelper::LoadExternalComponent(amf::AMFContext* pContext, c AMF_RESULT AMFFactoryHelper::UnLoadExternalComponent(const wchar_t* dll) { if (!dll) - { + { return AMF_INVALID_ARG; } for (std::vector::iterator it = m_extComponents.begin(); it != m_extComponents.end(); ++it) - { + { #if defined(_WIN32) if (wcsicmp(it->m_DLL.c_str(), dll) == 0) // ignore case on Windows #elif defined(__linux) // Linux @@ -225,7 +245,7 @@ AMF_RESULT AMFFactoryHelper::UnLoadExternalComponent(const wchar_t* dll) } amf_atomic_dec(&it->m_iRefCount); if (it->m_iRefCount == 0) - { + { amf_free_library(it->m_hDLLHandle); m_extComponents.erase(it); } diff --git a/alvr/server/cpp/platform/win32/amf/common/AMFFactory.h b/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.h similarity index 97% rename from alvr/server/cpp/platform/win32/amf/common/AMFFactory.h rename to alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.h index f8f330a5b0..bbeeb04d18 100644 --- a/alvr/server/cpp/platform/win32/amf/common/AMFFactory.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,10 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -29,6 +30,7 @@ // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. // + #ifndef AMF_AMFFactory_h #define AMF_AMFFactory_h @@ -45,7 +47,7 @@ class AMFFactoryHelper AMFFactoryHelper(); virtual ~AMFFactoryHelper(); - AMF_RESULT Init(); + AMF_RESULT Init(const wchar_t* dllName = NULL); AMF_RESULT Terminate(); AMF_RESULT LoadExternalComponent(amf::AMFContext* pContext, const wchar_t* dll, const char* function, void* reserved, amf::AMFComponent** ppComponent); diff --git a/alvr/server/cpp/platform/win32/amf/common/AMFMath.h b/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h similarity index 97% rename from alvr/server/cpp/platform/win32/amf/common/AMFMath.h rename to alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h index 6ce18ec953..ab38768aab 100644 --- a/alvr/server/cpp/platform/win32/amf/common/AMFMath.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // @@ -94,9 +94,9 @@ namespace amf } inline VectorPOD& operator+=(const VectorPOD& other) { - x +=other.x; - y +=other.y; - z +=other.z; + x +=other.x; + y +=other.y; + z +=other.z; w +=other.w; return *this; } @@ -121,9 +121,9 @@ namespace amf } inline VectorPOD operator*=(const VectorPOD& other) { - x*=other.x; - y*=other.y; - z*=other.z; + x*=other.x; + y*=other.y; + z*=other.z; w*=other.w; return *this; } @@ -188,14 +188,14 @@ namespace amf Result.z = sqrtf(z); Result.w = sqrtf(w); return Result; - } + } inline VectorPOD Length3() const { VectorPOD Result; Result = LengthSq3(); Result = Result.Sqrt(); return Result; - } + } inline VectorPOD Length4() const { VectorPOD Result; @@ -212,11 +212,11 @@ namespace amf fLength = vResult.x; // Prevent divide by zero - if (fLength > 0) + if (fLength > 0) { fLength = 1.0f / fLength; } - + vResult.x = x * fLength; vResult.y = y * fLength; vResult.z = z * fLength; @@ -228,12 +228,12 @@ namespace amf { VectorPOD vResult; vResult.Assign( - (y * vec.z) - (z * vec.y), - (z * vec.x) - (x * vec.z), - (x * vec.y) - (y * vec.x), + (y * vec.z) - (z * vec.y), + (z * vec.x) - (x * vec.z), + (x * vec.y) - (y * vec.x), 0.0f); return vResult; - } + } inline VectorPOD Negate() const { VectorPOD Result; @@ -310,16 +310,16 @@ namespace amf public: Vector() { - x = 0; - y = 0; - z = 0; + x = 0; + y = 0; + z = 0; w = 0; } Vector(float _x, float _y, float _z, float _w ) { x = _x; - y = _y; - z = _z; + y = _y; + z = _z; w = _w; } Vector(const VectorPOD& other) @@ -553,9 +553,9 @@ namespace amf Matrix(float i0, float i1, float i2, float i3, float i4, float i5, float i6, float i7, float i8, float i9, float i10, float i11, float i12, float i13, float i14, float i15) { - k[0] = i0; k[1] = i1; k[2] = i2; k[3] = i3; - k[4] = i4; k[5] = i5; k[6] = i6; k[7] = i7; - k[8] = i8; k[9] = i9; k[10] = i10; k[11] = i11; + k[0] = i0; k[1] = i1; k[2] = i2; k[3] = i3; + k[4] = i4; k[5] = i5; k[6] = i6; k[7] = i7; + k[8] = i8; k[9] = i9; k[10] = i10; k[11] = i11; k[12] = i12; k[13] = i13; k[14] = i14; k[15] = i15; } @@ -585,7 +585,7 @@ namespace amf return *this; } - inline bool operator==(const Matrix& other) const + inline bool operator==(const Matrix& other) const { return memcmp(this, &other, sizeof(*this)) == 0; } @@ -594,7 +594,7 @@ namespace amf return memcmp(this, &other, sizeof(*this)) != 0; } - inline Vector operator*(const Vector& v) + inline Vector operator*(const Vector& v) const { Vector Z(v.z, v.z, v.z, v.z); Vector Y(v.y, v.y, v.y, v.y); @@ -1063,7 +1063,7 @@ namespace amf Set(orientation, position); } Pose(const amf::Quaternion& orientation, const amf::Vector& position, - const amf::Vector& orientationVelocity, const amf::Vector& positionVelocity) + const amf::Vector& orientationVelocity, const amf::Vector& positionVelocity) { Set(orientation, position, orientationVelocity, positionVelocity); } @@ -1113,32 +1113,32 @@ namespace amf inline void SetOrientation(const amf::Quaternion& orienation) { - m_Orientation = orienation; + m_Orientation = orienation; m_ValidityFlags |= PF_ORIENTATION; } inline void SetPosition(const amf::Vector& position) - { - m_Position = position; + { + m_Position = position; m_ValidityFlags |= PF_POSITION; } inline void SetOrientationVelocity(const amf::Vector& orientationVelocity) - { + { m_OrientationVelocity = orientationVelocity; m_ValidityFlags |= PF_ORIENTATION_VELOCITY; } inline void SetPositionVelocity(const amf::Vector& positionVelocity) - { - m_PositionVelocity = positionVelocity; + { + m_PositionVelocity = positionVelocity; m_ValidityFlags |= PF_POSITION_VELOCITY; } inline void SetOrientationAcceleration(const amf::Vector& orientationAcceleration) - { - m_OrientationAcceleration = orientationAcceleration; + { + m_OrientationAcceleration = orientationAcceleration; m_ValidityFlags |= PF_ORIENTATION_ACCELERATION; } inline void SetPositionAcceleration(const amf::Vector& positionAcceleration) - { - m_PositionAcceleration = positionAcceleration; + { + m_PositionAcceleration = positionAcceleration; m_ValidityFlags |= PF_POSITION_ACCELERATION; } @@ -1151,7 +1151,7 @@ namespace amf amf::Vector m_PositionAcceleration; ValidityFlags m_ValidityFlags; }; - + //------------------------------------------------------------------------------------------------- template class AlphaFilter @@ -1163,7 +1163,7 @@ namespace amf { } - T Apply(T value) + T Apply(T value) { m_FilteredValue = m_FilteredValue + m_Alpha * (value - m_FilteredValue); return m_FilteredValue; @@ -1173,7 +1173,7 @@ namespace amf T m_Alpha; T m_FilteredValue; }; - + //------------------------------------------------------------------------------------------------- template class AlphaBetaFilter @@ -1203,13 +1203,13 @@ namespace amf inline T GetVelocity() const { return m_Velocity; } private: - T m_Alpha, + T m_Alpha, m_Beta; T m_Value, m_PrevValue, m_Velocity; }; - + //------------------------------------------------------------------------------------------------- template class ThresholdFilter diff --git a/alvr/server/cpp/platform/win32/amf/common/AMFSTL.cpp b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp similarity index 98% rename from alvr/server/cpp/platform/win32/amf/common/AMFSTL.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp index e54abada54..bf49a3f152 100644 --- a/alvr/server/cpp/platform/win32/amf/common/AMFSTL.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,10 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -65,9 +66,20 @@ extern "C" using namespace amf; +#ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wexit-time-destructors" + #pragma clang diagnostic ignored "-Wglobal-constructors" +#endif + static const amf_string AMF_FORBIDDEN_SYMBOLS = ":? %,;@&=+$<>#\""; static const amf_string AMF_FORBIDDEN_SYMBOLS_QUERY = ":? %,;@+$<>#\""; +#ifdef __clang__ + #pragma clang diagnostic pop +#endif + + //MM: in question: unwise = "{" | "}" | "|" | "\" | "^" | "[" | "]" | "`" //---------------------------------------------------------------------------------------- @@ -562,7 +574,7 @@ amf_string AMF_STD_CALL amf::amf_string_format(const char* format, ...) //---------------------------------------------------------------------------------------- amf_wstring AMF_STD_CALL amf::amf_string_formatVA(const wchar_t* format, va_list args) { -#if defined(__linux) || defined(__APPLE__) +#if (defined(__linux) || defined(__APPLE__)) && (!defined(__ANDROID__)) //replace %s with %ls amf_wstring text(format); amf_wstring textReplaced; @@ -575,6 +587,10 @@ amf_wstring AMF_STD_CALL amf::amf_string_formatVA(const wchar_t* format, va_list textReplaced.push_back(L'l'); textReplaced.push_back(L's'); } + else if(percentFlag && (*i == L'S')) + { + textReplaced.push_back(L's'); + } else { textReplaced.push_back(*i); @@ -1249,7 +1265,7 @@ extern "C" amf_wstring low_s2 = s2; std::transform(low_s1.begin(), low_s1.end(), low_s1.begin(), ::tolower); std::transform(low_s2.begin(), low_s2.end(), low_s2.begin(), ::tolower); - + return wcscmp(low_s1.c_str(), low_s2.c_str()); } } diff --git a/alvr/server/cpp/platform/win32/amf/common/AMFSTL.h b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h similarity index 99% rename from alvr/server/cpp/platform/win32/amf/common/AMFSTL.h rename to alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h index af06c0a41b..85cb20c65d 100644 --- a/alvr/server/cpp/platform/win32/amf/common/AMFSTL.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,10 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/alvr/server/cpp/platform/win32/amf/common/ByteArray.h b/alvr/server/cpp/platform/win32/amf/public/common/ByteArray.h similarity index 99% rename from alvr/server/cpp/platform/win32/amf/common/ByteArray.h rename to alvr/server/cpp/platform/win32/amf/public/common/ByteArray.h index dc2fd0c52a..b841ac774a 100644 --- a/alvr/server/cpp/platform/win32/amf/common/ByteArray.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/ByteArray.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,10 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/alvr/server/cpp/platform/win32/amf/common/CurrentTimeImpl.cpp b/alvr/server/cpp/platform/win32/amf/public/common/CurrentTimeImpl.cpp similarity index 76% rename from alvr/server/cpp/platform/win32/amf/common/CurrentTimeImpl.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/CurrentTimeImpl.cpp index fbe80fad91..2fe7786b95 100644 --- a/alvr/server/cpp/platform/win32/amf/common/CurrentTimeImpl.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/CurrentTimeImpl.cpp @@ -1,5 +1,16 @@ // -// Copyright (c) 2017 Advanced Micro Devices, Inc. All rights reserved. +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// +// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal diff --git a/alvr/server/cpp/platform/win32/amf/common/CurrentTimeImpl.h b/alvr/server/cpp/platform/win32/amf/public/common/CurrentTimeImpl.h similarity index 74% rename from alvr/server/cpp/platform/win32/amf/common/CurrentTimeImpl.h rename to alvr/server/cpp/platform/win32/amf/public/common/CurrentTimeImpl.h index 63cf9bfd7c..50e687480c 100644 --- a/alvr/server/cpp/platform/win32/amf/common/CurrentTimeImpl.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/CurrentTimeImpl.h @@ -1,5 +1,16 @@ // -// Copyright (c) 2017 Advanced Micro Devices, Inc. All rights reserved. +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// +// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -24,8 +35,8 @@ #define AMF_CurrentTimeImpl_h #include "../include/core/CurrentTime.h" -#include "../common/InterfaceImpl.h" -#include "../common/Thread.h" +#include "InterfaceImpl.h" +#include "Thread.h" namespace amf { diff --git a/alvr/server/cpp/platform/win32/amf/common/DataStream.h b/alvr/server/cpp/platform/win32/amf/public/common/DataStream.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/common/DataStream.h rename to alvr/server/cpp/platform/win32/amf/public/common/DataStream.h diff --git a/alvr/server/cpp/platform/win32/amf/common/DataStreamFactory.cpp b/alvr/server/cpp/platform/win32/amf/public/common/DataStreamFactory.cpp similarity index 100% rename from alvr/server/cpp/platform/win32/amf/common/DataStreamFactory.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/DataStreamFactory.cpp diff --git a/alvr/server/cpp/platform/win32/amf/common/DataStreamFile.cpp b/alvr/server/cpp/platform/win32/amf/public/common/DataStreamFile.cpp similarity index 100% rename from alvr/server/cpp/platform/win32/amf/common/DataStreamFile.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/DataStreamFile.cpp diff --git a/alvr/server/cpp/platform/win32/amf/common/DataStreamFile.h b/alvr/server/cpp/platform/win32/amf/public/common/DataStreamFile.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/common/DataStreamFile.h rename to alvr/server/cpp/platform/win32/amf/public/common/DataStreamFile.h diff --git a/alvr/server/cpp/platform/win32/amf/common/DataStreamMemory.cpp b/alvr/server/cpp/platform/win32/amf/public/common/DataStreamMemory.cpp similarity index 100% rename from alvr/server/cpp/platform/win32/amf/common/DataStreamMemory.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/DataStreamMemory.cpp diff --git a/alvr/server/cpp/platform/win32/amf/common/DataStreamMemory.h b/alvr/server/cpp/platform/win32/amf/public/common/DataStreamMemory.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/common/DataStreamMemory.h rename to alvr/server/cpp/platform/win32/amf/public/common/DataStreamMemory.h diff --git a/alvr/server/cpp/platform/win32/amf/common/IOCapsImpl.cpp b/alvr/server/cpp/platform/win32/amf/public/common/IOCapsImpl.cpp similarity index 99% rename from alvr/server/cpp/platform/win32/amf/common/IOCapsImpl.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/IOCapsImpl.cpp index c494ac29cd..520c2d4ffa 100644 --- a/alvr/server/cpp/platform/win32/amf/common/IOCapsImpl.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/IOCapsImpl.cpp @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -73,7 +73,7 @@ namespace amf { } - AMFIOCapsImpl::AMFIOCapsImpl(amf_int32 minWidth, amf_int32 maxWidth, + AMFIOCapsImpl::AMFIOCapsImpl(amf_int32 minWidth, amf_int32 maxWidth, amf_int32 minHeight, amf_int32 maxHeight, amf_int32 vertAlign, amf_bool interlacedSupport, amf_int32 numOfNativeFormats, const AMF_SURFACE_FORMAT* nativeFormats, @@ -174,7 +174,7 @@ namespace amf { return (amf_int32)m_SurfaceFormats.size(); } - + AMF_RESULT AMF_STD_CALL AMFIOCapsImpl::GetFormatAt(amf_int32 index, AMF_SURFACE_FORMAT* format, bool* native) const { if (index >= 0 && index < static_cast(m_SurfaceFormats.size())) @@ -241,10 +241,10 @@ namespace amf { m_VertAlign = vertAlign; } - + void AMFIOCapsImpl::SetInterlacedSupport(amf_bool interlaced) { m_InterlacedSupported = interlaced; } -} +} \ No newline at end of file diff --git a/alvr/server/cpp/platform/win32/amf/common/IOCapsImpl.h b/alvr/server/cpp/platform/win32/amf/public/common/IOCapsImpl.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/common/IOCapsImpl.h rename to alvr/server/cpp/platform/win32/amf/public/common/IOCapsImpl.h diff --git a/alvr/server/cpp/platform/win32/amf/common/InterfaceImpl.h b/alvr/server/cpp/platform/win32/amf/public/common/InterfaceImpl.h similarity index 98% rename from alvr/server/cpp/platform/win32/amf/common/InterfaceImpl.h rename to alvr/server/cpp/platform/win32/amf/public/common/InterfaceImpl.h index bf7487fec6..f3627f9ad8 100644 --- a/alvr/server/cpp/platform/win32/amf/common/InterfaceImpl.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/InterfaceImpl.h @@ -107,6 +107,9 @@ namespace amf protected: amf_long m_refCount; virtual ~AMFInterfaceBase() +#if __GNUC__ == 11 //WORKAROUND for gcc-11 bug + __attribute__ ((noinline)) +#endif {} public: AMFInterfaceBase() : m_refCount(0) diff --git a/alvr/server/cpp/platform/win32/amf/common/ObservableImpl.h b/alvr/server/cpp/platform/win32/amf/public/common/ObservableImpl.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/common/ObservableImpl.h rename to alvr/server/cpp/platform/win32/amf/public/common/ObservableImpl.h diff --git a/alvr/server/cpp/platform/win32/amf/common/PropertyStorageExImpl.cpp b/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.cpp similarity index 96% rename from alvr/server/cpp/platform/win32/amf/common/PropertyStorageExImpl.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.cpp index 60f12720ee..0b24cfefcc 100644 --- a/alvr/server/cpp/platform/win32/amf/common/PropertyStorageExImpl.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.cpp @@ -40,7 +40,16 @@ using namespace amf; #define AMF_FACILITY L"AMFPropertyStorageExImpl" +#ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wexit-time-destructors" + #pragma clang diagnostic ignored "-Wglobal-constructors" +#endif + amf::AMFCriticalSection amf::ms_csAMFPropertyStorageExImplMaps; +#ifdef __clang__ + #pragma clang diagnostic pop +#endif //------------------------------------------------------------------------------------------------- AMF_RESULT amf::CastVariantToAMFProperty(amf::AMFVariantStruct* pDest, const amf::AMFVariantStruct* pSrc, amf::AMF_VARIANT_TYPE eType, @@ -224,11 +233,11 @@ void AMFPropertyInfoImpl::Init(const wchar_t* name_, const wchar_t* desc_, AMF_V { AMFVariantAssignRate(&defaultValue, AMFConstructRate(0, 0)); } - if (CastVariantToAMFProperty(&this->minValue, &minValue, type, contentType, pEnumDescription) != AMF_OK) + if (CastVariantToAMFProperty(&this->minValue, &minValue_, type, contentType, pEnumDescription) != AMF_OK) { AMFVariantAssignRate(&this->minValue, AMFConstructRate(0, 1)); } - if (CastVariantToAMFProperty(&this->maxValue, &maxValue, type, contentType, pEnumDescription) != AMF_OK) + if (CastVariantToAMFProperty(&this->maxValue, &maxValue_, type, contentType, pEnumDescription) != AMF_OK) { AMFVariantAssignRate(&this->maxValue, AMFConstructRate(INT_MAX, INT_MAX)); } @@ -366,6 +375,7 @@ void AMFPropertyInfoImpl::Init(const wchar_t* name_, const wchar_t* desc_, AMF_V AMFVariantAssignFloatPoint2D(&maxValue, AMFConstructFloatPoint2D(FLT_MAX, FLT_MAX)); } } + break; case AMF_VARIANT_FLOAT_POINT3D: { if (CastVariantToAMFProperty(&defaultValue, &defaultValue_, type, contentType, pEnumDescription) != AMF_OK) @@ -381,6 +391,7 @@ void AMFPropertyInfoImpl::Init(const wchar_t* name_, const wchar_t* desc_, AMF_V AMFVariantAssignFloatPoint3D(&maxValue, AMFConstructFloatPoint3D(FLT_MAX, FLT_MAX, FLT_MAX)); } } + break; case AMF_VARIANT_FLOAT_VECTOR4D: { if (CastVariantToAMFProperty(&defaultValue, &defaultValue_, type, contentType, pEnumDescription) != AMF_OK) @@ -396,10 +407,12 @@ void AMFPropertyInfoImpl::Init(const wchar_t* name_, const wchar_t* desc_, AMF_V AMFVariantAssignFloatVector4D(&maxValue, AMFConstructFloatVector4D(FLT_MAX, FLT_MAX, FLT_MAX, FLT_MAX)); } } - + break; default: break; } + + value = defaultValue; } AMFPropertyInfoImpl::AMFPropertyInfoImpl(const AMFPropertyInfoImpl& propertyInfo) : AMFPropertyInfo(), m_name(), m_desc() @@ -424,6 +437,9 @@ AMFPropertyInfoImpl& AMFPropertyInfoImpl::operator=(const AMFPropertyInfoImpl& p AMFVariantCopy(&this->maxValue, &propertyInfo.maxValue); this->pEnumDescription = propertyInfo.pEnumDescription; + this->value = propertyInfo.value; + this->userModified = propertyInfo.userModified; + return *this; } //------------------------------------------------------------------------------------------------- diff --git a/alvr/server/cpp/platform/win32/amf/common/PropertyStorageExImpl.h b/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.h similarity index 67% rename from alvr/server/cpp/platform/win32/amf/common/PropertyStorageExImpl.h rename to alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.h index dc4a54e153..d7be9e9441 100644 --- a/alvr/server/cpp/platform/win32/amf/common/PropertyStorageExImpl.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.h @@ -45,6 +45,7 @@ #include "TraceAdapter.h" #include #include +#include namespace amf { @@ -63,6 +64,11 @@ namespace amf void Init(const wchar_t* name, const wchar_t* desc, AMF_VARIANT_TYPE type, AMF_PROPERTY_CONTENT_TYPE contentType, AMFVariantStruct defaultValue, AMFVariantStruct minValue, AMFVariantStruct maxValue, AMF_PROPERTY_ACCESS_TYPE accessType, const AMFEnumDescriptionEntry* pEnumDescription); + + public: + AMFVariant value; + amf_bool userModified = false; + public: AMFPropertyInfoImpl(const wchar_t* name, const wchar_t* desc, AMF_VARIANT_TYPE type, AMF_PROPERTY_CONTENT_TYPE contentType, AMFVariantStruct defaultValue, AMFVariantStruct minValue, AMFVariantStruct maxValue, bool allowChangeInRuntime, @@ -75,26 +81,23 @@ namespace amf AMFPropertyInfoImpl(const AMFPropertyInfoImpl& propertyInfo); AMFPropertyInfoImpl& operator=(const AMFPropertyInfoImpl& propertyInfo); - ~AMFPropertyInfoImpl(); + virtual ~AMFPropertyInfoImpl(); + + virtual void OnPropertyChanged() { } }; + + typedef amf_map > PropertyInfoMap; + //--------------------------------------------------------------------------------------------- template class AMFPropertyStorageExImpl : public _TBase, public AMFObservableImpl { protected: - struct PropertyData - { - AMFVariant value; - amf_bool userModified = false; - }; - - amf_map m_PropertyValues; - amf_map m_PropertiesInfo; - + PropertyInfoMap m_PropertiesInfo; public: - AMFPropertyStorageExImpl() : m_PropertyValues() + AMFPropertyStorageExImpl() { } @@ -102,6 +105,7 @@ namespace amf { } + // interface access AMF_BEGIN_INTERFACE_MAP AMF_INTERFACE_ENTRY(AMFPropertyStorage) @@ -116,7 +120,7 @@ namespace amf //------------------------------------------------------------------------------------------------- virtual AMF_RESULT AMF_STD_CALL Clear() { - m_PropertyValues.clear(); + ResetDefaultValues(); return AMF_OK; } //------------------------------------------------------------------------------------------------- @@ -124,22 +128,23 @@ namespace amf { AMF_RETURN_IF_INVALID_POINTER(pDest); - for (typename amf_map::const_iterator it = m_PropertyValues.begin(); it != m_PropertyValues.end(); it++) + if (pDest != this) { - if(!overwrite) + for (PropertyInfoMap::const_iterator it = m_PropertiesInfo.begin(); it != m_PropertiesInfo.end(); it++) { - if(pDest->HasProperty(it->first.c_str())) + if (!overwrite && pDest->HasProperty(it->first.c_str())) { continue; } - } - AMF_RESULT err = pDest->SetProperty(it->first.c_str(), it->second.value); - if (err != AMF_INVALID_ARG) // not validated - skip it - { - AMF_RETURN_IF_FAILED(err, L"AddTo() - failed to copy property=%s", it->first.c_str()); + AMF_RESULT err = pDest->SetProperty(it->first.c_str(), it->second->value); + if (err != AMF_INVALID_ARG) // not validated - skip it + { + AMF_RETURN_IF_FAILED(err, L"AddTo() - failed to copy property=%s", it->first.c_str()); + } } } + return AMF_OK; } //------------------------------------------------------------------------------------------------- @@ -167,7 +172,7 @@ namespace amf return err; } - if (!pParamInfo->AllowedWrite()) + if (pParamInfo && !pParamInfo->AllowedWrite()) { return AMF_ACCESS_DENIED; } @@ -181,12 +186,12 @@ namespace amf const AMFPropertyInfo* pParamInfo = NULL; AMF_RESULT err = GetPropertyInfo(name, &pParamInfo); - if(err != AMF_OK) + if (err != AMF_OK) { return err; } - if(!pParamInfo->AllowedRead()) + if (pParamInfo && !pParamInfo->AllowedRead()) { return AMF_ACCESS_DENIED; } @@ -197,16 +202,12 @@ namespace amf { const AMFPropertyInfo* pParamInfo = NULL; AMF_RESULT err = GetPropertyInfo(name, &pParamInfo); - if(err != AMF_OK) - { - return false; - } - return true; + return (err != AMF_OK) ? false : true; } //------------------------------------------------------------------------------------------------- virtual amf_size AMF_STD_CALL GetPropertyCount() const { - return m_PropertyValues.size(); + return m_PropertiesInfo.size(); } //------------------------------------------------------------------------------------------------- virtual AMF_RESULT AMF_STD_CALL GetPropertyAt(amf_size index, wchar_t* name, amf_size nameSize, AMFVariantStruct* pValue) const @@ -214,24 +215,18 @@ namespace amf AMF_RETURN_IF_INVALID_POINTER(name); AMF_RETURN_IF_INVALID_POINTER(pValue); AMF_RETURN_IF_FALSE(nameSize != 0, AMF_INVALID_ARG); + AMF_RETURN_IF_FALSE(index < m_PropertiesInfo.size(), AMF_INVALID_ARG); - typename amf_map::const_iterator found = m_PropertyValues.begin(); - if (found == m_PropertyValues.end()) - { - return AMF_INVALID_ARG; - } - for( amf_size i = 0; i < index; i++) + PropertyInfoMap::const_iterator found = m_PropertiesInfo.begin(); + for (amf_size i = 0; i < index; i++) { found++; - if(found == m_PropertyValues.end()) - { - return AMF_INVALID_ARG; - } } + size_t copySize = AMF_MIN(nameSize-1, found->first.length()); memcpy(name, found->first.c_str(), copySize * sizeof(wchar_t)); name[copySize] = 0; - AMFVariantCopy(pValue, &found->second.value); + AMFVariantCopy(pValue, &found->second->value); return AMF_OK; } //------------------------------------------------------------------------------------------------- @@ -245,13 +240,13 @@ namespace amf AMF_RETURN_IF_INVALID_POINTER(ppParamInfo); AMF_RETURN_IF_FALSE(szInd < m_PropertiesInfo.size(), AMF_INVALID_ARG); - typename amf_map::const_iterator it = m_PropertiesInfo.begin(); - for ( ; szInd > 0; --szInd) + PropertyInfoMap::const_iterator it = m_PropertiesInfo.begin(); + for (; szInd > 0; --szInd) { it++; } - *ppParamInfo = it->second; + *ppParamInfo = it->second.get(); return AMF_OK; } //------------------------------------------------------------------------------------------------- @@ -260,10 +255,10 @@ namespace amf AMF_RETURN_IF_INVALID_POINTER(name); AMF_RETURN_IF_INVALID_POINTER(ppParamInfo); - amf_map::const_iterator it = m_PropertiesInfo.find(name); + PropertyInfoMap::const_iterator it = m_PropertiesInfo.find(name); if (it != m_PropertiesInfo.end()) { - *ppParamInfo = it->second; + *ppParamInfo = it->second.get(); return AMF_OK; } @@ -372,19 +367,6 @@ namespace amf return err; } //------------------------------------------------------------------------------------------------- - virtual AMF_RESULT AMF_STD_CALL RegisterProperties(class AMFPropertyInfoImpl* pPropertiesInfo, amf_size szPropertiesCount) - { - AMF_RETURN_IF_INVALID_POINTER(pPropertiesInfo); - - m_PropertiesInfo.clear(); - for (amf_size i = 0; i < szPropertiesCount; ++i) - { - AMFPropertyInfoImpl* pPropInfo = pPropertiesInfo + i; - m_PropertiesInfo[pPropInfo->name] = pPropInfo; - } - return AMF_OK; - } - //------------------------------------------------------------------------------------------------- virtual void AMF_STD_CALL OnPropertyChanged(const wchar_t* /*name*/){ } //------------------------------------------------------------------------------------------------- virtual void AMF_STD_CALL AddObserver(AMFPropertyStorageObserver* pObserver) { AMFObservableImpl::AddObserver(pObserver); } @@ -397,13 +379,15 @@ namespace amf { AMF_RETURN_IF_INVALID_POINTER(name); - amf_map::iterator it = m_PropertiesInfo.find(name); - if (it == m_PropertiesInfo.end()) + PropertyInfoMap::iterator found = m_PropertiesInfo.find(name); + AMF_RETURN_IF_FALSE(found != m_PropertiesInfo.end(), AMF_NOT_FOUND); + + if (found->second->accessType == accessType) { - return AMF_NOT_FOUND; + return AMF_OK; } - it->second->accessType = accessType; + found->second->accessType = accessType; OnPropertyChanged(name); NotifyObservers(&AMFPropertyStorageObserver::OnPropertyChanged, name); return AMF_OK; @@ -415,25 +399,28 @@ namespace amf AMFVariant validatedValue; AMF_RESULT validateResult = ValidateProperty(name, value, &validatedValue); - if(AMF_OK == validateResult) + if (validateResult != AMF_OK) { - typename amf_map::iterator found = m_PropertyValues.find(name); - if(found != m_PropertyValues.end()) - { - if(found->second.value == validatedValue) - { - return AMF_OK; - } - found->second.value = validatedValue; - } - else - { - m_PropertyValues[name].value = validatedValue; - } - OnPropertyChanged(name); - NotifyObservers(&AMFPropertyStorageObserver::OnPropertyChanged, name); + return validateResult; + } + + PropertyInfoMap::iterator found = m_PropertiesInfo.find(name); + if (found == m_PropertiesInfo.end()) + { + return AMF_NOT_FOUND; } - return validateResult; + + if (found->second->value == validatedValue) + { + return AMF_OK; + } + + found->second->value = validatedValue; + found->second->OnPropertyChanged(); + OnPropertyChanged(name); + NotifyObservers(&AMFPropertyStorageObserver::OnPropertyChanged, name); + + return AMF_OK; } //------------------------------------------------------------------------------------------------- AMF_RESULT GetPrivateProperty(const wchar_t* name, AMFVariantStruct* pValue) const @@ -441,13 +428,15 @@ namespace amf AMF_RETURN_IF_INVALID_POINTER(name); AMF_RETURN_IF_INVALID_POINTER(pValue); - typename amf_map::const_iterator found = m_PropertyValues.find(name); - if (found != m_PropertyValues.end()) + PropertyInfoMap::const_iterator found = m_PropertiesInfo.find(name); + if (found != m_PropertiesInfo.end()) { - AMFVariantCopy(pValue, &found->second.value); + AMFVariantCopy(pValue, &found->second->value); return AMF_OK; } + // NOTE: needed for internal components that don't automatically + // expose their properties in the main map... const AMFPropertyInfo* pParamInfo; if (GetPropertyInfo(name, &pParamInfo) == AMF_OK) { @@ -477,25 +466,27 @@ namespace amf return err; } //------------------------------------------------------------------------------------------------- - inline AMF_RESULT AMF_STD_CALL GetPrivateProperty(const wchar_t* name, AMFInterface** ppValue) const + bool HasPrivateProperty(const wchar_t* name) const { - AMFVariant var; - AMF_RESULT err = GetPrivateProperty(name, static_cast(&var)); - if(err == AMF_OK) - { - *ppValue = static_cast(var); - } - if(*ppValue) - { - (*ppValue)->Acquire(); - } - return err; + return m_PropertiesInfo.find(name) != m_PropertiesInfo.end(); } - //------------------------------------------------------------------------------------------------- - bool HasPrivateProperty(const wchar_t* name) const + bool IsRuntimeChange(const wchar_t* name) const { - return m_PropertyValues.find(name) != m_PropertyValues.end(); + PropertyInfoMap::const_iterator it = m_PropertiesInfo.find(name); + return (it != m_PropertiesInfo.end()) ? it->second->AllowedChangeInRuntime() : false; + } + //------------------------------------------------------------------------------------------------- + void ResetDefaultValues() + { + // copy defaults to property storage + for (PropertyInfoMap::iterator it = m_PropertiesInfo.begin(); it != m_PropertiesInfo.end(); ++it) + { + AMFPropertyInfoImpl* info = it->second.get(); + + info->value = info->defaultValue; + info->userModified = false; + } } //------------------------------------------------------------------------------------------------- @@ -507,96 +498,103 @@ namespace amf //--------------------------------------------------------------------------------------------- - #define AMFPrimitivePropertyInfoMapBegin \ +#define AMFPrimitivePropertyInfoMapBegin \ { \ - amf::AMFLock __lock(&amf::ms_csAMFPropertyStorageExImplMaps);\ - static amf::AMFPropertyInfoImpl s_PropertiesInfo[] = \ + amf::AMFPropertyInfoImpl* s_PropertiesInfo[] = \ + { + +#define AMFPrimitivePropertyInfoMapEnd \ + }; \ + for (amf_size i = 0; i < sizeof(s_PropertiesInfo) / sizeof(s_PropertiesInfo[0]); ++i) \ { \ + amf::AMFPropertyInfoImpl* pPropInfo = s_PropertiesInfo[i]; \ + m_PropertiesInfo[pPropInfo->name].reset(pPropInfo); \ + } \ + } - #define AMFPrimitivePropertyInfoMapEnd \ - }; \ - RegisterProperties(s_PropertiesInfo, sizeof(s_PropertiesInfo) / sizeof(amf::AMFPropertyInfoImpl)); \ - } \ + #define AMFPropertyInfoBool(_name, _desc, _defaultValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_BOOL, 0, amf::AMFVariant(_defaultValue), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoBool(_name, _desc, _defaultValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_BOOL, 0, amf::AMFVariant(_defaultValue), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoEnum(_name, _desc, _defaultValue, pEnumDescription, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_INT64, 0, amf::AMFVariant(amf_int64(_defaultValue)), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, pEnumDescription) - #define AMFPropertyInfoEnum(_name, _desc, _defaultValue, pEnumDescription, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_INT64, 0, amf::AMFVariant(amf_int64(_defaultValue)), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, pEnumDescription) + #define AMFPropertyInfoInt64(_name, _desc, _defaultValue, _minValue, _maxValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_INT64, 0, amf::AMFVariant(amf_int64(_defaultValue)), \ + amf::AMFVariant(amf_int64(_minValue)), amf::AMFVariant(amf_int64(_maxValue)), _AccessType, 0) - #define AMFPropertyInfoInt64(_name, _desc, _defaultValue, _minValue, _maxValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_INT64, 0, amf::AMFVariant(amf_int64(_defaultValue)), \ - amf::AMFVariant(amf_int64(_minValue)), amf::AMFVariant(amf_int64(_maxValue)), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoDouble(_name, _desc, _defaultValue, _minValue, _maxValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_DOUBLE, 0, amf::AMFVariant(amf_double(_defaultValue)), \ + amf::AMFVariant(amf_double(_minValue)), amf::AMFVariant(amf_double(_maxValue)), _AccessType, 0) - #define AMFPropertyInfoDouble(_name, _desc, _defaultValue, _minValue, _maxValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_DOUBLE, 0, amf::AMFVariant(amf_double(_defaultValue)), \ - amf::AMFVariant(amf_double(_minValue)), amf::AMFVariant(amf_double(_maxValue)), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoFloat(_name, _desc, _defaultValue, _minValue, _maxValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_FLOAT, 0, amf::AMFVariant(amf_float(_defaultValue)), \ + amf::AMFVariant(amf_float(_minValue)), amf::AMFVariant(amf_float(_maxValue)), _AccessType, 0) - #define AMFPropertyInfoFloat(_name, _desc, _defaultValue, _minValue, _maxValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_FLOAT, 0, amf::AMFVariant(amf_float(_defaultValue)), \ - amf::AMFVariant(amf_float(_minValue)), amf::AMFVariant(amf_float(_maxValue)), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoRect(_name, _desc, defaultLeft, defaultTop, defaultRight, defaultBottom, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_RECT, 0, amf::AMFVariant(AMFConstructRect(defaultLeft, defaultTop, defaultRight, defaultBottom)), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoRect(_name, _desc, defaultLeft, defaultTop, defaultRight, defaultBottom, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_RECT, 0, amf::AMFVariant(AMFConstructRect(defaultLeft, defaultTop, defaultRight, defaultBottom)), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoPoint(_name, _desc, defaultX, defaultY, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_POINT, 0, amf::AMFVariant(AMFConstructPoint(defaultX, defaultY)), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoPoint(_name, _desc, defaultX, defaultY, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_POINT, 0, amf::AMFVariant(AMFConstructPoint(defaultX, defaultY)), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoSize(_name, _desc, _defaultValue, _minValue, _maxValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_SIZE, 0, amf::AMFVariant(AMFSize(_defaultValue)), \ + amf::AMFVariant(AMFSize(_minValue)), amf::AMFVariant(AMFSize(_maxValue)), _AccessType, 0) - #define AMFPropertyInfoSize(_name, _desc, _defaultValue, _minValue, _maxValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_SIZE, 0, amf::AMFVariant(AMFSize(_defaultValue)), \ - amf::AMFVariant(AMFSize(_minValue)), amf::AMFVariant(AMFSize(_maxValue)), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoFloatSize(_name, _desc, _defaultValue, _minValue, _maxValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_FLOAT_SIZE, 0, amf::AMFVariant(AMFFloatSize(_defaultValue)), \ + amf::AMFVariant(AMFFloatSize(_minValue)), amf::AMFVariant(AMFFloatSize(_maxValue)), _AccessType, 0) - #define AMFPropertyInfoFloatSize(_name, _desc, _defaultValue, _minValue, _maxValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_FLOAT_SIZE, 0, amf::AMFVariant(AMFFloatSize(_defaultValue)), \ - amf::AMFVariant(AMFFloatSize(_minValue)), amf::AMFVariant(AMFFloatSize(_maxValue)), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoRate(_name, _desc, defaultNum, defaultDen, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_RATE, 0, amf::AMFVariant(AMFConstructRate(defaultNum, defaultDen)), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoRate(_name, _desc, defaultNum, defaultDen, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_RATE, 0, amf::AMFVariant(AMFConstructRate(defaultNum, defaultDen)), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoRateEx(_name, _desc, _defaultValue, _minValue, _maxValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_RATE, 0, amf::AMFVariant(_defaultValue), \ + amf::AMFVariant(_minValue), amf::AMFVariant(_maxValue), _AccessType, 0) - #define AMFPropertyInfoRateEx(_name, _desc, _defaultValue, _minValue, _maxValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_RATE, 0, amf::AMFVariant(_defaultValue), \ - amf::AMFVariant(_minValue), amf::AMFVariant(_maxValue), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoRatio(_name, _desc, defaultNum, defaultDen, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_RATIO, 0, amf::AMFVariant(AMFConstructRatio(defaultNum, defaultDen)), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoRatio(_name, _desc, defaultNum, defaultDen, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_RATIO, 0, amf::AMFVariant(AMFConstructRatio(defaultNum, defaultDen)), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoColor(_name, _desc, defaultR, defaultG, defaultB, defaultA, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_COLOR, 0, amf::AMFVariant(AMFConstructColor(defaultR, defaultG, defaultB, defaultA)), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoColor(_name, _desc, defaultR, defaultG, defaultB, defaultA, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_COLOR, 0, amf::AMFVariant(AMFConstructColor(defaultR, defaultG, defaultB, defaultA)), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoString(_name, _desc, _defaultValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_STRING, 0, amf::AMFVariant(_defaultValue), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoString(_name, _desc, _defaultValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_STRING, 0, amf::AMFVariant(_defaultValue), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoWString(_name, _desc, _defaultValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_WSTRING, 0, amf::AMFVariant(_defaultValue), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoWString(_name, _desc, _defaultValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_WSTRING, 0, amf::AMFVariant(_defaultValue), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoInterface(_name, _desc, _defaultValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_INTERFACE, 0, amf::AMFVariant(amf::AMFInterfacePtr(_defaultValue)), \ + amf::AMFVariant(amf::AMFInterfacePtr()), amf::AMFVariant(amf::AMFInterfacePtr()), _AccessType, 0) - #define AMFPropertyInfoInterface(_name, _desc, _defaultValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_INTERFACE, 0, amf::AMFVariant(amf::AMFInterfacePtr(_defaultValue)), \ - amf::AMFVariant(amf::AMFInterfacePtr()), amf::AMFVariant(amf::AMFInterfacePtr()), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoXML(_name, _desc, _defaultValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_STRING, AMF_PROPERTY_CONTENT_XML, amf::AMFVariant(_defaultValue), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoXML(_name, _desc, _defaultValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_STRING, AMF_PROPERTY_CONTENT_XML, amf::AMFVariant(_defaultValue), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoPath(_name, _desc, _defaultValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_WSTRING, AMF_PROPERTY_CONTENT_FILE_OPEN_PATH, amf::AMFVariant(_defaultValue), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoPath(_name, _desc, _defaultValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_WSTRING, AMF_PROPERTY_CONTENT_FILE_OPEN_PATH, amf::AMFVariant(_defaultValue), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoSavePath(_name, _desc, _defaultValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_WSTRING, AMF_PROPERTY_CONTENT_FILE_SAVE_PATH, amf::AMFVariant(_defaultValue), \ + amf::AMFVariant(), amf::AMFVariant(), _AccessType, 0) - #define AMFPropertyInfoSavePath(_name, _desc, _defaultValue, _AllowChangeInRuntime) \ - amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_WSTRING, AMF_PROPERTY_CONTENT_FILE_SAVE_PATH, amf::AMFVariant(_defaultValue), \ - amf::AMFVariant(), amf::AMFVariant(), _AllowChangeInRuntime, 0) + #define AMFPropertyInfoFloatVector4D(_name, _desc, _defaultValue, _minValue, _maxValue, _AccessType) \ + new amf::AMFPropertyInfoImpl(_name, _desc, amf::AMF_VARIANT_FLOAT_VECTOR4D, 0, amf::AMFVariant(_defaultValue), \ + amf::AMFVariant(_minValue), amf::AMFVariant(_maxValue), _AccessType, 0) } // namespace amf diff --git a/alvr/server/cpp/platform/win32/amf/common/PropertyStorageImpl.h b/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageImpl.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/common/PropertyStorageImpl.h rename to alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageImpl.h diff --git a/alvr/server/cpp/platform/win32/amf/common/Thread.cpp b/alvr/server/cpp/platform/win32/amf/public/common/Thread.cpp similarity index 91% rename from alvr/server/cpp/platform/win32/amf/common/Thread.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/Thread.cpp index 384e1323ae..429b4dc914 100644 --- a/alvr/server/cpp/platform/win32/amf/common/Thread.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/Thread.cpp @@ -198,9 +198,6 @@ namespace amf return amf_release_semaphore(m_hSemaphore, 1, &iOldCount); } //---------------------------------------------------------------------------- - - //---------------------------------------------------------------------------- - //---------------------------------------------------------------------------- AMFLock::AMFLock(AMFSyncBase* pBase, amf_ulong ulTimeout) : m_pBase(pBase), m_bLocked() @@ -347,8 +344,9 @@ namespace amf AMFThread* m_pOwner; uintptr_t m_pThread; AMFEvent m_StopEvent; + AMFCriticalSection m_Lock; public: - // this icalled by owner + // this is called by owner AMFThreadObj(AMFThread* owner); virtual ~AMFThreadObj(); @@ -377,9 +375,10 @@ namespace amf } }; //---------------------------------------------------------------------------- - AMFThreadObj::AMFThreadObj(AMFThread* owner) - : m_pThread(uintptr_t(-1)), - m_StopEvent(true, true), m_pOwner(owner) + AMFThreadObj::AMFThreadObj(AMFThread* owner) : + m_pOwner(owner), + m_pThread(uintptr_t(-1)), + m_StopEvent(true, true) {} //---------------------------------------------------------------------------- AMFThreadObj::~AMFThreadObj() @@ -411,7 +410,7 @@ namespace amf { return true; } - + AMFLock lock(&m_Lock); m_pThread = _beginthread(AMFThreadProc, 0, (void* )this); return m_pThread != (uintptr_t)-1L; @@ -431,11 +430,15 @@ namespace amf //---------------------------------------------------------------------------- bool AMFThreadObj::WaitForStop() { + AMFLock lock(&m_Lock); if(m_pThread == (uintptr_t)-1L) { return true; } - return m_StopEvent.Lock(); + bool stopped = m_StopEvent.Lock(); + + m_pThread = (uintptr_t)-1L; + return stopped; } //---------------------------------------------------------------------------- bool AMFThreadObj::StopRequested() @@ -447,7 +450,7 @@ namespace amf return m_pThread != (uintptr_t)-1L; } //---------------------------------------------------------------------------- - void amf::ExitThread() + void ExitThread() { _endthread(); } @@ -475,7 +478,9 @@ namespace amf AMFThread* m_pOwner; pthread_t m_hThread; bool m_bStopRequested; - pthread_mutex_t m_hMutex; + bool m_bRunning; + bool m_bInternalRunning; //used to detect thread auto-exit case and make join in Start + AMFCriticalSection m_Lock; AMFThreadObj(const AMFThreadObj&); AMFThreadObj& operator=(const AMFThreadObj&); @@ -485,16 +490,16 @@ namespace amf AMFThreadObj::AMFThreadObj(AMFThread* owner) : m_pOwner(owner), - m_hThread(0), m_bStopRequested(false), - m_hMutex() + m_bRunning(false), + m_bInternalRunning(false) { - pthread_mutex_init(&m_hMutex, 0); } AMFThreadObj::~AMFThreadObj() { - pthread_mutex_destroy(&m_hMutex); + RequestStop(); + WaitForStop(); } void* AMF_CDECL_CALL AMFThreadObj::AMFThreadProc(void* pThis) @@ -504,72 +509,76 @@ namespace amf { return 0; } + pT->Run(); pT->Terminate(); - pT->m_hThread = 0; pT->m_bStopRequested = false; + pT->m_bInternalRunning = false; return 0; } bool AMFThreadObj::Start() { bool result = true; + if(m_bRunning == true && m_bInternalRunning == false) + { + pthread_join(m_hThread, 0); + m_bRunning = false; + m_bStopRequested = false; + } + if (IsRunning() == false) { - result = (0 == pthread_create(&m_hThread, 0, AMFThreadProc, (void*)this)); + WaitForStop(); + + AMFLock lock(&m_Lock); + if (pthread_create(&m_hThread, 0, AMFThreadProc, (void*)this) == 0) + { + m_bRunning = true; + m_bInternalRunning = true; + } + else + { + result = false; + } } return result; } bool AMFThreadObj::RequestStop() { - #if defined(__APPLE__) - if(m_hThread == nullptr) - #else - if(m_hThread == (uintptr_t)0L) - #endif + AMFLock lock(&m_Lock); + if (IsRunning() == false) { return true; } - pthread_mutex_lock(&m_hMutex); m_bStopRequested = true; - pthread_mutex_unlock(&m_hMutex); return true; } bool AMFThreadObj::WaitForStop() { - #if defined(__APPLE__) - if(m_hThread != nullptr) - #else - if(m_hThread != (uintptr_t)0L) - #endif + AMFLock lock(&m_Lock); + + if (IsRunning() == true) { pthread_join(m_hThread, 0); - m_hThread = 0; + m_bRunning = false; } m_bStopRequested = false; - return true; } bool AMFThreadObj::StopRequested() { - pthread_mutex_lock(&m_hMutex); - bool bRet = m_bStopRequested; - pthread_mutex_unlock(&m_hMutex); - return bRet; + return m_bStopRequested; } bool AMFThreadObj::IsRunning() { - #if defined(__APPLE__) - return m_hThread != nullptr; - #else - return m_hThread != (uintptr_t)0L; - #endif + return m_bRunning && m_bInternalRunning; } void ExitThread() @@ -608,7 +617,7 @@ namespace amf { return m_thread->StopRequested(); } - bool AMFThread::IsRunning() + bool AMFThread::IsRunning() const { return m_thread->IsRunning(); } diff --git a/alvr/server/cpp/platform/win32/amf/common/Thread.h b/alvr/server/cpp/platform/win32/amf/public/common/Thread.h similarity index 99% rename from alvr/server/cpp/platform/win32/amf/common/Thread.h rename to alvr/server/cpp/platform/win32/amf/public/common/Thread.h index 46e77af4e4..324a37041b 100644 --- a/alvr/server/cpp/platform/win32/amf/common/Thread.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/Thread.h @@ -90,6 +90,8 @@ extern "C" void AMF_CDECL_CALL amf_restore_timer_precision(); amf_handle AMF_CDECL_CALL amf_load_library(const wchar_t* filename); + amf_handle AMF_CDECL_CALL amf_load_library1(const wchar_t* filename, bool bGlobal); + void* AMF_CDECL_CALL amf_get_proc_address(amf_handle module, const char* procName); int AMF_CDECL_CALL amf_free_library(amf_handle module); @@ -312,7 +314,7 @@ namespace amf virtual bool RequestStop(); virtual bool WaitForStop(); virtual bool StopRequested(); - virtual bool IsRunning(); + virtual bool IsRunning() const; // this is executed in the thread and overloaded by implementor virtual void Run() = 0; @@ -543,7 +545,7 @@ namespace amf { bStop = true; } -#if defined(__linux) +#if defined(__linux) || defined(__APPLE__) ///< HACK ///< This amf_sleep(0) is required to emulate windows mutex behavior. ///< In Windows release mutext causes some other waiting thread is receiving ownership of mutex. diff --git a/alvr/server/cpp/platform/win32/amf/common/TraceAdapter.cpp b/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.cpp similarity index 85% rename from alvr/server/cpp/platform/win32/amf/common/TraceAdapter.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.cpp index f94bdbbccf..03cd015018 100644 --- a/alvr/server/cpp/platform/win32/amf/common/TraceAdapter.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.cpp @@ -39,89 +39,72 @@ using namespace amf; - - -#ifdef AMF_CORE_STATIC +#if defined(AMF_CORE_STATIC) || defined(AMF_RUNTIME) || defined(AMF_LITE) extern "C" { - // forward definition of function from FactoryImpl.cpp extern AMF_CORE_LINK AMF_RESULT AMF_CDECL_CALL AMFInit(amf_uint64 version, amf::AMFFactory **ppFactory); } +#else + #include "AMFFactory.h" #endif - //------------------------------------------------------------------------------------------------ static AMFTrace *s_pTrace = NULL; - -static AMF_RESULT SetATracer(AMFTrace *localTracer) -{ - s_pTrace = localTracer; - return AMF_OK; -} - +//------------------------------------------------------------------------------------------------ static AMFTrace *GetTrace() { if (s_pTrace == NULL) { -#ifndef AMF_CORE_STATIC - amf_handle module = amf_load_library(AMF_DLL_NAME); - if(module != NULL) - { - AMFInit_Fn initFun = (AMFInit_Fn)amf_get_proc_address(module, AMF_INIT_FUNCTION_NAME); - AMFFactory *pFactory = NULL; - initFun(AMF_FULL_VERSION, &pFactory); - pFactory->GetTrace(&s_pTrace); - amf_free_library(module); - } -#else +#if defined(AMF_CORE_STATIC) || defined(AMF_RUNTIME) || defined(AMF_LITE) AMFFactory *pFactory = NULL; AMFInit(AMF_FULL_VERSION, &pFactory); pFactory->GetTrace(&s_pTrace); +#else + s_pTrace = g_AMFFactory.GetTrace(); + if (s_pTrace == nullptr) + { + g_AMFFactory.Init(); // last resort, should not happen + s_pTrace = g_AMFFactory.GetTrace(); + g_AMFFactory.Terminate(); + } #endif } return s_pTrace; } - //------------------------------------------------------------------------------------------------ static AMFDebug *s_pDebug = NULL; - -static AMF_RESULT SetADebugger(AMFDebug *localTracer) -{ - s_pDebug = localTracer; - return AMF_OK; -} - +//------------------------------------------------------------------------------------------------ static AMFDebug *GetDebug() { if (s_pDebug == NULL) { -#ifndef AMF_CORE_STATIC - amf_handle module = amf_load_library(AMF_DLL_NAME); - if(module != NULL) - { - AMFInit_Fn initFun = (AMFInit_Fn)amf_get_proc_address(module, AMF_INIT_FUNCTION_NAME); - AMFFactory *pFactory = NULL; - initFun(AMF_FULL_VERSION, &pFactory); - pFactory->GetDebug(&s_pDebug); - amf_free_library(module); - } -#else +#if defined(AMF_CORE_STATIC) || defined(AMF_RUNTIME) || defined(AMF_LITE) AMFFactory *pFactory = NULL; AMFInit(AMF_FULL_VERSION, &pFactory); pFactory->GetDebug(&s_pDebug); +#else + s_pDebug = g_AMFFactory.GetDebug(); + if (s_pDebug == nullptr) + { + g_AMFFactory.Init(); // last resort, should not happen + s_pDebug = g_AMFFactory.GetDebug(); + g_AMFFactory.Terminate(); + } #endif } return s_pDebug; } //------------------------------------------------------------------------------------------------ -AMF_RESULT AMF_CDECL_CALL amf::AMFSetCustomDebugger(AMFDebug *ADebugger) +AMF_RESULT AMF_CDECL_CALL amf::AMFSetCustomDebugger(AMFDebug *pDebugger) { - return SetADebugger(ADebugger); + s_pDebug = pDebugger; + return AMF_OK; } //------------------------------------------------------------------------------------------------ -AMF_RESULT AMF_CDECL_CALL amf::AMFSetCustomTracer(AMFTrace *ATracer) +AMF_RESULT AMF_CDECL_CALL amf::AMFSetCustomTracer(AMFTrace *pTracer) { - return SetATracer(ATracer); + s_pTrace = pTracer; + return AMF_OK; } //------------------------------------------------------------------------------------------------ AMF_RESULT AMF_CDECL_CALL amf::AMFTraceEnableAsync(bool enable) @@ -212,7 +195,11 @@ void AMF_CDECL_CALL amf::AMFTraceUnregisterWriter(const wchar_t* writerID) GetTrace()->UnregisterWriter(writerID); } -static amf_map s_threadDepth; +#ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wexit-time-destructors" + #pragma clang diagnostic ignored "-Wglobal-constructors" +#endif void AMF_CDECL_CALL amf::AMFTraceEnterScope() { @@ -254,7 +241,7 @@ AMF_SURFACE_FORMAT AMF_STD_CALL amf::AMFSurfaceGetFormatByName(const wchar_t* pw { return GetTrace()->SurfaceGetFormatByName(pwName); } -const wchar_t* const AMF_STD_CALL amf::AMFGetMemoryTypeName(const AMF_MEMORY_TYPE memoryType) +const wchar_t* AMF_STD_CALL amf::AMFGetMemoryTypeName(const AMF_MEMORY_TYPE memoryType) { return GetTrace()->GetMemoryTypeName(memoryType); } diff --git a/alvr/server/cpp/platform/win32/amf/common/TraceAdapter.h b/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h similarity index 99% rename from alvr/server/cpp/platform/win32/amf/common/TraceAdapter.h rename to alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h index 70ce28af4c..a39ecc45be 100644 --- a/alvr/server/cpp/platform/win32/amf/common/TraceAdapter.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h @@ -40,6 +40,7 @@ #include "../include/core/Debug.h" #include "../include/core/Trace.h" #include "../include/core/Result.h" +#include "../common/AMFFactory.h" #include "AMFSTL.h" #ifndef WIN32 @@ -480,7 +481,6 @@ inline bool AMFSucceeded(AMF_RESULT result) { return result == AMF_OK || result */ amf_wstring AMF_CDECL_CALL AMFFormatResult(AMF_RESULT result); -#if defined(_WIN32) /** ******************************************************************************* * AMFHResultSucceded @@ -499,7 +499,6 @@ inline bool AMFHResultSucceded(HRESULT result) { return SUCCEEDED(result); } ******************************************************************************* */ inline amf_wstring AMFFormatHResult(HRESULT result) { return amf::amf_string_format(L"COM failed, HR = %0X:", result); } -#endif //defined(_WIN32) /** ******************************************************************************* @@ -583,9 +582,8 @@ inline amf_wstring AMFFormatHResult(HRESULT result) { return amf::amf_string_fo * Other macroses below are also obsolete ******************************************************************************* */ -#if defined(_WIN32) #define ASSERT_RETURN_IF_HR_FAILED(exp, reterr, /*optional format, args,*/...) AMF_BASE_RETURN(exp, HRESULT, amf::AMFHResultSucceded, amf::AMFFormatHResult, AMF_TRACE_ERROR, AMF_FACILITY, reterr, L###exp, ##__VA_ARGS__) -#endif + /** ******************************************************************************* @@ -783,7 +781,7 @@ extern "C" const wchar_t* AMF_STD_CALL AMFGetResultText(AMF_RESULT res); const wchar_t* AMF_STD_CALL AMFSurfaceGetFormatName(const AMF_SURFACE_FORMAT eSurfaceFormat); AMF_SURFACE_FORMAT AMF_STD_CALL AMFSurfaceGetFormatByName(const wchar_t* pwName); - const wchar_t* const AMF_STD_CALL AMFGetMemoryTypeName(const AMF_MEMORY_TYPE memoryType); + const wchar_t* AMF_STD_CALL AMFGetMemoryTypeName(const AMF_MEMORY_TYPE memoryType); AMF_MEMORY_TYPE AMF_STD_CALL AMFGetMemoryTypeByName(const wchar_t* name); } //extern "C" } // namespace amf diff --git a/alvr/server/cpp/platform/win32/amf/common/Windows/ThreadWindows.cpp b/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp similarity index 97% rename from alvr/server/cpp/platform/win32/amf/common/Windows/ThreadWindows.cpp rename to alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp index 280e383772..612261459a 100644 --- a/alvr/server/cpp/platform/win32/amf/common/Windows/ThreadWindows.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp @@ -343,6 +343,11 @@ void AMF_CDECL_CALL amf_restore_timer_precision() #endif } //---------------------------------------------------------------------------------------- +amf_handle AMF_CDECL_CALL amf_load_library1(const wchar_t* filename, bool /*bGlobal*/) +{ + return amf_load_library(filename); +} +//---------------------------------------------------------------------------------------- amf_handle AMF_CDECL_CALL amf_load_library(const wchar_t* filename) { #if defined(METRO_APP) @@ -357,7 +362,7 @@ amf_handle AMF_CDECL_CALL amf_load_library(const wchar_t* filename) //---------------------------------------------------------------------------------------- void* AMF_CDECL_CALL amf_get_proc_address(amf_handle module, const char* procName) { - return ::GetProcAddress((HMODULE)module, procName); + return (void*)::GetProcAddress((HMODULE)module, procName); } //---------------------------------------------------------------------------------------- int AMF_CDECL_CALL amf_free_library(amf_handle module) diff --git a/alvr/server/cpp/platform/win32/amf/include/components/Ambisonic2SRenderer.h b/alvr/server/cpp/platform/win32/amf/public/include/components/Ambisonic2SRenderer.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/Ambisonic2SRenderer.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/Ambisonic2SRenderer.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/AudioCapture.h b/alvr/server/cpp/platform/win32/amf/public/include/components/AudioCapture.h similarity index 96% rename from alvr/server/cpp/platform/win32/amf/include/components/AudioCapture.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/AudioCapture.h index 43bf592293..af5b428768 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/AudioCapture.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/AudioCapture.h @@ -38,7 +38,7 @@ #pragma once -#include "public/include/components/Component.h" +#include "Component.h" // Set to capture from either a microphone or desktop #define AUDIOCAPTURE_SOURCE L"AudioCaptureSource" // amf_bool true for microphone, false for desktop; @@ -61,6 +61,8 @@ #define AUDIOCAPTURE_BITRATE L"AudioCaptureBitRate" // amf_int64, in bits // Channel count used for audio capture #define AUDIOCAPTURE_CHANNELS L"AudioCaptureChannelCount" // amf_int64, 2 +// Channel layout used for audio capture +#define AUDIOCAPTURE_CHANNEL_LAYOUT L"AudioCaptureChannelLayout" // amf_int64, AMF_AUDIO_CHANNEL_LAYOUT // Format used for audio capture #define AUDIOCAPTURE_FORMAT L"AudioCaptureFormat" // amf_int64, AMFAF_U8 // Block alignment diff --git a/alvr/server/cpp/platform/win32/amf/include/components/Capture.h b/alvr/server/cpp/platform/win32/amf/public/include/components/Capture.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/Capture.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/Capture.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/ChromaKey.h b/alvr/server/cpp/platform/win32/amf/public/include/components/ChromaKey.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/ChromaKey.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/ChromaKey.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/ColorSpace.h b/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h similarity index 81% rename from alvr/server/cpp/platform/win32/amf/include/components/ColorSpace.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h index 6f9a6a42d9..fa6c752d40 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/ColorSpace.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h @@ -38,7 +38,7 @@ #pragma once // YUV <--> RGB conversion matrix with range -enum AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM +typedef enum AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM { AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN =-1, AMF_VIDEO_CONVERTER_COLOR_PROFILE_601 = 0, // studio range @@ -54,9 +54,9 @@ enum AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM AMF_VIDEO_CONVERTER_COLOR_PROFILE_FULL_709 = 7, // full range AMF_VIDEO_CONVERTER_COLOR_PROFILE_FULL_2020 = 8, // full range AMF_VIDEO_CONVERTER_COLOR_PROFILE_COUNT -}; +} AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM; -enum AMF_COLOR_PRIMARIES_ENUM // as in VUI color_primaries AVC and HEVC +typedef enum AMF_COLOR_PRIMARIES_ENUM // as in VUI color_primaries AVC and HEVC { AMF_COLOR_PRIMARIES_UNDEFINED = 0, AMF_COLOR_PRIMARIES_BT709 = 1, @@ -72,36 +72,38 @@ enum AMF_COLOR_PRIMARIES_ENUM // as in VUI color_primaries AVC and HEVC AMF_COLOR_PRIMARIES_SMPTE431 = 11, AMF_COLOR_PRIMARIES_SMPTE432 = 12, AMF_COLOR_PRIMARIES_JEDEC_P22 = 22, -}; -enum AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM // as in VUI transfer_characteristic AVC and HEVC + AMF_COLOR_PRIMARIES_CCCS = 1000, // Common Composition Color Space or scRGB +} AMF_COLOR_PRIMARIES_ENUM; + +typedef enum AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM // as in VUI transfer_characteristic AVC and HEVC { AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED = 0, - AMF_COLOR_TRANSFER_CHARACTERISTIC_BT709 = 1, + AMF_COLOR_TRANSFER_CHARACTERISTIC_BT709 = 1, //BT709 AMF_COLOR_TRANSFER_CHARACTERISTIC_UNSPECIFIED = 2, AMF_COLOR_TRANSFER_CHARACTERISTIC_RESERVED = 3, - AMF_COLOR_TRANSFER_CHARACTERISTIC_GAMMA22 = 4, - AMF_COLOR_TRANSFER_CHARACTERISTIC_GAMMA28 = 5, - AMF_COLOR_TRANSFER_CHARACTERISTIC_SMPTE170M = 6, - AMF_COLOR_TRANSFER_CHARACTERISTIC_SMPTE240M = 7, + AMF_COLOR_TRANSFER_CHARACTERISTIC_GAMMA22 = 4, //BT470_M + AMF_COLOR_TRANSFER_CHARACTERISTIC_GAMMA28 = 5, //BT470 + AMF_COLOR_TRANSFER_CHARACTERISTIC_SMPTE170M = 6, //BT601 + AMF_COLOR_TRANSFER_CHARACTERISTIC_SMPTE240M = 7, //SMPTE 240M AMF_COLOR_TRANSFER_CHARACTERISTIC_LINEAR = 8, - AMF_COLOR_TRANSFER_CHARACTERISTIC_LOG = 9, - AMF_COLOR_TRANSFER_CHARACTERISTIC_LOG_SQRT = 10, + AMF_COLOR_TRANSFER_CHARACTERISTIC_LOG = 9, //LOG10 + AMF_COLOR_TRANSFER_CHARACTERISTIC_LOG_SQRT = 10,//LOG10 SQRT AMF_COLOR_TRANSFER_CHARACTERISTIC_IEC61966_2_4 = 11, AMF_COLOR_TRANSFER_CHARACTERISTIC_BT1361_ECG = 12, AMF_COLOR_TRANSFER_CHARACTERISTIC_IEC61966_2_1 = 13, - AMF_COLOR_TRANSFER_CHARACTERISTIC_BT2020_10 = 14, //BT709 curve - AMF_COLOR_TRANSFER_CHARACTERISTIC_BT2020_12 = 15, - AMF_COLOR_TRANSFER_CHARACTERISTIC_SMPTE2084 = 16, //PQ curve + AMF_COLOR_TRANSFER_CHARACTERISTIC_BT2020_10 = 14, //BT709 + AMF_COLOR_TRANSFER_CHARACTERISTIC_BT2020_12 = 15, //BT709 + AMF_COLOR_TRANSFER_CHARACTERISTIC_SMPTE2084 = 16, //PQ AMF_COLOR_TRANSFER_CHARACTERISTIC_SMPTE428 = 17, - AMF_COLOR_TRANSFER_CHARACTERISTIC_ARIB_STD_B67 = 18, -}; + AMF_COLOR_TRANSFER_CHARACTERISTIC_ARIB_STD_B67 = 18, //HLG +} AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM; -enum AMF_COLOR_BIT_DEPTH_ENUM +typedef enum AMF_COLOR_BIT_DEPTH_ENUM { AMF_COLOR_BIT_DEPTH_UNDEFINED = 0, AMF_COLOR_BIT_DEPTH_8 = 8, AMF_COLOR_BIT_DEPTH_10 = 10, -}; +} AMF_COLOR_BIT_DEPTH_ENUM; typedef struct AMFHDRMetadata { @@ -116,18 +118,20 @@ typedef struct AMFHDRMetadata } AMFHDRMetadata; -enum AMF_COLOR_RANGE_ENUM +typedef enum AMF_COLOR_RANGE_ENUM { AMF_COLOR_RANGE_UNDEFINED = 0, AMF_COLOR_RANGE_STUDIO = 1, AMF_COLOR_RANGE_FULL = 2, -}; +} AMF_COLOR_RANGE_ENUM; + + // these properties can be set on input or outout surface // IDs are the same as in decoder properties // can be used to dynamically pass color data between components: // Decoder, Capture, Encoder. Presenter etc. -#define AMF_VIDEO_COLOR_TRANSFER_CHARACTERISTIC L"ColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 See ColorSpace.h for enum -#define AMF_VIDEO_COLOR_PRIMARIES L"ColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_COLOR_TRANSFER_CHARACTERISTIC L"ColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.2 See ColorSpace.h for enum +#define AMF_VIDEO_COLOR_PRIMARIES L"ColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.1 See ColorSpace.h for enum #define AMF_VIDEO_COLOR_RANGE L"ColorRange" // amf_int64(AMF_COLOR_RANGE_ENUM) default = AMF_COLOR_RANGE_UNDEFINED #define AMF_VIDEO_COLOR_HDR_METADATA L"HdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL diff --git a/alvr/server/cpp/platform/win32/amf/include/components/Component.h b/alvr/server/cpp/platform/win32/amf/public/include/components/Component.h similarity index 99% rename from alvr/server/cpp/platform/win32/amf/include/components/Component.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/Component.h index 03b177e470..2cd9fa5e46 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/Component.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/Component.h @@ -253,7 +253,7 @@ namespace amf class AMF_NO_VTABLE AMFOutput : public AMFPropertyStorageEx { public: - AMF_DECLARE_IID(0x86a8a037, 0x912c, 0x4698, 0xb0, 0x46, 0x7, 0x5a, 0x1f, 0xac, 0x6b, 0x97); + AMF_DECLARE_IID(0x86a8a037, 0x912c, 0x4698, 0xb0, 0x46, 0x7, 0x5a, 0x1f, 0xac, 0x6b, 0x97) virtual AMF_RESULT AMF_STD_CALL QueryOutput(AMFData** ppData) = 0; }; @@ -262,7 +262,7 @@ namespace amf //---------------------------------------------------------------------------------------------- typedef AMFInterfacePtr_T AMFOutputPtr; #else // #if defined(__cplusplus) - AMF_DECLARE_IID(AMFOutput, 0x86a8a037, 0x912c, 0x4698, 0xb0, 0x46, 0x7, 0x5a, 0x1f, 0xac, 0x6b, 0x97); + AMF_DECLARE_IID(AMFOutput, 0x86a8a037, 0x912c, 0x4698, 0xb0, 0x46, 0x7, 0x5a, 0x1f, 0xac, 0x6b, 0x97) typedef struct AMFOutput AMFOutput; typedef struct AMFOutputVtbl diff --git a/alvr/server/cpp/platform/win32/amf/include/components/ComponentCaps.h b/alvr/server/cpp/platform/win32/amf/public/include/components/ComponentCaps.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/ComponentCaps.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/ComponentCaps.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/CursorCapture.h b/alvr/server/cpp/platform/win32/amf/public/include/components/CursorCapture.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/CursorCapture.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/CursorCapture.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/DisplayCapture.h b/alvr/server/cpp/platform/win32/amf/public/include/components/DisplayCapture.h similarity index 53% rename from alvr/server/cpp/platform/win32/amf/include/components/DisplayCapture.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/DisplayCapture.h index 0035995f4e..30820d6aab 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/DisplayCapture.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/DisplayCapture.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2017 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -46,20 +46,36 @@ extern "C" AMF_RESULT AMF_CDECL_CALL AMFCreateComponentDisplayCapture(amf::AMFContext* pContext, void* reserved, amf::AMFComponent** ppComponent); } +// To create AMD Direct Capture component use this component ID with AMFFactory::CreateComponent() +#define AMFDisplayCapture L"AMFDisplayCapture" + // Static properties // -// -#define AMF_DISPLAYCAPTURE_MONITOR_INDEX L"MonitorIndex" // amf_int64, default = 0, Index of the display monitor; is determined by using EnumAdapters() in DXGI. -#define AMF_DISPLAYCAPTURE_FRAMERATE L"FrameRate" // AMFRate, default = (0, 1) Capture frame rate, if 0 - capture rate will be driven by flip off the app or dwm -#define AMF_DISPLAYCAPTURE_CURRENT_TIME_INTERFACE L"CurrentTimeInterface" // Optional interface object for getting current time. -#define AMF_DISPLAYCAPTURE_FORMAT L"CurrentFormat" // amf_int64(AMF_SURFACE_FORMAT) Capture format - read-only -#define AMF_DISPLAYCAPTURE_RESOLUTION L"Resolution" // AMFSize - screen resolution - read-only -#define AMF_DISPLAYCAPTURE_DUPLICATEOUTPUT L"DuplicateOutput" // amf_bool, default = false, output AMF surface is a copy of captured +typedef enum AMF_DISPLAYCAPTURE_MODE_ENUM +{ + AMF_DISPLAYCAPTURE_MODE_KEEP_FRAMERATE = 0, // capture component maintains the frame rate and returns current visible surface + AMF_DISPLAYCAPTURE_MODE_WAIT_FOR_PRESENT = 1, // capture component waits for flip (present) event + AMF_DISPLAYCAPTURE_MODE_GET_CURRENT_SURFACE = 2, // returns current visible surface immediately +} AMF_DISPLAYCAPTURE_MODE_ENUM; + + +#define AMF_DISPLAYCAPTURE_MONITOR_INDEX L"MonitorIndex" // amf_int64, default = 0, Index of the display monitor; is determined by using EnumAdapters() in DXGI. +#define AMF_DISPLAYCAPTURE_MODE L"CaptureMode" // amf_int64(AMF_DISPLAYCAPTURE_MODE_ENUM), default = AMF_DISPLAYCAPTURE_MODE_FRAMERATE, controls wait logic +#define AMF_DISPLAYCAPTURE_FRAMERATE L"FrameRate" // AMFRate, default = (0, 1) Capture framerate, if 0 - capture rate will be driven by flip event from fullscreen app or DWM +#define AMF_DISPLAYCAPTURE_CURRENT_TIME_INTERFACE L"CurrentTimeInterface" // AMFInterface(AMFCurrentTime) Optional interface object for providing timestamps. +#define AMF_DISPLAYCAPTURE_FORMAT L"CurrentFormat" // amf_int64(AMF_SURFACE_FORMAT) Capture format - read-only +#define AMF_DISPLAYCAPTURE_RESOLUTION L"Resolution" // AMFSize - screen resolution - read-only +#define AMF_DISPLAYCAPTURE_DUPLICATEOUTPUT L"DuplicateOutput" // amf_bool, default = false, output AMF surface is a copy of captured #define AMF_DISPLAYCAPTURE_DESKTOP_RECT L"DesktopRect" // AMFRect - rect of the capture desktop - read-only #define AMF_DISPLAYCAPTURE_ENABLE_DIRTY_RECTS L"EnableDirtyRects" // amf_bool, default = false, enable dirty rectangles attached to output as AMF_DISPLAYCAPTURE_DIRTY_RECTS #define AMF_DISPLAYCAPTURE_DRAW_DIRTY_RECTS L"DrawDirtyRects" // amf_bool, default = false, copies capture output and draws dirty rectangles with red - for debugging only +#define AMF_DISPLAYCAPTURE_ROTATION L"Rotation" // amf_int64(AMF_ROTATION_ENUM); default = AMF_ROTATION_NONE, monitor rotation state -// can be set on output AMFSurface -#define AMF_DISPLAYCAPTURE_DIRTY_RECTS L"DirtyRects" // AMFInterface*(AMFBuffer*) - array of AMFRect +// Properties that can be set on output AMFSurface +#define AMF_DISPLAYCAPTURE_DIRTY_RECTS L"DirtyRects" // AMFInterface*(AMFBuffer*) - array of AMFRect(s) +#define AMF_DISPLAYCAPTURE_FRAME_INDEX L"FrameIndex" // amf_int64; default = 0, index of presented frame since capture started +#define AMF_DISPLAYCAPTURE_FRAME_FLIP_TIMESTAMP L"FlipTimesamp" // amf_int64; default = 0, flip timestmap of presented frame +// see Surface.h +//#define AMF_SURFACE_ROTATION L"Rotation" // amf_int64(AMF_ROTATION_ENUM); default = AMF_ROTATION_NONE, can be set on surfaces - the same value as AMF_DISPLAYCAPTURE_ROTATION #endif // #ifndef AMF_DisplayCapture_h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/FFMPEGAudioConverter.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGAudioConverter.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/FFMPEGAudioConverter.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGAudioConverter.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/FFMPEGAudioDecoder.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGAudioDecoder.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/FFMPEGAudioDecoder.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGAudioDecoder.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/FFMPEGAudioEncoder.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGAudioEncoder.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/FFMPEGAudioEncoder.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGAudioEncoder.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/FFMPEGComponents.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGComponents.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/FFMPEGComponents.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGComponents.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/FFMPEGFileDemuxer.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGFileDemuxer.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/FFMPEGFileDemuxer.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGFileDemuxer.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/FFMPEGFileMuxer.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGFileMuxer.h similarity index 96% rename from alvr/server/cpp/platform/win32/amf/include/components/FFMPEGFileMuxer.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGFileMuxer.h index e8adf2bbc1..a44676095e 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/FFMPEGFileMuxer.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGFileMuxer.h @@ -49,5 +49,6 @@ #define FFMPEG_MUXER_ENABLE_AUDIO L"EnableAudio" // bool (default = false) #define FFMPEG_MUXER_CURRENT_TIME_INTERFACE L"CurrentTimeInterface" #define FFMPEG_MUXER_VIDEO_ROTATION L"VideoRotation" // amf_int64 (0, 90, 180, 270, default = 0) +#define FFMPEG_MUXER_USAGE_IS_TRIM L"UsageIsTrim" // bool (default = false) #endif //#ifndef AMF_FileMuxerFFMPEG_h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/FFMPEGVideoDecoder.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGVideoDecoder.h similarity index 99% rename from alvr/server/cpp/platform/win32/amf/include/components/FFMPEGVideoDecoder.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGVideoDecoder.h index 945dd6a080..c844145d81 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/FFMPEGVideoDecoder.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGVideoDecoder.h @@ -48,6 +48,6 @@ #define VIDEO_DECODER_FRAMERATE L"FrameRate" // AMFRate #define VIDEO_DECODER_SEEK_POSITION L"SeekPosition" // amf_int64 (default = 0) -#define VIDEO_DECODER_COLOR_TRANSFER_CHARACTERISTIC L"ColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 +#define VIDEO_DECODER_COLOR_TRANSFER_CHARACTERISTIC L"ColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 #endif //#ifndef AMF_VideoDecoderFFMPEG_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/HQScaler.h b/alvr/server/cpp/platform/win32/amf/public/include/components/HQScaler.h new file mode 100644 index 0000000000..6074ead421 --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/HQScaler.h @@ -0,0 +1,65 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2021 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +#ifndef AMFHQScaler_h +#define AMFHQScaler_h + +#pragma once + +#define AMFHQScaler L"AMFHQScaler" + + +// various types of algorithms supported by the high-quality scaler +enum AMF_HQ_SCALER_ALGORITHM_ENUM +{ + AMF_HQ_SCALER_ALGORITHM_BILINEAR = 0, + AMF_HQ_SCALER_ALGORITHM_BICUBIC = 1, + AMF_HQ_SCALER_ALGORITHM_FSR = 2, + +}; + + +// PA object properties +#define AMF_HQ_SCALER_ALGORITHM L"HQScalerAlgorithm" // amf_int64(AMF_HQ_SCALER_ALGORITHM_ENUM) (Bi-linear, Bi-cubic, RCAS, Auto)" - determines which scaling algorithm will be used + // auto will chose best option between algorithms available +#define AMF_HQ_SCALER_ENGINE_TYPE L"HQScalerEngineType" // AMF_MEMORY_TYPE (DX11, DX12, OPENCL, VULKAN default : DX11)" - determines how the object is initialized and what kernels to use + +#define AMF_HQ_SCALER_OUTPUT_SIZE L"HQSOutputSize" // AMFSize - output scaling width/hieight + +#define AMF_HQ_SCALER_KEEP_ASPECT_RATIO L"KeepAspectRatio" // bool (default=false) Keep aspect ratio if scaling. +#define AMF_HQ_SCALER_FILL L"Fill" // bool (default=false) fill area out of ROI. +#define AMF_HQ_SCALER_FILL_COLOR L"FillColor" // AMFColor +#define AMF_HQ_SCALER_FROM_SRGB L"FromSRGB" // bool (default=true) Convert to SRGB. + +#define AMF_HQ_SCALER_SHARPNESS L"HQScalerSharpness" // Float in the range of [0.0, 2.0] + +#endif //#ifndef AMFHQScaler_h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/MediaSource.h b/alvr/server/cpp/platform/win32/amf/public/include/components/MediaSource.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/MediaSource.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/MediaSource.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/PreAnalysis.h b/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h similarity index 73% rename from alvr/server/cpp/platform/win32/amf/include/components/PreAnalysis.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h index 9f43516031..2e64b28bb6 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/PreAnalysis.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2019 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -48,7 +48,7 @@ enum AMF_PA_SCENE_CHANGE_DETECTION_SENSITIVITY_ENUM enum AMF_PA_STATIC_SCENE_DETECTION_SENSITIVITY_ENUM -{ +{ AMF_PA_STATIC_SCENE_DETECTION_SENSITIVITY_LOW = 0, AMF_PA_STATIC_SCENE_DETECTION_SENSITIVITY_MEDIUM = 1, AMF_PA_STATIC_SCENE_DETECTION_SENSITIVITY_HIGH = 2 @@ -69,23 +69,46 @@ enum AMF_PA_CAQ_STRENGTH_ENUM AMF_PA_CAQ_STRENGTH_HIGH = 2 }; +// Perceptual adaptive quantization mode +enum AMF_PA_PAQ_MODE_ENUM +{ + AMF_PA_PAQ_MODE_NONE = 0, + AMF_PA_PAQ_MODE_CAQ = 1 +}; + +// Temporal adaptive quantization mode +enum AMF_PA_TAQ_MODE_ENUM +{ + AMF_PA_TAQ_MODE_NONE = 0, + AMF_PA_TAQ_MODE_1 = 1 +}; + +enum AMF_PA_HIGH_MOTION_QUALITY_BOOST_MODE_ENUM +{ + AMF_PA_HIGH_MOTION_QUALITY_BOOST_MODE_NONE = 0, //default + AMF_PA_HIGH_MOTION_QUALITY_BOOST_MODE_AUTO = 1 +}; // PA object properties -#define AMF_PA_ENGINE_TYPE L"PAEngineType" // AMF_MEMORY_TYPE (Host, DX11, OPENCL, Auto default : UNKNOWN (Auto))" - determines how the object is initialized and what kernels to use - // by default it is Auto (DX11 and OpenCL are currently available) +#define AMF_PA_ENGINE_TYPE L"PAEngineType" // AMF_MEMORY_TYPE (Host, DX11, OpenCL, Vulkan, Auto default : UNKNOWN (Auto))" - determines how the object is initialized and what kernels to use + // by default it is Auto (DX11, OpenCL and Vulkan are currently available) #define AMF_PA_SCENE_CHANGE_DETECTION_ENABLE L"PASceneChangeDetectionEnable" // bool (default : True) - Enable Scene Change Detection GPU algorithm #define AMF_PA_SCENE_CHANGE_DETECTION_SENSITIVITY L"PASceneChangeDetectionSensitivity" // AMF_PA_SCENE_CHANGE_DETECTION_SENSITIVITY_ENUM (default : Medium) - Scene Change Detection Sensitivity -#define AMF_PA_STATIC_SCENE_DETECTION_ENABLE L"PAStaticSceneDetectionEnable" // bool (default : True) - Enable Skip Detection GPU algorithm +#define AMF_PA_STATIC_SCENE_DETECTION_ENABLE L"PAStaticSceneDetectionEnable" // bool (default : False) - Enable Skip Detection GPU algorithm #define AMF_PA_STATIC_SCENE_DETECTION_SENSITIVITY L"PAStaticSceneDetectionSensitivity" // AMF_PA_STATIC_SCENE_DETECTION_SENSITIVITY_ENUM (default : High) - Allowable absolute difference between pixels (sample counts) +#define AMF_PA_FRAME_SAD_ENABLE L"PAFrameSadEnable" // bool (default : True) - Enable Frame SAD algorithm #define AMF_PA_ACTIVITY_TYPE L"PAActivityType" // AMF_PA_ACTIVITY_TYPE_ENUM (default : Calculate on Y) - Block activity calculation mode - - +#define AMF_PA_LTR_ENABLE L"PALongTermReferenceEnable" // bool (default : False) - Enable Automatic Long Term Reference frame management +#define AMF_PA_LOOKAHEAD_BUFFER_DEPTH L"PALookAheadBufferDepth" // amf_uint64 (default : 0) Values: [0, MAX_LOOKAHEAD_DEPTH] - PA lookahead buffer size +#define AMF_PA_PAQ_MODE L"PAPerceptualAQMode" // AMF_PA_PAQ_MODE_ENUM (default : AMF_PA_PAQ_MODE_NONE) - Perceptual AQ mode +#define AMF_PA_TAQ_MODE L"PATemporalAQMode" // AMF_PA_TAQ_MODE_ENUM (default: AMF_PA_TAQ_MODE_NONE) - Temporal AQ mode +#define AMF_PA_HIGH_MOTION_QUALITY_BOOST_MODE L"PAHighMotionQualityBoostMode" // AMF_PA_HIGH_MOTION_QUALITY_BOOST_MODE_ENUM (default: None) - High motion quality boost mode /////////////////////////////////////////// -// the following properties are available -// only through the Encoder - trying to +// the following properties are available +// only through the Encoder - trying to // access/set them when PA is standalone // will fail @@ -105,4 +128,5 @@ enum AMF_PA_CAQ_STRENGTH_ENUM #define AMF_PA_SCENE_CHANGE_DETECT L"PASceneChangeDetect" // bool - True/False - available if AMF_PA_SCENE_CHANGE_DETECTION_ENABLE was set to True #define AMF_PA_STATIC_SCENE_DETECT L"PAStaticSceneDetect" // bool - True/False - available if AMF_PA_STATIC_SCENE_DETECTION_ENABLE was set to True + #endif //#ifndef AMFPreAnalysis_h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/PreProcessing.h b/alvr/server/cpp/platform/win32/amf/public/include/components/PreProcessing.h similarity index 70% rename from alvr/server/cpp/platform/win32/amf/include/components/PreProcessing.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/PreProcessing.h index d272906a9f..ab59d826b7 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/PreProcessing.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/PreProcessing.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2020 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -38,13 +38,22 @@ #define AMFPreProcessing L"AMFPreProcessing" -// PA object properties -#define AMF_PP_ENGINE_TYPE L"PPEngineType" // AMF_MEMORY_TYPE (Host, DX11, OPENCL default : OPENCL)" - determines how the object is initialized and what kernels to use +// Pre-processing object properties +#define AMF_PP_ENGINE_TYPE L"PPEngineType" // AMF_MEMORY_TYPE (Host, DX11, OPENCL, Auto default : OPENCL) - determines how the object is initialized and what kernels to use // by default it is OpenCL (Host, DX11 and OpenCL are currently available) +// add a property that will determine the output format +// by default we output in the same format as input +// but in some cases we might need to change the output +// format to be different than input +#define AMF_PP_OUTPUT_MEMORY_TYPE L"PPOutputFormat" // AMF_MEMORY_TYPE (Host, DX11, OPENCL default : Unknown) - determines format of frame going out + #define AMF_PP_ADAPTIVE_FILTER_STRENGTH L"PPAdaptiveFilterStrength" // int (default : 4) - strength: 0 - 10: the higher the value, the stronger the filtering #define AMF_PP_ADAPTIVE_FILTER_SENSITIVITY L"PPAdaptiveFilterSensitivity" // int (default : 4) - sensitivity: 0 - 10: the lower the value, the more sensitive to edge (preserve more details) - +// Encoder parameters used for adaptive filtering +#define AMF_PP_TARGET_BITRATE L"PPTargetBitrate" // int64 (default: 2000000) - target bit rate +#define AMF_PP_FRAME_RATE L"PPFrameRate" // AMFRate (default: 30, 1) - frame rate +#define AMF_PP_ADAPTIVE_FILTER_ENABLE L"PPAdaptiveFilterEnable" // bool (default: false) - turn on/off adaptive filtering #endif //#ifndef AMFPreProcessing_h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/VideoCapture.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoCapture.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/VideoCapture.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/VideoCapture.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/VideoConverter.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoConverter.h similarity index 87% rename from alvr/server/cpp/platform/win32/amf/include/components/VideoConverter.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/VideoConverter.h index 0f6694a9ac..ed8559a206 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/VideoConverter.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoConverter.h @@ -49,6 +49,17 @@ enum AMF_VIDEO_CONVERTER_SCALE_ENUM AMF_VIDEO_CONVERTER_SCALE_BICUBIC = 1 }; +enum AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM +{ + AMF_VIDEO_CONVERTER_TONEMAPPING_COPY = 0, + AMF_VIDEO_CONVERTER_TONEMAPPING_AMD = 1, + AMF_VIDEO_CONVERTER_TONEMAPPING_LINEAR = 2, + AMF_VIDEO_CONVERTER_TONEMAPPING_GAMMA = 3, + AMF_VIDEO_CONVERTER_TONEMAPPING_REINHARD = 4, + AMF_VIDEO_CONVERTER_TONEMAPPING_2390 = 5, +}; + + #define AMF_VIDEO_CONVERTER_OUTPUT_FORMAT L"OutputFormat" // Values : AMF_SURFACE_NV12 or AMF_SURFACE_BGRA or AMF_SURFACE_YUV420P #define AMF_VIDEO_CONVERTER_MEMORY_TYPE L"MemoryType" // Values : AMF_MEMORY_DX11 or AMF_MEMORY_DX9 or AMF_MEMORY_UNKNOWN (get from input type) @@ -79,20 +90,22 @@ enum AMF_VIDEO_CONVERTER_SCALE_ENUM // these properties can be set on converter component to configure input and output // these properties overwrite properties set on surface - see below -#define AMF_VIDEO_CONVERTER_INPUT_TRANSFER_CHARACTERISTIC L"InputTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 See ColorSpace.h for enum -#define AMF_VIDEO_CONVERTER_INPUT_COLOR_PRIMARIES L"InputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_CONVERTER_INPUT_TRANSFER_CHARACTERISTIC L"InputTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 See ColorSpace.h for enum +#define AMF_VIDEO_CONVERTER_INPUT_COLOR_PRIMARIES L"InputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum #define AMF_VIDEO_CONVERTER_INPUT_COLOR_RANGE L"InputColorRange" // amf_int64(AMF_COLOR_RANGE_ENUM) default = AMF_COLOR_RANGE_UNDEFINED #define AMF_VIDEO_CONVERTER_INPUT_HDR_METADATA L"InputHdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +#define AMF_VIDEO_CONVERTER_INPUT_TONEMAPPING L"InputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) default = AMF_VIDEO_CONVERTER_TONEMAPPING_LINEAR -#define AMF_VIDEO_CONVERTER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutputTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 See ColorSpace.h for enum -#define AMF_VIDEO_CONVERTER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_CONVERTER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutputTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 See ColorSpace.h for enum +#define AMF_VIDEO_CONVERTER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum #define AMF_VIDEO_CONVERTER_OUTPUT_COLOR_RANGE L"OutputColorRange" // amf_int64(AMF_COLOR_RANGE_ENUM) default = AMF_COLOR_RANGE_UNDEFINED #define AMF_VIDEO_CONVERTER_OUTPUT_HDR_METADATA L"OutputHdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +#define AMF_VIDEO_CONVERTER_OUTPUT_TONEMAPPING L"OutputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) default = AMF_VIDEO_CONVERTER_TONEMAPPING_AMD // these properties can be set on input or outout surface See ColorSpace.h // the same as decoder properties set on input surface - see below -//#define AMF_VIDEO_COLOR_TRANSFER_CHARACTERISTIC L"ColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 See ColorSpace.h for enum -//#define AMF_VIDEO_COLOR_PRIMARIES L"ColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 See ColorSpace.h for enum +//#define AMF_VIDEO_COLOR_TRANSFER_CHARACTERISTIC L"ColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 See ColorSpace.h for enum +//#define AMF_VIDEO_COLOR_PRIMARIES L"ColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum //#define AMF_VIDEO_COLOR_RANGE L"ColorRange" // amf_int64(AMF_COLOR_RANGE_ENUM) default = AMF_COLOR_RANGE_UNDEFINED //#define AMF_VIDEO_COLOR_HDR_METADATA L"HdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL diff --git a/alvr/server/cpp/platform/win32/amf/include/components/VideoDecoderUVD.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h similarity index 95% rename from alvr/server/cpp/platform/win32/amf/include/components/VideoDecoderUVD.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h index 3345d74c34..a3f94b5cdf 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/VideoDecoderUVD.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h @@ -91,8 +91,8 @@ enum AMF_TIMESTAMP_MODE_ENUM // metadata information: can be set on output surface // Properties could be set on surface based on HDR SEI or VUI header -#define AMF_VIDEO_DECODER_COLOR_TRANSFER_CHARACTERISTIC L"ColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 -#define AMF_VIDEO_DECODER_COLOR_PRIMARIES L"ColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 +#define AMF_VIDEO_DECODER_COLOR_TRANSFER_CHARACTERISTIC L"ColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 +#define AMF_VIDEO_DECODER_COLOR_PRIMARIES L"ColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 #define AMF_VIDEO_DECODER_HDR_METADATA L"HdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL /////// AMF_VIDEO_DECODER_FULL_RANGE_COLOR deprecated, use AMF_VIDEO_DECODER_COLOR_RANGE @@ -104,10 +104,11 @@ enum AMF_TIMESTAMP_MODE_ENUM #define AMF_VIDEO_DECODER_COLOR_PROFILE L"ColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO // properties to be set on decoder if internal converter is used -#define AMF_VIDEO_DECODER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 See VideoDecoderUVD.h for enum -#define AMF_VIDEO_DECODER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_DECODER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 See VideoDecoderUVD.h for enum +#define AMF_VIDEO_DECODER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum #define AMF_VIDEO_DECODER_OUTPUT_HDR_METADATA L"OutHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +#define AMF_VIDEO_DECODER_LOW_LATENCY L"LowLatencyDecode" // amf_bool; default = false; true = low latency decode, false = regular decode #if defined(__ANDROID__) #define AMF_VIDEO_DECODER_NATIVEWINDOW L"AndroidNativeWindow" // amf_int64; default = 0; pointer to native window diff --git a/alvr/server/cpp/platform/win32/amf/include/components/VideoEncoderHEVC.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h similarity index 67% rename from alvr/server/cpp/platform/win32/amf/include/components/VideoEncoderHEVC.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h index 4154516e57..6516fb5725 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/VideoEncoderHEVC.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h @@ -36,15 +36,19 @@ enum AMF_VIDEO_ENCODER_HEVC_USAGE_ENUM { - AMF_VIDEO_ENCODER_HEVC_USAGE_TRANSCONDING = 0, + AMF_VIDEO_ENCODER_HEVC_USAGE_TRANSCONDING = 0, // kept for backwards compatability + AMF_VIDEO_ENCODER_HEVC_USAGE_TRANSCODING = 0, // fixed typo AMF_VIDEO_ENCODER_HEVC_USAGE_ULTRA_LOW_LATENCY, AMF_VIDEO_ENCODER_HEVC_USAGE_LOW_LATENCY, - AMF_VIDEO_ENCODER_HEVC_USAGE_WEBCAM + AMF_VIDEO_ENCODER_HEVC_USAGE_WEBCAM, + AMF_VIDEO_ENCODER_HEVC_USAGE_HIGH_QUALITY, + AMF_VIDEO_ENCODER_HEVC_USAGE_LOW_LATENCY_HIGH_QUALITY }; enum AMF_VIDEO_ENCODER_HEVC_PROFILE_ENUM { - AMF_VIDEO_ENCODER_HEVC_PROFILE_MAIN = 1 + AMF_VIDEO_ENCODER_HEVC_PROFILE_MAIN = 1, + AMF_VIDEO_ENCODER_HEVC_PROFILE_MAIN_10 = 2 }; enum AMF_VIDEO_ENCODER_HEVC_TIER_ENUM @@ -97,7 +101,7 @@ enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_DATA_TYPE_ENUM enum AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_ENUM { - AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY = 0, + AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY = 0, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED = 5, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED = 10 }; @@ -115,62 +119,80 @@ enum AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_ENUM AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_ON }; +enum AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE +{ + AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE_STUDIO = 0, + AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE_FULL = 1 +}; +enum AMF_VIDEO_ENCODER_HEVC_LTR_MODE_ENUM +{ + AMF_VIDEO_ENCODER_HEVC_LTR_MODE_RESET_UNUSED = 0, + AMF_VIDEO_ENCODER_HEVC_LTR_MODE_KEEP_UNUSED +}; // Static properties - can be set before Init() +#define AMF_VIDEO_ENCODER_HEVC_INSTANCE_INDEX L"HevcEncoderInstance" // amf_int64; selected instance idx #define AMF_VIDEO_ENCODER_HEVC_FRAMESIZE L"HevcFrameSize" // AMFSize; default = 0,0; Frame size -#define AMF_VIDEO_ENCODER_HEVC_USAGE L"HevcUsage" // amf_int64(AMF_VIDEO_ENCODER_HEVC_USAGE_ENUM); default = N/A; Encoder usage type. fully configures parameter set. +#define AMF_VIDEO_ENCODER_HEVC_USAGE L"HevcUsage" // amf_int64(AMF_VIDEO_ENCODER_HEVC_USAGE_ENUM); default = N/A; Encoder usage type. fully configures parameter set. #define AMF_VIDEO_ENCODER_HEVC_PROFILE L"HevcProfile" // amf_int64(AMF_VIDEO_ENCODER_HEVC_PROFILE_ENUM) ; default = AMF_VIDEO_ENCODER_HEVC_PROFILE_MAIN; #define AMF_VIDEO_ENCODER_HEVC_TIER L"HevcTier" // amf_int64(AMF_VIDEO_ENCODER_HEVC_TIER_ENUM) ; default = AMF_VIDEO_ENCODER_HEVC_TIER_MAIN; -#define AMF_VIDEO_ENCODER_HEVC_PROFILE_LEVEL L"HevcProfileLevel" // amf_int64 (AMF_VIDEO_ENCODER_LEVEL_ENUM, default depends on HW capabilities); +#define AMF_VIDEO_ENCODER_HEVC_PROFILE_LEVEL L"HevcProfileLevel" // amf_int64 (AMF_VIDEO_ENCODER_LEVEL_ENUM, default depends on HW capabilities); #define AMF_VIDEO_ENCODER_HEVC_MAX_LTR_FRAMES L"HevcMaxOfLTRFrames" // amf_int64; default = 0; Max number of LTR frames +#define AMF_VIDEO_ENCODER_HEVC_LTR_MODE L"HevcLTRMode" // amf_int64(AMF_VIDEO_ENCODER_HEVC_LTR_MODE_ENUM); default = AMF_VIDEO_ENCODER_HEVC_LTR_MODE_RESET_UNUSED; remove/keep unused LTRs (not specified in property AMF_VIDEO_ENCODER_HEVC_FORCE_LTR_REFERENCE_BITFIELD) #define AMF_VIDEO_ENCODER_HEVC_MAX_NUM_REFRAMES L"HevcMaxNumRefFrames" // amf_int64; default = 1; Maximum number of reference frames -#define AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET L"HevcQualityPreset" // amf_int64(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_ENUM); default = depends on USAGE; Quality Preset +#define AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET L"HevcQualityPreset" // amf_int64(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_ENUM); default = depends on USAGE; Quality Preset #define AMF_VIDEO_ENCODER_HEVC_EXTRADATA L"HevcExtraData" // AMFInterface* - > AMFBuffer*; SPS/PPS buffer - read-only #define AMF_VIDEO_ENCODER_HEVC_ASPECT_RATIO L"HevcAspectRatio" // AMFRatio; default = 1, 1 -#define AMF_VIDEO_ENCODER_HEVC_LOWLATENCY_MODE L"LowLatencyInternal" // bool; default = false, enables low latency mode +#define AMF_VIDEO_ENCODER_HEVC_LOWLATENCY_MODE L"LowLatencyInternal" // bool; default = false, enables low latency mode #define AMF_VIDEO_ENCODER_HEVC_PRE_ANALYSIS_ENABLE L"HevcEnablePreAnalysis" // bool; default = false; enables the pre-analysis module. Currently only works in AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR mode. Refer to AMF Video PreAnalysis API reference for more details. +#define AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE L"HevcNominalRange" // amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE); default = amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE_STUDIO); property is bool but amf_int64 also works for backward compatibility. +#define AMF_VIDEO_ENCODER_HEVC_MAX_NUM_TEMPORAL_LAYERS L"HevcMaxNumOfTemporalLayers" // amf_int64; default = 1; Max number of temporal layers. // Picture control properties #define AMF_VIDEO_ENCODER_HEVC_NUM_GOPS_PER_IDR L"HevcGOPSPerIDR" // amf_int64; default = 1; The frequency to insert IDR as start of a GOP. 0 means no IDR will be inserted. #define AMF_VIDEO_ENCODER_HEVC_GOP_SIZE L"HevcGOPSize" // amf_int64; default = 60; GOP Size, in frames #define AMF_VIDEO_ENCODER_HEVC_DE_BLOCKING_FILTER_DISABLE L"HevcDeBlockingFilter" // bool; default = depends on USAGE; De-blocking Filter -#define AMF_VIDEO_ENCODER_HEVC_SLICES_PER_FRAME L"HevcSlicesPerFrame" // amf_int64; default = 1; Number of slices Per Frame +#define AMF_VIDEO_ENCODER_HEVC_SLICES_PER_FRAME L"HevcSlicesPerFrame" // amf_int64; default = 1; Number of slices Per Frame #define AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE L"HevcHeaderInsertionMode" // amf_int64(AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_ENUM); default = NONE +#define AMF_VIDEO_ENCODER_HEVC_INTRA_REFRESH_NUM_CTBS_PER_SLOT L"HevcIntraRefreshCTBsNumberPerSlot" // amf_int64; default = depends on USAGE; Intra Refresh CTBs Number Per Slot in 64x64 CTB // Rate control properties -#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD L"HevcRateControlMethod" // amf_int64(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_MODE_ENUM); default = depends on USAGE; Rate Control Method -#define AMF_VIDEO_ENCODER_HEVC_FRAMERATE L"HevcFrameRate" // AMFRate; default = depends on usage; Frame Rate +#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD L"HevcRateControlMethod" // amf_int64(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_ENUM); default = depends on USAGE; Rate Control Method #define AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE L"HevcVBVBufferSize" // amf_int64; default = depends on USAGE; VBV Buffer Size in bits #define AMF_VIDEO_ENCODER_HEVC_INITIAL_VBV_BUFFER_FULLNESS L"HevcInitialVBVBufferFullness" // amf_int64; default = 64; Initial VBV Buffer Fullness 0=0% 64=100% #define AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ L"HevcEnableVBAQ" // // bool; default = depends on USAGE; Enable auto VBAQ #define AMF_VIDEO_ENCODER_HEVC_HIGH_MOTION_QUALITY_BOOST_ENABLE L"HevcHighMotionQualityBoostEnable"// bool; default = depends on USAGE; Enable High motion quality boost mode -#define AMF_VIDEO_ENCODER_HEVC_PREENCODE_ENABLE L"HevcRateControlPreAnalysisEnable" // bool; default = depends on USAGE; enables pre-encode assisted rate control -#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_PREANALYSIS_ENABLE L"HevcRateControlPreAnalysisEnable" // bool; default = depends on USAGE; enables pre-encode assisted rate control. Deprecated, please use AMF_VIDEO_ENCODER_PREENCODE_ENABLE instead. +#define AMF_VIDEO_ENCODER_HEVC_PREENCODE_ENABLE L"HevcRateControlPreAnalysisEnable" // bool; default = depends on USAGE; enables pre-encode assisted rate control +#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_PREANALYSIS_ENABLE L"HevcRateControlPreAnalysisEnable" // bool; default = depends on USAGE; enables pre-encode assisted rate control. Deprecated, please use AMF_VIDEO_ENCODER_PREENCODE_ENABLE instead. #ifdef _MSC_VER - #pragma deprecated("AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_PREANALYSIS_ENABLE") + #ifndef __clang__ + #pragma deprecated("AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_PREANALYSIS_ENABLE") + #endif #endif // Motion estimation -#define AMF_VIDEO_ENCODER_HEVC_MOTION_HALF_PIXEL L"HevcHalfPixel" // bool; default= true; Half Pixel +#define AMF_VIDEO_ENCODER_HEVC_MOTION_HALF_PIXEL L"HevcHalfPixel" // bool; default= true; Half Pixel #define AMF_VIDEO_ENCODER_HEVC_MOTION_QUARTERPIXEL L"HevcQuarterPixel" // bool; default= true; Quarter Pixel // color conversion #define AMF_VIDEO_ENCODER_HEVC_COLOR_BIT_DEPTH L"HevcColorBitDepth" // amf_int64(AMF_COLOR_BIT_DEPTH_ENUM); default = AMF_COLOR_BIT_DEPTH_8 #define AMF_VIDEO_ENCODER_HEVC_INPUT_COLOR_PROFILE L"HevcInColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size -#define AMF_VIDEO_ENCODER_HEVC_INPUT_TRANSFER_CHARACTERISTIC L"HevcInColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 See VideoDecoderUVD.h for enum -#define AMF_VIDEO_ENCODER_HEVC_INPUT_COLOR_PRIMARIES L"HevcInColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_HEVC_INPUT_TRANSFER_CHARACTERISTIC L"HevcInColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 section 7.2 See VideoDecoderUVD.h for enum +#define AMF_VIDEO_ENCODER_HEVC_INPUT_COLOR_PRIMARIES L"HevcInColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PROFILE L"HevcOutColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size -#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_TRANSFER_CHARACTERISTIC L"HevcOutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 See VideoDecoderUVD.h for enum -#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PRIMARIES L"HevcOutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_TRANSFER_CHARACTERISTIC L"HevcOutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PRIMARIES L"HevcOutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum // Dynamic properties - can be set at any time // Rate control properties +#define AMF_VIDEO_ENCODER_HEVC_FRAMERATE L"HevcFrameRate" // AMFRate; default = depends on usage; Frame Rate + #define AMF_VIDEO_ENCODER_HEVC_ENFORCE_HRD L"HevcEnforceHRD" // bool; default = depends on USAGE; Enforce HRD #define AMF_VIDEO_ENCODER_HEVC_FILLER_DATA_ENABLE L"HevcFillerDataEnable" // bool; default = depends on USAGE; Enforce HRD #define AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE L"HevcTargetBitrate" // amf_int64; default = depends on USAGE; Target bit rate in bits @@ -178,25 +200,28 @@ enum AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_ENUM #define AMF_VIDEO_ENCODER_HEVC_MAX_AU_SIZE L"HevcMaxAUSize" // amf_int64; default = 60; Max AU Size in bits -#define AMF_VIDEO_ENCODER_HEVC_MIN_QP_I L"HevcMinQP_I" // amf_int64; default = depends on USAGE; Min QP; range = -#define AMF_VIDEO_ENCODER_HEVC_MAX_QP_I L"HevcMaxQP_I" // amf_int64; default = depends on USAGE; Max QP; range = -#define AMF_VIDEO_ENCODER_HEVC_MIN_QP_P L"HevcMinQP_P" // amf_int64; default = depends on USAGE; Min QP; range = -#define AMF_VIDEO_ENCODER_HEVC_MAX_QP_P L"HevcMaxQP_P" // amf_int64; default = depends on USAGE; Max QP; range = +#define AMF_VIDEO_ENCODER_HEVC_MIN_QP_I L"HevcMinQP_I" // amf_int64; default = depends on USAGE; Min QP; range = +#define AMF_VIDEO_ENCODER_HEVC_MAX_QP_I L"HevcMaxQP_I" // amf_int64; default = depends on USAGE; Max QP; range = +#define AMF_VIDEO_ENCODER_HEVC_MIN_QP_P L"HevcMinQP_P" // amf_int64; default = depends on USAGE; Min QP; range = +#define AMF_VIDEO_ENCODER_HEVC_MAX_QP_P L"HevcMaxQP_P" // amf_int64; default = depends on USAGE; Max QP; range = #define AMF_VIDEO_ENCODER_HEVC_QP_I L"HevcQP_I" // amf_int64; default = 26; P-frame QP; range = 0-51 #define AMF_VIDEO_ENCODER_HEVC_QP_P L"HevcQP_P" // amf_int64; default = 26; P-frame QP; range = 0-51 -#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_SKIP_FRAME_ENABLE L"HevcRateControlSkipFrameEnable" // bool; default = depends on USAGE; Rate Control Based Frame Skip +#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_SKIP_FRAME_ENABLE L"HevcRateControlSkipFrameEnable" // bool; default = depends on USAGE; Rate Control Based Frame Skip // color conversion -#define AMF_VIDEO_ENCODER_HEVC_INPUT_HDR_METADATA L"HevcInHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL -#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_HDR_METADATA L"HevcOutHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +#define AMF_VIDEO_ENCODER_HEVC_INPUT_HDR_METADATA L"HevcInHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +//#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_HDR_METADATA L"HevcOutHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL + +// SVC +#define AMF_VIDEO_ENCODER_HEVC_NUM_TEMPORAL_LAYERS L"HevcNumOfTemporalLayers" // amf_int64; default = 1; Number of temporal layers. Can be changed at any time but the change is only applied when encoding next base layer frame. // DPB management -#define AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE L"HevcPicTransferMode" // amf_int64(AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_ENUM); default = AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_OFF - whether to exchange reference/reconstructed pic between encoder and application +#define AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE L"HevcPicTransferMode" // amf_int64(AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_ENUM); default = AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_OFF - whether to exchange reference/reconstructed pic between encoder and application // misc -#define AMF_VIDEO_ENCODER_HEVC_QUERY_TIMEOUT L"HevcQueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. +#define AMF_VIDEO_ENCODER_HEVC_QUERY_TIMEOUT L"HevcQueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. // Per-submittion properties - can be set on input surface interface #define AMF_VIDEO_ENCODER_HEVC_END_OF_SEQUENCE L"HevcEndOfSequence" // bool; default = false; generate end of sequence @@ -205,24 +230,64 @@ enum AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_ENUM #define AMF_VIDEO_ENCODER_HEVC_INSERT_HEADER L"HevcInsertHeader" // bool; default = false; insert header(SPS, PPS, VPS) #define AMF_VIDEO_ENCODER_HEVC_MARK_CURRENT_WITH_LTR_INDEX L"HevcMarkCurrentWithLTRIndex" // amf_int64; default = N/A; Mark current frame with LTR index -#define AMF_VIDEO_ENCODER_HEVC_FORCE_LTR_REFERENCE_BITFIELD L"HevcForceLTRReferenceBitfield"// amf_int64; default = 0; force LTR bit-field +#define AMF_VIDEO_ENCODER_HEVC_FORCE_LTR_REFERENCE_BITFIELD L"HevcForceLTRReferenceBitfield"// amf_int64; default = 0; force LTR bit-field #define AMF_VIDEO_ENCODER_HEVC_ROI_DATA L"HevcROIData" // 2D AMFSurface, surface format: AMF_SURFACE_GRAY32 #define AMF_VIDEO_ENCODER_HEVC_REFERENCE_PICTURE L"HevcReferencePicture" // AMFInterface(AMFSurface); surface used for frame injection +#define AMF_VIDEO_ENCODER_HEVC_PSNR_FEEDBACK L"HevcPSNRFeedback" // amf_bool; default = false; Signal encoder to calculate PSNR score +#define AMF_VIDEO_ENCODER_HEVC_SSIM_FEEDBACK L"HevcSSIMFeedback" // amf_bool; default = false; Signal encoder to calculate SSIM score +#define AMF_VIDEO_ENCODER_HEVC_STATISTICS_FEEDBACK L"HevcStatisticsFeedback" // amf_bool; default = false; Signal encoder to collect and feedback encoder statistics +#define AMF_VIDEO_ENCODER_HEVC_BLOCK_QP_FEEDBACK L"HevcBlockQpFeedback" // amf_bool; default = false; Signal encoder to collect and feedback block level QP values // Properties set by encoder on output buffer interface #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_DATA_TYPE L"HevcOutputDataType" // amf_int64(AMF_VIDEO_ENCODER_HEVC_OUTPUT_DATA_TYPE_ENUM); default = N/A #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_MARKED_LTR_INDEX L"HevcMarkedLTRIndex" // amf_int64; default = -1; Marked LTR index -#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_REFERENCED_LTR_INDEX_BITFIELD L"HevcReferencedLTRIndexBitfield"// amf_int64; default = 0; referenced LTR bit-field +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_REFERENCED_LTR_INDEX_BITFIELD L"HevcReferencedLTRIndexBitfield"// amf_int64; default = 0; referenced LTR bit-field +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_TEMPORAL_LAYER L"HevcOutputTemporalLayer" // amf_int64; Temporal layer #define AMF_VIDEO_ENCODER_HEVC_RECONSTRUCTED_PICTURE L"HevcReconstructedPicture" // AMFInterface(AMFSurface); returns reconstructed picture as an AMFSurface attached to the output buffer as property AMF_VIDEO_ENCODER_RECONSTRUCTED_PICTURE of AMFInterface type +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PSNR_Y L"PSNRY" // double; PSNR Y +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PSNR_U L"PSNRU" // double; PSNR U +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PSNR_V L"PSNRV" // double; PSNR V +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PSNR_ALL L"PSNRALL" // double; PSNR All +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SSIM_Y L"SSIMY" // double; SSIM Y +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SSIM_U L"SSIMU" // double; SSIM U +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SSIM_V L"SSIMV" // double; SSIM V +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SSIM_ALL L"SSIMALL" // double; SSIM ALL + + // Encoder statistics feedback +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_FRAME_QP L"HevcStatisticsFeedbackFrameQP" // amf_int64; Rate control base frame/initial QP +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_AVERAGE_QP L"HevcStatisticsFeedbackAvgQP" // amf_int64; Average QP of all encoded CTBs in a picture. Value may be different from the one reported by bitstream analyzer when there are skipped CTBs. +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_MAX_QP L"HevcStatisticsFeedbackMaxQP" // amf_int64; Max QP among all encoded CTBs in a picture. Value may be different from the one reported by bitstream analyzer when there are skipped CTBs. +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_MIN_QP L"HevcStatisticsFeedbackMinQP" // amf_int64; Min QP among all encoded CTBs in a picture. Value may be different from the one reported by bitstream analyzer when there are skipped CTBs. +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PIX_NUM_INTRA L"HevcStatisticsFeedbackPixNumIntra" // amf_int64; Number of the intra encoded pixels +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PIX_NUM_INTER L"HevcStatisticsFeedbackPixNumInter" // amf_int64; Number of the inter encoded pixels +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PIX_NUM_SKIP L"HevcStatisticsFeedbackPixNumSkip" // amf_int64; Number of the skip mode pixels +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_RESIDUAL L"HevcStatisticsFeedbackBitcountResidual" // amf_int64; The bit count that corresponds to residual data +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_MOTION L"HevcStatisticsFeedbackBitcountMotion" // amf_int64; The bit count that corresponds to motion vectors +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_INTER L"HevcStatisticsFeedbackBitcountInter" // amf_int64; The bit count that are assigned to inter CTBs +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_INTRA L"HevcStatisticsFeedbackBitcountIntra" // amf_int64; The bit count that are assigned to intra CTBs +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_ALL_MINUS_HEADER L"HevcStatisticsFeedbackBitcountAllMinusHeader" // amf_int64; The bit count of the bitstream excluding header +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_MV_X L"HevcStatisticsFeedbackMvX" // amf_int64; Accumulated absolute values of horizontal MV's +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_MV_Y L"HevcStatisticsFeedbackMvY" // amf_int64; Accumulated absolute values of vertical MV's +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_RD_COST_FINAL L"HevcStatisticsFeedbackRdCostFinal" // amf_int64; Frame level final RD cost for full encoding +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_RD_COST_INTRA L"HevcStatisticsFeedbackRdCostIntra" // amf_int64; Frame level intra RD cost for full encoding +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_RD_COST_INTER L"HevcStatisticsFeedbackRdCostInter" // amf_int64; Frame level inter RD cost for full encoding +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SAD_FINAL L"HevcStatisticsFeedbackSadFinal" // amf_int64; Frame level final SAD for full encoding +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SAD_INTRA L"HevcStatisticsFeedbackSadIntra" // amf_int64; Frame level intra SAD for full encoding +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SAD_INTER L"HevcStatisticsFeedbackSadInter" // amf_int64; Frame level inter SAD for full encoding + + // Encoder block level feedback +#define AMF_VIDEO_ENCODER_HEVC_BLOCK_QP_MAP L"HevcBlockQpMap" // AMFInterface(AMFSurface); AMFSurface of format AMF_SURFACE_GRAY32 containing block level QP values // HEVC Encoder capabilities - exposed in AMFCaps interface #define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_BITRATE L"HevcMaxBitrate" // amf_int64; Maximum bit rate in bits -#define AMF_VIDEO_ENCODER_HEVC_CAP_NUM_OF_STREAMS L"HevcNumOfStreams" // amf_int64; maximum number of encode streams supported +#define AMF_VIDEO_ENCODER_HEVC_CAP_NUM_OF_STREAMS L"HevcNumOfStreams" // amf_int64; maximum number of encode streams supported #define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_PROFILE L"HevcMaxProfile" // amf_int64(AMF_VIDEO_ENCODER_HEVC_PROFILE_ENUM) -#define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_TIER L"HevcMaxTier" // amf_int64(AMF_VIDEO_ENCODER_HEVC_TIER_ENUM) maximum profile tier +#define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_TIER L"HevcMaxTier" // amf_int64(AMF_VIDEO_ENCODER_HEVC_TIER_ENUM) maximum profile tier #define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_LEVEL L"HevcMaxLevel" // amf_int64 maximum profile level #define AMF_VIDEO_ENCODER_HEVC_CAP_MIN_REFERENCE_FRAMES L"HevcMinReferenceFrames" // amf_int64 minimum number of reference frames #define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_REFERENCE_FRAMES L"HevcMaxReferenceFrames" // amf_int64 maximum number of reference frames +#define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_TEMPORAL_LAYERS L"HevcMaxTemporalLayers" // amf_int64 maximum number of temporal layers +#define AMF_VIDEO_ENCODER_HEVC_CAP_NUM_OF_HW_INSTANCES L"HevcNumOfHwInstances" // amf_int64 number of HW encoder instances #define AMF_VIDEO_ENCODER_HEVC_CAP_COLOR_CONVERSION L"HevcColorConversion" // amf_int64(AMF_ACCELERATION_TYPE) - type of supported color conversion. default AMF_ACCEL_GPU #define AMF_VIDEO_ENCODER_HEVC_CAP_PRE_ANALYSIS L"HevcPreAnalysis" // amf_bool - pre analysis module is available for HEVC UVE encoder, n/a for the other encoders #define AMF_VIDEO_ENCODER_HEVC_CAP_ROI L"HevcROIMap" // amf_bool - ROI map support is available for HEVC UVE encoder, n/a for the other encoders @@ -233,22 +298,4 @@ enum AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_ENUM // properties set on AMFComponent to control component creation #define AMF_VIDEO_ENCODER_HEVC_MEMORY_TYPE L"HevcEncoderMemoryType" // amf_int64(AMF_MEMORY_TYPE) , default is AMF_MEMORY_UNKNOWN, Values : AMF_MEMORY_DX11, AMF_MEMORY_DX9, AMF_MEMORY_UNKNOWN (auto) -// properties set on a frame to retrieve encoder statistics -#define AMF_VIDEO_ENCODER_HEVC_STATISTICS_FEEDBACK L"HevcStatisticsFeedback" // amf_bool; default = false; Signal encoder to collect and feedback statistics - -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_FRAME_QP L"HevcStatisticsFeedbackFrameQP" // amf_uin32; Rate control base frame QP -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_AVERAGE_QP L"HevcStatisticsFeedbackAvgQP" // amf_uin32; Average QP of all encoded CTBs in a picture -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_MAX_QP L"HevcStatisticsFeedbackMaxQP" // amf_uin32; Max QP among all encoded CTBs in a picture -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_MIN_QP L"HevcStatisticsFeedbackMinQP" // amf_uin32; Min QP among all encoded CTBs in a picture -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PIX_NUM_INTRA L"HevcStatisticsFeedbackPixNumIntra" // amf_uin32; Number of the intra encoded pixels -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PIX_NUM_INTER L"HevcStatisticsFeedbackPixNumInter" // amf_uin32; Number of the inter encoded pixels -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PIX_NUM_SKIP L"HevcStatisticsFeedbackPixNumSkip" // amf_uin32; Number of the skip mode pixels -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_RESIDUAL L"HevcStatisticsFeedbackBitcountResidual" // amf_uin32; The bit count that corresponds to residual data -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_MOTION L"HevcStatisticsFeedbackBitcountMotion" // amf_uin32; The bit count that corresponds to motion vectors -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_INTER L"HevcStatisticsFeedbackBitcountInter" // amf_uin32; The bit count that are assigned to inter CTBs -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_INTRA L"HevcStatisticsFeedbackBitcountIntra" // amf_uin32; The bit count that are assigned to intra CTBs -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_BITCOUNT_ALL_MINUS_HEADER L"HevcStatisticsFeedbackBitcountAllMinusHeader" // amf_uin32; The bit count of the bitstream excluding header -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_MV_X L"HevcStatisticsFeedbackMvX" // amf_uin32; Accumulated absolute values of horizontal MV’s -#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_MV_Y L"HevcStatisticsFeedbackMvY" // amf_uin32; Accumulated absolute values of vertical MV’s - #endif //#ifndef AMF_VideoEncoderHEVC_h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h similarity index 73% rename from alvr/server/cpp/platform/win32/amf/include/components/VideoEncoderVCE.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h index b2616710a1..7cb839c094 100644 --- a/alvr/server/cpp/platform/win32/amf/include/components/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -47,10 +47,13 @@ enum AMF_VIDEO_ENCODER_USAGE_ENUM { - AMF_VIDEO_ENCODER_USAGE_TRANSCONDING = 0, + AMF_VIDEO_ENCODER_USAGE_TRANSCONDING = 0, // kept for backwards compatability + AMF_VIDEO_ENCODER_USAGE_TRANSCODING = 0, // fixed typo AMF_VIDEO_ENCODER_USAGE_ULTRA_LOW_LATENCY, AMF_VIDEO_ENCODER_USAGE_LOW_LATENCY, - AMF_VIDEO_ENCODER_USAGE_WEBCAM + AMF_VIDEO_ENCODER_USAGE_WEBCAM, + AMF_VIDEO_ENCODER_USAGE_HIGH_QUALITY, + AMF_VIDEO_ENCODER_USAGE_LOW_LATENCY_HIGH_QUALITY }; enum AMF_VIDEO_ENCODER_PROFILE_ENUM @@ -76,7 +79,9 @@ enum AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_ENUM AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR, - AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_QUALITY_VBR + AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_QUALITY_VBR, + AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_HIGH_QUALITY_VBR, + AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_HIGH_QUALITY_CBR }; enum AMF_VIDEO_ENCODER_QUALITY_PRESET_ENUM @@ -132,50 +137,61 @@ enum AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_ENUM AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_ON }; +enum AMF_VIDEO_ENCODER_LTR_MODE_ENUM +{ + AMF_VIDEO_ENCODER_LTR_MODE_RESET_UNUSED = 0, + AMF_VIDEO_ENCODER_LTR_MODE_KEEP_UNUSED +}; -// Static properties - can be set before Init() +// Static properties - can be set before Init() +#define AMF_VIDEO_ENCODER_INSTANCE_INDEX L"EncoderInstance" // amf_int64; selected HW instance idx #define AMF_VIDEO_ENCODER_FRAMESIZE L"FrameSize" // AMFSize; default = 0,0; Frame size -#define AMF_VIDEO_ENCODER_FRAMERATE L"FrameRate" // AMFRate; default = depends on usage; Frame Rate #define AMF_VIDEO_ENCODER_EXTRADATA L"ExtraData" // AMFInterface* - > AMFBuffer*; SPS/PPS buffer in Annex B format - read-only -#define AMF_VIDEO_ENCODER_USAGE L"Usage" // amf_int64(AMF_VIDEO_ENCODER_USAGE_ENUM); default = N/A; Encoder usage type. fully configures parameter set. +#define AMF_VIDEO_ENCODER_USAGE L"Usage" // amf_int64(AMF_VIDEO_ENCODER_USAGE_ENUM); default = N/A; Encoder usage type. fully configures parameter set. #define AMF_VIDEO_ENCODER_PROFILE L"Profile" // amf_int64(AMF_VIDEO_ENCODER_PROFILE_ENUM) ; default = AMF_VIDEO_ENCODER_PROFILE_MAIN; H264 profile #define AMF_VIDEO_ENCODER_PROFILE_LEVEL L"ProfileLevel" // amf_int64; default = 42; H264 profile level #define AMF_VIDEO_ENCODER_MAX_LTR_FRAMES L"MaxOfLTRFrames" // amf_int64; default = 0; Max number of LTR frames +#define AMF_VIDEO_ENCODER_LTR_MODE L"LTRMode" // amf_int64(AMF_VIDEO_ENCODER_LTR_MODE_ENUM); default = AMF_VIDEO_ENCODER_LTR_MODE_RESET_UNUSED; remove/keep unused LTRs (not specified in property AMF_VIDEO_ENCODER_FORCE_LTR_REFERENCE_BITFIELD) #define AMF_VIDEO_ENCODER_SCANTYPE L"ScanType" // amf_int64(AMF_VIDEO_ENCODER_SCANTYPE_ENUM); default = AMF_VIDEO_ENCODER_SCANTYPE_PROGRESSIVE; indicates input stream type #define AMF_VIDEO_ENCODER_MAX_NUM_REFRAMES L"MaxNumRefFrames" // amf_int64; Maximum number of reference frames +#define AMF_VIDEO_ENCODER_MAX_CONSECUTIVE_BPICTURES L"MaxConsecutiveBPictures" // amf_int64; Maximum number of consecutive B Pictures +#define AMF_VIDEO_ENCODER_ADAPTIVE_MINIGOP L"AdaptiveMiniGOP" // bool; default = false; Disable/Enable Adaptive MiniGOP #define AMF_VIDEO_ENCODER_ASPECT_RATIO L"AspectRatio" // AMFRatio; default = 1, 1 -#define AMF_VIDEO_ENCODER_FULL_RANGE_COLOR L"FullRangeColor" // bool; default = false; inidicates that YUV input is (0,255) +#define AMF_VIDEO_ENCODER_FULL_RANGE_COLOR L"FullRangeColor" // bool; default = false; inidicates that YUV input is (0,255) #define AMF_VIDEO_ENCODER_LOWLATENCY_MODE L"LowLatencyInternal" // bool; default = false, enables low latency mode and POC mode 2 in the encoder #define AMF_VIDEO_ENCODER_PRE_ANALYSIS_ENABLE L"EnablePreAnalysis" // bool; default = false; enables the pre-analysis module. Currently only works in AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR mode. Refer to AMF Video PreAnalysis API reference for more details. -#define AMF_VIDEO_ENCODER_PREENCODE_ENABLE L"RateControlPreanalysisEnable" // amf_int64(AMF_VIDEO_ENCODER_PREENCODE_MODE_ENUM); default = AMF_VIDEO_ENCODER_PREENCODE_DISABLED; enables pre-encode assisted rate control +#define AMF_VIDEO_ENCODER_PREENCODE_ENABLE L"RateControlPreanalysisEnable" // amf_int64(AMF_VIDEO_ENCODER_PREENCODE_MODE_ENUM); default = AMF_VIDEO_ENCODER_PREENCODE_DISABLED; enables pre-encode assisted rate control #define AMF_VIDEO_ENCODER_RATE_CONTROL_PREANALYSIS_ENABLE L"RateControlPreanalysisEnable" // amf_int64(AMF_VIDEO_ENCODER_PREENCODE_MODE_ENUM); default = AMF_VIDEO_ENCODER_PREENCODE_DISABLED; enables pre-encode assisted rate control. Deprecated, please use AMF_VIDEO_ENCODER_PREENCODE_ENABLE instead. -#ifdef _MSC_VER +#define AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD L"RateControlMethod" // amf_int64(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_ENUM); default = depends on USAGE; Rate Control Method +#define AMF_VIDEO_ENCODER_QVBR_QUALITY_LEVEL L"QvbrQualityLevel" // amf_int64; default = 23; QVBR quality level; range = 1-51 +#define AMF_VIDEO_ENCODER_MAX_NUM_TEMPORAL_LAYERS L"MaxNumOfTemporalLayers" // amf_int64; default = 1; Max number of temporal layers. +#if !defined(__GNUC__) && !defined(__clang__) #pragma deprecated("AMF_VIDEO_ENCODER_RATE_CONTROL_PREANALYSIS_ENABLE") #endif // Quality preset property -#define AMF_VIDEO_ENCODER_QUALITY_PRESET L"QualityPreset" // amf_int64(AMF_VIDEO_ENCODER_QUALITY_PRESET_ENUM); default = depends on USAGE; Quality Preset +#define AMF_VIDEO_ENCODER_QUALITY_PRESET L"QualityPreset" // amf_int64(AMF_VIDEO_ENCODER_QUALITY_PRESET_ENUM); default = depends on USAGE; Quality Preset // color conversion #define AMF_VIDEO_ENCODER_COLOR_BIT_DEPTH L"ColorBitDepth" // amf_int64(AMF_COLOR_BIT_DEPTH_ENUM); default = AMF_COLOR_BIT_DEPTH_8 #define AMF_VIDEO_ENCODER_INPUT_COLOR_PROFILE L"InColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size -#define AMF_VIDEO_ENCODER_INPUT_TRANSFER_CHARACTERISTIC L"InColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 See VideoDecoderUVD.h for enum -#define AMF_VIDEO_ENCODER_INPUT_COLOR_PRIMARIES L"InColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_INPUT_TRANSFER_CHARACTERISTIC L"InColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum +#define AMF_VIDEO_ENCODER_INPUT_COLOR_PRIMARIES L"InColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.1 See ColorSpace.h for enum #define AMF_VIDEO_ENCODER_INPUT_HDR_METADATA L"InHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL #define AMF_VIDEO_ENCODER_OUTPUT_COLOR_PROFILE L"OutColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size -#define AMF_VIDEO_ENCODER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 § 7.2 See VideoDecoderUVD.h for enum -#define AMF_VIDEO_ENCODER_OUTPUT_COLOR_PRIMARIES L"OutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 § 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.2 See VideoDecoderUVD.h for enum +#define AMF_VIDEO_ENCODER_OUTPUT_COLOR_PRIMARIES L"OutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.1 See ColorSpace.h for enum #define AMF_VIDEO_ENCODER_OUTPUT_HDR_METADATA L"OutHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL // Dynamic properties - can be set at any time - - // Rate control properties + // Rate control properties +#define AMF_VIDEO_ENCODER_FRAMERATE L"FrameRate" // AMFRate; default = depends on usage; Frame Rate #define AMF_VIDEO_ENCODER_B_PIC_DELTA_QP L"BPicturesDeltaQP" // amf_int64; default = depends on USAGE; B-picture Delta #define AMF_VIDEO_ENCODER_REF_B_PIC_DELTA_QP L"ReferenceBPicturesDeltaQP"// amf_int64; default = depends on USAGE; Reference B-picture Delta @@ -197,8 +213,7 @@ enum AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_ENUM #define AMF_VIDEO_ENCODER_QP_B L"QPB" // amf_int64; default = 22; B-frame QP; range = 0-51 #define AMF_VIDEO_ENCODER_TARGET_BITRATE L"TargetBitrate" // amf_int64; default = depends on USAGE; Target bit rate in bits #define AMF_VIDEO_ENCODER_PEAK_BITRATE L"PeakBitrate" // amf_int64; default = depends on USAGE; Peak bit rate in bits -#define AMF_VIDEO_ENCODER_RATE_CONTROL_SKIP_FRAME_ENABLE L"RateControlSkipFrameEnable" // bool; default = depends on USAGE; Rate Control Based Frame Skip -#define AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD L"RateControlMethod" // amf_int64(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_ENUM); default = depends on USAGE; Rate Control Method +#define AMF_VIDEO_ENCODER_RATE_CONTROL_SKIP_FRAME_ENABLE L"RateControlSkipFrameEnable" // bool; default = depends on USAGE; Rate Control Based Frame Skip // Picture control properties #define AMF_VIDEO_ENCODER_HEADER_INSERTION_SPACING L"HeaderInsertionSpacing" // amf_int64; default = depends on USAGE; Header Insertion Spacing; range 0-1000 @@ -207,21 +222,21 @@ enum AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_ENUM #define AMF_VIDEO_ENCODER_B_REFERENCE_ENABLE L"BReferenceEnable" // bool; default = true; Enable Refrence to B-frames #define AMF_VIDEO_ENCODER_IDR_PERIOD L"IDRPeriod" // amf_int64; default = depends on USAGE; IDR Period in frames #define AMF_VIDEO_ENCODER_INTRA_REFRESH_NUM_MBS_PER_SLOT L"IntraRefreshMBsNumberPerSlot" // amf_int64; default = depends on USAGE; Intra Refresh MBs Number Per Slot in Macroblocks -#define AMF_VIDEO_ENCODER_SLICES_PER_FRAME L"SlicesPerFrame" // amf_int64; default = 1; Number of slices Per Frame +#define AMF_VIDEO_ENCODER_SLICES_PER_FRAME L"SlicesPerFrame" // amf_int64; default = 1; Number of slices Per Frame #define AMF_VIDEO_ENCODER_CABAC_ENABLE L"CABACEnable" // amf_int64(AMF_VIDEO_ENCODER_CODING_ENUM) default = AMF_VIDEO_ENCODER_UNDEFINED // Motion estimation -#define AMF_VIDEO_ENCODER_MOTION_HALF_PIXEL L"HalfPixel" // bool; default= true; Half Pixel +#define AMF_VIDEO_ENCODER_MOTION_HALF_PIXEL L"HalfPixel" // bool; default= true; Half Pixel #define AMF_VIDEO_ENCODER_MOTION_QUARTERPIXEL L"QuarterPixel" // bool; default= true; Quarter Pixel // SVC -#define AMF_VIDEO_ENCODER_NUM_TEMPORAL_ENHANCMENT_LAYERS L"NumOfTemporalEnhancmentLayers" // amf_int64; default = 0; range = 0, min(2, caps->GetMaxNumOfTemporalLayers()) number of temporal enhancment Layers (SVC) +#define AMF_VIDEO_ENCODER_NUM_TEMPORAL_ENHANCMENT_LAYERS L"NumOfTemporalEnhancmentLayers" // amf_int64; default = 1; range = 1-MaxTemporalLayers; Number of temporal Layers (SVC) // DPB management #define AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE L"PicTransferMode" // amf_int64(AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_ENUM); default = AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_OFF - whether to exchange reference/reconstructed pic between encoder and application // misc -#define AMF_VIDEO_ENCODER_QUERY_TIMEOUT L"QueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. +#define AMF_VIDEO_ENCODER_QUERY_TIMEOUT L"QueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. // Per-submittion properties - can be set on input surface interface #define AMF_VIDEO_ENCODER_END_OF_SEQUENCE L"EndOfSequence" // bool; default = false; generate end of sequence @@ -232,28 +247,67 @@ enum AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_ENUM #define AMF_VIDEO_ENCODER_INSERT_PPS L"InsertPPS" // bool; default = false; insert PPS #define AMF_VIDEO_ENCODER_PICTURE_STRUCTURE L"PictureStructure" // amf_int64(AMF_VIDEO_ENCODER_PICTURE_STRUCTURE_ENUM); default = AMF_VIDEO_ENCODER_PICTURE_STRUCTURE_FRAME; indicate picture type #define AMF_VIDEO_ENCODER_MARK_CURRENT_WITH_LTR_INDEX L"MarkCurrentWithLTRIndex" // //amf_int64; default = N/A; Mark current frame with LTR index -#define AMF_VIDEO_ENCODER_FORCE_LTR_REFERENCE_BITFIELD L"ForceLTRReferenceBitfield"// amf_int64; default = 0; force LTR bit-field +#define AMF_VIDEO_ENCODER_FORCE_LTR_REFERENCE_BITFIELD L"ForceLTRReferenceBitfield"// amf_int64; default = 0; force LTR bit-field #define AMF_VIDEO_ENCODER_ROI_DATA L"ROIData" // 2D AMFSurface, surface format: AMF_SURFACE_GRAY32 #define AMF_VIDEO_ENCODER_REFERENCE_PICTURE L"ReferencePicture" // AMFInterface(AMFSurface); surface used for frame injection +#define AMF_VIDEO_ENCODER_PSNR_FEEDBACK L"PSNRFeedback" // amf_bool; default = false; Signal encoder to calculate PSNR score +#define AMF_VIDEO_ENCODER_SSIM_FEEDBACK L"SSIMFeedback" // amf_bool; default = false; Signal encoder to calculate SSIM score +#define AMF_VIDEO_ENCODER_STATISTICS_FEEDBACK L"StatisticsFeedback" // amf_bool; default = false; Signal encoder to collect and feedback statistics +#define AMF_VIDEO_ENCODER_BLOCK_QP_FEEDBACK L"BlockQpFeedback" // amf_bool; default = false; Signal encoder to collect and feedback block level QP values + // properties set by encoder on output buffer interface #define AMF_VIDEO_ENCODER_OUTPUT_DATA_TYPE L"OutputDataType" // amf_int64(AMF_VIDEO_ENCODER_OUTPUT_DATA_TYPE_ENUM); default = N/A #define AMF_VIDEO_ENCODER_OUTPUT_MARKED_LTR_INDEX L"MarkedLTRIndex" //amf_int64; default = -1; Marked LTR index -#define AMF_VIDEO_ENCODER_OUTPUT_REFERENCED_LTR_INDEX_BITFIELD L"ReferencedLTRIndexBitfield" // amf_int64; default = 0; referenced LTR bit-field +#define AMF_VIDEO_ENCODER_OUTPUT_REFERENCED_LTR_INDEX_BITFIELD L"ReferencedLTRIndexBitfield" // amf_int64; default = 0; referenced LTR bit-field +#define AMF_VIDEO_ENCODER_OUTPUT_TEMPORAL_LAYER L"OutputTemporalLayer" // amf_int64; Temporal layer +#define AMF_VIDEO_ENCODER_PRESENTATION_TIME_STAMP L"PresentationTimeStamp" // amf_int64; Presentation time stamp (PTS) #define AMF_VIDEO_ENCODER_RECONSTRUCTED_PICTURE L"ReconstructedPicture" // AMFInterface(AMFSurface); returns reconstructed picture as an AMFSurface attached to the output buffer as property AMF_VIDEO_ENCODER_RECONSTRUCTED_PICTURE of AMFInterface type - +#define AMF_VIDEO_ENCODER_STATISTIC_PSNR_Y L"PSNRY" // double; PSNR Y +#define AMF_VIDEO_ENCODER_STATISTIC_PSNR_U L"PSNRU" // double; PSNR U +#define AMF_VIDEO_ENCODER_STATISTIC_PSNR_V L"PSNRV" // double; PSNR V +#define AMF_VIDEO_ENCODER_STATISTIC_PSNR_ALL L"PSNRALL" // double; PSNR All +#define AMF_VIDEO_ENCODER_STATISTIC_SSIM_Y L"SSIMY" // double; SSIM Y +#define AMF_VIDEO_ENCODER_STATISTIC_SSIM_U L"SSIMU" // double; SSIM U +#define AMF_VIDEO_ENCODER_STATISTIC_SSIM_V L"SSIMV" // double; SSIM V +#define AMF_VIDEO_ENCODER_STATISTIC_SSIM_ALL L"SSIMALL" // double; SSIM ALL + + // Encoder statistics feedback +#define AMF_VIDEO_ENCODER_STATISTIC_FRAME_QP L"StatisticsFeedbackFrameQP" // amf_int64; Rate control base frame/initial QP +#define AMF_VIDEO_ENCODER_STATISTIC_AVERAGE_QP L"StatisticsFeedbackAvgQP" // amf_int64; Average calculated QP of all encoded MBs in a picture. Value may be different from the one reported by bitstream analyzer when there are skipped MBs. +#define AMF_VIDEO_ENCODER_STATISTIC_MAX_QP L"StatisticsFeedbackMaxQP" // amf_int64; Max calculated QP among all encoded MBs in a picture. Value may be different from the one reported by bitstream analyzer when there are skipped MBs. +#define AMF_VIDEO_ENCODER_STATISTIC_MIN_QP L"StatisticsFeedbackMinQP" // amf_int64; Min calculated QP among all encoded MBs in a picture. Value may be different from the one reported by bitstream analyzer when there are skipped MBs. +#define AMF_VIDEO_ENCODER_STATISTIC_PIX_NUM_INTRA L"StatisticsFeedbackPixNumIntra" // amf_int64; Number of the intra encoded pixels +#define AMF_VIDEO_ENCODER_STATISTIC_PIX_NUM_INTER L"StatisticsFeedbackPixNumInter" // amf_int64; Number of the inter encoded pixels +#define AMF_VIDEO_ENCODER_STATISTIC_PIX_NUM_SKIP L"StatisticsFeedbackPixNumSkip" // amf_int64; Number of the skip mode pixels +#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_RESIDUAL L"StatisticsFeedbackBitcountResidual" // amf_int64; The bit count that corresponds to residual data +#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_MOTION L"StatisticsFeedbackBitcountMotion" // amf_int64; The bit count that corresponds to motion vectors +#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_INTER L"StatisticsFeedbackBitcountInter" // amf_int64; The bit count that are assigned to inter MBs +#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_INTRA L"StatisticsFeedbackBitcountIntra" // amf_int64; The bit count that are assigned to intra MBs +#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_ALL_MINUS_HEADER L"StatisticsFeedbackBitcountAllMinusHeader" // amf_int64; The bit count of the bitstream excluding header +#define AMF_VIDEO_ENCODER_STATISTIC_MV_X L"StatisticsFeedbackMvX" // amf_int64; Accumulated absolute values of horizontal MV's +#define AMF_VIDEO_ENCODER_STATISTIC_MV_Y L"StatisticsFeedbackMvY" // amf_int64; Accumulated absolute values of vertical MV's +#define AMF_VIDEO_ENCODER_STATISTIC_RD_COST_FINAL L"StatisticsFeedbackRdCostFinal" // amf_int64; Frame level final RD cost for full encoding +#define AMF_VIDEO_ENCODER_STATISTIC_RD_COST_INTRA L"StatisticsFeedbackRdCostIntra" // amf_int64; Frame level intra RD cost for full encoding +#define AMF_VIDEO_ENCODER_STATISTIC_RD_COST_INTER L"StatisticsFeedbackRdCostInter" // amf_int64; Frame level inter RD cost for full encoding +#define AMF_VIDEO_ENCODER_STATISTIC_SATD_FINAL L"StatisticsFeedbackSatdFinal" // amf_int64; Frame level final SATD for full encoding +#define AMF_VIDEO_ENCODER_STATISTIC_SATD_INTRA L"StatisticsFeedbackSatdIntra" // amf_int64; Frame level intra SATD for full encoding +#define AMF_VIDEO_ENCODER_STATISTIC_SATD_INTER L"StatisticsFeedbackSatdInter" // amf_int64; Frame level inter SATD for full encoding + + // Encoder block level feedback +#define AMF_VIDEO_ENCODER_BLOCK_QP_MAP L"BlockQpMap" // AMFInterface(AMFSurface); AMFSurface of format AMF_SURFACE_GRAY32 containing block level QP values #define AMF_VIDEO_ENCODER_HDCP_COUNTER L"HDCPCounter" // const void* // Properties for multi-instance cloud gaming -#define AMF_VIDEO_ENCODER_MAX_INSTANCES L"EncoderMaxInstances" // amf_uint32; default = 1; max number of encoder instances -#define AMF_VIDEO_ENCODER_MULTI_INSTANCE_MODE L"MultiInstanceMode" // bool; default = false; -#define AMF_VIDEO_ENCODER_CURRENT_QUEUE L"MultiInstanceCurrentQueue"// amf_uin32; default = 0; +#define AMF_VIDEO_ENCODER_MAX_INSTANCES L"EncoderMaxInstances" // deprecated. amf_int64; default = 1; max number of encoder instances +#define AMF_VIDEO_ENCODER_MULTI_INSTANCE_MODE L"MultiInstanceMode" // deprecated. bool; default = false; +#define AMF_VIDEO_ENCODER_CURRENT_QUEUE L"MultiInstanceCurrentQueue"// deprecated. amf_int64; default = 0; // VCE Encoder capabilities - exposed in AMFCaps interface #define AMF_VIDEO_ENCODER_CAP_MAX_BITRATE L"MaxBitrate" // amf_int64; Maximum bit rate in bits -#define AMF_VIDEO_ENCODER_CAP_NUM_OF_STREAMS L"NumOfStreams" // amf_int64; maximum number of encode streams supported +#define AMF_VIDEO_ENCODER_CAP_NUM_OF_STREAMS L"NumOfStreams" // amf_int64; maximum number of encode streams supported #define AMF_VIDEO_ENCODER_CAP_MAX_PROFILE L"MaxProfile" // AMF_VIDEO_ENCODER_PROFILE_ENUM #define AMF_VIDEO_ENCODER_CAP_MAX_LEVEL L"MaxLevel" // amf_int64 maximum profile level #define AMF_VIDEO_ENCODER_CAP_BFRAMES L"BFrames" // bool is B-Frames supported @@ -272,22 +326,4 @@ enum AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_ENUM // properties set on AMFComponent to control component creation #define AMF_VIDEO_ENCODER_MEMORY_TYPE L"EncoderMemoryType" // amf_int64(AMF_MEMORY_TYPE) , default is AMF_MEMORY_UNKNOWN, Values : AMF_MEMORY_DX11, AMF_MEMORY_DX9, AMF_MEMORY_VULKAN or AMF_MEMORY_UNKNOWN (auto) -// properties set on a frame to retrieve encoder statistics -#define AMF_VIDEO_ENCODER_STATISTICS_FEEDBACK L"StatisticsFeedback" // amf_bool; default = false; Signal encoder to collect and feedback statistics - -#define AMF_VIDEO_ENCODER_STATISTIC_FRAME_QP L"StatisticsFeedbackFrameQP" // amf_uin32; Rate control base frame QP -#define AMF_VIDEO_ENCODER_STATISTIC_AVERAGE_QP L"StatisticsFeedbackAvgQP" // amf_uin32; Average QP of all encoded CTBs in a picture -#define AMF_VIDEO_ENCODER_STATISTIC_MAX_QP L"StatisticsFeedbackMaxQP" // amf_uin32; Max QP among all encoded CTBs in a picture -#define AMF_VIDEO_ENCODER_STATISTIC_MIN_QP L"StatisticsFeedbackMinQP" // amf_uin32; Min QP among all encoded CTBs in a picture -#define AMF_VIDEO_ENCODER_STATISTIC_PIX_NUM_INTRA L"StatisticsFeedbackPixNumIntra" // amf_uin32; Number of the intra encoded pixels -#define AMF_VIDEO_ENCODER_STATISTIC_PIX_NUM_INTER L"StatisticsFeedbackPixNumInter" // amf_uin32; Number of the inter encoded pixels -#define AMF_VIDEO_ENCODER_STATISTIC_PIX_NUM_SKIP L"StatisticsFeedbackPixNumSkip" // amf_uin32; Number of the skip mode pixels -#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_RESIDUAL L"StatisticsFeedbackBitcountResidual" // amf_uin32; The bit count that corresponds to residual data -#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_MOTION L"StatisticsFeedbackBitcountMotion" // amf_uin32; The bit count that corresponds to motion vectors -#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_INTER L"StatisticsFeedbackBitcountInter" // amf_uin32; The bit count that are assigned to inter CTBs -#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_INTRA L"StatisticsFeedbackBitcountIntra" // amf_uin32; The bit count that are assigned to intra CTBs -#define AMF_VIDEO_ENCODER_STATISTIC_BITCOUNT_ALL_MINUS_HEADER L"StatisticsFeedbackBitcountAllMinusHeader" // amf_uin32; The bit count of the bitstream excluding header -#define AMF_VIDEO_ENCODER_STATISTIC_MV_X L"StatisticsFeedbackMvX" // amf_uin32; Accumulated absolute values of horizontal MV’s -#define AMF_VIDEO_ENCODER_STATISTIC_MV_Y L"StatisticsFeedbackMvY" // amf_uin32; Accumulated absolute values of vertical MV’s - #endif //#ifndef AMF_VideoEncoderVCE_h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/VideoStitch.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoStitch.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/VideoStitch.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/VideoStitch.h diff --git a/alvr/server/cpp/platform/win32/amf/include/components/ZCamLiveStream.h b/alvr/server/cpp/platform/win32/amf/public/include/components/ZCamLiveStream.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/components/ZCamLiveStream.h rename to alvr/server/cpp/platform/win32/amf/public/include/components/ZCamLiveStream.h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/AudioBuffer.h b/alvr/server/cpp/platform/win32/amf/public/include/core/AudioBuffer.h similarity index 80% rename from alvr/server/cpp/platform/win32/amf/include/core/AudioBuffer.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/AudioBuffer.h index 2d0f6f0ecc..5f07dc4723 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/AudioBuffer.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/AudioBuffer.h @@ -62,6 +62,48 @@ namespace amf AMFAF_LAST = AMFAF_DBLP, } AMF_AUDIO_FORMAT; + typedef enum AMF_AUDIO_CHANNEL_LAYOUT + { + AMFACL_SPEAKER_FRONT_LEFT = 0x1, + AMFACL_SPEAKER_FRONT_RIGHT = 0x2, + AMFACL_SPEAKER_FRONT_CENTER = 0x4, + AMFACL_SPEAKER_LOW_FREQUENCY = 0x8, + AMFACL_SPEAKER_BACK_LEFT = 0x10, + AMFACL_SPEAKER_BACK_RIGHT = 0x20, + AMFACL_SPEAKER_FRONT_LEFT_OF_CENTER = 0x40, + AMFACL_SPEAKER_FRONT_RIGHT_OF_CENTER = 0x80, + AMFACL_SPEAKER_BACK_CENTER = 0x100, + AMFACL_SPEAKER_SIDE_LEFT = 0x200, + AMFACL_SPEAKER_SIDE_RIGHT = 0x400, + AMFACL_SPEAKER_TOP_CENTER = 0x800, + AMFACL_SPEAKER_TOP_FRONT_LEFT = 0x1000, + AMFACL_SPEAKER_TOP_FRONT_CENTER = 0x2000, + AMFACL_SPEAKER_TOP_FRONT_RIGHT = 0x4000, + AMFACL_SPEAKER_TOP_BACK_LEFT = 0x8000, + AMFACL_SPEAKER_TOP_BACK_CENTER = 0x10000, + AMFACL_SPEAKER_TOP_BACK_RIGHT = 0x20000 + } AMF_AUDIO_CHANNEL_LAYOUT; + + // get the most common layout for a given number of speakers + inline int GetDefaultChannelLayout(int channels) + { + switch (channels) + { + case 1: + return (AMFACL_SPEAKER_FRONT_CENTER); + case 2: + return (AMFACL_SPEAKER_FRONT_LEFT | AMFACL_SPEAKER_FRONT_RIGHT); + case 4: + return (AMFACL_SPEAKER_FRONT_LEFT | AMFACL_SPEAKER_FRONT_RIGHT | AMFACL_SPEAKER_BACK_LEFT | AMFACL_SPEAKER_BACK_RIGHT); + case 6: + return (AMFACL_SPEAKER_FRONT_LEFT | AMFACL_SPEAKER_FRONT_RIGHT | AMFACL_SPEAKER_FRONT_CENTER | AMFACL_SPEAKER_LOW_FREQUENCY | AMFACL_SPEAKER_BACK_LEFT | AMFACL_SPEAKER_BACK_RIGHT); + case 8: + return (AMFACL_SPEAKER_FRONT_LEFT | AMFACL_SPEAKER_FRONT_RIGHT | AMFACL_SPEAKER_FRONT_CENTER | AMFACL_SPEAKER_LOW_FREQUENCY | AMFACL_SPEAKER_BACK_LEFT | AMFACL_SPEAKER_BACK_RIGHT | AMFACL_SPEAKER_FRONT_LEFT_OF_CENTER | AMFACL_SPEAKER_FRONT_RIGHT_OF_CENTER); + } + + return AMFACL_SPEAKER_FRONT_LEFT | AMFACL_SPEAKER_FRONT_RIGHT; + } + //---------------------------------------------------------------------------------------------- // AMFAudioBufferObserver interface - callback //---------------------------------------------------------------------------------------------- @@ -105,8 +147,16 @@ namespace amf virtual amf_size AMF_STD_CALL GetSize() = 0; // Observer management +#ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Woverloaded-virtual" +#endif virtual void AMF_STD_CALL AddObserver(AMFAudioBufferObserver* pObserver) = 0; virtual void AMF_STD_CALL RemoveObserver(AMFAudioBufferObserver* pObserver) = 0; +#ifdef __clang__ + #pragma clang diagnostic pop +#endif + }; //---------------------------------------------------------------------------------------------- diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Buffer.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h similarity index 98% rename from alvr/server/cpp/platform/win32/amf/include/core/Buffer.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h index 781e0aa381..15c2907813 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/Buffer.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h @@ -104,8 +104,16 @@ namespace amf virtual void* AMF_STD_CALL GetNative() = 0; // Observer management +#ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Woverloaded-virtual" +#endif virtual void AMF_STD_CALL AddObserver(AMFBufferObserver* pObserver) = 0; virtual void AMF_STD_CALL RemoveObserver(AMFBufferObserver* pObserver) = 0; +#ifdef __clang__ + #pragma clang diagnostic pop +#endif + }; //---------------------------------------------------------------------------------------------- // smart pointer diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Compute.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Compute.h similarity index 98% rename from alvr/server/cpp/platform/win32/amf/include/core/Compute.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Compute.h index 5709285fb1..bc34749f9f 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/Compute.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Compute.h @@ -79,7 +79,7 @@ namespace amf //---------------------------------------------------------------------------------------------- #define AMF_STRUCTURED_BUFFER_FORMAT L"StructuredBufferFormat" // amf_int64(AMF_CHANNEL_TYPE), default - AMF_CHANNEL_UNSIGNED_INT32; to be set on AMFBuffer objects #if defined(_WIN32) - AMF_WEAK GUID AMFStructuredBufferFormatGUID = { 0x90c5d674, 0xe90, 0x4181, 0xbd, 0xef, 0x26, 0x13, 0xc1, 0xdf, 0xa3, 0xbd }; // UINT(DXGI_FORMAT), default - DXGI_FORMAT_R32_UINT; to be set on ID3D11Buffer or ID3D11Texture2D objects when used natively + AMF_WEAK GUID AMFStructuredBufferFormatGUID = { 0x90c5d674, 0xe90, 0x4181, {0xbd, 0xef, 0x26, 0x13, 0xc1, 0xdf, 0xa3, 0xbd} }; // UINT(DXGI_FORMAT), default - DXGI_FORMAT_R32_UINT; to be set on ID3D11Buffer or ID3D11Texture2D objects when used natively #endif //---------------------------------------------------------------------------------------------- // enumeration argument type @@ -107,7 +107,6 @@ namespace amf virtual void* AMF_STD_CALL GetNative() = 0; virtual const wchar_t* AMF_STD_CALL GetIDName() = 0; - virtual AMF_RESULT AMF_STD_CALL SetArgPlaneNative(amf_size index, void* pPlane, AMF_ARGUMENT_ACCESS_TYPE eAccess) = 0; virtual AMF_RESULT AMF_STD_CALL SetArgBufferNative(amf_size index, void* pBuffer, AMF_ARGUMENT_ACCESS_TYPE eAccess) = 0; diff --git a/alvr/server/cpp/platform/win32/amf/include/core/ComputeFactory.h b/alvr/server/cpp/platform/win32/amf/public/include/core/ComputeFactory.h similarity index 97% rename from alvr/server/cpp/platform/win32/amf/include/core/ComputeFactory.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/ComputeFactory.h index d126f270a8..e335ee31c0 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/ComputeFactory.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/ComputeFactory.h @@ -52,7 +52,7 @@ namespace amf class AMF_NO_VTABLE AMFComputeDevice : public AMFPropertyStorage { public: - AMF_DECLARE_IID(0xb79d7cf6, 0x2c5c, 0x4deb, 0xb8, 0x96, 0xa2, 0x9e, 0xbe, 0xa6, 0xe3, 0x97); + AMF_DECLARE_IID(0xb79d7cf6, 0x2c5c, 0x4deb, 0xb8, 0x96, 0xa2, 0x9e, 0xbe, 0xa6, 0xe3, 0x97) virtual void* AMF_STD_CALL GetNativePlatform() = 0; virtual void* AMF_STD_CALL GetNativeDeviceID() = 0; @@ -66,7 +66,7 @@ namespace amf //---------------------------------------------------------------------------------------------- typedef AMFInterfacePtr_T AMFComputeDevicePtr; #else // #if defined(__cplusplus) - AMF_DECLARE_IID(AMFComputeDevice, 0xb79d7cf6, 0x2c5c, 0x4deb, 0xb8, 0x96, 0xa2, 0x9e, 0xbe, 0xa6, 0xe3, 0x97); + AMF_DECLARE_IID(AMFComputeDevice, 0xb79d7cf6, 0x2c5c, 0x4deb, 0xb8, 0x96, 0xa2, 0x9e, 0xbe, 0xa6, 0xe3, 0x97) typedef struct AMFComputeDevice AMFComputeDevice; typedef struct AMFComputeDeviceVtbl @@ -108,7 +108,7 @@ namespace amf class AMF_NO_VTABLE AMFComputeFactory : public AMFInterface { public: - AMF_DECLARE_IID(0xe3c24bd7, 0x2d83, 0x416c, 0x8c, 0x4e, 0xfd, 0x13, 0xca, 0x86, 0xf4, 0xd0); + AMF_DECLARE_IID(0xe3c24bd7, 0x2d83, 0x416c, 0x8c, 0x4e, 0xfd, 0x13, 0xca, 0x86, 0xf4, 0xd0) virtual amf_int32 AMF_STD_CALL GetDeviceCount() = 0; virtual AMF_RESULT AMF_STD_CALL GetDeviceAt(amf_int32 index, AMFComputeDevice **ppDevice) = 0; @@ -118,7 +118,7 @@ namespace amf //---------------------------------------------------------------------------------------------- typedef AMFInterfacePtr_T AMFComputeFactoryPtr; #else // #if defined(__cplusplus) - AMF_DECLARE_IID(AMFComputeFactory, 0xe3c24bd7, 0x2d83, 0x416c, 0x8c, 0x4e, 0xfd, 0x13, 0xca, 0x86, 0xf4, 0xd0); + AMF_DECLARE_IID(AMFComputeFactory, 0xe3c24bd7, 0x2d83, 0x416c, 0x8c, 0x4e, 0xfd, 0x13, 0xca, 0x86, 0xf4, 0xd0) typedef struct AMFComputeFactory AMFComputeFactory; typedef struct AMFComputeFactoryVtbl @@ -141,7 +141,7 @@ namespace amf //---------------------------------------------------------------------------------------------- #if defined(__cplusplus) -}; // namespace amf +} // namespace amf #endif #endif // AMF_ComputeFactory_h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Context.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Context.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/core/Context.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Context.h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/CurrentTime.h b/alvr/server/cpp/platform/win32/amf/public/include/core/CurrentTime.h similarity index 96% rename from alvr/server/cpp/platform/win32/amf/include/core/CurrentTime.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/CurrentTime.h index 02dff7a3dd..dcbc35466a 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/CurrentTime.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/CurrentTime.h @@ -23,8 +23,8 @@ #ifndef AMF_CurrentTime_h #define AMF_CurrentTime_h -#include "../include/core/Platform.h" -#include "../include/core/Interface.h" +#include "Platform.h" +#include "Interface.h" namespace amf { diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h b/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h new file mode 100644 index 0000000000..37956b4c5f --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h @@ -0,0 +1,49 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +#ifndef __D3D12AMF_h__ +#define __D3D12AMF_h__ +#pragma once +#include "Platform.h" +#if defined(_WIN32)||(defined(__linux) && defined(AMF_WSL)) +// syncronization properties set via SetPrivateData() +AMF_WEAK GUID AMFResourceStateGUID = { 0x452da9bf, 0x4ad7, 0x47a5, { 0xa6, 0x9b, 0x96, 0xd3, 0x23, 0x76, 0xf2, 0xf3 } }; // Current resource state value (D3D12_RESOURCE_STATES ), sizeof(UINT), set on ID3D12Resource +AMF_WEAK GUID AMFFenceGUID = { 0x910a7928, 0x57bd, 0x4b04, { 0x91, 0xa3, 0xe7, 0xb8, 0x04, 0x12, 0xcd, 0xa5 } }; // IUnknown (ID3D12Fence), set on ID3D12Resource syncronization fence for this resource +AMF_WEAK GUID AMFFenceValueGUID = { 0x62a693d3, 0xbb4a, 0x46c9, { 0xa5, 0x04, 0x9a, 0x8e, 0x97, 0xbf, 0xf0, 0x56 } }; // The last value to wait on the fence from AMFFenceGUID; sizeof(UINT64), set on ID3D12Fence + +AMF_WEAK GUID AMFFenceD3D11GUID = { 0xdffdf6e0, 0x85e0, 0x4645, { 0x9d, 0x7, 0xe6, 0x4a, 0x19, 0x6b, 0xc9, 0xbf } }; // IUnknown (ID3D11Fence) OpenSharedFence for interop +AMF_WEAK GUID AMFFenceValueD3D11GUID = { 0x86581b71, 0x699f, 0x484b, { 0xb8, 0x75, 0x24, 0xda, 0x49, 0x8a, 0x74, 0xcf } }; // last value to wait on in d3d11 +AMF_WEAK GUID AMFSharedHandleFenceGUID = { 0xca60dcc8, 0x76d1, 0x4088, 0xad, 0xd, 0x97, 0x71, 0xe7, 0xb0, 0x92, 0x49 }; // ID3D12Fence shared handle for D3D11 interop + +#endif + +#endif // __D3D12AMF_h__ \ No newline at end of file diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Data.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Data.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/core/Data.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Data.h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Debug.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Debug.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/core/Debug.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Debug.h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Dump.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Dump.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/core/Dump.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Dump.h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Factory.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Factory.h similarity index 96% rename from alvr/server/cpp/platform/win32/amf/include/core/Factory.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Factory.h index a638fc0899..8f4795e5ae 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/Factory.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Factory.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -45,6 +45,7 @@ #include "../components/Component.h" #if defined(__cplusplus) + namespace amf { #endif @@ -100,7 +101,7 @@ extern "C" typedef AMF_RESULT (AMF_CDECL_CALL *AMFInit_Fn)(amf_uint64 version, amf::AMFFactory **ppFactory); typedef AMF_RESULT (AMF_CDECL_CALL *AMFQueryVersion_Fn)(amf_uint64 *pVersion); } -#else +#else typedef AMF_RESULT (AMF_CDECL_CALL *AMFInit_Fn)(amf_uint64 version, AMFFactory **ppFactory); typedef AMF_RESULT (AMF_CDECL_CALL *AMFQueryVersion_Fn)(amf_uint64 *pVersion); #endif @@ -109,25 +110,24 @@ extern "C" #if defined(_M_AMD64) #define AMF_DLL_NAME L"amfrt64.dll" #define AMF_DLL_NAMEA "amfrt64.dll" - #else +#else #define AMF_DLL_NAME L"amfrt32.dll" #define AMF_DLL_NAMEA "amfrt32.dll" #endif -#elif defined(__ANDROID__) +#elif defined(__ANDROID__) && !defined(AMF_ANDROID_ENCODER) #define AMF_DLL_NAME L"libamf.so" #define AMF_DLL_NAMEA "libamf.so" #elif defined(__APPLE__) #define AMF_DLL_NAME L"libamfrt.framework/libamfrt" #define AMF_DLL_NAMEA "libamfrt.framework/libamfrt" #elif defined(__linux__) - #if defined(__x86_64__) + #if defined(__x86_64__) || defined(__aarch64__) #define AMF_DLL_NAME L"libamfrt64.so.1" #define AMF_DLL_NAMEA "libamfrt64.so.1" #else #define AMF_DLL_NAME L"libamfrt32.so.1" #define AMF_DLL_NAMEA "libamfrt32.so.1" #endif -#endif +#endif //---------------------------------------------------------------------------------------------- - -#endif // AMF_Factory_h +#endif // AMF_Factory_h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Interface.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Interface.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/core/Interface.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Interface.h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Plane.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Plane.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/core/Plane.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Plane.h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Platform.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h similarity index 98% rename from alvr/server/cpp/platform/win32/amf/include/core/Platform.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h index 8dda553903..916ca3fce0 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/Platform.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h @@ -72,6 +72,12 @@ // #error Need to define AMF_ALIGN #endif +#if defined(__linux) || defined(__ANDROID__) +typedef signed int HRESULT; +#define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) +#define FAILED(hr) (((HRESULT)(hr)) < 0) +#endif + #include #include #include @@ -178,9 +184,11 @@ typedef amf_uint32 amf_flags; #define AMF_SECOND 10000000L // 1 second in 100 nanoseconds #define AMF_MILLISECOND (AMF_SECOND / 1000) +#define AMF_MICROSECOND (AMF_MILLISECOND / 1000) #define AMF_MIN(a, b) ((a) < (b) ? (a) : (b)) #define AMF_MAX(a, b) ((a) > (b) ? (a) : (b)) +#define AMF_CLAMP(x, a, b) (AMF_MIN(AMF_MAX(x, a), b)) #define AMF_BITS_PER_BYTE 8 diff --git a/alvr/server/cpp/platform/win32/amf/include/core/PropertyStorage.h b/alvr/server/cpp/platform/win32/amf/public/include/core/PropertyStorage.h similarity index 100% rename from alvr/server/cpp/platform/win32/amf/include/core/PropertyStorage.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/PropertyStorage.h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/PropertyStorageEx.h b/alvr/server/cpp/platform/win32/amf/public/include/core/PropertyStorageEx.h similarity index 99% rename from alvr/server/cpp/platform/win32/amf/include/core/PropertyStorageEx.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/PropertyStorageEx.h index 76619c42c7..94ccd1ea9b 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/PropertyStorageEx.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/PropertyStorageEx.h @@ -129,6 +129,7 @@ namespace amf AMFPropertyInfo& operator=(const AMFPropertyInfo& propery) { + name = propery.name; desc = propery.desc; type = propery.type; contentType = propery.contentType; diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Result.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Result.h similarity index 98% rename from alvr/server/cpp/platform/win32/amf/include/core/Result.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Result.h index 87118d5e73..cf84bed730 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/Result.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Result.h @@ -121,7 +121,7 @@ typedef enum AMF_RESULT AMF_TAN_CLIPPING_WAS_REQUIRED , // Resulting data was truncated to meet output type's value limits. AMF_TAN_UNSUPPORTED_VERSION , // Not supported version requested, solely for TANCreateContext(). - AMF_NEED_MORE_INPUT ,//returned by AMFComponent::SubmitInput did not produce buffer + AMF_NEED_MORE_INPUT ,//returned by AMFComponent::SubmitInput did not produce a buffer because more input submissions are required. } AMF_RESULT; #endif //#ifndef AMF_Result_h diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Surface.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h similarity index 93% rename from alvr/server/cpp/platform/win32/amf/include/core/Surface.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h index 5102c72997..3013af040c 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/Surface.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h @@ -68,9 +68,11 @@ namespace amf AMF_SURFACE_Y410, ///< 16 - packed 4:4:4 - 10 bit per YUV component, 2 bits per A, AVYU AMF_SURFACE_Y416, ///< 16 - packed 4:4:4 - 16 bit per component 4 bytes, AVYU AMF_SURFACE_GRAY32, ///< 17 - single component - 32 bit + AMF_SURFACE_P012, ///< 18 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 12 bit per component (16 allocated, upper 12 bits are used) + AMF_SURFACE_P016, ///< 19 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 16 bit per component (16 allocated, all bits are used) AMF_SURFACE_FIRST = AMF_SURFACE_NV12, - AMF_SURFACE_LAST = AMF_SURFACE_GRAY32 + AMF_SURFACE_LAST = AMF_SURFACE_P016 } AMF_SURFACE_FORMAT; //---------------------------------------------------------------------------------------------- // AMF_SURFACE_USAGE translates to D3D11_BIND_FLAG or VkImageUsageFlags @@ -91,7 +93,7 @@ namespace amf //---------------------------------------------------------------------------------------------- #if defined(_WIN32) - AMF_WEAK GUID AMFFormatGUID = { 0x8cd592d0, 0x8063, 0x4af8, 0xa7, 0xd0, 0x32, 0x5b, 0xc5, 0xf7, 0x48, 0xab}; // UINT(AMF_SURFACE_FORMAT), default - AMF_SURFACE_UNKNOWN; to be set on ID3D11Texture2D objects when used natively (i.e. force UYVY on DXGI_FORMAT_YUY2 texture) + AMF_WEAK GUID AMFFormatGUID = { 0x8cd592d0, 0x8063, 0x4af8, {0xa7, 0xd0, 0x32, 0x5b, 0xc5, 0xf7, 0x48, 0xab}}; // UINT(AMF_SURFACE_FORMAT), default - AMF_SURFACE_UNKNOWN; to be set on ID3D11Texture2D objects when used natively (i.e. force UYVY on DXGI_FORMAT_YUY2 texture) #endif //---------------------------------------------------------------------------------------------- @@ -131,6 +133,16 @@ namespace amf AMF_FRAME_INTERLEAVED_ODD_FIRST_STEREO_BOTH = AMF_FRAME_INTERLEAVED_FLAG | AMF_FRAME_ODD_FLAG | AMF_FRAME_BOTH_FLAG, } AMF_FRAME_TYPE; + typedef enum AMF_ROTATION_ENUM + { + AMF_ROTATION_NONE = 0, + AMF_ROTATION_90 = 1, + AMF_ROTATION_180 = 2, + AMF_ROTATION_270 = 3, + } AMF_ROTATION_ENUM; + + #define AMF_SURFACE_ROTATION L"Rotation" // amf_int64(AMF_ROTATION_ENUM); default = AMF_ROTATION_NONE, can be set on surfaces + //---------------------------------------------------------------------------------------------- // AMFSurfaceObserver interface - callback; is called before internal release resources. //---------------------------------------------------------------------------------------------- @@ -179,8 +191,16 @@ namespace amf virtual AMF_RESULT AMF_STD_CALL CopySurfaceRegion(AMFSurface* pDest, amf_int32 dstX, amf_int32 dstY, amf_int32 srcX, amf_int32 srcY, amf_int32 width, amf_int32 height) = 0; // Observer management +#ifdef __clang__ + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Woverloaded-virtual" +#endif virtual void AMF_STD_CALL AddObserver(AMFSurfaceObserver* pObserver) = 0; virtual void AMF_STD_CALL RemoveObserver(AMFSurfaceObserver* pObserver) = 0; +#ifdef __clang__ + #pragma clang diagnostic pop +#endif + }; //---------------------------------------------------------------------------------------------- // smart pointer diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Trace.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Trace.h similarity index 95% rename from alvr/server/cpp/platform/win32/amf/include/core/Trace.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Trace.h index f9a37514dd..69b8073948 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/Trace.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Trace.h @@ -123,10 +123,10 @@ namespace amf virtual const wchar_t* AMF_STD_CALL SurfaceGetFormatName(const AMF_SURFACE_FORMAT eSurfaceFormat) = 0; virtual AMF_SURFACE_FORMAT AMF_STD_CALL SurfaceGetFormatByName(const wchar_t* name) = 0; - virtual const wchar_t* const AMF_STD_CALL GetMemoryTypeName(const AMF_MEMORY_TYPE memoryType) = 0; + virtual const wchar_t* AMF_STD_CALL GetMemoryTypeName(const AMF_MEMORY_TYPE memoryType) = 0; virtual AMF_MEMORY_TYPE AMF_STD_CALL GetMemoryTypeByName(const wchar_t* name) = 0; - virtual const wchar_t* const AMF_STD_CALL GetSampleFormatName(const AMF_AUDIO_FORMAT eFormat) = 0; + virtual const wchar_t* AMF_STD_CALL GetSampleFormatName(const AMF_AUDIO_FORMAT eFormat) = 0; virtual AMF_AUDIO_FORMAT AMF_STD_CALL GetSampleFormatByName(const wchar_t* name) = 0; }; #else // #if defined(__cplusplus) @@ -162,10 +162,10 @@ namespace amf const wchar_t* (AMF_STD_CALL *SurfaceGetFormatName)(AMFTrace* pThis, const AMF_SURFACE_FORMAT eSurfaceFormat); AMF_SURFACE_FORMAT (AMF_STD_CALL *SurfaceGetFormatByName)(AMFTrace* pThis, const wchar_t* name); - const wchar_t* const (AMF_STD_CALL *GetMemoryTypeName)(AMFTrace* pThis, const AMF_MEMORY_TYPE memoryType); + const wchar_t* (AMF_STD_CALL *GetMemoryTypeName)(AMFTrace* pThis, const AMF_MEMORY_TYPE memoryType); AMF_MEMORY_TYPE (AMF_STD_CALL *GetMemoryTypeByName)(AMFTrace* pThis, const wchar_t* name); - const wchar_t* const (AMF_STD_CALL *GetSampleFormatName)(AMFTrace* pThis, const AMF_AUDIO_FORMAT eFormat); + const wchar_t* (AMF_STD_CALL *GetSampleFormatName)(AMFTrace* pThis, const AMF_AUDIO_FORMAT eFormat); AMF_AUDIO_FORMAT (AMF_STD_CALL *GetSampleFormatByName)(AMFTrace* pThis, const wchar_t* name); } AMFTraceVtbl; diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Variant.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h similarity index 98% rename from alvr/server/cpp/platform/win32/amf/include/core/Variant.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h index be4e1cc893..ddb3da252d 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/Variant.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h @@ -755,7 +755,7 @@ namespace amf switch(AMFVariantGetType(pSrc)) { case AMF_VARIANT_EMPTY: - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); break; case AMF_VARIANT_BOOL: errRet = AMFVariantAssignBool(pDest, AMFVariantBool(pSrc)); @@ -1052,7 +1052,7 @@ namespace amf #else char* old_locale = setlocale(LC_CTYPE, "en_US.UTF8"); - int UnicodeBuffSize = mbstowcs(NULL, pUtf8Buff, 0); + size_t UnicodeBuffSize = mbstowcs(NULL, pUtf8Buff, 0); if(0 == UnicodeBuffSize) { return result; @@ -1115,7 +1115,7 @@ namespace amf #else char* old_locale = setlocale(LC_CTYPE, "en_US.UTF8"); - int Utf8BuffSize = wcstombs(NULL, pwBuff, 0); + size_t Utf8BuffSize = wcstombs(NULL, pwBuff, 0); if(0 == Utf8BuffSize) { return result; @@ -1201,21 +1201,21 @@ namespace amf { res = AMF_OK; char buff[0xFF]; - sprintf(buff, "%d,%d", value.num, value.den); + sprintf(buff, "%u,%u", value.num, value.den); return buff; } static AMF_INLINE AMFVariant::String AMF_STD_CALL AMFConvertRatioToString(const AMFRatio& value, AMF_RESULT& res) { res = AMF_OK; char buff[0xFF]; - sprintf(buff, "%d,%d", value.num, value.den); + sprintf(buff, "%u,%u", value.num, value.den); return buff; } static AMF_INLINE AMFVariant::String AMF_STD_CALL AMFConvertColorToString(const AMFColor& value, AMF_RESULT& res) { res = AMF_OK; char buff[0xFF]; - sprintf(buff, "%d,%d,%d,%d", value.r, value.g, value.b, value.a); + sprintf(buff, "%u,%u,%u,%u", value.r, value.g, value.b, value.a); return buff; } @@ -1243,7 +1243,14 @@ namespace amf int readElements = 0; if(value.size() > 0) { + if(strchr(value.c_str(), ',') != nullptr) + { readElements = sscanf(value.c_str(), "%d,%d", &tmp.width, &tmp.height); + } + else if (strchr(value.c_str(), 'x') != nullptr) + { + readElements = sscanf(value.c_str(), "%dx%d", &tmp.width, &tmp.height); + } } if(readElements) { @@ -1339,7 +1346,7 @@ namespace amf int readElements = 0; if(value.size() > 0) { - readElements = sscanf(value.c_str(), "%d,%d", &tmp.num, &tmp.den); + readElements = sscanf(value.c_str(), "%u,%u", &tmp.num, &tmp.den); } if(readElements) { @@ -1355,7 +1362,7 @@ namespace amf int readElements = 0; if(value.size() > 0) { - readElements = sscanf(value.c_str(), "%d,%d", &tmp.num, &tmp.den); + readElements = sscanf(value.c_str(), "%u,%u", &tmp.num, &tmp.den); } if(readElements) { @@ -1574,7 +1581,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_BOOL; @@ -1588,7 +1595,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_INT64; @@ -1602,7 +1609,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_DOUBLE; @@ -1616,7 +1623,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_FLOAT; @@ -1631,7 +1638,7 @@ namespace amf AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { const size_t size = (strlen(pValue) + 1); @@ -1655,7 +1662,7 @@ namespace amf AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { const size_t size = (wcslen(pValue) + 1); @@ -1679,7 +1686,7 @@ namespace amf AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); //AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue);//can be NULL - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_INTERFACE; @@ -1708,7 +1715,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_RECT; @@ -1729,7 +1736,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_SIZE; @@ -1766,7 +1773,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_POINT; @@ -1780,7 +1787,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_FLOAT_SIZE; @@ -1794,7 +1801,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_FLOAT_POINT2D; @@ -1808,7 +1815,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_FLOAT_POINT3D; @@ -1822,7 +1829,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_FLOAT_VECTOR4D; @@ -1843,7 +1850,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_RATE; @@ -1864,7 +1871,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_RATIO; @@ -1885,7 +1892,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - errRet = AMFVariantClear(pDest); + errRet = AMFVariantInit(pDest); if(errRet == AMF_OK) { pDest->type = AMF_VARIANT_COLOR; @@ -1973,6 +1980,7 @@ namespace amf //------------------------------------------------------------------------------------------------- AMF_INLINE AMFVariant& AMFVariant::operator=(const AMFVariantStruct& other) { + AMFVariantClear(this); AMFVariantCopy(this, const_cast(&other)); return *this; } @@ -1981,6 +1989,7 @@ namespace amf { if(pOther != NULL) { + AMFVariantClear(this); AMFVariantCopy(this, const_cast(pOther)); } return *this; @@ -1988,6 +1997,7 @@ namespace amf //------------------------------------------------------------------------------------------------- AMF_INLINE AMFVariant& AMFVariant::operator=(const AMFVariant& other) { + AMFVariantClear(this); AMFVariantCopy(this, const_cast(static_cast(&other))); return *this; @@ -1996,6 +2006,7 @@ namespace amf template AMFVariant& AMFVariant::operator=(const AMFInterfacePtr_T& value) { + AMFVariantClear(this); AMFVariantAssignInterface(this, value); return *this; } diff --git a/alvr/server/cpp/platform/win32/amf/include/core/Version.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h similarity index 98% rename from alvr/server/cpp/platform/win32/amf/include/core/Version.h rename to alvr/server/cpp/platform/win32/amf/public/include/core/Version.h index 6526aa0e75..0458e06ff3 100644 --- a/alvr/server/cpp/platform/win32/amf/include/core/Version.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h @@ -51,7 +51,7 @@ #define AMF_VERSION_MAJOR 1 #define AMF_VERSION_MINOR 4 -#define AMF_VERSION_RELEASE 18 +#define AMF_VERSION_RELEASE 26 #define AMF_VERSION_BUILD_NUM 0 #define AMF_FULL_VERSION AMF_MAKE_FULL_VERSION(AMF_VERSION_MAJOR, AMF_VERSION_MINOR, AMF_VERSION_RELEASE, AMF_VERSION_BUILD_NUM) From b7f8af5fd38ffb694c2bc450eb82d620f8c83abb Mon Sep 17 00:00:00 2001 From: Yury Date: Thu, 27 Oct 2022 01:28:30 +0300 Subject: [PATCH 04/60] Introduce AMF Pre-Processor, 10-bit support and configurable encoder quality options (#1220) * Introduce AMF Pre-Processor, WIP 10-bit support and configurable encoder quality options * Fix AMFPipe and AMFPipeline debug names * Run rustfmt and prettier * Fix 10-bit encoding on AMF * Copy tonemapping from the input surface in AMF converter * Combine H.265 and H.264 quality preset settings in one setting * Clarify pre-processor usage for 8-bit encoding * Keep automatic color profile --- alvr/dashboard/js/app/nls/settings.js | 17 + alvr/server/cpp/alvr_server/Settings.cpp | 5 + alvr/server/cpp/alvr_server/Settings.h | 5 + .../cpp/platform/win32/VideoEncoderVCE.cpp | 480 ++++++++++-------- .../cpp/platform/win32/VideoEncoderVCE.h | 93 ++-- alvr/server/src/connection.rs | 6 + alvr/session/src/lib.rs | 5 + alvr/session/src/settings.rs | 29 ++ 8 files changed, 399 insertions(+), 241 deletions(-) diff --git a/alvr/dashboard/js/app/nls/settings.js b/alvr/dashboard/js/app/nls/settings.js index 8d2af8463f..e2c7a97ea0 100644 --- a/alvr/dashboard/js/app/nls/settings.js +++ b/alvr/dashboard/js/app/nls/settings.js @@ -74,6 +74,23 @@ define({ "Reduce color banding (newer nVidia cards or SW encoding only)", "_root_video_use10bitEncoder.description": "This increases visual quality by streaming 10 bit per color channel instead of 8", + "_root_video_advancedCodecOptions_amfControls_usePreproc.name": + "Enable Pre-Processor component", + "_root_video_advancedCodecOptions_amfControls_usePreproc.description": + "Enables Pre-Processor component (RX 5000+ models with 8-bit encoding only). Removing bit-expensive high frequency details that are deemed not important for the human visual system.", + "_root_video_advancedCodecOptions_amfControls_preprocSigma.name": "Pre-Processor strength", + "_root_video_advancedCodecOptions_amfControls_preprocSigma.description": + "Strength of the pre-processing filter. The higher the strength, the stronger the filtering.", + "_root_video_advancedCodecOptions_amfControls_preprocTor.name": "Pre-Processor sensitivity", + "_root_video_advancedCodecOptions_amfControls_preprocTor.description": + "Sensitivity to edges. The higher the value, the more likely edges will be detected, and hence the less likely filtering will occur.", + "_root_video_advancedCodecOptions_amfControls_encoderQualityPreset.name": + "Encoder quality preset", + "_root_video_advancedCodecOptions_amfControls_encoderQualityPreset.description": + "Controls the encoder quality.", + "_root_video_forceSwEncoding.name": "Force Software Encoding", + "_root_video_forceSwEncoding.description": + "This forces the Encoder to use CPU(Software Encoding) instead of GPU(Hardware Encoding).", "_root_video_swThreadCount.name": "Number of threads (software encoding)", "_root_video_swThreadCount.description": "Sets the amount of threads to use when using software encoding. Setting to 0 will use the max amount available.", diff --git a/alvr/server/cpp/alvr_server/Settings.cpp b/alvr/server/cpp/alvr_server/Settings.cpp index eb61cd9e3f..4f70ddc9e6 100644 --- a/alvr/server/cpp/alvr_server/Settings.cpp +++ b/alvr/server/cpp/alvr_server/Settings.cpp @@ -98,6 +98,11 @@ void Settings::Load() m_adaptiveBitrateDownRate = (int)config.get("bitrate_down_rate").get(); m_adaptiveBitrateLightLoadThreshold = config.get("bitrate_light_load_threshold").get(); m_use10bitEncoder = config.get("use_10bit_encoder").get(); + m_usePreproc = config.get("use_preproc").get(); + m_preProcSigma = (uint32_t)config.get("preproc_sigma").get(); + m_preProcTor = (uint32_t)config.get("preproc_tor").get(); + m_encoderQualityPreset = (uint32_t)config.get("encoder_quality_preset").get(); + m_force_sw_encoding = config.get("force_sw_encoding").get(); m_swThreadCount = (int32_t)config.get("sw_thread_count").get(); m_controllerTrackingSystemName = config.get("controllers_tracking_system_name").get(); diff --git a/alvr/server/cpp/alvr_server/Settings.h b/alvr/server/cpp/alvr_server/Settings.h index 002f0d76e1..54579d06e4 100644 --- a/alvr/server/cpp/alvr_server/Settings.h +++ b/alvr/server/cpp/alvr_server/Settings.h @@ -74,6 +74,11 @@ class Settings uint64_t m_adaptiveBitrateDownRate; float m_adaptiveBitrateLightLoadThreshold; bool m_use10bitEncoder; + bool m_usePreproc; + uint32_t m_preProcSigma; + uint32_t m_preProcTor; + uint32_t m_encoderQualityPreset; + bool m_force_sw_encoding; uint32_t m_swThreadCount; // Controller configs diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 6626e3cb6c..c72ecaba0b 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -10,14 +10,132 @@ if(res != AMF_OK){throw MakeException("AMF Error %d. %s", res, L#expr);}} const wchar_t *VideoEncoderVCE::START_TIME_PROPERTY = L"StartTimeProperty"; const wchar_t *VideoEncoderVCE::FRAME_INDEX_PROPERTY = L"FrameIndexProperty"; +AMFPipe::AMFPipe(amf::AMFComponentPtr src, AMFDataReceiver receiver) + : m_amfComponentSrc(src) + , m_receiver(receiver) +{} + +AMFPipe::~AMFPipe() +{ + Debug("AMFPipe::~AMFPipe() m_amfComponentSrc->Drain\n"); + m_amfComponentSrc->Drain(); +} + +void AMFPipe::doPassthrough() +{ + amf::AMFDataPtr data; + auto res = m_amfComponentSrc->QueryOutput(&data); + switch (res) { + case AMF_OK: + if (data) + { + m_receiver(data); + } + break; + case AMF_NO_DEVICE: + Debug("m_amfComponentSrc->QueryOutput returns AMF_NO_DEVICE.\n"); + return; + case AMF_REPEAT: + break; + case AMF_EOF: + Debug("m_amfComponentSrc->QueryOutput returns AMF_EOF.\n"); + return; + default: + Debug("m_amfComponentSrc->QueryOutput returns unknown status.\n"); + return; + } +} + +AMFSolidPipe::AMFSolidPipe(amf::AMFComponentPtr src, amf::AMFComponentPtr dst) + : AMFPipe(src, std::bind(&AMFSolidPipe::Passthrough, this, std::placeholders::_1)) + , m_amfComponentDst(dst) +{} + +void AMFSolidPipe::Passthrough(AMFDataPtr data) +{ + auto res = m_amfComponentDst->SubmitInput(data); + switch (res) { + case AMF_OK: + break; + case AMF_INPUT_FULL: + Debug("m_amfComponentDst->SubmitInput returns AMF_INPUT_FULL.\n"); + break; + case AMF_NEED_MORE_INPUT: + Debug("m_amfComponentDst->SubmitInput returns AMF_NEED_MORE_INPUT.\n"); + break; + default: + Debug("m_amfComponentDst->SubmitInput returns code %d.\n", res); + break; + } +} + +AMFPipeline::AMFPipeline() + : m_thread(nullptr) + , m_pipes() + , isRunning(false) +{} + +AMFPipeline::~AMFPipeline() +{ + if (m_thread) + { + isRunning = false; + Debug("AMFPipeline::~AMFPipeline() m_thread->join\n"); + m_thread->join(); + Debug("AMFPipeline::~AMFPipeline() m_thread joined.\n"); + delete m_thread; + m_thread = nullptr; + } + for (auto &pipe : m_pipes) + { + delete pipe; + } +} + +void AMFPipeline::Connect(AMFPipePtr pipe) +{ + m_pipes.emplace_back(pipe); +} + +void AMFPipeline::Run() +{ + Debug("Start AMFPipeline thread. Thread Id=%d\n", GetCurrentThreadId()); + while (isRunning) + { + for (auto &pipe : m_pipes) + { + pipe->doPassthrough(); + } + } +} + +void AMFPipeline::Start() +{ + isRunning = true; + m_thread = new std::thread(&AMFPipeline::Run, this); +} + // -// AMFTextureEncoder +// VideoEncoderVCE // -AMFTextureEncoder::AMFTextureEncoder(const amf::AMFContextPtr &amfContext - , int codec, int width, int height, int refreshRate, int bitrateInMbits - , amf::AMF_SURFACE_FORMAT inputFormat - , AMFTextureReceiver receiver) : m_receiver(receiver) +VideoEncoderVCE::VideoEncoderVCE(std::shared_ptr d3dRender + , std::shared_ptr listener + , int width, int height) + : m_d3dRender(d3dRender) + , m_Listener(listener) + , m_codec(Settings::Instance().m_codec) + , m_refreshRate(Settings::Instance().m_refreshRate) + , m_renderWidth(width) + , m_renderHeight(height) + , m_bitrateInMBits(Settings::Instance().mEncodeBitrateMBs) +{} + +VideoEncoderVCE::~VideoEncoderVCE() {} + +amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( + amf::AMF_SURFACE_FORMAT inputFormat, int width, int height, int codec, int refreshRate, int bitrateInMbits +) { const wchar_t *pCodec; @@ -35,224 +153,149 @@ AMFTextureEncoder::AMFTextureEncoder(const amf::AMFContextPtr &amfContext throw MakeException("Unsupported video encoding %d", codec); } + amf::AMFComponentPtr amfEncoder; // Create encoder component. - AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateComponent(amfContext, pCodec, &m_amfEncoder)); + AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateComponent(m_amfContext, pCodec, &amfEncoder)); if (codec == ALVR_CODEC_H264) { - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_USAGE, AMF_VIDEO_ENCODER_USAGE_ULTRA_LOW_LATENCY); - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMESIZE, ::AMFConstructSize(width, height)); - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_B_PIC_PATTERN, 0); - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE, AMF_VIDEO_ENCODER_PROFILE_HIGH); - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE_LEVEL, 51); - - //No noticable visual difference between PRESET_QUALITY and PRESET_SPEED but the latter has better latency when the GPU is under heavy load - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_SPEED); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_USAGE, AMF_VIDEO_ENCODER_USAGE_ULTRA_LOW_LATENCY); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMESIZE, ::AMFConstructSize(width, height)); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_B_PIC_PATTERN, 0); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE, AMF_VIDEO_ENCODER_PROFILE_HIGH); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE_LEVEL, 42); + + switch (m_encoderQualityPreset) { + case SPEED: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_SPEED); + break; + case BALANCED: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_BALANCED); + break; + case QUALITY: + default: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY); + break; + } + + if (m_use10bit) { + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_COLOR_BIT_DEPTH, AMF_COLOR_BIT_DEPTH_10); + } else { + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_COLOR_BIT_DEPTH, AMF_COLOR_BIT_DEPTH_8); + } //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_ENABLE_VBAQ, true); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_ENABLE_VBAQ, true); //Fixes rythmic pixelation. I-frames were overcompressed on default settings - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_QP, 30); - - //Does not seem to make a difference but turned on anyway in case it does on other hardware - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_LOWLATENCY_MODE, true); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_QP, 30); } else { - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_USAGE, AMF_VIDEO_ENCODER_HEVC_USAGE_ULTRA_LOW_LATENCY); - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMESIZE, ::AMFConstructSize(width, height)); - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_USAGE, AMF_VIDEO_ENCODER_HEVC_USAGE_ULTRA_LOW_LATENCY); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_TIER, AMF_VIDEO_ENCODER_HEVC_TIER_HIGH); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMESIZE, ::AMFConstructSize(width, height)); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); + + switch (m_encoderQualityPreset) { + case SPEED: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED); + break; + case BALANCED: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED); + break; + case QUALITY: + default: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY); + break; + } - //No noticable visual difference between PRESET_QUALITY and PRESET_SPEED but the latter has better latency when the GPU is under heavy load - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED); + if (m_use10bit) { + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_COLOR_BIT_DEPTH, AMF_COLOR_BIT_DEPTH_10); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_PROFILE, AMF_VIDEO_ENCODER_HEVC_PROFILE_MAIN_10); + } else { + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_COLOR_BIT_DEPTH, AMF_COLOR_BIT_DEPTH_8); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_PROFILE, AMF_VIDEO_ENCODER_HEVC_PROFILE_MAIN); + } //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ, true); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ, true); //Fixes rythmic pixelation. I-frames were overcompressed on default settings - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP_I, 30); - - //Does not seem to make a difference but turned on anyway in case it does on other hardware - m_amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_LOWLATENCY_MODE, true); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP_I, 30); } - AMF_THROW_IF(m_amfEncoder->Init(inputFormat, width, height)); - - Debug("Initialized AMFTextureEncoder.\n"); -} - -AMFTextureEncoder::~AMFTextureEncoder() -{ -} - -void AMFTextureEncoder::Start() -{ - m_thread = new std::thread(&AMFTextureEncoder::Run, this); -} - -void AMFTextureEncoder::Shutdown() -{ - Debug("AMFTextureEncoder::Shutdown() m_amfEncoder->Drain\n"); - m_amfEncoder->Drain(); - Debug("AMFTextureEncoder::Shutdown() m_thread->join\n"); - m_thread->join(); - Debug("AMFTextureEncoder::Shutdown() joined.\n"); - delete m_thread; - m_thread = NULL; -} - -void AMFTextureEncoder::Submit(amf::AMFData *data) -{ - while (true) - { - Debug("AMFTextureEncoder::Submit.\n"); - auto res = m_amfEncoder->SubmitInput(data); - if (res == AMF_INPUT_FULL) - { - return; - } - else - { - break; - } + amf::AMFCapsPtr caps; + amfEncoder->GetCaps(&caps); + amf::AMFIOCapsPtr iocaps; + caps->GetOutputCaps(&iocaps); + amf_int32 formats = iocaps->GetNumOfFormats(); + Debug("Supported formats num: %d\n", formats); + for (int i = 0; i < formats; i++) { + amf::AMF_SURFACE_FORMAT format; + bool isNative; + iocaps->GetFormatAt(i, &format, &isNative); + Debug("Accepts format: %d, native: %d", format, isNative); } -} + Debug("Configured amfEncoder.\n"); + AMF_THROW_IF(amfEncoder->Init(inputFormat, width, height)); -amf::AMFComponentPtr AMFTextureEncoder::Get() -{ - return m_amfEncoder; -} + Debug("Initialized amfEncoder.\n"); -void AMFTextureEncoder::Run() -{ - Debug("Start AMFTextureEncoder thread. Thread Id=%d\n", GetCurrentThreadId()); - amf::AMFDataPtr data; - while (true) - { - auto res = m_amfEncoder->QueryOutput(&data); - if (res == AMF_EOF) - { - Warn("m_amfEncoder->QueryOutput returns AMF_EOF.\n"); - return; - } - - if (data != NULL) - { - m_receiver(data); - } - else - { - Sleep(1); - } - } + return amfEncoder; } -// -// AMFTextureConverter -// - -AMFTextureConverter::AMFTextureConverter(const amf::AMFContextPtr &amfContext - , int width, int height - , amf::AMF_SURFACE_FORMAT inputFormat, amf::AMF_SURFACE_FORMAT outputFormat - , AMFTextureReceiver receiver) : m_receiver(receiver) -{ - AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateComponent(amfContext, AMFVideoConverter, &m_amfConverter)); - - AMF_THROW_IF(m_amfConverter->SetProperty(AMF_VIDEO_CONVERTER_MEMORY_TYPE, amf::AMF_MEMORY_DX11)); - AMF_THROW_IF(m_amfConverter->SetProperty(AMF_VIDEO_CONVERTER_OUTPUT_FORMAT, outputFormat)); - AMF_THROW_IF(m_amfConverter->SetProperty(AMF_VIDEO_CONVERTER_OUTPUT_SIZE, ::AMFConstructSize(width, height))); +amf::AMFComponentPtr VideoEncoderVCE::MakeConverter( + amf::AMF_SURFACE_FORMAT inputFormat, int width, int height, amf::AMF_SURFACE_FORMAT outputFormat +) { + amf::AMFComponentPtr amfConverter; + AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateComponent(m_amfContext, AMFVideoConverter, &amfConverter)); + + AMF_THROW_IF(amfConverter->SetProperty(AMF_VIDEO_CONVERTER_MEMORY_TYPE, amf::AMF_MEMORY_DX11)); + AMF_THROW_IF(amfConverter->SetProperty(AMF_VIDEO_CONVERTER_OUTPUT_FORMAT, outputFormat)); + AMF_THROW_IF(amfConverter->SetProperty(AMF_VIDEO_CONVERTER_OUTPUT_SIZE, ::AMFConstructSize(width, height))); + + if (m_use10bit) { + AMF_THROW_IF(amfConverter->SetProperty(AMF_VIDEO_CONVERTER_INPUT_TRANSFER_CHARACTERISTIC, AMF_COLOR_TRANSFER_CHARACTERISTIC_GAMMA28)); + AMF_THROW_IF(amfConverter->SetProperty(AMF_VIDEO_CONVERTER_INPUT_COLOR_PRIMARIES, AMF_COLOR_PRIMARIES_BT709)); + AMF_THROW_IF(amfConverter->SetProperty(AMF_VIDEO_CONVERTER_INPUT_COLOR_RANGE, AMF_COLOR_RANGE_FULL)); + AMF_THROW_IF(amfConverter->SetProperty(AMF_VIDEO_CONVERTER_INPUT_TONEMAPPING, AMF_VIDEO_CONVERTER_TONEMAPPING_COPY)); + } - AMF_THROW_IF(m_amfConverter->Init(inputFormat, width, height)); + AMF_THROW_IF(amfConverter->Init(inputFormat, width, height)); - Debug("Initialized AMFTextureConverter.\n"); + Debug("Initialized amfConverter.\n"); + return amfConverter; } -AMFTextureConverter::~AMFTextureConverter() -{ -} +amf::AMFComponentPtr VideoEncoderVCE::MakePreprocessor( + amf::AMF_SURFACE_FORMAT inputFormat, int width, int height +) { + amf::AMFComponentPtr amfPreprocessor; + AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateComponent(m_amfContext, AMFPreProcessing, &amfPreprocessor)); -void AMFTextureConverter::Start() -{ - m_thread = new std::thread(&AMFTextureConverter::Run, this); -} + AMF_THROW_IF(amfPreprocessor->SetProperty(AMF_PP_ENGINE_TYPE, amf::AMF_MEMORY_DX11)); + AMF_THROW_IF(amfPreprocessor->SetProperty(AMF_PP_ADAPTIVE_FILTER_STRENGTH, m_preProcSigma)); + AMF_THROW_IF(amfPreprocessor->SetProperty(AMF_PP_ADAPTIVE_FILTER_SENSITIVITY, m_preProcTor)); -void AMFTextureConverter::Shutdown() -{ - Debug("AMFTextureConverter::Shutdown() m_amfConverter->Drain\n"); - m_amfConverter->Drain(); - Debug("AMFTextureConverter::Shutdown() m_thread->join\n"); - m_thread->join(); - Debug("AMFTextureConverter::Shutdown() joined.\n"); - delete m_thread; - m_thread = NULL; -} + AMF_THROW_IF(amfPreprocessor->Init(inputFormat, width, height)); -void AMFTextureConverter::Submit(amf::AMFData *data) -{ - while (true) - { - Debug("AMFTextureConverter::Submit.\n"); - auto res = m_amfConverter->SubmitInput(data); - if (res == AMF_INPUT_FULL) - { - return; - } - else - { - break; - } - } + Debug("Initialized amfPreprocessor.\n"); + return amfPreprocessor; } -void AMFTextureConverter::Run() -{ - Debug("Start AMFTextureConverter thread. Thread Id=%d\n", GetCurrentThreadId()); - amf::AMFDataPtr data; - while (true) - { - auto res = m_amfConverter->QueryOutput(&data); - if (res == AMF_EOF) - { - Warn("m_amfConverter->QueryOutput returns AMF_EOF.\n"); - return; - } - - if (data != NULL) - { - m_receiver(data); - } - else - { - Sleep(1); - } - } -} - -// -// VideoEncoderVCE -// - -VideoEncoderVCE::VideoEncoderVCE(std::shared_ptr d3dRender - , std::shared_ptr listener - , int width, int height) - : m_d3dRender(d3dRender) - , m_Listener(listener) - , m_codec(Settings::Instance().m_codec) - , m_refreshRate(Settings::Instance().m_refreshRate) - , m_renderWidth(width) - , m_renderHeight(height) - , m_bitrateInMBits(Settings::Instance().mEncodeBitrateMBs) +void VideoEncoderVCE::Initialize() { -} + const auto &settings = Settings::Instance(); -VideoEncoderVCE::~VideoEncoderVCE() -{} + m_use10bit = settings.m_use10bitEncoder; + m_usePreProc = settings.m_usePreproc; + m_encoderQualityPreset = static_cast(settings.m_encoderQualityPreset); + m_preProcSigma = settings.m_preProcSigma; + m_preProcTor = settings.m_preProcTor; -void VideoEncoderVCE::Initialize() -{ Debug("Initializing VideoEncoderVCE.\n"); AMF_THROW_IF(g_AMFFactory.Init()); @@ -261,16 +304,39 @@ void VideoEncoderVCE::Initialize() AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateContext(&m_amfContext)); AMF_THROW_IF(m_amfContext->InitDX11(m_d3dRender->GetDevice())); - m_encoder = std::make_shared(m_amfContext - , m_codec, m_renderWidth, m_renderHeight, m_refreshRate, m_bitrateInMBits - , ENCODER_INPUT_FORMAT, std::bind(&VideoEncoderVCE::Receive, this, std::placeholders::_1)); - m_converter = std::make_shared(m_amfContext - , m_renderWidth, m_renderHeight - , CONVERTER_INPUT_FORMAT, ENCODER_INPUT_FORMAT - , std::bind(&AMFTextureEncoder::Submit, m_encoder.get(), std::placeholders::_1)); + amf::AMF_SURFACE_FORMAT inFormat = amf::AMF_SURFACE_RGBA; + if (m_use10bit) { + inFormat = amf::AMF_SURFACE_P010; + m_amfComponents.emplace_back(MakeConverter( + amf::AMF_SURFACE_RGBA, m_renderWidth, m_renderHeight, inFormat + )); + } else { + if (m_usePreProc) { + inFormat = amf::AMF_SURFACE_NV12; + m_amfComponents.emplace_back(MakeConverter( + amf::AMF_SURFACE_RGBA, m_renderWidth, m_renderHeight, inFormat + )); + m_amfComponents.emplace_back(MakePreprocessor( + inFormat, m_renderWidth, m_renderHeight + )); + } + } + m_amfComponents.emplace_back(MakeEncoder( + inFormat, m_renderWidth, m_renderHeight, m_codec, m_refreshRate, m_bitrateInMBits + )); + + m_pipeline = new AMFPipeline(); + for (int i = 0; i < m_amfComponents.size() - 1; i++) { + m_pipeline->Connect(new AMFSolidPipe( + m_amfComponents[i], m_amfComponents[i + 1] + )); + } + + m_pipeline->Connect(new AMFPipe( + m_amfComponents.back(), std::bind(&VideoEncoderVCE::Receive, this, std::placeholders::_1) + )); - m_encoder->Start(); - m_converter->Start(); + m_pipeline->Start(); Debug("Successfully initialized VideoEncoderVCE.\n"); } @@ -279,8 +345,12 @@ void VideoEncoderVCE::Shutdown() { Debug("Shutting down VideoEncoderVCE.\n"); - m_encoder->Shutdown(); - m_converter->Shutdown(); + delete m_pipeline; + + for (auto &component : m_amfComponents) { + component->Release(); + delete component; + } amf_restore_timer_precision(); @@ -301,16 +371,16 @@ void VideoEncoderVCE::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationT amf_int64 bitRateIn = m_bitrateInMBits * 1000000L; // in bits if (m_codec == ALVR_CODEC_H264) { - m_encoder->Get()->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); + m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); } else { - m_encoder->Get()->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); + m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); } } } - AMF_THROW_IF(m_amfContext->AllocSurface(amf::AMF_MEMORY_DX11, CONVERTER_INPUT_FORMAT, m_renderWidth, m_renderHeight, &surface)); + AMF_THROW_IF(m_amfContext->AllocSurface(amf::AMF_MEMORY_DX11, amf::AMF_SURFACE_RGBA, m_renderWidth, m_renderHeight, &surface)); ID3D11Texture2D *textureDX11 = (ID3D11Texture2D*)surface->GetPlaneAt(0)->GetNative(); // no reference counting - do not Release() m_d3dRender->GetContext()->CopyResource(textureDX11, pTexture); @@ -320,10 +390,10 @@ void VideoEncoderVCE::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationT ApplyFrameProperties(surface, insertIDR); - m_converter->Submit(surface); + m_amfComponents.front()->SubmitInput(surface); } -void VideoEncoderVCE::Receive(amf::AMFData *data) +void VideoEncoderVCE::Receive(AMFDataPtr data) { amf_pts current_time = amf_high_precision_clock(); amf_pts start_time = 0; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index 435118d28f..ec5b040cc8 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -5,48 +5,57 @@ #include "amf/public/include/components/VideoEncoderVCE.h" #include "amf/public/include/components/VideoEncoderHEVC.h" #include "amf/public/include/components/VideoConverter.h" +#include "amf/public/include/components/PreProcessing.h" #include "amf/public/common/AMFSTL.h" #include "amf/public/common/Thread.h" -typedef std::function AMFTextureReceiver; +typedef amf::AMFData * AMFDataPtr; +typedef std::function AMFDataReceiver; -class AMFTextureEncoder { +class AMFPipeline; + +class AMFPipe { public: - AMFTextureEncoder(const amf::AMFContextPtr &amfContext - , int codec, int width, int height, int refreshRate, int bitrateInMbits - , amf::AMF_SURFACE_FORMAT inputFormat - , AMFTextureReceiver receiver); - ~AMFTextureEncoder(); + AMFPipe(amf::AMFComponentPtr src, AMFDataReceiver receiver); + virtual ~AMFPipe(); - void Start(); - void Shutdown(); - void Submit(amf::AMFData *data); - amf::AMFComponentPtr Get(); -private: - amf::AMFComponentPtr m_amfEncoder; - std::thread *m_thread = NULL; - AMFTextureReceiver m_receiver; + void doPassthrough(); +protected: + amf::AMFComponentPtr m_amfComponentSrc; + AMFDataReceiver m_receiver; +}; - void Run(); +typedef AMFPipe* AMFPipePtr; + +class AMFSolidPipe : public AMFPipe { +public: + AMFSolidPipe(amf::AMFComponentPtr src, amf::AMFComponentPtr dst); +protected: + void Passthrough(AMFDataPtr); + + amf::AMFComponentPtr m_amfComponentDst; }; -class AMFTextureConverter { +class AMFPipeline { public: - AMFTextureConverter(const amf::AMFContextPtr &amfContext - , int width, int height - , amf::AMF_SURFACE_FORMAT inputFormat, amf::AMF_SURFACE_FORMAT outputFormat - , AMFTextureReceiver receiver); - ~AMFTextureConverter(); + AMFPipeline(); + ~AMFPipeline(); + void Connect(AMFPipePtr pipe); void Start(); - void Shutdown(); - void Submit(amf::AMFData *data); -private: - amf::AMFComponentPtr m_amfConverter; - std::thread *m_thread = NULL; - AMFTextureReceiver m_receiver; - void Run(); +protected: + std::thread *m_thread; + std::vector m_pipes; + bool isRunning; +}; + +typedef AMFPipeline* AMFPipelinePtr; + +enum EncoderQualityPreset { + QUALITY = 0, + BALANCED = 1, + SPEED = 2 }; // Video encoder for AMD VCE. @@ -62,26 +71,38 @@ class VideoEncoderVCE : public VideoEncoder void Shutdown(); void Transmit(ID3D11Texture2D *pTexture, uint64_t presentationTime, uint64_t targetTimestampNs, bool insertIDR); - void Receive(amf::AMFData *data); -private: - static const amf::AMF_SURFACE_FORMAT CONVERTER_INPUT_FORMAT = amf::AMF_SURFACE_RGBA; - static const amf::AMF_SURFACE_FORMAT ENCODER_INPUT_FORMAT = amf::AMF_SURFACE_RGBA;// amf::AMF_SURFACE_NV12; - + void Receive(AMFDataPtr data); +private: static const wchar_t *START_TIME_PROPERTY; static const wchar_t *FRAME_INDEX_PROPERTY; const uint64_t MILLISEC_TIME = 10000; const uint64_t MICROSEC_TIME = 10; + amf::AMFComponentPtr MakeConverter( + amf::AMF_SURFACE_FORMAT inputFormat, int width, int height, amf::AMF_SURFACE_FORMAT outputFormat + ); + amf::AMFComponentPtr MakePreprocessor( + amf::AMF_SURFACE_FORMAT inputFormat, int width, int height + ); + amf::AMFComponentPtr MakeEncoder( + amf::AMF_SURFACE_FORMAT inputFormat, int width, int height, int codec, int refreshRate, int bitrateInMbits + ); amf::AMFContextPtr m_amfContext; - std::shared_ptr m_encoder; - std::shared_ptr m_converter; + AMFPipelinePtr m_pipeline; + std::vector m_amfComponents; std::ofstream fpOut; std::shared_ptr m_d3dRender; std::shared_ptr m_Listener; + bool m_use10bit; + bool m_usePreProc; + uint32_t m_preProcSigma; + uint32_t m_preProcTor; + EncoderQualityPreset m_encoderQualityPreset; + int m_codec; int m_refreshRate; int m_renderWidth; diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 28c72e8867..9a0ed7eb7c 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -229,6 +229,7 @@ async fn client_handshake( }; let nvenc_overrides = settings.video.advanced_codec_options.nvenc_overrides; + let amf_controls = settings.video.advanced_codec_options.amf_controls; let new_openvr_config = OpenvrConfig { universe_id: settings.headset.universe_id, @@ -252,6 +253,11 @@ async fn client_handshake( codec: matches!(settings.video.codec, CodecType::HEVC) as _, refresh_rate: fps as _, use_10bit_encoder: settings.video.use_10bit_encoder, + use_preproc: amf_controls.use_preproc, + preproc_sigma: amf_controls.preproc_sigma, + preproc_tor: amf_controls.preproc_tor, + encoder_quality_preset: amf_controls.encoder_quality_preset as u32, + force_sw_encoding: false, //force_sw_encoding: settings.video.force_sw_encoding, sw_thread_count: settings.video.sw_thread_count, encode_bitrate_mbs: settings.video.encode_bitrate_mbs, enable_adaptive_bitrate: session_settings.video.adaptive_bitrate.enabled, diff --git a/alvr/session/src/lib.rs b/alvr/session/src/lib.rs index 2fa9adb173..8a79b73074 100644 --- a/alvr/session/src/lib.rs +++ b/alvr/session/src/lib.rs @@ -62,6 +62,11 @@ pub struct OpenvrConfig { pub codec: u32, pub refresh_rate: u32, pub use_10bit_encoder: bool, + pub use_preproc: bool, + pub preproc_sigma: u32, + pub preproc_tor: u32, + pub encoder_quality_preset: u32, + pub force_sw_encoding: bool, pub sw_thread_count: u32, pub encode_bitrate_mbs: u64, pub enable_adaptive_bitrate: bool, diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index 42c01a0857..ea9070285c 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -44,6 +44,15 @@ pub enum NvencPreset { LowLatencyHighPerformance = 2, } +#[repr(u32)] +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase", tag = "type", content = "content")] +pub enum EncoderQualityPreset { + Quality = 0, + Balanced = 1, + Speed = 2, +} + /// Except for preset, the value of these fields is not applied if == -1 (flag) #[derive(SettingsSchema, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase")] @@ -64,6 +73,17 @@ pub struct NvencOverrides { pub enable_aq: i64, } +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase")] +pub struct AmfControls { + pub use_preproc: bool, + #[schema(min = 0, max = 10)] + pub preproc_sigma: u32, + #[schema(min = 0, max = 10)] + pub preproc_tor: u32, + pub encoder_quality_preset: EncoderQualityPreset, +} + #[derive(SettingsSchema, Serialize, Deserialize, Clone, Debug)] #[serde(rename_all = "camelCase", tag = "type", content = "content")] pub enum MediacodecDataType { @@ -77,6 +97,7 @@ pub enum MediacodecDataType { #[serde(rename_all = "camelCase")] pub struct AdvancedCodecOptions { pub nvenc_overrides: NvencOverrides, + pub amf_controls: AmfControls, pub mediacodec_extra_options: Vec<(String, MediacodecDataType)>, } @@ -646,6 +667,14 @@ pub fn session_settings_default() -> SettingsDefault { rc_average_bitrate: -1, enable_aq: -1, }, + amf_controls: AmfControlsDefault { + use_preproc: false, + preproc_sigma: 4, + preproc_tor: 7, + encoder_quality_preset: EncoderQualityPresetDefault { + variant: EncoderQualityPresetDefaultVariant::Quality, + }, + }, mediacodec_extra_options: DictionaryDefault { key: "".into(), value: MediacodecDataTypeDefault { From 0e3b8a61e46fbd461634e8b2a6819502518fe336 Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 2 Nov 2022 22:36:21 +0200 Subject: [PATCH 05/60] Split AMF pipeline and video transmission to different threads --- .../cpp/platform/win32/VideoEncoderVCE.cpp | 28 ++++++++++++++++--- .../cpp/platform/win32/VideoEncoderVCE.h | 2 ++ 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index c72ecaba0b..d4828b2d19 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -71,21 +71,29 @@ void AMFSolidPipe::Passthrough(AMFDataPtr data) AMFPipeline::AMFPipeline() : m_thread(nullptr) + , m_receiveThread(nullptr) , m_pipes() , isRunning(false) {} AMFPipeline::~AMFPipeline() { + isRunning = false; if (m_thread) { - isRunning = false; Debug("AMFPipeline::~AMFPipeline() m_thread->join\n"); m_thread->join(); Debug("AMFPipeline::~AMFPipeline() m_thread joined.\n"); delete m_thread; m_thread = nullptr; } + if (m_receiveThread) { + Debug("AMFPipeline::~AMFPipeline() m_receiveThread->join\n"); + m_receiveThread->join(); + Debug("AMFPipeline::~AMFPipeline() m_receiveThread joined.\n"); + delete m_receiveThread; + m_receiveThread = nullptr; + } for (auto &pipe : m_pipes) { delete pipe; @@ -99,20 +107,32 @@ void AMFPipeline::Connect(AMFPipePtr pipe) void AMFPipeline::Run() { - Debug("Start AMFPipeline thread. Thread Id=%d\n", GetCurrentThreadId()); + Debug("Start AMFPipeline Run() thread. Thread Id=%d\n", GetCurrentThreadId()); + auto it = m_pipes.begin(); + auto itEnd = std::prev(m_pipes.end()); while (isRunning) { - for (auto &pipe : m_pipes) + for (it = m_pipes.begin(); it != itEnd; it++) { - pipe->doPassthrough(); + (*it)->doPassthrough(); } } } +void AMFPipeline::RunReceive() +{ + Debug("Start AMFPipeline RunReceive() thread. Thread Id=%d\n", GetCurrentThreadId()); + while (isRunning) + { + m_pipes.back()->doPassthrough(); + } +} + void AMFPipeline::Start() { isRunning = true; m_thread = new std::thread(&AMFPipeline::Run, this); + m_receiveThread = new std::thread(&AMFPipeline::RunReceive, this); } // diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index ec5b040cc8..71e62bebd1 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -44,8 +44,10 @@ class AMFPipeline { void Connect(AMFPipePtr pipe); void Start(); void Run(); + void RunReceive(); protected: std::thread *m_thread; + std::thread *m_receiveThread; std::vector m_pipes; bool isRunning; }; From 0037ae54fbb9bee5f8e9731098a0e2c1da97ebcc Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 2 Nov 2022 22:36:53 +0200 Subject: [PATCH 06/60] Add sleep to threads --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index d4828b2d19..ffe1a34889 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -116,6 +116,7 @@ void AMFPipeline::Run() { (*it)->doPassthrough(); } + amf_sleep(1); } } @@ -125,6 +126,7 @@ void AMFPipeline::RunReceive() while (isRunning) { m_pipes.back()->doPassthrough(); + amf_sleep(1); } } From ce76c0d592be5dbb7b080a81c3f8068e1881797a Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 2 Nov 2022 22:37:31 +0200 Subject: [PATCH 07/60] Disallow 10-bit with H.264 --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index ffe1a34889..15b37be004 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -166,6 +166,9 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( switch (codec) { case ALVR_CODEC_H264: + if (m_use10bit) { + throw MakeException("H.264 10-bit encoding is not supported"); + } pCodec = AMFVideoEncoderVCE_AVC; break; case ALVR_CODEC_H265: @@ -202,12 +205,6 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( break; } - if (m_use10bit) { - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_COLOR_BIT_DEPTH, AMF_COLOR_BIT_DEPTH_10); - } else { - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_COLOR_BIT_DEPTH, AMF_COLOR_BIT_DEPTH_8); - } - //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas amfEncoder->SetProperty(AMF_VIDEO_ENCODER_ENABLE_VBAQ, true); From bc952e5e672e9e0f31a87665c655ad19559d76f1 Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 2 Nov 2022 22:39:00 +0200 Subject: [PATCH 08/60] Remove unnecessary debugging --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 15b37be004..a2d0a78833 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -246,18 +246,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //Fixes rythmic pixelation. I-frames were overcompressed on default settings amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP_I, 30); } - amf::AMFCapsPtr caps; - amfEncoder->GetCaps(&caps); - amf::AMFIOCapsPtr iocaps; - caps->GetOutputCaps(&iocaps); - amf_int32 formats = iocaps->GetNumOfFormats(); - Debug("Supported formats num: %d\n", formats); - for (int i = 0; i < formats; i++) { - amf::AMF_SURFACE_FORMAT format; - bool isNative; - iocaps->GetFormatAt(i, &format, &isNative); - Debug("Accepts format: %d, native: %d", format, isNative); - } + Debug("Configured amfEncoder.\n"); AMF_THROW_IF(amfEncoder->Init(inputFormat, width, height)); From aa8c8899560b883d9e5752717c8257fd5ea20d05 Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 2 Nov 2022 22:39:56 +0200 Subject: [PATCH 09/60] Refactor VideoEncoderVCE settings --- .../cpp/platform/win32/VideoEncoderVCE.cpp | 22 +++++++++---------- .../cpp/platform/win32/VideoEncoderVCE.h | 1 + 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index a2d0a78833..a84fc903c7 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -151,6 +151,12 @@ VideoEncoderVCE::VideoEncoderVCE(std::shared_ptr d3dRender , m_renderWidth(width) , m_renderHeight(height) , m_bitrateInMBits(Settings::Instance().mEncodeBitrateMBs) + , m_surfaceFormat(amf::AMF_SURFACE_RGBA) + , m_use10bit(Settings::Instance().m_use10bitEncoder) + , m_usePreProc(Settings::Instance().m_usePreproc) + , m_preProcTor(Settings::Instance().m_preProcTor) + , m_preProcSigma(Settings::Instance().m_preProcSigma) + , m_encoderQualityPreset(static_cast(Settings::Instance().m_encoderQualityPreset)) {} VideoEncoderVCE::~VideoEncoderVCE() {} @@ -296,14 +302,6 @@ amf::AMFComponentPtr VideoEncoderVCE::MakePreprocessor( void VideoEncoderVCE::Initialize() { - const auto &settings = Settings::Instance(); - - m_use10bit = settings.m_use10bitEncoder; - m_usePreProc = settings.m_usePreproc; - m_encoderQualityPreset = static_cast(settings.m_encoderQualityPreset); - m_preProcSigma = settings.m_preProcSigma; - m_preProcTor = settings.m_preProcTor; - Debug("Initializing VideoEncoderVCE.\n"); AMF_THROW_IF(g_AMFFactory.Init()); @@ -312,17 +310,17 @@ void VideoEncoderVCE::Initialize() AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateContext(&m_amfContext)); AMF_THROW_IF(m_amfContext->InitDX11(m_d3dRender->GetDevice())); - amf::AMF_SURFACE_FORMAT inFormat = amf::AMF_SURFACE_RGBA; + amf::AMF_SURFACE_FORMAT inFormat = m_surfaceFormat; if (m_use10bit) { inFormat = amf::AMF_SURFACE_P010; m_amfComponents.emplace_back(MakeConverter( - amf::AMF_SURFACE_RGBA, m_renderWidth, m_renderHeight, inFormat + m_surfaceFormat, m_renderWidth, m_renderHeight, inFormat )); } else { if (m_usePreProc) { inFormat = amf::AMF_SURFACE_NV12; m_amfComponents.emplace_back(MakeConverter( - amf::AMF_SURFACE_RGBA, m_renderWidth, m_renderHeight, inFormat + m_surfaceFormat, m_renderWidth, m_renderHeight, inFormat )); m_amfComponents.emplace_back(MakePreprocessor( inFormat, m_renderWidth, m_renderHeight @@ -388,7 +386,7 @@ void VideoEncoderVCE::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationT } } - AMF_THROW_IF(m_amfContext->AllocSurface(amf::AMF_MEMORY_DX11, amf::AMF_SURFACE_RGBA, m_renderWidth, m_renderHeight, &surface)); + AMF_THROW_IF(m_amfContext->AllocSurface(amf::AMF_MEMORY_DX11, m_surfaceFormat, m_renderWidth, m_renderHeight, &surface)); ID3D11Texture2D *textureDX11 = (ID3D11Texture2D*)surface->GetPlaneAt(0)->GetNative(); // no reference counting - do not Release() m_d3dRender->GetContext()->CopyResource(textureDX11, pTexture); diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index 71e62bebd1..4a69da8aa3 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -104,6 +104,7 @@ class VideoEncoderVCE : public VideoEncoder uint32_t m_preProcSigma; uint32_t m_preProcTor; EncoderQualityPreset m_encoderQualityPreset; + amf::AMF_SURFACE_FORMAT m_surfaceFormat; int m_codec; int m_refreshRate; From c37844d52b1ed8c81c8228abeaeb825d83fd8fa0 Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 2 Nov 2022 22:40:39 +0200 Subject: [PATCH 10/60] Use component names in debug messages --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index a84fc903c7..da82d6c8ad 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -253,10 +253,10 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP_I, 30); } - Debug("Configured amfEncoder.\n"); + Debug("Configured %s.\n", pCodec); AMF_THROW_IF(amfEncoder->Init(inputFormat, width, height)); - Debug("Initialized amfEncoder.\n"); + Debug("Initialized %s.\n", pCodec); return amfEncoder; } @@ -280,7 +280,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeConverter( AMF_THROW_IF(amfConverter->Init(inputFormat, width, height)); - Debug("Initialized amfConverter.\n"); + Debug("Initialized %s.\n", AMFVideoConverter); return amfConverter; } @@ -296,7 +296,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakePreprocessor( AMF_THROW_IF(amfPreprocessor->Init(inputFormat, width, height)); - Debug("Initialized amfPreprocessor.\n"); + Debug("Initialized %s.\n", AMFPreProcessing); return amfPreprocessor; } From 60822eba1d61889292417bb4b957925f6e356d8e Mon Sep 17 00:00:00 2001 From: Vixea Date: Thu, 3 Nov 2022 01:49:17 -0500 Subject: [PATCH 11/60] Turn off IDR/I Frames Keeping MAX_QP as it seems to still help but in only extremely rare cases --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index da82d6c8ad..8612baf974 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -214,8 +214,11 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas amfEncoder->SetProperty(AMF_VIDEO_ENCODER_ENABLE_VBAQ, true); - //Fixes rythmic pixelation. I-frames were overcompressed on default settings + //Fixes rythmic pixelation. amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_QP, 30); + + //Turns Off IDR/I Frames + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_IDR_PERIOD, 0); } else { @@ -249,8 +252,11 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ, true); - //Fixes rythmic pixelation. I-frames were overcompressed on default settings - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP_I, 30); + //Fixes rythmic pixelation. + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP, 30); + + //Turns Off IDR/I Frames + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_IDR_PERIOD, 0); } Debug("Configured %s.\n", pCodec); From 936f82a9f8512a0e572afb09ac2456ccc82cf729 Mon Sep 17 00:00:00 2001 From: Vixea <112600048+Vixea@users.noreply.github.com> Date: Thu, 3 Nov 2022 01:56:29 -0500 Subject: [PATCH 12/60] fix compile error MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit really should've checked the headers 🤦 --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 8612baf974..27381fea6e 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -253,7 +253,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ, true); //Fixes rythmic pixelation. - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP, 30); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_QP, 30); //Turns Off IDR/I Frames amfEncoder->SetProperty(AMF_VIDEO_ENCODER_IDR_PERIOD, 0); From 64b68b6c709aff29366c7b7b76fdac423ffae756 Mon Sep 17 00:00:00 2001 From: Vixea Date: Thu, 3 Nov 2022 08:56:40 -0500 Subject: [PATCH 13/60] fixes for x265 --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 27381fea6e..c681bb3084 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -253,10 +253,11 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ, true); //Fixes rythmic pixelation. - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_QP, 30); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP_I, 30); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP_P, 30); //Turns Off IDR/I Frames - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_IDR_PERIOD, 0); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_NUM_GOPS_PER_IDR, 0); } Debug("Configured %s.\n", pCodec); From 3d7d5494a01be0b156aa8209ed64031b96617265 Mon Sep 17 00:00:00 2001 From: Yury Date: Thu, 3 Nov 2022 11:47:19 +0200 Subject: [PATCH 14/60] Set VBV buffer size to max frame size --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index c681bb3084..08653bb178 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -219,6 +219,8 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //Turns Off IDR/I Frames amfEncoder->SetProperty(AMF_VIDEO_ENCODER_IDR_PERIOD, 0); + + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); } else { @@ -258,6 +260,8 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //Turns Off IDR/I Frames amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_NUM_GOPS_PER_IDR, 0); + + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); } Debug("Configured %s.\n", pCodec); @@ -385,10 +389,12 @@ void VideoEncoderVCE::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationT if (m_codec == ALVR_CODEC_H264) { m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); + m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / m_refreshRate); } else { m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); + m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / m_refreshRate); } } } From 10b34cd49d4ea68a1d0f5a763953e5e14cc1e7bc Mon Sep 17 00:00:00 2001 From: Yury Date: Thu, 3 Nov 2022 18:46:13 +0200 Subject: [PATCH 15/60] Use infinite GOP length for AMF HEVC --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 08653bb178..74191a84ce 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -260,6 +260,8 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //Turns Off IDR/I Frames amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_NUM_GOPS_PER_IDR, 0); + //Set infinite GOP length + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_GOP_SIZE, 0); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); } From eafba749c359e61efab4fc6e5a4474c5a8643683 Mon Sep 17 00:00:00 2001 From: Yury Date: Mon, 7 Nov 2022 19:32:55 +0200 Subject: [PATCH 16/60] Use digits delimiter for bitrate number --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 74191a84ce..9f66dd6751 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -168,7 +168,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( const wchar_t *pCodec; amf_int32 frameRateIn = refreshRate; - amf_int64 bitRateIn = bitrateInMbits * 1000000L; // in bits + amf_int64 bitRateIn = bitrateInMbits * 1'000'000L; // in bits switch (codec) { case ALVR_CODEC_H264: @@ -387,7 +387,7 @@ void VideoEncoderVCE::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationT if (m_Listener) { if (m_Listener->GetStatistics()->CheckBitrateUpdated()) { m_bitrateInMBits = m_Listener->GetStatistics()->GetBitrate(); - amf_int64 bitRateIn = m_bitrateInMBits * 1000000L; // in bits + amf_int64 bitRateIn = m_bitrateInMBits * 1'000'000L; // in bits if (m_codec == ALVR_CODEC_H264) { m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); From c108d925e59f46c38c729d4c00f26ff035da290f Mon Sep 17 00:00:00 2001 From: Yury Date: Tue, 8 Nov 2022 00:01:30 +0200 Subject: [PATCH 17/60] Remove AUD in encoder component and add manual check for h264 --- .../cpp/platform/win32/VideoEncoderVCE.cpp | 68 +++++++++++++++---- .../cpp/platform/win32/VideoEncoderVCE.h | 5 ++ 2 files changed, 59 insertions(+), 14 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 9f66dd6751..499390f6c5 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -157,9 +157,17 @@ VideoEncoderVCE::VideoEncoderVCE(std::shared_ptr d3dRender , m_preProcTor(Settings::Instance().m_preProcTor) , m_preProcSigma(Settings::Instance().m_preProcSigma) , m_encoderQualityPreset(static_cast(Settings::Instance().m_encoderQualityPreset)) + , m_audByteSequence(nullptr) + , m_audNalSize(0) + , m_audHeaderSize(0) {} -VideoEncoderVCE::~VideoEncoderVCE() {} +VideoEncoderVCE::~VideoEncoderVCE() { + if (m_audByteSequence) { + delete[] m_audByteSequence; + m_audByteSequence = nullptr; + } +} amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amf::AMF_SURFACE_FORMAT inputFormat, int width, int height, int codec, int refreshRate, int bitrateInMbits @@ -220,6 +228,10 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //Turns Off IDR/I Frames amfEncoder->SetProperty(AMF_VIDEO_ENCODER_IDR_PERIOD, 0); + // Disable AUD to produce the same stream format as VideoEncoderNVENC. + // FIXME: This option doesn't work in 22.10.3, but works in versions prior 22.5.1 + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_INSERT_AUD, false); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); } else @@ -263,6 +275,10 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //Set infinite GOP length amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_GOP_SIZE, 0); + // Disable AUD to produce the same stream format as VideoEncoderNVENC. + // FIXME: This option doesn't work in 22.10.3, but works in versions prior 22.5.1 + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_INSERT_AUD, false); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); } @@ -318,6 +334,8 @@ void VideoEncoderVCE::Initialize() Debug("Initializing VideoEncoderVCE.\n"); AMF_THROW_IF(g_AMFFactory.Init()); + LoadAUDByteSequence(); + ::amf_increase_timer_precision(); AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateContext(&m_amfContext)); @@ -431,6 +449,7 @@ void VideoEncoderVCE::Receive(AMFDataPtr data) char *p = reinterpret_cast(buffer->GetNative()); int length = static_cast(buffer->GetSize()); + //Fallback in case AUD was not removed by the encoder SkipAUD(&p, &length); if (fpOut) { @@ -444,7 +463,7 @@ void VideoEncoderVCE::Receive(AMFDataPtr data) void VideoEncoderVCE::ApplyFrameProperties(const amf::AMFSurfacePtr &surface, bool insertIDR) { switch (m_codec) { case ALVR_CODEC_H264: - // Disable AUD (NAL Type 9) to produce the same stream format as VideoEncoderNVENC. + // FIXME: This option doesn't work in drivers 22.3.1 - 22.5.1, but works in 22.10.3 surface->SetProperty(AMF_VIDEO_ENCODER_INSERT_AUD, false); if (insertIDR) { Debug("Inserting IDR frame for H.264.\n"); @@ -454,7 +473,7 @@ void VideoEncoderVCE::ApplyFrameProperties(const amf::AMFSurfacePtr &surface, bo } break; case ALVR_CODEC_H265: - // This option is ignored. Maybe a bug on AMD driver. + // FIXME: This option works with 22.10.3, but may not work with older drivers surface->SetProperty(AMF_VIDEO_ENCODER_HEVC_INSERT_AUD, false); if (insertIDR) { Debug("Inserting IDR frame for H.265.\n"); @@ -465,29 +484,50 @@ void VideoEncoderVCE::ApplyFrameProperties(const amf::AMFSurfacePtr &surface, bo surface->SetProperty(AMF_VIDEO_ENCODER_HEVC_FORCE_PICTURE_TYPE, AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_IDR); } break; + default: + throw MakeException("Invalid video codec"); } } -void VideoEncoderVCE::SkipAUD(char **buffer, int *length) { - // H.265 encoder always produces AUD NAL even if AMF_VIDEO_ENCODER_HEVC_INSERT_AUD is set. But it is not needed. - static const int AUD_NAL_SIZE = 7; +void VideoEncoderVCE::LoadAUDByteSequence() { + const char H264_AUD_HEADER[] = {0x00, 0x00, 0x00, 0x01, 0x09}; + const char H265_AUD_HEADER[] = {0x00, 0x00, 0x00, 0x01, 0x46}; - if (m_codec != ALVR_CODEC_H265) { - return; + switch (m_codec) { + case ALVR_CODEC_H264: + m_audHeaderSize = sizeof(H264_AUD_HEADER); + m_audByteSequence = new char[m_audHeaderSize]; + m_audNalSize = 6; + std::copy(std::begin(H264_AUD_HEADER), std::end(H264_AUD_HEADER), m_audByteSequence); + break; + case ALVR_CODEC_H265: + m_audHeaderSize = sizeof(H265_AUD_HEADER); + m_audByteSequence = new char[m_audHeaderSize]; + m_audNalSize = 7; + std::copy(std::begin(H265_AUD_HEADER), std::end(H265_AUD_HEADER), m_audByteSequence); + break; + default: + throw MakeException("Invalid video codec"); } +} - if (*length < AUD_NAL_SIZE + 4) { +void VideoEncoderVCE::SkipAUD(char **buffer, int *length) { + static const char NAL_HEADER[] = {0x00, 0x00, 0x00, 0x01}; + + if (*length < m_audNalSize + sizeof(NAL_HEADER)) { return; } // Check if start with AUD NAL. - if (memcmp(*buffer, "\x00\x00\x00\x01\x46", 5) != 0) { + if (memcmp(*buffer, m_audByteSequence, m_audHeaderSize) != 0) { return; } - // Check if AUD NAL size is AUD_NAL_SIZE bytes. - if (memcmp(*buffer + AUD_NAL_SIZE, "\x00\x00\x00\x01", 4) != 0) { + + // Check if AUD NAL size is m_audNalSize bytes. + if (memcmp(*buffer + m_audNalSize, NAL_HEADER, sizeof(NAL_HEADER)) != 0) { return; } - *buffer += AUD_NAL_SIZE; - *length -= AUD_NAL_SIZE; + + *buffer += m_audNalSize; + *length -= m_audNalSize; } diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index 4a69da8aa3..16a8f2e642 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -112,7 +112,12 @@ class VideoEncoderVCE : public VideoEncoder int m_renderHeight; int m_bitrateInMBits; + char *m_audByteSequence; + int m_audNalSize; + int m_audHeaderSize; + void ApplyFrameProperties(const amf::AMFSurfacePtr &surface, bool insertIDR); void SkipAUD(char **buffer, int *length); + void LoadAUDByteSequence(); }; From 020d913ca916fcc0d1024b5a3f5889aed471650d Mon Sep 17 00:00:00 2001 From: Vixea Date: Wed, 9 Nov 2022 20:42:00 -0600 Subject: [PATCH 18/60] remove setting MAX_QP and the hevc versions --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 7 ------- 1 file changed, 7 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 499390f6c5..f9ab37335c 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -222,9 +222,6 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas amfEncoder->SetProperty(AMF_VIDEO_ENCODER_ENABLE_VBAQ, true); - //Fixes rythmic pixelation. - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_QP, 30); - //Turns Off IDR/I Frames amfEncoder->SetProperty(AMF_VIDEO_ENCODER_IDR_PERIOD, 0); @@ -265,10 +262,6 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ, true); - - //Fixes rythmic pixelation. - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP_I, 30); - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_QP_P, 30); //Turns Off IDR/I Frames amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_NUM_GOPS_PER_IDR, 0); From 6c42795b8c423330548a860763c17bfadc0056a5 Mon Sep 17 00:00:00 2001 From: Yury Date: Tue, 15 Nov 2022 19:17:19 +0200 Subject: [PATCH 19/60] Enable CBR in AMF --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index f9ab37335c..d18a93f67d 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -199,6 +199,9 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( if (codec == ALVR_CODEC_H264) { amfEncoder->SetProperty(AMF_VIDEO_ENCODER_USAGE, AMF_VIDEO_ENCODER_USAGE_ULTRA_LOW_LATENCY); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR); + // Required for CBR to work correctly + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FILLER_DATA_ENABLE, true); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMESIZE, ::AMFConstructSize(width, height)); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); @@ -234,6 +237,9 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( else { amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_USAGE, AMF_VIDEO_ENCODER_HEVC_USAGE_ULTRA_LOW_LATENCY); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR); + // Required for CBR to work correctly + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FILLER_DATA_ENABLE, true); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_TIER, AMF_VIDEO_ENCODER_HEVC_TIER_HIGH); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMESIZE, ::AMFConstructSize(width, height)); From 8153561acb145f22c6ffe1bd9e3f498366f443d7 Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 16 Nov 2022 18:59:32 +0200 Subject: [PATCH 20/60] Terminate AMF context and factory on shutdown --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index d18a93f67d..4b2cd08893 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -388,6 +388,11 @@ void VideoEncoderVCE::Shutdown() delete component; } + m_amfContext->Terminate(); + m_amfContext = NULL; + + g_AMFFactory.Terminate(); + amf_restore_timer_precision(); if (fpOut) { From 59b903107b04fe1bf86a1a037e60aa053687ad3b Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 16 Nov 2022 22:07:03 +0200 Subject: [PATCH 21/60] Set profile properties before picture properties --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 4b2cd08893..e6c6eb7d38 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -199,6 +199,8 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( if (codec == ALVR_CODEC_H264) { amfEncoder->SetProperty(AMF_VIDEO_ENCODER_USAGE, AMF_VIDEO_ENCODER_USAGE_ULTRA_LOW_LATENCY); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE, AMF_VIDEO_ENCODER_PROFILE_HIGH); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE_LEVEL, 42); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR); // Required for CBR to work correctly amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FILLER_DATA_ENABLE, true); @@ -206,8 +208,6 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMESIZE, ::AMFConstructSize(width, height)); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_B_PIC_PATTERN, 0); - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE, AMF_VIDEO_ENCODER_PROFILE_HIGH); - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE_LEVEL, 42); switch (m_encoderQualityPreset) { case SPEED: From de66163f07bf0d9662cfec99800e4258b41de781 Mon Sep 17 00:00:00 2001 From: Yury Date: Mon, 28 Nov 2022 18:17:50 +0200 Subject: [PATCH 22/60] AMF changes (#1281) * Remove High HEVC tier * Make Speed default quality preset option * Remove separate receiver thread --- .../cpp/platform/win32/VideoEncoderVCE.cpp | 42 +++++-------------- .../cpp/platform/win32/VideoEncoderVCE.h | 1 - alvr/session/src/settings.rs | 2 +- 3 files changed, 11 insertions(+), 34 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index e6c6eb7d38..8386cc06e0 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -71,7 +71,6 @@ void AMFSolidPipe::Passthrough(AMFDataPtr data) AMFPipeline::AMFPipeline() : m_thread(nullptr) - , m_receiveThread(nullptr) , m_pipes() , isRunning(false) {} @@ -87,13 +86,6 @@ AMFPipeline::~AMFPipeline() delete m_thread; m_thread = nullptr; } - if (m_receiveThread) { - Debug("AMFPipeline::~AMFPipeline() m_receiveThread->join\n"); - m_receiveThread->join(); - Debug("AMFPipeline::~AMFPipeline() m_receiveThread joined.\n"); - delete m_receiveThread; - m_receiveThread = nullptr; - } for (auto &pipe : m_pipes) { delete pipe; @@ -108,33 +100,20 @@ void AMFPipeline::Connect(AMFPipePtr pipe) void AMFPipeline::Run() { Debug("Start AMFPipeline Run() thread. Thread Id=%d\n", GetCurrentThreadId()); - auto it = m_pipes.begin(); - auto itEnd = std::prev(m_pipes.end()); while (isRunning) { - for (it = m_pipes.begin(); it != itEnd; it++) + for (auto &pipe : m_pipes) { - (*it)->doPassthrough(); + pipe->doPassthrough(); } amf_sleep(1); } } -void AMFPipeline::RunReceive() -{ - Debug("Start AMFPipeline RunReceive() thread. Thread Id=%d\n", GetCurrentThreadId()); - while (isRunning) - { - m_pipes.back()->doPassthrough(); - amf_sleep(1); - } -} - void AMFPipeline::Start() { isRunning = true; m_thread = new std::thread(&AMFPipeline::Run, this); - m_receiveThread = new std::thread(&AMFPipeline::RunReceive, this); } // @@ -210,15 +189,15 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_B_PIC_PATTERN, 0); switch (m_encoderQualityPreset) { - case SPEED: - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_SPEED); + case QUALITY: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY); break; case BALANCED: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_BALANCED); break; - case QUALITY: + case SPEED: default: - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_SPEED); break; } @@ -240,21 +219,20 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR); // Required for CBR to work correctly amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FILLER_DATA_ENABLE, true); - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_TIER, AMF_VIDEO_ENCODER_HEVC_TIER_HIGH); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMESIZE, ::AMFConstructSize(width, height)); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); switch (m_encoderQualityPreset) { - case SPEED: - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED); + case QUALITY: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY); break; case BALANCED: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED); break; - case QUALITY: + case SPEED: default: - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED); break; } diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index 16a8f2e642..9bee328e48 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -47,7 +47,6 @@ class AMFPipeline { void RunReceive(); protected: std::thread *m_thread; - std::thread *m_receiveThread; std::vector m_pipes; bool isRunning; }; diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index ea9070285c..e0dbae6f7b 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -672,7 +672,7 @@ pub fn session_settings_default() -> SettingsDefault { preproc_sigma: 4, preproc_tor: 7, encoder_quality_preset: EncoderQualityPresetDefault { - variant: EncoderQualityPresetDefaultVariant::Quality, + variant: EncoderQualityPresetDefaultVariant::Speed, }, }, mediacodec_extra_options: DictionaryDefault { From a43e542b5dee3cc9c3cd769badb86c0327e4d61e Mon Sep 17 00:00:00 2001 From: Yury Date: Fri, 2 Dec 2022 20:40:03 +0200 Subject: [PATCH 23/60] Configurable rate control mode (#1287) * Configurable rate control mode * Set peak bitrate together with target bitrate * Move rate control setting under advanced settings --- alvr/dashboard/js/app/nls/settings.js | 8 +++- alvr/server/cpp/ALVR-common/packet_types.h | 5 ++- alvr/server/cpp/alvr_server/Settings.cpp | 3 +- alvr/server/cpp/alvr_server/Settings.h | 1 + .../cpp/platform/win32/VideoEncoderNVENC.cpp | 10 ++++- .../cpp/platform/win32/VideoEncoderVCE.cpp | 44 ++++++++++++------- .../cpp/platform/win32/VideoEncoderVCE.h | 4 -- alvr/server/src/connection.rs | 3 +- alvr/session/src/lib.rs | 3 +- alvr/session/src/settings.rs | 14 ++++++ 10 files changed, 69 insertions(+), 26 deletions(-) diff --git a/alvr/dashboard/js/app/nls/settings.js b/alvr/dashboard/js/app/nls/settings.js index e2c7a97ea0..9cf4275f74 100644 --- a/alvr/dashboard/js/app/nls/settings.js +++ b/alvr/dashboard/js/app/nls/settings.js @@ -73,7 +73,13 @@ define({ "_root_video_use10bitEncoder.name": "Reduce color banding (newer nVidia cards or SW encoding only)", "_root_video_use10bitEncoder.description": - "This increases visual quality by streaming 10 bit per color channel instead of 8", + "This increases visual quality by streaming 10 bits per color channel instead of 8. Works on all supported platforms except nvidia on linux.", + "_root_video_rateControlMode-choice-.name": + "Rate control mode", + "_root_video_rateControlMode-choice-.description": + "Specifies the bitrate control method (Windows with AMD and nVidia cards only). CBR - constant bitrate, VBR - variable bitrate.", + "_root_video_rateControlMode_cbr-choice-.name": "CBR", + "_root_video_rateControlMode_vbr-choice-.name": "VBR", "_root_video_advancedCodecOptions_amfControls_usePreproc.name": "Enable Pre-Processor component", "_root_video_advancedCodecOptions_amfControls_usePreproc.description": diff --git a/alvr/server/cpp/ALVR-common/packet_types.h b/alvr/server/cpp/ALVR-common/packet_types.h index 48980878cf..4211be4b0e 100644 --- a/alvr/server/cpp/ALVR-common/packet_types.h +++ b/alvr/server/cpp/ALVR-common/packet_types.h @@ -18,8 +18,9 @@ enum ALVR_CODEC { ALVR_CODEC_H265 = 1, }; -enum ALVR_LOST_FRAME_TYPE { - ALVR_LOST_FRAME_TYPE_VIDEO = 0, +enum ALVR_RATE_CONTROL_METHOD { + ALVR_CBR = 0, + ALVR_VBR = 1, }; enum ALVR_INPUT { diff --git a/alvr/server/cpp/alvr_server/Settings.cpp b/alvr/server/cpp/alvr_server/Settings.cpp index 4f70ddc9e6..f2dc67f63c 100644 --- a/alvr/server/cpp/alvr_server/Settings.cpp +++ b/alvr/server/cpp/alvr_server/Settings.cpp @@ -85,6 +85,7 @@ void Settings::Load() m_nAdapterIndex = (int32_t)config.get("adapter_index").get(); m_codec = (int32_t)config.get("codec").get(); + m_rateControlMode = (uint32_t)config.get("rate_control_mode").get(); m_refreshRate = (int)config.get("refresh_rate").get(); mEncodeBitrateMBs = (int)config.get("encode_bitrate_mbs").get(); m_enableAdaptiveBitrate = config.get("enable_adaptive_bitrate").get(); @@ -177,7 +178,7 @@ void Settings::Load() m_nvencMaxNumRefFrames = config.get("max_num_ref_frames").get(); m_nvencGopLength = config.get("gop_length").get(); m_nvencPFrameStrategy = config.get("p_frame_strategy").get(); - m_nvencRateControlMode = config.get("rate_control_mode").get(); + m_nvencRateControlMode = config.get("nvenc_rate_control_mode").get(); m_nvencRcBufferSize = config.get("rc_buffer_size").get(); m_nvencRcInitialDelay = config.get("rc_initial_delay").get(); m_nvencRcMaxBitrate = config.get("rc_max_bitrate").get(); diff --git a/alvr/server/cpp/alvr_server/Settings.h b/alvr/server/cpp/alvr_server/Settings.h index 54579d06e4..04433b3bd3 100644 --- a/alvr/server/cpp/alvr_server/Settings.h +++ b/alvr/server/cpp/alvr_server/Settings.h @@ -78,6 +78,7 @@ class Settings uint32_t m_preProcSigma; uint32_t m_preProcTor; uint32_t m_encoderQualityPreset; + uint32_t m_rateControlMode; bool m_force_sw_encoding; uint32_t m_swThreadCount; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index a8390ca3a2..014ca36ede 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -253,7 +253,15 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar // NV_ENC_PARAMS_RC_CBR_HQ is equivalent to NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP. //encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ;// NV_ENC_PARAMS_RC_CBR_HQ; - encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ; + switch (Settings::Instance().m_rateControlMode) { + case ALVR_CBR: + encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ; + break; + case ALVR_VBR: + encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_VBR; + break; + } + uint32_t maxFrameSize = static_cast(bitrateBits / refreshRate); Debug("VideoEncoderNVENC: maxFrameSize=%d bits\n", maxFrameSize); encodeConfig.rcParams.vbvBufferSize = maxFrameSize; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 8386cc06e0..621a5455cf 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -132,10 +132,6 @@ VideoEncoderVCE::VideoEncoderVCE(std::shared_ptr d3dRender , m_bitrateInMBits(Settings::Instance().mEncodeBitrateMBs) , m_surfaceFormat(amf::AMF_SURFACE_RGBA) , m_use10bit(Settings::Instance().m_use10bitEncoder) - , m_usePreProc(Settings::Instance().m_usePreproc) - , m_preProcTor(Settings::Instance().m_preProcTor) - , m_preProcSigma(Settings::Instance().m_preProcSigma) - , m_encoderQualityPreset(static_cast(Settings::Instance().m_encoderQualityPreset)) , m_audByteSequence(nullptr) , m_audNalSize(0) , m_audHeaderSize(0) @@ -180,15 +176,23 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_USAGE, AMF_VIDEO_ENCODER_USAGE_ULTRA_LOW_LATENCY); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE, AMF_VIDEO_ENCODER_PROFILE_HIGH); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PROFILE_LEVEL, 42); - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR); - // Required for CBR to work correctly - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FILLER_DATA_ENABLE, true); + switch (Settings::Instance().m_rateControlMode) { + case ALVR_CBR: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR); + // Required for CBR to work correctly + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FILLER_DATA_ENABLE, true); + break; + case ALVR_VBR: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR); + break; + } amfEncoder->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PEAK_BITRATE, bitRateIn); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMESIZE, ::AMFConstructSize(width, height)); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_B_PIC_PATTERN, 0); - switch (m_encoderQualityPreset) { + switch (Settings::Instance().m_encoderQualityPreset) { case QUALITY: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY); break; @@ -216,14 +220,22 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( else { amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_USAGE, AMF_VIDEO_ENCODER_HEVC_USAGE_ULTRA_LOW_LATENCY); - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR); - // Required for CBR to work correctly - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FILLER_DATA_ENABLE, true); + switch (Settings::Instance().m_rateControlMode) { + case ALVR_CBR: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR); + // Required for CBR to work correctly + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FILLER_DATA_ENABLE, true); + break; + case ALVR_VBR: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR); + break; + } amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_PEAK_BITRATE, bitRateIn); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMESIZE, ::AMFConstructSize(width, height)); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); - switch (m_encoderQualityPreset) { + switch (Settings::Instance().m_encoderQualityPreset) { case QUALITY: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY); break; @@ -297,8 +309,8 @@ amf::AMFComponentPtr VideoEncoderVCE::MakePreprocessor( AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateComponent(m_amfContext, AMFPreProcessing, &amfPreprocessor)); AMF_THROW_IF(amfPreprocessor->SetProperty(AMF_PP_ENGINE_TYPE, amf::AMF_MEMORY_DX11)); - AMF_THROW_IF(amfPreprocessor->SetProperty(AMF_PP_ADAPTIVE_FILTER_STRENGTH, m_preProcSigma)); - AMF_THROW_IF(amfPreprocessor->SetProperty(AMF_PP_ADAPTIVE_FILTER_SENSITIVITY, m_preProcTor)); + AMF_THROW_IF(amfPreprocessor->SetProperty(AMF_PP_ADAPTIVE_FILTER_STRENGTH, Settings::Instance().m_preProcSigma)); + AMF_THROW_IF(amfPreprocessor->SetProperty(AMF_PP_ADAPTIVE_FILTER_SENSITIVITY, Settings::Instance().m_preProcTor)); AMF_THROW_IF(amfPreprocessor->Init(inputFormat, width, height)); @@ -325,7 +337,7 @@ void VideoEncoderVCE::Initialize() m_surfaceFormat, m_renderWidth, m_renderHeight, inFormat )); } else { - if (m_usePreProc) { + if (Settings::Instance().m_usePreproc) { inFormat = amf::AMF_SURFACE_NV12; m_amfComponents.emplace_back(MakeConverter( m_surfaceFormat, m_renderWidth, m_renderHeight, inFormat @@ -391,11 +403,13 @@ void VideoEncoderVCE::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationT if (m_codec == ALVR_CODEC_H264) { m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); + m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_PEAK_BITRATE, bitRateIn); m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / m_refreshRate); } else { m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); + m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_PEAK_BITRATE, bitRateIn); m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / m_refreshRate); } } diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index 9bee328e48..1c0755690c 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -99,10 +99,6 @@ class VideoEncoderVCE : public VideoEncoder std::shared_ptr m_Listener; bool m_use10bit; - bool m_usePreProc; - uint32_t m_preProcSigma; - uint32_t m_preProcTor; - EncoderQualityPreset m_encoderQualityPreset; amf::AMF_SURFACE_FORMAT m_surfaceFormat; int m_codec; diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 9a0ed7eb7c..63f831ab67 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -251,6 +251,7 @@ async fn client_handshake( aggressive_keyframe_resend: settings.connection.aggressive_keyframe_resend, adapter_index: settings.video.adapter_index, codec: matches!(settings.video.codec, CodecType::HEVC) as _, + rate_control_mode: settings.video.rate_control_mode as u32, refresh_rate: fps as _, use_10bit_encoder: settings.video.use_10bit_encoder, use_preproc: amf_controls.use_preproc, @@ -478,7 +479,7 @@ async fn client_handshake( max_num_ref_frames: nvenc_overrides.max_num_ref_frames, gop_length: nvenc_overrides.gop_length, p_frame_strategy: nvenc_overrides.p_frame_strategy, - rate_control_mode: nvenc_overrides.rate_control_mode, + nvenc_rate_control_mode: nvenc_overrides.rate_control_mode, rc_buffer_size: nvenc_overrides.rc_buffer_size, rc_initial_delay: nvenc_overrides.rc_initial_delay, rc_max_bitrate: nvenc_overrides.rc_max_bitrate, diff --git a/alvr/session/src/lib.rs b/alvr/session/src/lib.rs index 8a79b73074..6288429b71 100644 --- a/alvr/session/src/lib.rs +++ b/alvr/session/src/lib.rs @@ -66,6 +66,7 @@ pub struct OpenvrConfig { pub preproc_sigma: u32, pub preproc_tor: u32, pub encoder_quality_preset: u32, + pub rate_control_mode: u32, pub force_sw_encoding: bool, pub sw_thread_count: u32, pub encode_bitrate_mbs: u64, @@ -128,7 +129,7 @@ pub struct OpenvrConfig { pub max_num_ref_frames: i64, pub gop_length: i64, pub p_frame_strategy: i64, - pub rate_control_mode: i64, + pub nvenc_rate_control_mode: i64, pub rc_buffer_size: i64, pub rc_initial_delay: i64, pub rc_max_bitrate: i64, diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index e0dbae6f7b..83230d5e68 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -53,6 +53,14 @@ pub enum EncoderQualityPreset { Speed = 2, } +#[repr(u8)] +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(tag = "type", content = "content")] +pub enum RateControlMode { + CBR = 0, + VBR = 1, +} + /// Except for preset, the value of these fields is not applied if == -1 (flag) #[derive(SettingsSchema, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase")] @@ -215,6 +223,9 @@ pub struct VideoDesc { pub codec: CodecType, + #[schema(advanced)] + pub rate_control_mode: RateControlMode, + // #[schema(advanced)] // pub video_coding: VideoCoding, #[schema(advanced)] @@ -626,6 +637,9 @@ pub fn session_settings_default() -> SettingsDefault { codec: CodecTypeDefault { variant: CodecTypeDefaultVariant::H264, }, + rate_control_mode: RateControlModeDefault { + variant: RateControlModeDefaultVariant::CBR, + }, client_request_realtime_decoder: true, use_10bit_encoder: false, sw_thread_count: 0, From 5d3587cd9467c62f6d9d5b49b20d9834aa9dac99 Mon Sep 17 00:00:00 2001 From: Vixea Date: Mon, 12 Dec 2022 02:58:18 -0600 Subject: [PATCH 24/60] change MAX_NUM_REFRAMES Matches the NVENC encoder closer the goal being to match as close as possible --- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 621a5455cf..fa686ea159 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -216,6 +216,8 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_INSERT_AUD, false); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); + + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_NUM_REFRAMES, 0); } else { @@ -269,6 +271,8 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_INSERT_AUD, false); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); + + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_NUM_REFRAMES, 0); } Debug("Configured %s.\n", pCodec); From e6507cd7286b6950314d0e3f5535a58eb12d26d0 Mon Sep 17 00:00:00 2001 From: Yury Date: Mon, 12 Dec 2022 13:30:12 +0200 Subject: [PATCH 25/60] Remove separate AMF pipeline thread (#1302) * Remove separate AMF pipeline thread * fix indention Co-authored-by: Vixea <112600048+Vixea@users.noreply.github.com> --- .../cpp/platform/win32/VideoEncoderVCE.cpp | 92 +++++++++---------- .../cpp/platform/win32/VideoEncoderVCE.h | 10 +- 2 files changed, 47 insertions(+), 55 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index fa686ea159..8a50a359d2 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -21,28 +21,28 @@ AMFPipe::~AMFPipe() m_amfComponentSrc->Drain(); } -void AMFPipe::doPassthrough() +void AMFPipe::doPassthrough(bool hasQueryTimeout) { - amf::AMFDataPtr data; - auto res = m_amfComponentSrc->QueryOutput(&data); - switch (res) { - case AMF_OK: - if (data) - { - m_receiver(data); - } - break; - case AMF_NO_DEVICE: - Debug("m_amfComponentSrc->QueryOutput returns AMF_NO_DEVICE.\n"); - return; - case AMF_REPEAT: - break; - case AMF_EOF: - Debug("m_amfComponentSrc->QueryOutput returns AMF_EOF.\n"); - return; - default: - Debug("m_amfComponentSrc->QueryOutput returns unknown status.\n"); - return; + amf::AMFDataPtr data = nullptr; + if (hasQueryTimeout) { + AMF_RESULT res = m_amfComponentSrc->QueryOutput(&data); + if (res == AMF_OK && data) { + m_receiver(data); + } else { + Debug("Failed to get AMF component data. Last status: %d.\n", res); + } + } else { + uint8_t timeout = 1000; // 1s timeout + AMF_RESULT res = m_amfComponentSrc->QueryOutput(&data); + while (!data && --timeout != 0) { + amf_sleep(1); + res = m_amfComponentSrc->QueryOutput(&data); + } + if (data) { + m_receiver(data); + } else { + Debug("Failed to get AMF component data. Last status: %d.\n", res); + } } } @@ -70,22 +70,11 @@ void AMFSolidPipe::Passthrough(AMFDataPtr data) } AMFPipeline::AMFPipeline() - : m_thread(nullptr) - , m_pipes() - , isRunning(false) + : m_pipes() {} AMFPipeline::~AMFPipeline() { - isRunning = false; - if (m_thread) - { - Debug("AMFPipeline::~AMFPipeline() m_thread->join\n"); - m_thread->join(); - Debug("AMFPipeline::~AMFPipeline() m_thread joined.\n"); - delete m_thread; - m_thread = nullptr; - } for (auto &pipe : m_pipes) { delete pipe; @@ -97,25 +86,14 @@ void AMFPipeline::Connect(AMFPipePtr pipe) m_pipes.emplace_back(pipe); } -void AMFPipeline::Run() +void AMFPipeline::Run(bool hasQueryTimeout) { - Debug("Start AMFPipeline Run() thread. Thread Id=%d\n", GetCurrentThreadId()); - while (isRunning) + for (auto &pipe : m_pipes) { - for (auto &pipe : m_pipes) - { - pipe->doPassthrough(); - } - amf_sleep(1); + pipe->doPassthrough(hasQueryTimeout); } } -void AMFPipeline::Start() -{ - isRunning = true; - m_thread = new std::thread(&AMFPipeline::Run, this); -} - // // VideoEncoderVCE // @@ -135,6 +113,7 @@ VideoEncoderVCE::VideoEncoderVCE(std::shared_ptr d3dRender , m_audByteSequence(nullptr) , m_audNalSize(0) , m_audHeaderSize(0) + , m_hasQueryTimeout(false) {} VideoEncoderVCE::~VideoEncoderVCE() { @@ -218,6 +197,14 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_NUM_REFRAMES, 0); + + amf::AMFCapsPtr caps; + if (amfEncoder->GetCaps(&caps) == AMF_OK) { + caps->GetProperty(AMF_VIDEO_ENCODER_CAPS_QUERY_TIMEOUT_SUPPORT, &m_hasQueryTimeout); + } + if (m_hasQueryTimeout) { + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUERY_TIMEOUT, 1000); // 1s timeout + } } else { @@ -273,6 +260,14 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_NUM_REFRAMES, 0); + + amf::AMFCapsPtr caps; + if (amfEncoder->GetCaps(&caps) == AMF_OK) { + caps->GetProperty(AMF_VIDEO_ENCODER_CAPS_HEVC_QUERY_TIMEOUT_SUPPORT, &m_hasQueryTimeout); + } + if (m_hasQueryTimeout) { + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUERY_TIMEOUT, 1000); // 1s timeout + } } Debug("Configured %s.\n", pCodec); @@ -366,8 +361,6 @@ void VideoEncoderVCE::Initialize() m_amfComponents.back(), std::bind(&VideoEncoderVCE::Receive, this, std::placeholders::_1) )); - m_pipeline->Start(); - Debug("Successfully initialized VideoEncoderVCE.\n"); } @@ -430,6 +423,7 @@ void VideoEncoderVCE::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationT ApplyFrameProperties(surface, insertIDR); m_amfComponents.front()->SubmitInput(surface); + m_pipeline->Run(m_hasQueryTimeout); } void VideoEncoderVCE::Receive(AMFDataPtr data) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index 1c0755690c..c385716973 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -19,7 +19,7 @@ class AMFPipe { AMFPipe(amf::AMFComponentPtr src, AMFDataReceiver receiver); virtual ~AMFPipe(); - void doPassthrough(); + void doPassthrough(bool hasQueryTimeout); protected: amf::AMFComponentPtr m_amfComponentSrc; AMFDataReceiver m_receiver; @@ -42,13 +42,9 @@ class AMFPipeline { ~AMFPipeline(); void Connect(AMFPipePtr pipe); - void Start(); - void Run(); - void RunReceive(); + void Run(bool hasQueryTimeout); protected: - std::thread *m_thread; std::vector m_pipes; - bool isRunning; }; typedef AMFPipeline* AMFPipelinePtr; @@ -111,6 +107,8 @@ class VideoEncoderVCE : public VideoEncoder int m_audNalSize; int m_audHeaderSize; + bool m_hasQueryTimeout; + void ApplyFrameProperties(const amf::AMFSurfacePtr &surface, bool insertIDR); void SkipAUD(char **buffer, int *length); void LoadAUDByteSequence(); From 3f0679dd57179cf2584fd8baeee61f5a7ae578b4 Mon Sep 17 00:00:00 2001 From: Yury Date: Sat, 24 Dec 2022 14:00:06 +0200 Subject: [PATCH 26/60] Entropy coding option (#1318) * Add entropy coding option * Use CAVLC as default option * Update description for entropy options * Add entropy coding option to Linux * Fix indentation * Add missing break statements --- alvr/dashboard/js/app/nls/settings.js | 5 +++ alvr/server/cpp/ALVR-common/packet_types.h | 5 +++ alvr/server/cpp/alvr_server/Settings.cpp | 1 + alvr/server/cpp/alvr_server/Settings.h | 1 + .../platform/linux/EncodePipelineNvEnc.cpp | 10 +++++ .../platform/linux/EncodePipelineVAAPI.cpp | 11 +++++- .../cpp/platform/win32/VideoEncoderNVENC.cpp | 9 +++++ .../cpp/platform/win32/VideoEncoderSW.cpp | 10 ++++- .../cpp/platform/win32/VideoEncoderVCE.cpp | 38 ++++++++++++------- alvr/server/src/connection.rs | 1 + alvr/session/src/lib.rs | 1 + alvr/session/src/settings.rs | 14 +++++++ 12 files changed, 90 insertions(+), 16 deletions(-) diff --git a/alvr/dashboard/js/app/nls/settings.js b/alvr/dashboard/js/app/nls/settings.js index 9cf4275f74..a849d53f01 100644 --- a/alvr/dashboard/js/app/nls/settings.js +++ b/alvr/dashboard/js/app/nls/settings.js @@ -80,6 +80,11 @@ define({ "Specifies the bitrate control method (Windows with AMD and nVidia cards only). CBR - constant bitrate, VBR - variable bitrate.", "_root_video_rateControlMode_cbr-choice-.name": "CBR", "_root_video_rateControlMode_vbr-choice-.name": "VBR", + "_root_video_entropyCoding-choice-.name": "Entropy coding method", + "_root_video_entropyCoding-choice-.description": + "Specifies the entropy coding method (h264 only). CABAC - provides better quality at lower bitrate, but may increase the encoder/decoder latency, CAVLC - provides worse quality that can be compensated with higher bitrate, and may significantly decrease encoder/decoder latency.", + "_root_video_entropyCoding_cabac-choice-.name": "CABAC", + "_root_video_entropyCoding_cavlc-choice-.name": "CAVLC", "_root_video_advancedCodecOptions_amfControls_usePreproc.name": "Enable Pre-Processor component", "_root_video_advancedCodecOptions_amfControls_usePreproc.description": diff --git a/alvr/server/cpp/ALVR-common/packet_types.h b/alvr/server/cpp/ALVR-common/packet_types.h index 4211be4b0e..ef45da7660 100644 --- a/alvr/server/cpp/ALVR-common/packet_types.h +++ b/alvr/server/cpp/ALVR-common/packet_types.h @@ -23,6 +23,11 @@ enum ALVR_RATE_CONTROL_METHOD { ALVR_VBR = 1, }; +enum ALVR_ENTROPY_CODING { + ALVR_CABAC = 0, + ALVR_CAVLC = 1, +}; + enum ALVR_INPUT { ALVR_INPUT_SYSTEM_CLICK, ALVR_INPUT_APPLICATION_MENU_CLICK, diff --git a/alvr/server/cpp/alvr_server/Settings.cpp b/alvr/server/cpp/alvr_server/Settings.cpp index f2dc67f63c..4cbe90a69c 100644 --- a/alvr/server/cpp/alvr_server/Settings.cpp +++ b/alvr/server/cpp/alvr_server/Settings.cpp @@ -86,6 +86,7 @@ void Settings::Load() m_codec = (int32_t)config.get("codec").get(); m_rateControlMode = (uint32_t)config.get("rate_control_mode").get(); + m_entropyCoding = (uint32_t)config.get("entropy_coding").get(); m_refreshRate = (int)config.get("refresh_rate").get(); mEncodeBitrateMBs = (int)config.get("encode_bitrate_mbs").get(); m_enableAdaptiveBitrate = config.get("enable_adaptive_bitrate").get(); diff --git a/alvr/server/cpp/alvr_server/Settings.h b/alvr/server/cpp/alvr_server/Settings.h index 04433b3bd3..4d2e3bef68 100644 --- a/alvr/server/cpp/alvr_server/Settings.h +++ b/alvr/server/cpp/alvr_server/Settings.h @@ -79,6 +79,7 @@ class Settings uint32_t m_preProcTor; uint32_t m_encoderQualityPreset; uint32_t m_rateControlMode; + uint32_t m_entropyCoding; bool m_force_sw_encoding; uint32_t m_swThreadCount; diff --git a/alvr/server/cpp/platform/linux/EncodePipelineNvEnc.cpp b/alvr/server/cpp/platform/linux/EncodePipelineNvEnc.cpp index 01ad5480af..e9d1e5c40d 100644 --- a/alvr/server/cpp/platform/linux/EncodePipelineNvEnc.cpp +++ b/alvr/server/cpp/platform/linux/EncodePipelineNvEnc.cpp @@ -51,6 +51,16 @@ alvr::EncodePipelineNvEnc::EncodePipelineNvEnc(std::vector &input_frame case ALVR_CODEC_H264: AVUTIL.av_opt_set(encoder_ctx, "preset", "llhq", 0); AVUTIL.av_opt_set(encoder_ctx, "zerolatency", "1", 0); + + switch (settings.m_entropyCoding) { + case ALVR_CABAC: + AVUTIL.av_opt_set(encoder_ctx->priv_data, "coder", "ac", 0); + break; + case ALVR_CAVLC: + AVUTIL.av_opt_set(encoder_ctx->priv_data, "coder", "vlc", 0); + break; + } + break; case ALVR_CODEC_H265: AVUTIL.av_opt_set(encoder_ctx, "preset", "llhq", 0); diff --git a/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp b/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp index 9550bdf2ba..4d8bc2a004 100644 --- a/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp +++ b/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp @@ -130,7 +130,16 @@ alvr::EncodePipelineVAAPI::EncodePipelineVAAPI(std::vector& input_frame { case ALVR_CODEC_H264: encoder_ctx->profile = FF_PROFILE_H264_MAIN; - AVUTIL.av_opt_set(encoder_ctx, "rc_mode", "2", 0); //CBR + + switch (settings.m_entropyCoding) { + case ALVR_CABAC: + AVUTIL.av_opt_set(encoder_ctx->priv_data, "coder", "ac", 0); + break; + case ALVR_CAVLC: + AVUTIL.av_opt_set(encoder_ctx->priv_data, "coder", "vlc", 0); + break; + } + break; case ALVR_CODEC_H265: encoder_ctx->profile = FF_PROFILE_HEVC_MAIN; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index 014ca36ede..b04e072559 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -208,6 +208,15 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar config.intraRefreshCnt = Settings::Instance().m_nvencIntraRefreshCount; } + switch (Settings::Instance().m_entropyCoding) { + case ALVR_CABAC: + config.entropyCodingMode = NV_ENC_H264_ENTROPY_CODING_MODE_CABAC; + break; + case ALVR_CAVLC: + config.entropyCodingMode = NV_ENC_H264_ENTROPY_CODING_MODE_CAVLC; + break; + } + config.maxNumRefFrames = maxNumRefFrames; config.idrPeriod = gopLength; } diff --git a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp index 93b6e5fd20..ad3046ae48 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp @@ -59,7 +59,15 @@ void VideoEncoderSW::Initialize() { av_dict_set(&opt, "tune", "zerolatency", 0); switch (m_codec) { case ALVR_CODEC_H264: - m_codecContext->profile = Settings::Instance().m_use10bitEncoder ? AV_PROFILE_H264_HIGH_10 : AV_PROFILE_H264_HIGH; + m_codecContext->profile = Settings::Instance().m_use10bitEncoder ? AV_PROFILE_H264_HIGH_10_INTRA : (AV_PROFILE_H264_HIGH | AV_PROFILE_H264_INTRA); + switch (Settings::Instance().m_entropyCoding) { + case ALVR_CABAC: + av_dict_set(&opt, "coder", "ac", 0); + break; + case ALVR_CAVLC: + av_dict_set(&opt, "coder", "vlc", 0); + break; + } break; case ALVR_CODEC_H265: m_codecContext->profile = Settings::Instance().m_use10bitEncoder ? AV_PROFILE_HEVC_MAIN_10 : AV_PROFILE_HEVC_MAIN; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 8a50a359d2..cc43145f99 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -165,6 +165,16 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR); break; } + + switch (Settings::Instance().m_entropyCoding) { + case ALVR_CABAC: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_CABAC_ENABLE, AMF_VIDEO_ENCODER_CABAC); + break; + case ALVR_CAVLC: + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_CABAC_ENABLE, AMF_VIDEO_ENCODER_CALV); + break; + } + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_PEAK_BITRATE, bitRateIn); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FRAMESIZE, ::AMFConstructSize(width, height)); @@ -198,13 +208,13 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_NUM_REFRAMES, 0); - amf::AMFCapsPtr caps; - if (amfEncoder->GetCaps(&caps) == AMF_OK) { - caps->GetProperty(AMF_VIDEO_ENCODER_CAPS_QUERY_TIMEOUT_SUPPORT, &m_hasQueryTimeout); - } - if (m_hasQueryTimeout) { - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUERY_TIMEOUT, 1000); // 1s timeout - } + amf::AMFCapsPtr caps; + if (amfEncoder->GetCaps(&caps) == AMF_OK) { + caps->GetProperty(AMF_VIDEO_ENCODER_CAPS_QUERY_TIMEOUT_SUPPORT, &m_hasQueryTimeout); + } + if (m_hasQueryTimeout) { + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUERY_TIMEOUT, 1000); // 1s timeout + } } else { @@ -261,13 +271,13 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_NUM_REFRAMES, 0); - amf::AMFCapsPtr caps; - if (amfEncoder->GetCaps(&caps) == AMF_OK) { - caps->GetProperty(AMF_VIDEO_ENCODER_CAPS_HEVC_QUERY_TIMEOUT_SUPPORT, &m_hasQueryTimeout); - } - if (m_hasQueryTimeout) { - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUERY_TIMEOUT, 1000); // 1s timeout - } + amf::AMFCapsPtr caps; + if (amfEncoder->GetCaps(&caps) == AMF_OK) { + caps->GetProperty(AMF_VIDEO_ENCODER_CAPS_HEVC_QUERY_TIMEOUT_SUPPORT, &m_hasQueryTimeout); + } + if (m_hasQueryTimeout) { + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUERY_TIMEOUT, 1000); // 1s timeout + } } Debug("Configured %s.\n", pCodec); diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 63f831ab67..e071166182 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -252,6 +252,7 @@ async fn client_handshake( adapter_index: settings.video.adapter_index, codec: matches!(settings.video.codec, CodecType::HEVC) as _, rate_control_mode: settings.video.rate_control_mode as u32, + entropy_coding: settings.video.entropy_coding as u32, refresh_rate: fps as _, use_10bit_encoder: settings.video.use_10bit_encoder, use_preproc: amf_controls.use_preproc, diff --git a/alvr/session/src/lib.rs b/alvr/session/src/lib.rs index 6288429b71..cc59276176 100644 --- a/alvr/session/src/lib.rs +++ b/alvr/session/src/lib.rs @@ -67,6 +67,7 @@ pub struct OpenvrConfig { pub preproc_tor: u32, pub encoder_quality_preset: u32, pub rate_control_mode: u32, + pub entropy_coding: u32, pub force_sw_encoding: bool, pub sw_thread_count: u32, pub encode_bitrate_mbs: u64, diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index 83230d5e68..d44f4bdaef 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -61,6 +61,14 @@ pub enum RateControlMode { VBR = 1, } +#[repr(u8)] +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(tag = "type", content = "content")] +pub enum EntropyCoding { + CABAC = 0, + CAVLC = 1, +} + /// Except for preset, the value of these fields is not applied if == -1 (flag) #[derive(SettingsSchema, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase")] @@ -226,6 +234,9 @@ pub struct VideoDesc { #[schema(advanced)] pub rate_control_mode: RateControlMode, + #[schema(advanced)] + pub entropy_coding: EntropyCoding, + // #[schema(advanced)] // pub video_coding: VideoCoding, #[schema(advanced)] @@ -641,6 +652,9 @@ pub fn session_settings_default() -> SettingsDefault { variant: RateControlModeDefaultVariant::CBR, }, client_request_realtime_decoder: true, + entropy_coding: EntropyCodingDefault { + variant: EntropyCodingDefaultVariant::CAVLC, + }, use_10bit_encoder: false, sw_thread_count: 0, encode_bitrate_mbs: 30, From b9a6cae3fb662a910ea441982386e7dc69ae4cad Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 28 Dec 2022 17:48:48 +0200 Subject: [PATCH 27/60] Update Video Codec SDK (#1331) * Update Video Codec SDK to 12.0 * Clean up unused stuff * Replace deprecated presets with quality and tuning presets * Replace deprecated CBR rate control option * Update NvEnc options * Update quality presets mapping for nvidia --- alvr/server/cpp/ALVR-common/packet_types.h | 6 + alvr/server/cpp/alvr_server/Settings.cpp | 13 +- alvr/server/cpp/alvr_server/Settings.h | 11 +- alvr/server/cpp/alvr_server/nvEncodeAPI.h | 1723 +++++++++++++---- .../cpp/alvr_server/nvencoderclioptions.h | 572 ------ .../platform/linux/EncodePipelineVAAPI.cpp | 26 + alvr/server/cpp/platform/win32/NvCodecUtils.h | 300 ++- alvr/server/cpp/platform/win32/NvEncoder.cpp | 389 ++-- alvr/server/cpp/platform/win32/NvEncoder.h | 117 +- .../cpp/platform/win32/NvEncoderD3D11.cpp | 13 +- .../cpp/platform/win32/NvEncoderD3D11.h | 22 +- .../cpp/platform/win32/VideoEncoderNVENC.cpp | 108 +- .../cpp/platform/win32/VideoEncoderNVENC.h | 8 +- .../cpp/platform/win32/VideoEncoderVCE.cpp | 12 +- .../cpp/platform/win32/VideoEncoderVCE.h | 6 - alvr/server/src/connection.rs | 9 +- alvr/session/src/lib.rs | 9 +- alvr/session/src/settings.rs | 69 +- 18 files changed, 2097 insertions(+), 1316 deletions(-) delete mode 100644 alvr/server/cpp/alvr_server/nvencoderclioptions.h diff --git a/alvr/server/cpp/ALVR-common/packet_types.h b/alvr/server/cpp/ALVR-common/packet_types.h index ef45da7660..76a722d35a 100644 --- a/alvr/server/cpp/ALVR-common/packet_types.h +++ b/alvr/server/cpp/ALVR-common/packet_types.h @@ -28,6 +28,12 @@ enum ALVR_ENTROPY_CODING { ALVR_CAVLC = 1, }; +enum ALVR_ENCODER_QUALITY_PRESET { + ALVR_QUALITY = 0, + ALVR_BALANCED = 1, + ALVR_SPEED = 2 +}; + enum ALVR_INPUT { ALVR_INPUT_SYSTEM_CLICK, ALVR_INPUT_APPLICATION_MENU_CLICK, diff --git a/alvr/server/cpp/alvr_server/Settings.cpp b/alvr/server/cpp/alvr_server/Settings.cpp index 4cbe90a69c..52c7764398 100644 --- a/alvr/server/cpp/alvr_server/Settings.cpp +++ b/alvr/server/cpp/alvr_server/Settings.cpp @@ -171,9 +171,12 @@ void Settings::Load() m_enableLinuxVulkanAsync = config.get("linux_async_reprojection").get(); - m_nvencPreset = config.get("nvenc_preset").get(); + m_nvencTuningPreset = (uint32_t)config.get("nvenc_tuning_preset").get(); + m_nvencMultiPass = (uint32_t)config.get("nvenc_multi_pass").get(); + m_nvencAdaptiveQuantizationMode = (uint32_t)config.get("nvenc_adaptive_quantization_mode").get(); + m_nvencLowDelayKeyFrameScale = config.get("nvenc_low_delay_key_frame_scale").get(); m_nvencRefreshRate = config.get("nvenc_refresh_rate").get(); - m_nvencEnableIntraRefresh = config.get("enable_intra_refresh").get(); + m_nvencEnableIntraRefresh = config.get("enable_intra_refresh").get(); m_nvencIntraRefreshPeriod = config.get("intra_refresh_period").get(); m_nvencIntraRefreshCount = config.get("intra_refresh_count").get(); m_nvencMaxNumRefFrames = config.get("max_num_ref_frames").get(); @@ -184,8 +187,10 @@ void Settings::Load() m_nvencRcInitialDelay = config.get("rc_initial_delay").get(); m_nvencRcMaxBitrate = config.get("rc_max_bitrate").get(); m_nvencRcAverageBitrate = config.get("rc_average_bitrate").get(); - m_nvencEnableAQ = config.get("enable_aq").get(); - + m_nvencEnableWeightedPrediction = config.get("nvenc_enable_weighted_prediction").get(); + + m_captureFrameDir = config.get("capture_frame_dir").get(); + Debug("Config JSON: %hs\n", json.c_str()); Info("Serial Number: %hs\n", mSerialNumber.c_str()); Info("Model Number: %hs\n", mModelNumber.c_str()); diff --git a/alvr/server/cpp/alvr_server/Settings.h b/alvr/server/cpp/alvr_server/Settings.h index 4d2e3bef68..9bd76174e4 100644 --- a/alvr/server/cpp/alvr_server/Settings.h +++ b/alvr/server/cpp/alvr_server/Settings.h @@ -137,9 +137,12 @@ class Settings bool m_enableLinuxVulkanAsync; - int64_t m_nvencPreset; + uint32_t m_nvencTuningPreset; + uint32_t m_nvencMultiPass; + uint32_t m_nvencAdaptiveQuantizationMode; + int64_t m_nvencLowDelayKeyFrameScale; int64_t m_nvencRefreshRate; - int64_t m_nvencEnableIntraRefresh; + bool m_nvencEnableIntraRefresh; int64_t m_nvencIntraRefreshPeriod; int64_t m_nvencIntraRefreshCount; int64_t m_nvencMaxNumRefFrames; @@ -150,5 +153,7 @@ class Settings int64_t m_nvencRcInitialDelay; int64_t m_nvencRcMaxBitrate; int64_t m_nvencRcAverageBitrate; - int64_t m_nvencEnableAQ; + bool m_nvencEnableWeightedPrediction; + + std::string m_captureFrameDir; }; diff --git a/alvr/server/cpp/alvr_server/nvEncodeAPI.h b/alvr/server/cpp/alvr_server/nvEncodeAPI.h index 8825f266d3..8a56e840db 100644 --- a/alvr/server/cpp/alvr_server/nvEncodeAPI.h +++ b/alvr/server/cpp/alvr_server/nvEncodeAPI.h @@ -1,7 +1,7 @@ /* * This copyright notice applies to this header file only: * - * Copyright (c) 2010-2018 NVIDIA Corporation + * Copyright (c) 2010-2022 NVIDIA Corporation * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation @@ -30,7 +30,7 @@ * NVIDIA GPUs - beginning with the Kepler generation - contain a hardware-based encoder * (referred to as NVENC) which provides fully-accelerated hardware-based video encoding. * NvEncodeAPI provides the interface for NVIDIA video encoder (NVENC). - * \date 2011-2018 + * \date 2011-2022 * This file contains the interface constants, structure definitions and function prototypes. */ @@ -73,20 +73,21 @@ typedef RECT NVENC_RECT; #else #define NVENCAPI // ========================================================================================= -#ifndef GUID +#ifndef GUID_DEFINED +#define GUID_DEFINED /*! * \struct GUID * Abstracts the GUID structure for non-windows platforms. */ // ========================================================================================= -typedef struct +typedef struct _GUID { uint32_t Data1; /**< [in]: Specifies the first 8 hexadecimal digits of the GUID. */ uint16_t Data2; /**< [in]: Specifies the first group of 4 hexadecimal digits. */ uint16_t Data3; /**< [in]: Specifies the second group of 4 hexadecimal digits. */ uint8_t Data4[8]; /**< [in]: Array of 8 bytes. The first 2 bytes contain the third group of 4 hexadecimal digits. The remaining 6 bytes contain the final 12 hexadecimal digits. */ -} GUID; +} GUID, *LPGUID; #endif // GUID /** @@ -108,9 +109,10 @@ typedef struct _NVENC_RECT typedef void* NV_ENC_INPUT_PTR; /**< NVENCODE API input buffer */ typedef void* NV_ENC_OUTPUT_PTR; /**< NVENCODE API output buffer*/ typedef void* NV_ENC_REGISTERED_PTR; /**< A Resource that has been registered with NVENCODE API*/ +typedef void* NV_ENC_CUSTREAM_PTR; /**< Pointer to CUstream*/ -#define NVENCAPI_MAJOR_VERSION 8 -#define NVENCAPI_MINOR_VERSION 1 +#define NVENCAPI_MAJOR_VERSION 12 +#define NVENCAPI_MINOR_VERSION 0 #define NVENCAPI_VERSION (NVENCAPI_MAJOR_VERSION | (NVENCAPI_MINOR_VERSION << 24)) @@ -124,6 +126,12 @@ typedef void* NV_ENC_REGISTERED_PTR; /**< A Resource that has been regist #define NV_MAX_SEQ_HDR_LEN (512) +#ifdef __GNUC__ +#define NV_ENC_DEPRECATED __attribute__ ((deprecated("WILL BE REMOVED IN A FUTURE VIDEO CODEC SDK VERSION"))) +#elif defined(_MSC_VER) +#define NV_ENC_DEPRECATED __declspec(deprecated("WILL BE REMOVED IN A FUTURE VIDEO CODEC SDK VERSION")) +#endif + // ========================================================================================= // Encode Codec GUIDS supported by the NvEncodeAPI interface. // ========================================================================================= @@ -133,9 +141,13 @@ static const GUID NV_ENC_CODEC_H264_GUID = { 0x6bc82762, 0x4e63, 0x4ca4, { 0xaa, 0x85, 0x1e, 0x50, 0xf3, 0x21, 0xf6, 0xbf } }; // {790CDC88-4522-4d7b-9425-BDA9975F7603} -static const GUID NV_ENC_CODEC_HEVC_GUID = +static const GUID NV_ENC_CODEC_HEVC_GUID = { 0x790cdc88, 0x4522, 0x4d7b, { 0x94, 0x25, 0xbd, 0xa9, 0x97, 0x5f, 0x76, 0x3 } }; +// {0A352289-0AA7-4759-862D-5D15CD16D254} +static const GUID NV_ENC_CODEC_AV1_GUID = +{ 0x0a352289, 0x0aa7, 0x4759, { 0x86, 0x2d, 0x5d, 0x15, 0xcd, 0x16, 0xd2, 0x54 } }; + // ========================================================================================= @@ -143,7 +155,7 @@ static const GUID NV_ENC_CODEC_HEVC_GUID = // ========================================================================================= // {BFD6F8E7-233C-4341-8B3E-4818523803F4} -static const GUID NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID = +static const GUID NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID = { 0xbfd6f8e7, 0x233c, 0x4341, { 0x8b, 0x3e, 0x48, 0x18, 0x52, 0x38, 0x3, 0xf4 } }; // {0727BCAA-78C4-4c83-8C2F-EF3DFF267C6A} @@ -159,77 +171,108 @@ static const GUID NV_ENC_H264_PROFILE_HIGH_GUID = { 0xe7cbc309, 0x4f7a, 0x4b89, { 0xaf, 0x2a, 0xd5, 0x37, 0xc9, 0x2b, 0xe3, 0x10 } }; // {7AC663CB-A598-4960-B844-339B261A7D52} -static const GUID NV_ENC_H264_PROFILE_HIGH_444_GUID = +static const GUID NV_ENC_H264_PROFILE_HIGH_444_GUID = { 0x7ac663cb, 0xa598, 0x4960, { 0xb8, 0x44, 0x33, 0x9b, 0x26, 0x1a, 0x7d, 0x52 } }; // {40847BF5-33F7-4601-9084-E8FE3C1DB8B7} static const GUID NV_ENC_H264_PROFILE_STEREO_GUID = { 0x40847bf5, 0x33f7, 0x4601, { 0x90, 0x84, 0xe8, 0xfe, 0x3c, 0x1d, 0xb8, 0xb7 } }; -// {CE788D20-AAA9-4318-92BB-AC7E858C8D36} -static const GUID NV_ENC_H264_PROFILE_SVC_TEMPORAL_SCALABILTY = -{ 0xce788d20, 0xaaa9, 0x4318, { 0x92, 0xbb, 0xac, 0x7e, 0x85, 0x8c, 0x8d, 0x36 } }; - // {B405AFAC-F32B-417B-89C4-9ABEED3E5978} -static const GUID NV_ENC_H264_PROFILE_PROGRESSIVE_HIGH_GUID = +static const GUID NV_ENC_H264_PROFILE_PROGRESSIVE_HIGH_GUID = { 0xb405afac, 0xf32b, 0x417b, { 0x89, 0xc4, 0x9a, 0xbe, 0xed, 0x3e, 0x59, 0x78 } }; // {AEC1BD87-E85B-48f2-84C3-98BCA6285072} -static const GUID NV_ENC_H264_PROFILE_CONSTRAINED_HIGH_GUID = +static const GUID NV_ENC_H264_PROFILE_CONSTRAINED_HIGH_GUID = { 0xaec1bd87, 0xe85b, 0x48f2, { 0x84, 0xc3, 0x98, 0xbc, 0xa6, 0x28, 0x50, 0x72 } }; // {B514C39A-B55B-40fa-878F-F1253B4DFDEC} -static const GUID NV_ENC_HEVC_PROFILE_MAIN_GUID = +static const GUID NV_ENC_HEVC_PROFILE_MAIN_GUID = { 0xb514c39a, 0xb55b, 0x40fa, { 0x87, 0x8f, 0xf1, 0x25, 0x3b, 0x4d, 0xfd, 0xec } }; // {fa4d2b6c-3a5b-411a-8018-0a3f5e3c9be5} -static const GUID NV_ENC_HEVC_PROFILE_MAIN10_GUID = +static const GUID NV_ENC_HEVC_PROFILE_MAIN10_GUID = { 0xfa4d2b6c, 0x3a5b, 0x411a, { 0x80, 0x18, 0x0a, 0x3f, 0x5e, 0x3c, 0x9b, 0xe5 } }; // For HEVC Main 444 8 bit and HEVC Main 444 10 bit profiles only // {51ec32b5-1b4c-453c-9cbd-b616bd621341} -static const GUID NV_ENC_HEVC_PROFILE_FREXT_GUID = +static const GUID NV_ENC_HEVC_PROFILE_FREXT_GUID = { 0x51ec32b5, 0x1b4c, 0x453c, { 0x9c, 0xbd, 0xb6, 0x16, 0xbd, 0x62, 0x13, 0x41 } }; +// {5f2a39f5-f14e-4f95-9a9e-b76d568fcf97} +static const GUID NV_ENC_AV1_PROFILE_MAIN_GUID = +{ 0x5f2a39f5, 0xf14e, 0x4f95, { 0x9a, 0x9e, 0xb7, 0x6d, 0x56, 0x8f, 0xcf, 0x97 } }; + // ========================================================================================= // * Preset GUIDS supported by the NvEncodeAPI interface. // ========================================================================================= // {B2DFB705-4EBD-4C49-9B5F-24A777D3E587} -static const GUID NV_ENC_PRESET_DEFAULT_GUID = +NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_DEFAULT_GUID = { 0xb2dfb705, 0x4ebd, 0x4c49, { 0x9b, 0x5f, 0x24, 0xa7, 0x77, 0xd3, 0xe5, 0x87 } }; // {60E4C59F-E846-4484-A56D-CD45BE9FDDF6} -static const GUID NV_ENC_PRESET_HP_GUID = +NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_HP_GUID = { 0x60e4c59f, 0xe846, 0x4484, { 0xa5, 0x6d, 0xcd, 0x45, 0xbe, 0x9f, 0xdd, 0xf6 } }; // {34DBA71D-A77B-4B8F-9C3E-B6D5DA24C012} -static const GUID NV_ENC_PRESET_HQ_GUID = +NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_HQ_GUID = { 0x34dba71d, 0xa77b, 0x4b8f, { 0x9c, 0x3e, 0xb6, 0xd5, 0xda, 0x24, 0xc0, 0x12 } }; // {82E3E450-BDBB-4e40-989C-82A90DF9EF32} -static const GUID NV_ENC_PRESET_BD_GUID = +NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_BD_GUID = { 0x82e3e450, 0xbdbb, 0x4e40, { 0x98, 0x9c, 0x82, 0xa9, 0xd, 0xf9, 0xef, 0x32 } }; // {49DF21C5-6DFA-4feb-9787-6ACC9EFFB726} -static const GUID NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID = +NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID = { 0x49df21c5, 0x6dfa, 0x4feb, { 0x97, 0x87, 0x6a, 0xcc, 0x9e, 0xff, 0xb7, 0x26 } }; // {C5F733B9-EA97-4cf9-BEC2-BF78A74FD105} -static const GUID NV_ENC_PRESET_LOW_LATENCY_HQ_GUID = +NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOW_LATENCY_HQ_GUID = { 0xc5f733b9, 0xea97, 0x4cf9, { 0xbe, 0xc2, 0xbf, 0x78, 0xa7, 0x4f, 0xd1, 0x5 } }; // {67082A44-4BAD-48FA-98EA-93056D150A58} -static const GUID NV_ENC_PRESET_LOW_LATENCY_HP_GUID = +NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOW_LATENCY_HP_GUID = { 0x67082a44, 0x4bad, 0x48fa, { 0x98, 0xea, 0x93, 0x5, 0x6d, 0x15, 0xa, 0x58 } }; // {D5BFB716-C604-44e7-9BB8-DEA5510FC3AC} -static const GUID NV_ENC_PRESET_LOSSLESS_DEFAULT_GUID = +NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOSSLESS_DEFAULT_GUID = { 0xd5bfb716, 0xc604, 0x44e7, { 0x9b, 0xb8, 0xde, 0xa5, 0x51, 0xf, 0xc3, 0xac } }; // {149998E7-2364-411d-82EF-179888093409} -static const GUID NV_ENC_PRESET_LOSSLESS_HP_GUID = +NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOSSLESS_HP_GUID = { 0x149998e7, 0x2364, 0x411d, { 0x82, 0xef, 0x17, 0x98, 0x88, 0x9, 0x34, 0x9 } }; +// Performance degrades and quality improves as we move from P1 to P7. Presets P3 to P7 for H264 and Presets P2 to P7 for HEVC have B frames enabled by default +// for HIGH_QUALITY and LOSSLESS tuning info, and will not work with Weighted Prediction enabled. In case Weighted Prediction is required, disable B frames by +// setting frameIntervalP = 1 +// {FC0A8D3E-45F8-4CF8-80C7-298871590EBF} +static const GUID NV_ENC_PRESET_P1_GUID = +{ 0xfc0a8d3e, 0x45f8, 0x4cf8, { 0x80, 0xc7, 0x29, 0x88, 0x71, 0x59, 0xe, 0xbf } }; + +// {F581CFB8-88D6-4381-93F0-DF13F9C27DAB} +static const GUID NV_ENC_PRESET_P2_GUID = +{ 0xf581cfb8, 0x88d6, 0x4381, { 0x93, 0xf0, 0xdf, 0x13, 0xf9, 0xc2, 0x7d, 0xab } }; + +// {36850110-3A07-441F-94D5-3670631F91F6} +static const GUID NV_ENC_PRESET_P3_GUID = +{ 0x36850110, 0x3a07, 0x441f, { 0x94, 0xd5, 0x36, 0x70, 0x63, 0x1f, 0x91, 0xf6 } }; + +// {90A7B826-DF06-4862-B9D2-CD6D73A08681} +static const GUID NV_ENC_PRESET_P4_GUID = +{ 0x90a7b826, 0xdf06, 0x4862, { 0xb9, 0xd2, 0xcd, 0x6d, 0x73, 0xa0, 0x86, 0x81 } }; + +// {21C6E6B4-297A-4CBA-998F-B6CBDE72ADE3} +static const GUID NV_ENC_PRESET_P5_GUID = +{ 0x21c6e6b4, 0x297a, 0x4cba, { 0x99, 0x8f, 0xb6, 0xcb, 0xde, 0x72, 0xad, 0xe3 } }; + +// {8E75C279-6299-4AB6-8302-0B215A335CF5} +static const GUID NV_ENC_PRESET_P6_GUID = +{ 0x8e75c279, 0x6299, 0x4ab6, { 0x83, 0x2, 0xb, 0x21, 0x5a, 0x33, 0x5c, 0xf5 } }; + +// {84848C12-6F71-4C13-931B-53E283F57974} +static const GUID NV_ENC_PRESET_P7_GUID = +{ 0x84848c12, 0x6f71, 0x4c13, { 0x93, 0x1b, 0x53, 0xe2, 0x83, 0xf5, 0x79, 0x74 } }; + /** * \addtogroup ENCODER_STRUCTURE NvEncodeAPI Data structures * @{ @@ -253,11 +296,22 @@ typedef enum _NV_ENC_PARAMS_RC_MODE NV_ENC_PARAMS_RC_CONSTQP = 0x0, /**< Constant QP mode */ NV_ENC_PARAMS_RC_VBR = 0x1, /**< Variable bitrate mode */ NV_ENC_PARAMS_RC_CBR = 0x2, /**< Constant bitrate mode */ - NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ = 0x8, /**< low-delay CBR, high quality */ - NV_ENC_PARAMS_RC_CBR_HQ = 0x10, /**< CBR, high quality (slower) */ - NV_ENC_PARAMS_RC_VBR_HQ = 0x20 /**< VBR, high quality (slower) */ + NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ = 0x8, /**< Deprecated, use NV_ENC_PARAMS_RC_CBR + NV_ENC_TWO_PASS_QUARTER_RESOLUTION / NV_ENC_TWO_PASS_FULL_RESOLUTION + + lowDelayKeyFrameScale=1 */ + NV_ENC_PARAMS_RC_CBR_HQ = 0x10, /**< Deprecated, use NV_ENC_PARAMS_RC_CBR + NV_ENC_TWO_PASS_QUARTER_RESOLUTION / NV_ENC_TWO_PASS_FULL_RESOLUTION */ + NV_ENC_PARAMS_RC_VBR_HQ = 0x20 /**< Deprecated, use NV_ENC_PARAMS_RC_VBR + NV_ENC_TWO_PASS_QUARTER_RESOLUTION / NV_ENC_TWO_PASS_FULL_RESOLUTION */ } NV_ENC_PARAMS_RC_MODE; +/** + * Multi Pass encoding + */ +typedef enum _NV_ENC_MULTI_PASS +{ + NV_ENC_MULTI_PASS_DISABLED = 0x0, /**< Single Pass */ + NV_ENC_TWO_PASS_QUARTER_RESOLUTION = 0x1, /**< Two Pass encoding is enabled where first Pass is quarter resolution */ + NV_ENC_TWO_PASS_FULL_RESOLUTION = 0x2, /**< Two Pass encoding is enabled where first Pass is full resolution */ +} NV_ENC_MULTI_PASS; + /** * Emphasis Levels */ @@ -277,7 +331,7 @@ typedef enum _NV_ENC_EMPHASIS_MAP_LEVEL typedef enum _NV_ENC_QP_MAP_MODE { NV_ENC_QP_MAP_DISABLED = 0x0, /**< Value in NV_ENC_PIC_PARAMS::qpDeltaMap have no effect. */ - NV_ENC_QP_MAP_EMPHASIS = 0x1, /**< Value in NV_ENC_PIC_PARAMS::qpDeltaMap will be treated as Empasis level. Currently this is only supported for H264 */ + NV_ENC_QP_MAP_EMPHASIS = 0x1, /**< Value in NV_ENC_PIC_PARAMS::qpDeltaMap will be treated as Emphasis level. Currently this is only supported for H264 */ NV_ENC_QP_MAP_DELTA = 0x2, /**< Value in NV_ENC_PIC_PARAMS::qpDeltaMap will be treated as QP delta map. */ NV_ENC_QP_MAP = 0x3, /**< Currently This is not supported. Value in NV_ENC_PIC_PARAMS::qpDeltaMap will be treated as QP value. */ } NV_ENC_QP_MAP_MODE; @@ -298,6 +352,20 @@ typedef enum _NV_ENC_PIC_STRUCT NV_ENC_PIC_STRUCT_FIELD_BOTTOM_TOP = 0x03 /**< Field encoding bottom field first */ } NV_ENC_PIC_STRUCT; +/** + * Display picture structure + * Currently, this enum is only used for deciding the number of clock timestamp sets in Picture Timing SEI / Time Code SEI + * Otherwise, this has no impact on encoder behavior + */ +typedef enum _NV_ENC_DISPLAY_PIC_STRUCT +{ + NV_ENC_PIC_STRUCT_DISPLAY_FRAME = 0x00, /**< Field encoding top field first */ + NV_ENC_PIC_STRUCT_DISPLAY_FIELD_TOP_BOTTOM = 0x01, /**< Field encoding top field first */ + NV_ENC_PIC_STRUCT_DISPLAY_FIELD_BOTTOM_TOP = 0x02, /**< Field encoding bottom field first */ + NV_ENC_PIC_STRUCT_DISPLAY_FRAME_DOUBLING = 0x03, /**< Frame doubling */ + NV_ENC_PIC_STRUCT_DISPLAY_FRAME_TRIPLING = 0x04 /**< Field tripling */ +} NV_ENC_DISPLAY_PIC_STRUCT; + /** * Input picture type */ @@ -310,6 +378,7 @@ typedef enum _NV_ENC_PIC_TYPE NV_ENC_PIC_TYPE_BI = 0x04, /**< Bi-directionally predicted with only Intra MBs */ NV_ENC_PIC_TYPE_SKIPPED = 0x05, /**< Picture is skipped */ NV_ENC_PIC_TYPE_INTRA_REFRESH = 0x06, /**< First picture in intra refresh cycle */ + NV_ENC_PIC_TYPE_NONREF_P = 0x07, /**< Non reference P picture */ NV_ENC_PIC_TYPE_UNKNOWN = 0xFF /**< Picture type unknown */ } NV_ENC_PIC_TYPE; @@ -318,10 +387,10 @@ typedef enum _NV_ENC_PIC_TYPE */ typedef enum _NV_ENC_MV_PRECISION { - NV_ENC_MV_PRECISION_DEFAULT = 0x0, /** (if lookahead is enabled, input frames must remain available to the encoder until encode completion) */ uint32_t disableIadapt :1; /**< [in]: Set this to 1 to disable adaptive I-frame insertion at scene cuts (only has an effect when lookahead is enabled) */ uint32_t disableBadapt :1; /**< [in]: Set this to 1 to disable adaptive B-frame decision (only has an effect when lookahead is enabled) */ - uint32_t enableTemporalAQ :1; /**< [in]: Set this to 1 to enable temporal AQ for H.264 */ + uint32_t enableTemporalAQ :1; /**< [in]: Set this to 1 to enable temporal AQ */ uint32_t zeroReorderDelay :1; /**< [in]: Set this to 1 to indicate zero latency operation (no reordering delay, num_reorder_frames=0) */ uint32_t enableNonRefP :1; /**< [in]: Set this to 1 to enable automatic insertion of non-reference P-frames (no effect if enablePTD=0) */ uint32_t strictGOPTarget :1; /**< [in]: Set this to 1 to minimize GOP-to-GOP rate fluctuations */ - uint32_t aqStrength :4; /**< [in]: When AQ (Spatial) is enabled (i.e. NV_ENC_RC_PARAMS::enableAQ is set), this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive). If not set, strength is autoselected by driver. */ + uint32_t aqStrength :4; /**< [in]: When AQ (Spatial) is enabled (i.e. NV_ENC_RC_PARAMS::enableAQ is set), this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive). + If not set, strength is auto selected by driver. */ uint32_t reservedBitFields :16; /**< [in]: Reserved bitfields and must be set to 0 */ NV_ENC_QP minQP; /**< [in]: Specifies the minimum QP used for rate control. Client must set NV_ENC_CONFIG::enableMinQP to 1. */ NV_ENC_QP maxQP; /**< [in]: Specifies the maximum QP used for rate control. Client must set NV_ENC_CONFIG::enableMaxQP to 1. */ NV_ENC_QP initialRCQP; /**< [in]: Specifies the initial QP used for rate control. Client must set NV_ENC_CONFIG::enableInitialRCQP to 1. */ - uint32_t temporallayerIdxMask; /**< [in]: Specifies the temporal layers (as a bitmask) whose QPs have changed. Valid max bitmask is [2^NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS - 1] */ - uint8_t temporalLayerQP[8]; /**< [in]: Specifies the temporal layer QPs used for rate control. Temporal layer index is used as as the array index */ + uint32_t temporallayerIdxMask; /**< [in]: Specifies the temporal layers (as a bitmask) whose QPs have changed. Valid max bitmask is [2^NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS - 1]. + Applicable only for constant QP mode (NV_ENC_RC_PARAMS::rateControlMode = NV_ENC_PARAMS_RC_CONSTQP). */ + uint8_t temporalLayerQP[8]; /**< [in]: Specifies the temporal layer QPs used for rate control. Temporal layer index is used as the array index. + Applicable only for constant QP mode (NV_ENC_RC_PARAMS::rateControlMode = NV_ENC_PARAMS_RC_CONSTQP). */ uint8_t targetQuality; /**< [in]: Target CQ (Constant Quality) level for VBR mode (range 0-51 with 0-automatic) */ uint8_t targetQualityLSB; /**< [in]: Fractional part of target quality (as 8.8 fixed point format) */ - uint16_t lookaheadDepth; /**< [in]: Maximum depth of lookahead with range 0-32 (only used if enableLookahead=1) */ - uint32_t reserved1; - NV_ENC_QP_MAP_MODE qpMapMode; /**< [in]: This flag is used to interpret values in array pecified by NV_ENC_PIC_PARAMS::qpDeltaMap. - Set this to NV_ENC_QP_MAP_EMPHASIS to treat values specified by NV_ENC_PIC_PARAMS::qpDeltaMap as Emphasis level Map. - Emphasis Level can be assigned any value specified in enum NV_ENC_EMPHASIS_MAP_LEVEL. - Emphasis Level Map is used to specify regions to be encoded at varying levels of quality. + uint16_t lookaheadDepth; /**< [in]: Maximum depth of lookahead with range 0-(31 - number of B frames). + lookaheadDepth is only used if enableLookahead=1.*/ + uint8_t lowDelayKeyFrameScale; /**< [in]: Specifies the ratio of I frame bits to P frame bits in case of single frame VBV and CBR rate control mode, + is set to 2 by default for low latency tuning info and 1 by default for ultra low latency tuning info */ + int8_t yDcQPIndexOffset; /**< [in]: Specifies the value of 'deltaQ_y_dc' in AV1.*/ + int8_t uDcQPIndexOffset; /**< [in]: Specifies the value of 'deltaQ_u_dc' in AV1.*/ + int8_t vDcQPIndexOffset; /**< [in]: Specifies the value of 'deltaQ_v_dc' in AV1 (for future use only - deltaQ_v_dc is currently always internally set to same value as deltaQ_u_dc). */ + NV_ENC_QP_MAP_MODE qpMapMode; /**< [in]: This flag is used to interpret values in array specified by NV_ENC_PIC_PARAMS::qpDeltaMap. + Set this to NV_ENC_QP_MAP_EMPHASIS to treat values specified by NV_ENC_PIC_PARAMS::qpDeltaMap as Emphasis Level Map. + Emphasis Level can be assigned any value specified in enum NV_ENC_EMPHASIS_MAP_LEVEL. + Emphasis Level Map is used to specify regions to be encoded at varying levels of quality. The hardware encoder adjusts the quantization within the image as per the provided emphasis map, - by adjusting the quantization parameter (QP) assigned to each macroblock. This adjustment is commonly called “Delta QPâ€. - The adjustment depends on the absolute QP decided by the rate control algorithm, and is applied after the rate control has decided each macroblock’s QP. - Since the Delta QP overrides rate control, enabling emphasis level map may violate bitrate and VBV buffersize constraints. - Emphasis level map is useful in situations when client has a priori knowledge of the image complexity (e.g. via use of NVFBC's Classification feature) and encoding those high-complexity areas at higher quality (lower QP) is important, even at the possible cost of violating bitrate/VBV buffersize constraints + by adjusting the quantization parameter (QP) assigned to each macroblock. This adjustment is commonly called "Delta QP". + The adjustment depends on the absolute QP decided by the rate control algorithm, and is applied after the rate control has decided each macroblock's QP. + Since the Delta QP overrides rate control, enabling Emphasis Level Map may violate bitrate and VBV buffer size constraints. + Emphasis Level Map is useful in situations where client has a priori knowledge of the image complexity (e.g. via use of NVFBC's Classification feature) and encoding those high-complexity areas at higher quality (lower QP) is important, even at the possible cost of violating bitrate/VBV buffer size constraints This feature is not supported when AQ( Spatial/Temporal) is enabled. This feature is only supported for H264 codec currently. - - Set this to NV_ENC_QP_MAP_DELTA to treat values specified by NV_ENC_PIC_PARAMS::qpDeltaMap as QPDelta. This specify QP modifier to be applied on top of the QP chosen by rate control - + + Set this to NV_ENC_QP_MAP_DELTA to treat values specified by NV_ENC_PIC_PARAMS::qpDeltaMap as QP Delta. This specifies QP modifier to be applied on top of the QP chosen by rate control + Set this to NV_ENC_QP_MAP_DISABLED to ignore NV_ENC_PIC_PARAMS::qpDeltaMap values. In this case, qpDeltaMap should be set to NULL. - + Other values are reserved for future use.*/ - uint32_t reserved[7]; + NV_ENC_MULTI_PASS multiPass; /**< [in]: This flag is used to enable multi-pass encoding for a given ::NV_ENC_PARAMS_RC_MODE. This flag is not valid for H264 and HEVC MEOnly mode */ + uint32_t alphaLayerBitrateRatio; /**< [in]: Specifies the ratio in which bitrate should be split between base and alpha layer. A value 'x' for this field will split the target bitrate in a ratio of x : 1 between base and alpha layer. + The default split ratio is 15.*/ + int8_t cbQPIndexOffset; /**< [in]: Specifies the value of 'chroma_qp_index_offset' in H264 / 'pps_cb_qp_offset' in HEVC / 'deltaQ_u_ac' in AV1.*/ + int8_t crQPIndexOffset; /**< [in]: Specifies the value of 'second_chroma_qp_index_offset' in H264 / 'pps_cr_qp_offset' in HEVC / 'deltaQ_v_ac' in AV1 (for future use only - deltaQ_v_ac is currently always internally set to same value as deltaQ_u_ac). */ + uint16_t reserved2; + uint32_t reserved[4]; } NV_ENC_RC_PARAMS; - + /** macro for constructing the version field of ::_NV_ENC_RC_PARAMS */ #define NV_ENC_RC_PARAMS_VER NVENCAPI_STRUCT_VERSION(1) - + +#define MAX_NUM_CLOCK_TS 3 + +/** +* Clock Timestamp set parameters +* For H264, this structure is used to populate Picture Timing SEI when NV_ENC_CONFIG_H264::enableTimeCode is set to 1. +* For HEVC, this structure is used to populate Time Code SEI when NV_ENC_CONFIG_HEVC::enableTimeCodeSEI is set to 1. +* For more details, refer to Annex D of ITU-T Specification. +*/ + +typedef struct _NV_ENC_CLOCK_TIMESTAMP_SET +{ + uint32_t countingType : 1; /**< [in] Specifies the 'counting_type' */ + uint32_t discontinuityFlag : 1; /**< [in] Specifies the 'discontinuity_flag' */ + uint32_t cntDroppedFrames : 1; /**< [in] Specifies the 'cnt_dropped_flag' */ + uint32_t nFrames : 8; /**< [in] Specifies the value of 'n_frames' */ + uint32_t secondsValue : 6; /**< [in] Specifies the 'seconds_value' */ + uint32_t minutesValue : 6; /**< [in] Specifies the 'minutes_value' */ + uint32_t hoursValue : 5; /**< [in] Specifies the 'hours_value' */ + uint32_t reserved2 : 4; /**< [in] Reserved and must be set to 0 */ + uint32_t timeOffset; /**< [in] Specifies the 'time_offset_value' */ +} NV_ENC_CLOCK_TIMESTAMP_SET; + +typedef struct _NV_ENC_TIME_CODE +{ + NV_ENC_DISPLAY_PIC_STRUCT displayPicStruct; /**< [in] Display picStruct */ + NV_ENC_CLOCK_TIMESTAMP_SET clockTimestamp[MAX_NUM_CLOCK_TS]; /**< [in] Clock Timestamp set */ +} NV_ENC_TIME_CODE; /** @@ -1206,20 +1509,24 @@ typedef struct _NV_ENC_QP */ typedef struct _NV_ENC_CONFIG_H264_VUI_PARAMETERS { - uint32_t overscanInfoPresentFlag; /**< [in]: if set to 1 , it specifies that the overscanInfo is present */ - uint32_t overscanInfo; /**< [in]: Specifies the overscan info(as defined in Annex E of the ITU-T Specification). */ - uint32_t videoSignalTypePresentFlag; /**< [in]: If set to 1, it specifies that the videoFormat, videoFullRangeFlag and colourDescriptionPresentFlag are present. */ - uint32_t videoFormat; /**< [in]: Specifies the source video format(as defined in Annex E of the ITU-T Specification).*/ - uint32_t videoFullRangeFlag; /**< [in]: Specifies the output range of the luma and chroma samples(as defined in Annex E of the ITU-T Specification). */ - uint32_t colourDescriptionPresentFlag; /**< [in]: If set to 1, it specifies that the colourPrimaries, transferCharacteristics and colourMatrix are present. */ - uint32_t colourPrimaries; /**< [in]: Specifies color primaries for converting to RGB(as defined in Annex E of the ITU-T Specification) */ - uint32_t transferCharacteristics; /**< [in]: Specifies the opto-electronic transfer characteristics to use (as defined in Annex E of the ITU-T Specification) */ - uint32_t colourMatrix; /**< [in]: Specifies the matrix coefficients used in deriving the luma and chroma from the RGB primaries (as defined in Annex E of the ITU-T Specification). */ - uint32_t chromaSampleLocationFlag; /**< [in]: if set to 1 , it specifies that the chromaSampleLocationTop and chromaSampleLocationBot are present.*/ - uint32_t chromaSampleLocationTop; /**< [in]: Specifies the chroma sample location for top field(as defined in Annex E of the ITU-T Specification) */ - uint32_t chromaSampleLocationBot; /**< [in]: Specifies the chroma sample location for bottom field(as defined in Annex E of the ITU-T Specification) */ - uint32_t bitstreamRestrictionFlag; /**< [in]: if set to 1, it specifies the bitstream restriction parameters are present in the bitstream.*/ - uint32_t reserved[15]; + uint32_t overscanInfoPresentFlag; /**< [in]: If set to 1 , it specifies that the overscanInfo is present */ + uint32_t overscanInfo; /**< [in]: Specifies the overscan info(as defined in Annex E of the ITU-T Specification). */ + uint32_t videoSignalTypePresentFlag; /**< [in]: If set to 1, it specifies that the videoFormat, videoFullRangeFlag and colourDescriptionPresentFlag are present. */ + NV_ENC_VUI_VIDEO_FORMAT videoFormat; /**< [in]: Specifies the source video format(as defined in Annex E of the ITU-T Specification).*/ + uint32_t videoFullRangeFlag; /**< [in]: Specifies the output range of the luma and chroma samples(as defined in Annex E of the ITU-T Specification). */ + uint32_t colourDescriptionPresentFlag; /**< [in]: If set to 1, it specifies that the colourPrimaries, transferCharacteristics and colourMatrix are present. */ + NV_ENC_VUI_COLOR_PRIMARIES colourPrimaries; /**< [in]: Specifies color primaries for converting to RGB(as defined in Annex E of the ITU-T Specification) */ + NV_ENC_VUI_TRANSFER_CHARACTERISTIC transferCharacteristics; /**< [in]: Specifies the opto-electronic transfer characteristics to use (as defined in Annex E of the ITU-T Specification) */ + NV_ENC_VUI_MATRIX_COEFFS colourMatrix; /**< [in]: Specifies the matrix coefficients used in deriving the luma and chroma from the RGB primaries (as defined in Annex E of the ITU-T Specification). */ + uint32_t chromaSampleLocationFlag; /**< [in]: If set to 1 , it specifies that the chromaSampleLocationTop and chromaSampleLocationBot are present.*/ + uint32_t chromaSampleLocationTop; /**< [in]: Specifies the chroma sample location for top field(as defined in Annex E of the ITU-T Specification) */ + uint32_t chromaSampleLocationBot; /**< [in]: Specifies the chroma sample location for bottom field(as defined in Annex E of the ITU-T Specification) */ + uint32_t bitstreamRestrictionFlag; /**< [in]: If set to 1, it specifies the bitstream restriction parameters are present in the bitstream.*/ + uint32_t timingInfoPresentFlag; /**< [in]: If set to 1, it specifies that the timingInfo is present and the 'numUnitInTicks' and 'timeScale' fields are specified by the application. */ + /**< [in]: If not set, the timingInfo may still be present with timing related fields calculated internally basedon the frame rate specified by the application. */ + uint32_t numUnitInTicks; /**< [in]: Specifies the number of time units of the clock(as defined in Annex E of the ITU-T Specification). */ + uint32_t timeScale; /**< [in]: Specifies the frquency of the clock(as defined in Annex E of the ITU-T Specification). */ + uint32_t reserved[12]; /**< [in]: Reserved and must be set to 0 */ }NV_ENC_CONFIG_H264_VUI_PARAMETERS; typedef NV_ENC_CONFIG_H264_VUI_PARAMETERS NV_ENC_CONFIG_HEVC_VUI_PARAMETERS; @@ -1227,22 +1534,23 @@ typedef NV_ENC_CONFIG_H264_VUI_PARAMETERS NV_ENC_CONFIG_HEVC_VUI_PARAMETERS; /** * \struct _NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE * External motion vector hint counts per block type. - * H264 supports multiple hint while HEVC supports one hint for each valid candidate. + * H264 and AV1 support multiple hint while HEVC supports one hint for each valid candidate. */ typedef struct _NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE { - uint32_t numCandsPerBlk16x16 : 4; /**< [in]: Supported for H264,HEVC.It Specifies the number of candidates per 16x16 block. */ - uint32_t numCandsPerBlk16x8 : 4; /**< [in]: Supported for H264 only.Specifies the number of candidates per 16x8 block. */ - uint32_t numCandsPerBlk8x16 : 4; /**< [in]: Supported for H264 only.Specifies the number of candidates per 8x16 block. */ - uint32_t numCandsPerBlk8x8 : 4; /**< [in]: Supported for H264,HEVC.Specifies the number of candidates per 8x8 block. */ - uint32_t reserved : 16; /**< [in]: Reserved for padding. */ + uint32_t numCandsPerBlk16x16 : 4; /**< [in]: Supported for H264, HEVC. It Specifies the number of candidates per 16x16 block. */ + uint32_t numCandsPerBlk16x8 : 4; /**< [in]: Supported for H264 only. Specifies the number of candidates per 16x8 block. */ + uint32_t numCandsPerBlk8x16 : 4; /**< [in]: Supported for H264 only. Specifies the number of candidates per 8x16 block. */ + uint32_t numCandsPerBlk8x8 : 4; /**< [in]: Supported for H264, HEVC. Specifies the number of candidates per 8x8 block. */ + uint32_t numCandsPerSb : 8; /**< [in]: Supported for AV1 only. Specifies the number of candidates per SB. */ + uint32_t reserved : 8; /**< [in]: Reserved for padding. */ uint32_t reserved1[3]; /**< [in]: Reserved for future use. */ } NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE; /** * \struct _NVENC_EXTERNAL_ME_HINT - * External Motion Vector hint structure. + * External Motion Vector hint structure for H264 and HEVC. */ typedef struct _NVENC_EXTERNAL_ME_HINT { @@ -1255,6 +1563,26 @@ typedef struct _NVENC_EXTERNAL_ME_HINT int32_t lastOfMB : 1; /**< [in]: Set to 1 for the last MV of macroblock. */ } NVENC_EXTERNAL_ME_HINT; +/** + * \struct _NVENC_EXTERNAL_ME_SB_HINT + * External Motion Vector SB hint structure for AV1 + */ +typedef struct _NVENC_EXTERNAL_ME_SB_HINT +{ + int16_t refidx : 5; /**< [in]: Specifies the reference index (31=invalid) */ + int16_t direction : 1; /**< [in]: Specifies the direction of motion estimation . 0=L0 1=L1.*/ + int16_t bi : 1; /**< [in]: Specifies reference mode 0=single mv, 1=compound mv */ + int16_t partition_type : 3; /**< [in]: Specifies the partition type: 0: 2NX2N, 1:2NxN, 2:Nx2N. reserved 3bits for future modes */ + int16_t x8 : 3; /**< [in]: Specifies the current partition's top left x position in 8 pixel unit */ + int16_t last_of_cu : 1; /**< [in]: Set to 1 for the last MV current CU */ + int16_t last_of_sb : 1; /**< [in]: Set to 1 for the last MV of current SB */ + int16_t reserved0 : 1; /**< [in]: Reserved and must be set to 0 */ + int16_t mvx : 14; /**< [in]: Specifies the x component of integer pixel MV (relative to current MB) S12.2. */ + int16_t cu_size : 2; /**< [in]: Specifies the CU size: 0: 8x8, 1: 16x16, 2:32x32, 3:64x64 */ + int16_t mvy : 12; /**< [in]: Specifies the y component of integer pixel MV (relative to current MB) S10.2 .*/ + int16_t y8 : 3; /**< [in]: Specifies the current partition's top left y position in 8 pixel unit */ + int16_t reserved1 : 1; /**< [in]: Reserved and must be set to 0 */ +} NVENC_EXTERNAL_ME_SB_HINT; /** * \struct _NV_ENC_CONFIG_H264 @@ -1264,20 +1592,21 @@ typedef struct _NV_ENC_CONFIG_H264 { uint32_t enableTemporalSVC :1; /**< [in]: Set to 1 to enable SVC temporal*/ uint32_t enableStereoMVC :1; /**< [in]: Set to 1 to enable stereo MVC*/ - uint32_t hierarchicalPFrames :1; /**< [in]: Set to 1 to enable hierarchical PFrames */ - uint32_t hierarchicalBFrames :1; /**< [in]: Set to 1 to enable hierarchical BFrames */ + uint32_t hierarchicalPFrames :1; /**< [in]: Set to 1 to enable hierarchical P Frames */ + uint32_t hierarchicalBFrames :1; /**< [in]: Set to 1 to enable hierarchical B Frames */ uint32_t outputBufferingPeriodSEI :1; /**< [in]: Set to 1 to write SEI buffering period syntax in the bitstream */ - uint32_t outputPictureTimingSEI :1; /**< [in]: Set to 1 to write SEI picture timing syntax in the bitstream. When set for following rateControlMode : NV_ENC_PARAMS_RC_CBR, NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ, - NV_ENC_PARAMS_RC_CBR_HQ, filler data is inserted if needed to achieve hrd bitrate */ + uint32_t outputPictureTimingSEI :1; /**< [in]: Set to 1 to write SEI picture timing syntax in the bitstream. */ uint32_t outputAUD :1; /**< [in]: Set to 1 to write access unit delimiter syntax in bitstream */ uint32_t disableSPSPPS :1; /**< [in]: Set to 1 to disable writing of Sequence and Picture parameter info in bitstream */ uint32_t outputFramePackingSEI :1; /**< [in]: Set to 1 to enable writing of frame packing arrangement SEI messages to bitstream */ uint32_t outputRecoveryPointSEI :1; /**< [in]: Set to 1 to enable writing of recovery point SEI message */ uint32_t enableIntraRefresh :1; /**< [in]: Set to 1 to enable gradual decoder refresh or intra refresh. If the GOP structure uses B frames this will be ignored */ - uint32_t enableConstrainedEncoding :1; /**< [in]: Set this to 1 to enable constrainedFrame encoding where each slice in the constarined picture is independent of other slices + uint32_t enableConstrainedEncoding :1; /**< [in]: Set this to 1 to enable constrainedFrame encoding where each slice in the constrained picture is independent of other slices. + Constrained encoding works only with rectangular slices. Check support for constrained encoding using ::NV_ENC_CAPS_SUPPORT_CONSTRAINED_ENCODING caps. */ uint32_t repeatSPSPPS :1; /**< [in]: Set to 1 to enable writing of Sequence and Picture parameter for every IDR frame */ - uint32_t enableVFR :1; /**< [in]: Set to 1 to enable variable frame rate. */ + uint32_t enableVFR :1; /**< [in]: Setting enableVFR=1 currently only sets the fixed_frame_rate_flag=0 in the VUI but otherwise + has no impact on the encoder behavior. For more details please refer to E.1 VUI syntax of H.264 standard. Note, however, that NVENC does not support VFR encoding and rate control. */ uint32_t enableLTR :1; /**< [in]: Set to 1 to enable LTR (Long Term Reference) frame support. LTR can be used in two modes: "LTR Trust" mode and "LTR Per Picture" mode. LTR Trust mode: In this mode, ltrNumFrames pictures after IDR are automatically marked as LTR. This mode is enabled by setting ltrTrustMode = 1. Use of LTR Trust mode is strongly discouraged as this mode may be deprecated in future. @@ -1288,23 +1617,45 @@ typedef struct _NV_ENC_CONFIG_H264 uint32_t qpPrimeYZeroTransformBypassFlag :1; /**< [in]: To enable lossless encode set this to 1, set QP to 0 and RC_mode to NV_ENC_PARAMS_RC_CONSTQP and profile to HIGH_444_PREDICTIVE_PROFILE. Check support for lossless encoding using ::NV_ENC_CAPS_SUPPORT_LOSSLESS_ENCODE caps. */ uint32_t useConstrainedIntraPred :1; /**< [in]: Set 1 to enable constrained intra prediction. */ - uint32_t reservedBitFields :15; /**< [in]: Reserved bitfields and must be set to 0 */ + uint32_t enableFillerDataInsertion :1; /**< [in]: Set to 1 to enable insertion of filler data in the bitstream. + This flag will take effect only when one of the CBR rate + control modes (NV_ENC_PARAMS_RC_CBR, NV_ENC_PARAMS_RC_CBR_HQ, + NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ) is in use and both + NV_ENC_INITIALIZE_PARAMS::frameRateNum and + NV_ENC_INITIALIZE_PARAMS::frameRateDen are set to non-zero + values. Setting this field when + NV_ENC_INITIALIZE_PARAMS::enableOutputInVidmem is also set + is currently not supported and will make ::NvEncInitializeEncoder() + return an error. */ + uint32_t disableSVCPrefixNalu :1; /**< [in]: Set to 1 to disable writing of SVC Prefix NALU preceding each slice in bitstream. + Applicable only when temporal SVC is enabled (NV_ENC_CONFIG_H264::enableTemporalSVC = 1). */ + uint32_t enableScalabilityInfoSEI :1; /**< [in]: Set to 1 to enable writing of Scalability Information SEI message preceding each IDR picture in bitstream + Applicable only when temporal SVC is enabled (NV_ENC_CONFIG_H264::enableTemporalSVC = 1). */ + uint32_t singleSliceIntraRefresh :1; /**< [in]: Set to 1 to maintain single slice in frames during intra refresh. + Check support for single slice intra refresh using ::NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH caps. + This flag will be ignored if the value returned for ::NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH caps is false. */ + uint32_t enableTimeCode :1; /**< [in]: Set to 1 to enable writing of clock timestamp sets in picture timing SEI. Note that this flag will be ignored for D3D12 interface. */ + uint32_t reservedBitFields :10; /**< [in]: Reserved bitfields and must be set to 0 */ uint32_t level; /**< [in]: Specifies the encoding level. Client is recommended to set this to NV_ENC_LEVEL_AUTOSELECT in order to enable the NvEncodeAPI interface to select the correct level. */ uint32_t idrPeriod; /**< [in]: Specifies the IDR interval. If not set, this is made equal to gopLength in NV_ENC_CONFIG.Low latency application client can set IDR interval to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */ uint32_t separateColourPlaneFlag; /**< [in]: Set to 1 to enable 4:4:4 separate colour planes */ - uint32_t disableDeblockingFilterIDC; /**< [in]: Specifies the deblocking filter mode. Permissible value range: [0,2] */ - uint32_t numTemporalLayers; /**< [in]: Specifies max temporal layers to be used for hierarchical coding. Valid value range is [1,::NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS] */ + uint32_t disableDeblockingFilterIDC; /**< [in]: Specifies the deblocking filter mode. Permissible value range: [0,2]. This flag corresponds + to the flag disable_deblocking_filter_idc specified in section 7.4.3 of H.264 specification, + which specifies whether the operation of the deblocking filter shall be disabled across some + block edges of the slice and specifies for which edges the filtering is disabled. See section + 7.4.3 of H.264 specification for more details.*/ + uint32_t numTemporalLayers; /**< [in]: Specifies number of temporal layers to be used for hierarchical coding / temporal SVC. Valid value range is [1,::NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS] */ uint32_t spsId; /**< [in]: Specifies the SPS id of the sequence header */ uint32_t ppsId; /**< [in]: Specifies the PPS id of the picture header */ NV_ENC_H264_ADAPTIVE_TRANSFORM_MODE adaptiveTransformMode; /**< [in]: Specifies the AdaptiveTransform Mode. Check support for AdaptiveTransform mode using ::NV_ENC_CAPS_SUPPORT_ADAPTIVE_TRANSFORM caps. */ NV_ENC_H264_FMO_MODE fmoMode; /**< [in]: Specified the FMO Mode. Check support for FMO using ::NV_ENC_CAPS_SUPPORT_FMO caps. */ NV_ENC_H264_BDIRECT_MODE bdirectMode; /**< [in]: Specifies the BDirect mode. Check support for BDirect mode using ::NV_ENC_CAPS_SUPPORT_BDIRECT_MODE caps.*/ NV_ENC_H264_ENTROPY_CODING_MODE entropyCodingMode; /**< [in]: Specifies the entropy coding mode. Check support for CABAC mode using ::NV_ENC_CAPS_SUPPORT_CABAC caps. */ - NV_ENC_STEREO_PACKING_MODE stereoMode; /**< [in]: Specifies the stereo frame packing mode which is to be signalled in frame packing arrangement SEI */ + NV_ENC_STEREO_PACKING_MODE stereoMode; /**< [in]: Specifies the stereo frame packing mode which is to be signaled in frame packing arrangement SEI */ uint32_t intraRefreshPeriod; /**< [in]: Specifies the interval between successive intra refresh if enableIntrarefresh is set. Requires enableIntraRefresh to be set. Will be disabled if NV_ENC_CONFIG::gopLength is not set to NVENC_INFINITE_GOPLENGTH. */ uint32_t intraRefreshCnt; /**< [in]: Specifies the length of intra refresh in number of frames for periodic intra refresh. This value should be smaller than intraRefreshPeriod */ - uint32_t maxNumRefFrames; /**< [in]: Specifies the DPB size used for encoding. Setting it to 0 will let driver use the default dpb size. + uint32_t maxNumRefFrames; /**< [in]: Specifies the DPB size used for encoding. Setting it to 0 will let driver use the default DPB size. The low latency application which wants to invalidate reference frame as an error resilience tool is recommended to use a large DPB size so that the encoder can keep old reference frames which can be used if recent frames are invalidated. */ @@ -1317,19 +1668,26 @@ typedef struct _NV_ENC_CONFIG_H264 sliceMode = 1, sliceModeData specifies maximum # of bytes in each slice (except last slice) sliceMode = 2, sliceModeData specifies # of MB rows in each slice (except last slice) sliceMode = 3, sliceModeData specifies number of slices in the picture. Driver will divide picture into slices optimally */ - NV_ENC_CONFIG_H264_VUI_PARAMETERS h264VUIParameters; /**< [in]: Specifies the H264 video usability info pamameters */ + NV_ENC_CONFIG_H264_VUI_PARAMETERS h264VUIParameters; /**< [in]: Specifies the H264 video usability info parameters */ uint32_t ltrNumFrames; /**< [in]: Specifies the number of LTR frames. This parameter has different meaning in two LTR modes. In "LTR Trust" mode (ltrTrustMode = 1), encoder will mark the first ltrNumFrames base layer reference frames within each IDR interval as LTR. In "LTR Per Picture" mode (ltrTrustMode = 0 and ltrMarkFrame = 1), ltrNumFrames specifies maximum number of LTR frames in DPB. */ uint32_t ltrTrustMode; /**< [in]: Specifies the LTR operating mode. See comments near NV_ENC_CONFIG_H264::enableLTR for description of the two modes. - Set to 1 to use "LTR Trust" mode of LTR operation. Clients are discouraged to use "LTR Trust" mode as this mode may + Set to 1 to use "LTR Trust" mode of LTR operation. Clients are discouraged to use "LTR Trust" mode as this mode may be deprecated in future releases. Set to 0 when using "LTR Per Picture" mode of LTR operation. */ uint32_t chromaFormatIDC; /**< [in]: Specifies the chroma format. Should be set to 1 for yuv420 input, 3 for yuv444 input. Check support for YUV444 encoding using ::NV_ENC_CAPS_SUPPORT_YUV444_ENCODE caps.*/ - uint32_t maxTemporalLayers; /**< [in]: Specifies the max temporal layer used for hierarchical coding. */ + uint32_t maxTemporalLayers; /**< [in]: Specifies the max temporal layer used for temporal SVC / hierarchical coding. + Defaut value of this field is NV_ENC_CAPS::NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS. Note that the value NV_ENC_CONFIG_H264::maxNumRefFrames should + be greater than or equal to (NV_ENC_CONFIG_H264::maxTemporalLayers - 2) * 2, for NV_ENC_CONFIG_H264::maxTemporalLayers >= 2.*/ NV_ENC_BFRAME_REF_MODE useBFramesAsRef; /**< [in]: Specifies the B-Frame as reference mode. Check support for useBFramesAsRef mode using ::NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODE caps.*/ - uint32_t reserved1[269]; /**< [in]: Reserved and must be set to 0 */ + NV_ENC_NUM_REF_FRAMES numRefL0; /**< [in]: Specifies max number of reference frames in reference picture list L0, that can be used by hardware for prediction of a frame. + Check support for numRefL0 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ + NV_ENC_NUM_REF_FRAMES numRefL1; /**< [in]: Specifies max number of reference frames in reference picture list L1, that can be used by hardware for prediction of a frame. + Check support for numRefL1 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ + + uint32_t reserved1[267]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CONFIG_H264; @@ -1355,20 +1713,42 @@ typedef struct _NV_ENC_CONFIG_HEVC ltrTrustMode = 0 and ltrMarkFrame = 1 for the picture to be marked as LTR. This is the preferred mode for using LTR. Note that LTRs are not supported if encoding session is configured with B-frames */ - uint32_t disableSPSPPS :1; /**< [in]: Set 1 to disable VPS,SPS and PPS signalling in the bitstream. */ + uint32_t disableSPSPPS :1; /**< [in]: Set 1 to disable VPS, SPS and PPS signaling in the bitstream. */ uint32_t repeatSPSPPS :1; /**< [in]: Set 1 to output VPS,SPS and PPS for every IDR frame.*/ uint32_t enableIntraRefresh :1; /**< [in]: Set 1 to enable gradual decoder refresh or intra refresh. If the GOP structure uses B frames this will be ignored */ uint32_t chromaFormatIDC :2; /**< [in]: Specifies the chroma format. Should be set to 1 for yuv420 input, 3 for yuv444 input.*/ uint32_t pixelBitDepthMinus8 :3; /**< [in]: Specifies pixel bit depth minus 8. Should be set to 0 for 8 bit input, 2 for 10 bit input.*/ - uint32_t reserved :18; /**< [in]: Reserved bitfields.*/ - uint32_t idrPeriod; /**< [in]: Specifies the IDR interval. If not set, this is made equal to gopLength in NV_ENC_CONFIG.Low latency application client can set IDR interval to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */ + uint32_t enableFillerDataInsertion :1; /**< [in]: Set to 1 to enable insertion of filler data in the bitstream. + This flag will take effect only when one of the CBR rate + control modes (NV_ENC_PARAMS_RC_CBR, NV_ENC_PARAMS_RC_CBR_HQ, + NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ) is in use and both + NV_ENC_INITIALIZE_PARAMS::frameRateNum and + NV_ENC_INITIALIZE_PARAMS::frameRateDen are set to non-zero + values. Setting this field when + NV_ENC_INITIALIZE_PARAMS::enableOutputInVidmem is also set + is currently not supported and will make ::NvEncInitializeEncoder() + return an error. */ + uint32_t enableConstrainedEncoding :1; /**< [in]: Set this to 1 to enable constrainedFrame encoding where each slice in the constrained picture is independent of other slices. + Constrained encoding works only with rectangular slices. + Check support for constrained encoding using ::NV_ENC_CAPS_SUPPORT_CONSTRAINED_ENCODING caps. */ + uint32_t enableAlphaLayerEncoding :1; /**< [in]: Set this to 1 to enable HEVC encode with alpha layer. */ + uint32_t singleSliceIntraRefresh :1; /**< [in]: Set this to 1 to maintain single slice frames during intra refresh. + Check support for single slice intra refresh using ::NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH caps. + This flag will be ignored if the value returned for ::NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH caps is false. */ + uint32_t outputRecoveryPointSEI :1; /**< [in]: Set to 1 to enable writing of recovery point SEI message */ + uint32_t outputTimeCodeSEI :1; /**< [in]: Set 1 to write SEI time code syntax in the bitstream. Note that this flag will be ignored for D3D12 interface.*/ + uint32_t reserved :12; /**< [in]: Reserved bitfields.*/ + uint32_t idrPeriod; /**< [in]: Specifies the IDR interval. If not set, this is made equal to gopLength in NV_ENC_CONFIG. Low latency application client can set IDR interval to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */ uint32_t intraRefreshPeriod; /**< [in]: Specifies the interval between successive intra refresh if enableIntrarefresh is set. Requires enableIntraRefresh to be set. Will be disabled if NV_ENC_CONFIG::gopLength is not set to NVENC_INFINITE_GOPLENGTH. */ uint32_t intraRefreshCnt; /**< [in]: Specifies the length of intra refresh in number of frames for periodic intra refresh. This value should be smaller than intraRefreshPeriod */ uint32_t maxNumRefFramesInDPB; /**< [in]: Specifies the maximum number of references frames in the DPB.*/ uint32_t ltrNumFrames; /**< [in]: This parameter has different meaning in two LTR modes. In "LTR Trust" mode (ltrTrustMode = 1), encoder will mark the first ltrNumFrames base layer reference frames within each IDR interval as LTR. - In "LTR Per Picture" mode (ltrTrustMode = 0 and ltrMarkFrame = 1), ltrNumFrames specifies maximum number of LTR frames in DPB. */ + In "LTR Per Picture" mode (ltrTrustMode = 0 and ltrMarkFrame = 1), ltrNumFrames specifies maximum number of LTR frames in DPB. + These ltrNumFrames acts as a guidance to the encoder and are not necessarily honored. To achieve a right balance between the encoding + quality and keeping LTR frames in the DPB queue, the encoder can internally limit the number of LTR frames. + The number of LTR frames actually used depends upon the encoding preset being used; Faster encoding presets will use fewer LTR frames.*/ uint32_t vpsId; /**< [in]: Specifies the VPS id of the video parameter set */ uint32_t spsId; /**< [in]: Specifies the SPS id of the sequence header */ uint32_t ppsId; /**< [in]: Specifies the PPS id of the picture header */ @@ -1381,27 +1761,131 @@ typedef struct _NV_ENC_CONFIG_HEVC sliceMode = 2, sliceModeData specifies # of CTU rows in each slice (except last slice) sliceMode = 3, sliceModeData specifies number of slices in the picture. Driver will divide picture into slices optimally */ uint32_t maxTemporalLayersMinus1; /**< [in]: Specifies the max temporal layer used for hierarchical coding. */ - NV_ENC_CONFIG_HEVC_VUI_PARAMETERS hevcVUIParameters; /**< [in]: Specifies the HEVC video usability info pamameters */ + NV_ENC_CONFIG_HEVC_VUI_PARAMETERS hevcVUIParameters; /**< [in]: Specifies the HEVC video usability info parameters */ uint32_t ltrTrustMode; /**< [in]: Specifies the LTR operating mode. See comments near NV_ENC_CONFIG_HEVC::enableLTR for description of the two modes. - Set to 1 to use "LTR Trust" mode of LTR operation. Clients are discouraged to use "LTR Trust" mode as this mode may + Set to 1 to use "LTR Trust" mode of LTR operation. Clients are discouraged to use "LTR Trust" mode as this mode may be deprecated in future releases. Set to 0 when using "LTR Per Picture" mode of LTR operation. */ - uint32_t reserved1[217]; /**< [in]: Reserved and must be set to 0.*/ - void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ + NV_ENC_BFRAME_REF_MODE useBFramesAsRef; /**< [in]: Specifies the B-Frame as reference mode. Check support for useBFramesAsRef mode using ::NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODE caps.*/ + NV_ENC_NUM_REF_FRAMES numRefL0; /**< [in]: Specifies max number of reference frames in reference picture list L0, that can be used by hardware for prediction of a frame. + Check support for numRefL0 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ + NV_ENC_NUM_REF_FRAMES numRefL1; /**< [in]: Specifies max number of reference frames in reference picture list L1, that can be used by hardware for prediction of a frame. + Check support for numRefL1 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ + uint32_t reserved1[214]; /**< [in]: Reserved and must be set to 0.*/ + void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CONFIG_HEVC; +#define NV_MAX_TILE_COLS_AV1 64 +#define NV_MAX_TILE_ROWS_AV1 64 + +/** + * \struct _NV_ENC_FILM_GRAIN_PARAMS_AV1 + * AV1 Film Grain Parameters structure + */ + +typedef struct _NV_ENC_FILM_GRAIN_PARAMS_AV1 +{ + uint32_t applyGrain :1; /**< [in]: Set to 1 to specify film grain should be added to frame */ + uint32_t chromaScalingFromLuma :1; /**< [in]: Set to 1 to specify the chroma scaling is inferred from luma scaling */ + uint32_t overlapFlag :1; /**< [in]: Set to 1 to indicate that overlap between film grain blocks should be applied*/ + uint32_t clipToRestrictedRange :1; /**< [in]: Set to 1 to clip values to restricted (studio) range after adding film grain */ + uint32_t grainScalingMinus8 :2; /**< [in]: Represents the shift - 8 applied to the values of the chroma component */ + uint32_t arCoeffLag :2; /**< [in]: Specifies the number of auto-regressive coefficients for luma and chroma */ + uint32_t numYPoints :4; /**< [in]: Specifies the number of points for the piecewise linear scaling function of the luma component */ + uint32_t numCbPoints :4; /**< [in]: Specifies the number of points for the piecewise linear scaling function of the cb component */ + uint32_t numCrPoints :4; /**< [in]: Specifies the number of points for the piecewise linear scaling function of the cr component */ + uint32_t arCoeffShiftMinus6 :2; /**< [in]: specifies the range of the auto-regressive coefficients */ + uint32_t grainScaleShift :2; /**< [in]: Specifies how much the Gaussian random numbers should be scaled down during the grain synthesi process */ + uint32_t reserved1 :8; /**< [in]: Reserved bits field - should be set to 0 */ + uint8_t pointYValue[14]; /**< [in]: pointYValue[i]: x coordinate for i-th point of luma piecewise linear scaling function. Values on a scale of 0...255 */ + uint8_t pointYScaling[14]; /**< [in]: pointYScaling[i]: i-th point output value of luma piecewise linear scaling function */ + uint8_t pointCbValue[10]; /**< [in]: pointCbValue[i]: x coordinate for i-th point of cb piecewise linear scaling function. Values on a scale of 0...255 */ + uint8_t pointCbScaling[10]; /**< [in]: pointCbScaling[i]: i-th point output value of cb piecewise linear scaling function */ + uint8_t pointCrValue[10]; /**< [in]: pointCrValue[i]: x coordinate for i-th point of cr piecewise linear scaling function. Values on a scale of 0...255 */ + uint8_t pointCrScaling[10]; /**< [in]: pointCrScaling[i]: i-th point output value of cr piecewise linear scaling function */ + uint8_t arCoeffsYPlus128[24]; /**< [in]: Specifies auto-regressive coefficients used for the Y plane */ + uint8_t arCoeffsCbPlus128[25]; /**< [in]: Specifies auto-regressive coefficients used for the U plane */ + uint8_t arCoeffsCrPlus128[25]; /**< [in]: Specifies auto-regressive coefficients used for the V plane */ + uint8_t reserved2[2]; /**< [in]: Reserved bytes - should be set to 0 */ + uint8_t cbMult; /**< [in]: Represents a multiplier for the cb component used in derivation of the input index to the cb component scaling function */ + uint8_t cbLumaMult; /**< [in]: represents a multiplier for the average luma component used in derivation of the input index to the cb component scaling function. */ + uint16_t cbOffset; /**< [in]: Represents an offset used in derivation of the input index to the cb component scaling function */ + uint8_t crMult; /**< [in]: Represents a multiplier for the cr component used in derivation of the input index to the cr component scaling function */ + uint8_t crLumaMult; /**< [in]: represents a multiplier for the average luma component used in derivation of the input index to the cr component scaling function. */ + uint16_t crOffset; /**< [in]: Represents an offset used in derivation of the input index to the cr component scaling function */ +} NV_ENC_FILM_GRAIN_PARAMS_AV1; + +/** +* \struct _NV_ENC_CONFIG_AV1 +* AV1 encoder configuration parameters to be set during initialization. +*/ +typedef struct _NV_ENC_CONFIG_AV1 +{ + uint32_t level; /**< [in]: Specifies the level of the encoded bitstream.*/ + uint32_t tier; /**< [in]: Specifies the level tier of the encoded bitstream.*/ + NV_ENC_AV1_PART_SIZE minPartSize; /**< [in]: Specifies the minimum size of luma coding block partition.*/ + NV_ENC_AV1_PART_SIZE maxPartSize; /**< [in]: Specifies the maximum size of luma coding block partition.*/ + uint32_t outputAnnexBFormat : 1; /**< [in]: Set 1 to use Annex B format for bitstream output.*/ + uint32_t enableTimingInfo : 1; /**< [in]: Set 1 to write Timing Info into sequence/frame headers */ + uint32_t enableDecoderModelInfo : 1; /**< [in]: Set 1 to write Decoder Model Info into sequence/frame headers */ + uint32_t enableFrameIdNumbers : 1; /**< [in]: Set 1 to write Frame id numbers in bitstream */ + uint32_t disableSeqHdr : 1; /**< [in]: Set 1 to disable Sequence Header signaling in the bitstream. */ + uint32_t repeatSeqHdr : 1; /**< [in]: Set 1 to output Sequence Header for every Key frame.*/ + uint32_t enableIntraRefresh : 1; /**< [in]: Set 1 to enable gradual decoder refresh or intra refresh. If the GOP structure uses B frames this will be ignored */ + uint32_t chromaFormatIDC : 2; /**< [in]: Specifies the chroma format. Should be set to 1 for yuv420 input (yuv444 input currently not supported).*/ + uint32_t enableBitstreamPadding : 1; /**< [in]: Set 1 to enable bitstream padding. */ + uint32_t enableCustomTileConfig : 1; /**< [in]: Set 1 to enable custom tile configuration: numTileColumns and numTileRows must have non zero values and tileWidths and tileHeights must point to a valid address */ + uint32_t enableFilmGrainParams : 1; /**< [in]: Set 1 to enable custom film grain parameters: filmGrainParams must point to a valid address */ + uint32_t inputPixelBitDepthMinus8 : 3; /**< [in]: Specifies pixel bit depth minus 8 of video input. Should be set to 0 for 8 bit input, 2 for 10 bit input.*/ + uint32_t pixelBitDepthMinus8 : 3; /**< [in]: Specifies pixel bit depth minus 8 of encoded video. Should be set to 0 for 8 bit, 2 for 10 bit. + HW will do the bitdepth conversion internally from inputPixelBitDepthMinus8 -> pixelBitDepthMinus8 if bit dpeths differ + Support for 8 bit input to 10 bit encode conversion only */ + uint32_t reserved : 14; /**< [in]: Reserved bitfields.*/ + uint32_t idrPeriod; /**< [in]: Specifies the IDR/Key frame interval. If not set, this is made equal to gopLength in NV_ENC_CONFIG.Low latency application client can set IDR interval to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */ + uint32_t intraRefreshPeriod; /**< [in]: Specifies the interval between successive intra refresh if enableIntrarefresh is set. Requires enableIntraRefresh to be set. + Will be disabled if NV_ENC_CONFIG::gopLength is not set to NVENC_INFINITE_GOPLENGTH. */ + uint32_t intraRefreshCnt; /**< [in]: Specifies the length of intra refresh in number of frames for periodic intra refresh. This value should be smaller than intraRefreshPeriod */ + uint32_t maxNumRefFramesInDPB; /**< [in]: Specifies the maximum number of references frames in the DPB.*/ + uint32_t numTileColumns; /**< [in]: This parameter in conjunction with the flag enableCustomTileConfig and the array tileWidths[] specifies the way in which the picture is divided into tile columns. + When enableCustomTileConfig == 0, the picture will be uniformly divided into numTileColumns tile columns. If numTileColumns is not a power of 2, + it will be rounded down to the next power of 2 value. If numTileColumns == 0, the picture will be coded with the smallest number of vertical tiles as allowed by standard. + When enableCustomTileConfig == 1, numTileColumns must be > 0 and <= NV_MAX_TILE_COLS_AV1 and tileWidths must point to a valid array of numTileColumns entries. + Entry i specifies the width in 64x64 CTU unit of tile colum i. The sum of all the entries should be equal to the picture width in 64x64 CTU units. */ + uint32_t numTileRows; /**< [in]: This parameter in conjunction with the flag enableCustomTileConfig and the array tileHeights[] specifies the way in which the picture is divided into tiles rows + When enableCustomTileConfig == 0, the picture will be uniformly divided into numTileRows tile rows. If numTileRows is not a power of 2, + it will be rounded down to the next power of 2 value. If numTileRows == 0, the picture will be coded with the smallest number of horizontal tiles as allowed by standard. + When enableCustomTileConfig == 1, numTileRows must be > 0 and <= NV_MAX_TILE_ROWS_AV1 and tileHeights must point to a valid array of numTileRows entries. + Entry i specifies the height in 64x64 CTU unit of tile row i. The sum of all the entries should be equal to the picture hieght in 64x64 CTU units. */ + uint32_t *tileWidths; /**< [in]: If enableCustomTileConfig == 1, tileWidths[i] specifies the width of tile column i in 64x64 CTU unit, with 0 <= i <= numTileColumns -1. */ + uint32_t *tileHeights; /**< [in]: If enableCustomTileConfig == 1, tileHeights[i] specifies the height of tile row i in 64x64 CTU unit, with 0 <= i <= numTileRows -1. */ + uint32_t maxTemporalLayersMinus1; /**< [in]: Specifies the max temporal layer used for hierarchical coding. */ + NV_ENC_VUI_COLOR_PRIMARIES colorPrimaries; /**< [in]: as defined in section of ISO/IEC 23091-4/ITU-T H.273 */ + NV_ENC_VUI_TRANSFER_CHARACTERISTIC transferCharacteristics; /**< [in]: as defined in section of ISO/IEC 23091-4/ITU-T H.273 */ + NV_ENC_VUI_MATRIX_COEFFS matrixCoefficients; /**< [in]: as defined in section of ISO/IEC 23091-4/ITU-T H.273 */ + uint32_t colorRange; /**< [in]: 0: studio swing representation - 1: full swing representation */ + uint32_t chromaSamplePosition; /**< [in]: 0: unknown + 1: Horizontally collocated with luma (0,0) sample, between two vertical samples + 2: Co-located with luma (0,0) sample */ + NV_ENC_BFRAME_REF_MODE useBFramesAsRef; /**< [in]: Specifies the B-Frame as reference mode. Check support for useBFramesAsRef mode using ::NV_ENC_CAPS_SUPPORT_BFRAME_REF_MODE caps.*/ + NV_ENC_FILM_GRAIN_PARAMS_AV1 *filmGrainParams; /**< [in]: If enableFilmGrainParams == 1, filmGrainParams must point to a valid NV_ENC_FILM_GRAIN_PARAMS_AV1 structure */ + NV_ENC_NUM_REF_FRAMES numFwdRefs; /**< [in]: Specifies max number of forward reference frame used for prediction of a frame. It must be in range 1-4 (Last, Last2, last3 and Golden). It's a suggestive value not necessarily be honored always. */ + NV_ENC_NUM_REF_FRAMES numBwdRefs; /**< [in]: Specifies max number of L1 list reference frame used for prediction of a frame. It must be in range 1-3 (Backward, Altref2, Altref). It's a suggestive value not necessarily be honored always. */ + uint32_t reserved1[235]; /**< [in]: Reserved and must be set to 0.*/ + void* reserved2[62]; /**< [in]: Reserved and must be set to NULL */ +} NV_ENC_CONFIG_AV1; + /** * \struct _NV_ENC_CONFIG_H264_MEONLY * H264 encoder configuration parameters for ME only Mode - * + * */ typedef struct _NV_ENC_CONFIG_H264_MEONLY { - uint32_t disablePartition16x16 :1; /**< [in]: Disable MotionEstimation on 16x16 blocks*/ - uint32_t disablePartition8x16 :1; /**< [in]: Disable MotionEstimation on 8x16 blocks*/ - uint32_t disablePartition16x8 :1; /**< [in]: Disable MotionEstimation on 16x8 blocks*/ - uint32_t disablePartition8x8 :1; /**< [in]: Disable MotionEstimation on 8x8 blocks*/ - uint32_t disableIntraSearch :1; /**< [in]: Disable Intra search during MotionEstimation*/ + uint32_t disablePartition16x16 :1; /**< [in]: Disable Motion Estimation on 16x16 blocks*/ + uint32_t disablePartition8x16 :1; /**< [in]: Disable Motion Estimation on 8x16 blocks*/ + uint32_t disablePartition16x8 :1; /**< [in]: Disable Motion Estimation on 16x8 blocks*/ + uint32_t disablePartition8x8 :1; /**< [in]: Disable Motion Estimation on 8x8 blocks*/ + uint32_t disableIntraSearch :1; /**< [in]: Disable Intra search during Motion Estimation*/ uint32_t bStereoEnable :1; /**< [in]: Enable Stereo Mode for Motion Estimation where each view is independently executed*/ uint32_t reserved :26; /**< [in]: Reserved and must be set to 0 */ uint32_t reserved1 [255]; /**< [in]: Reserved and must be set to 0 */ @@ -1412,7 +1896,7 @@ typedef struct _NV_ENC_CONFIG_H264_MEONLY /** * \struct _NV_ENC_CONFIG_HEVC_MEONLY * HEVC encoder configuration parameters for ME only Mode - * + * */ typedef struct _NV_ENC_CONFIG_HEVC_MEONLY { @@ -1428,6 +1912,7 @@ typedef union _NV_ENC_CODEC_CONFIG { NV_ENC_CONFIG_H264 h264Config; /**< [in]: Specifies the H.264-specific encoder configuration. */ NV_ENC_CONFIG_HEVC hevcConfig; /**< [in]: Specifies the HEVC-specific encoder configuration. */ + NV_ENC_CONFIG_AV1 av1Config; /**< [in]: Specifies the AV1-specific encoder configuration. */ NV_ENC_CONFIG_H264_MEONLY h264MeOnlyConfig; /**< [in]: Specifies the H.264-specific ME only encoder configuration. */ NV_ENC_CONFIG_HEVC_MEONLY hevcMeOnlyConfig; /**< [in]: Specifies the HEVC-specific ME only encoder configuration. */ uint32_t reserved[320]; /**< [in]: Reserved and must be set to 0 */ @@ -1441,7 +1926,7 @@ typedef union _NV_ENC_CODEC_CONFIG typedef struct _NV_ENC_CONFIG { uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_CONFIG_VER. */ - GUID profileGUID; /**< [in]: Specifies the codec profile guid. If client specifies \p NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID the NvEncodeAPI interface will select the appropriate codec profile. */ + GUID profileGUID; /**< [in]: Specifies the codec profile GUID. If client specifies \p NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID the NvEncodeAPI interface will select the appropriate codec profile. */ uint32_t gopLength; /**< [in]: Specifies the number of pictures in one GOP. Low latency application client can set goplength to NVENC_INFINITE_GOPLENGTH so that keyframes are not inserted automatically. */ int32_t frameIntervalP; /**< [in]: Specifies the GOP pattern as follows: \p frameIntervalP = 0: I, 1: IPP, 2: IBP, 3: IBBP If goplength is set to NVENC_INFINITE_GOPLENGTH \p frameIntervalP should be set to 1. */ uint32_t monoChromeEncoding; /**< [in]: Set this to 1 to enable monochrome encoding for this session. */ @@ -1456,8 +1941,20 @@ typedef struct _NV_ENC_CONFIG } NV_ENC_CONFIG; /** macro for constructing the version field of ::_NV_ENC_CONFIG */ -#define NV_ENC_CONFIG_VER (NVENCAPI_STRUCT_VERSION(7) | ( 1<<31 )) +#define NV_ENC_CONFIG_VER (NVENCAPI_STRUCT_VERSION(8) | ( 1<<31 )) +/** + * Tuning information of NVENC encoding (TuningInfo is not applicable to H264 and HEVC MEOnly mode). + */ +typedef enum NV_ENC_TUNING_INFO +{ + NV_ENC_TUNING_INFO_UNDEFINED = 0, /**< Undefined tuningInfo. Invalid value for encoding. */ + NV_ENC_TUNING_INFO_HIGH_QUALITY = 1, /**< Tune presets for latency tolerant encoding.*/ + NV_ENC_TUNING_INFO_LOW_LATENCY = 2, /**< Tune presets for low latency streaming.*/ + NV_ENC_TUNING_INFO_ULTRA_LOW_LATENCY = 3, /**< Tune presets for ultra low latency streaming.*/ + NV_ENC_TUNING_INFO_LOSSLESS = 4, /**< Tune presets for lossless encoding.*/ + NV_ENC_TUNING_INFO_COUNT /**< Count number of tuningInfos. Invalid value. */ +}NV_ENC_TUNING_INFO; /** * \struct _NV_ENC_INITIALIZE_PARAMS @@ -1470,19 +1967,24 @@ typedef struct _NV_ENC_INITIALIZE_PARAMS GUID presetGUID; /**< [in]: Specifies the preset for encoding. If the preset GUID is set then , the preset configuration will be applied before any other parameter. */ uint32_t encodeWidth; /**< [in]: Specifies the encode width. If not set ::NvEncInitializeEncoder() API will fail. */ uint32_t encodeHeight; /**< [in]: Specifies the encode height. If not set ::NvEncInitializeEncoder() API will fail. */ - uint32_t darWidth; /**< [in]: Specifies the display aspect ratio Width. */ - uint32_t darHeight; /**< [in]: Specifies the display aspect ratio height. */ + uint32_t darWidth; /**< [in]: Specifies the display aspect ratio width (H264/HEVC) or the render width (AV1). */ + uint32_t darHeight; /**< [in]: Specifies the display aspect ratio height (H264/HEVC) or the render height (AV1). */ uint32_t frameRateNum; /**< [in]: Specifies the numerator for frame rate used for encoding in frames per second ( Frame rate = frameRateNum / frameRateDen ). */ uint32_t frameRateDen; /**< [in]: Specifies the denominator for frame rate used for encoding in frames per second ( Frame rate = frameRateNum / frameRateDen ). */ uint32_t enableEncodeAsync; /**< [in]: Set this to 1 to enable asynchronous mode and is expected to use events to get picture completion notification. */ uint32_t enablePTD; /**< [in]: Set this to 1 to enable the Picture Type Decision is be taken by the NvEncodeAPI interface. */ uint32_t reportSliceOffsets :1; /**< [in]: Set this to 1 to enable reporting slice offsets in ::_NV_ENC_LOCK_BITSTREAM. NV_ENC_INITIALIZE_PARAMS::enableEncodeAsync must be set to 0 to use this feature. Client must set this to 0 if NV_ENC_CONFIG_H264::sliceMode is 1 on Kepler GPUs */ - uint32_t enableSubFrameWrite :1; /**< [in]: Set this to 1 to write out available bitstream to memory at subframe intervals */ - uint32_t enableExternalMEHints :1; /**< [in]: Set to 1 to enable external ME hints for the current frame. For NV_ENC_INITIALIZE_PARAMS::enablePTD=1 with B frames, programming L1 hints is optional for B frames since Client doesn't know internal GOP structure. + uint32_t enableSubFrameWrite :1; /**< [in]: Set this to 1 to write out available bitstream to memory at subframe intervals. + If enableSubFrameWrite = 1, then the hardware encoder returns data as soon as a slice (H264/HEVC) or tile (AV1) has completed encoding. + This results in better encoding latency, but the downside is that the application has to keep polling via a call to nvEncLockBitstream API continuously to see if any encoded slice/tile data is available. + Use this mode if you feel that the marginal reduction in latency from sub-frame encoding is worth the increase in complexity due to CPU-based polling. */ + uint32_t enableExternalMEHints :1; /**< [in]: Set to 1 to enable external ME hints for the current frame. For NV_ENC_INITIALIZE_PARAMS::enablePTD=1 with B frames, programming L1 hints is optional for B frames since Client doesn't know internal GOP structure. NV_ENC_PIC_PARAMS::meHintRefPicDist should preferably be set with enablePTD=1. */ uint32_t enableMEOnlyMode :1; /**< [in]: Set to 1 to enable ME Only Mode .*/ - uint32_t enableWeightedPrediction :1; /**< [in]: Set this to 1 to enable weighted prediction. Not supported if encode session is configured for B-Frames( 'frameIntervalP' in NV_ENC_CONFIG is greater than 1).*/ - uint32_t reservedBitFields :27; /**< [in]: Reserved bitfields and must be set to 0 */ + uint32_t enableWeightedPrediction :1; /**< [in]: Set this to 1 to enable weighted prediction. Not supported if encode session is configured for B-Frames (i.e. NV_ENC_CONFIG::frameIntervalP > 1 or preset >=P3 when tuningInfo = ::NV_ENC_TUNING_INFO_HIGH_QUALITY or + tuningInfo = ::NV_ENC_TUNING_INFO_LOSSLESS. This is because preset >=p3 internally enables B frames when tuningInfo = ::NV_ENC_TUNING_INFO_HIGH_QUALITY or ::NV_ENC_TUNING_INFO_LOSSLESS). */ + uint32_t enableOutputInVidmem :1; /**< [in]: Set this to 1 to enable output of NVENC in video memory buffer created by application. This feature is not supported for HEVC ME only mode. */ + uint32_t reservedBitFields :26; /**< [in]: Reserved bitfields and must be set to 0 */ uint32_t privDataSize; /**< [in]: Reserved private data buffer size and must be set to 0 */ void* privData; /**< [in]: Reserved private data buffer and must be set to NULL */ NV_ENC_CONFIG* encodeConfig; /**< [in]: Specifies the advanced codec specific structure. If client has sent a valid codec config structure, it will override parameters set by the NV_ENC_INITIALIZE_PARAMS::presetGUID parameter. If set to NULL the NvEncodeAPI interface will use the NV_ENC_INITIALIZE_PARAMS::presetGUID to set the codec specific parameters. @@ -1492,10 +1994,12 @@ typedef struct _NV_ENC_INITIALIZE_PARAMS Client should allocate output buffers according to this dimension for dynamic resolution change. If set to 0, Encoder will not allow dynamic resolution change. */ uint32_t maxEncodeHeight; /**< [in]: Maximum encode height to be allowed for current Encode session. Client should allocate output buffers according to this dimension for dynamic resolution change. If set to 0, Encode will not allow dynamic resolution change. */ - NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE maxMEHintCountsPerBlock[2]; /**< [in]: If Client wants to pass external motion vectors in NV_ENC_PIC_PARAMS::meExternalHints buffer it must specify the maximum number of hint candidates per block per direction for the encode session. + NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE maxMEHintCountsPerBlock[2]; /**< [in]: If Client wants to pass external motion vectors in NV_ENC_PIC_PARAMS::meExternalHints buffer it must specify the maximum number of hint candidates per block per direction for the encode session. The NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[0] is for L0 predictors and NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[1] is for L1 predictors. This client must also set NV_ENC_INITIALIZE_PARAMS::enableExternalMEHints to 1. */ - uint32_t reserved [289]; /**< [in]: Reserved and must be set to 0 */ + NV_ENC_TUNING_INFO tuningInfo; /**< [in]: Tuning Info of NVENC encoding(TuningInfo is not applicable to H264 and HEVC meonly mode). */ + NV_ENC_BUFFER_FORMAT bufferFormat; /**< [in]: Input buffer format. Used only when DX12 interface type is used */ + uint32_t reserved [287]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_INITIALIZE_PARAMS; @@ -1539,7 +2043,7 @@ typedef struct _NV_ENC_RECONFIGURE_PARAMS /** * \struct _NV_ENC_PRESET_CONFIG * Encoder preset config - */ + */ typedef struct _NV_ENC_PRESET_CONFIG { uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_PRESET_CONFIG_VER. */ @@ -1552,6 +2056,34 @@ typedef struct _NV_ENC_PRESET_CONFIG #define NV_ENC_PRESET_CONFIG_VER (NVENCAPI_STRUCT_VERSION(4) | ( 1<<31 )) +/** + * \struct _NV_ENC_PIC_PARAMS_MVC + * MVC-specific parameters to be sent on a per-frame basis. + */ +typedef struct _NV_ENC_PIC_PARAMS_MVC +{ + uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_PIC_PARAMS_MVC_VER. */ + uint32_t viewID; /**< [in]: Specifies the view ID associated with the current input view. */ + uint32_t temporalID; /**< [in]: Specifies the temporal ID associated with the current input view. */ + uint32_t priorityID; /**< [in]: Specifies the priority ID associated with the current input view. Reserved and ignored by the NvEncodeAPI interface. */ + uint32_t reserved1[12]; /**< [in]: Reserved and must be set to 0. */ + void* reserved2[8]; /**< [in]: Reserved and must be set to NULL. */ +}NV_ENC_PIC_PARAMS_MVC; + +/** macro for constructing the version field of ::_NV_ENC_PIC_PARAMS_MVC */ +#define NV_ENC_PIC_PARAMS_MVC_VER NVENCAPI_STRUCT_VERSION(1) + + +/** + * \union _NV_ENC_PIC_PARAMS_H264_EXT + * H264 extension picture parameters + */ +typedef union _NV_ENC_PIC_PARAMS_H264_EXT +{ + NV_ENC_PIC_PARAMS_MVC mvcPicParams; /**< [in]: Specifies the MVC picture parameters. */ + uint32_t reserved1[32]; /**< [in]: Reserved and must be set to 0. */ +}NV_ENC_PIC_PARAMS_H264_EXT; + /** * \struct _NV_ENC_SEI_PAYLOAD * User SEI message @@ -1568,17 +2100,17 @@ typedef struct _NV_ENC_SEI_PAYLOAD /** * \struct _NV_ENC_PIC_PARAMS_H264 * H264 specific enc pic params. sent on a per frame basis. - */ + */ typedef struct _NV_ENC_PIC_PARAMS_H264 { uint32_t displayPOCSyntax; /**< [in]: Specifies the display POC syntax This is required to be set if client is handling the picture type decision. */ uint32_t reserved3; /**< [in]: Reserved and must be set to 0 */ uint32_t refPicFlag; /**< [in]: Set to 1 for a reference picture. This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */ uint32_t colourPlaneId; /**< [in]: Specifies the colour plane ID associated with the current input. */ - uint32_t forceIntraRefreshWithFrameCnt; /**< [in]: Forces an intra refresh with duration equal to intraRefreshFrameCnt. - When outputRecoveryPointSEI is set this is value is used for recovery_frame_cnt in recovery point SEI message + uint32_t forceIntraRefreshWithFrameCnt; /**< [in]: Forces an intra refresh with duration equal to intraRefreshFrameCnt. + When outputRecoveryPointSEI is set this is value is used for recovery_frame_cnt in recovery point SEI message forceIntraRefreshWithFrameCnt cannot be used if B frames are used in the GOP structure specified */ - uint32_t constrainedFrame :1; /**< [in]: Set to 1 if client wants to encode this frame with each slice completely independent of other slices in the frame. + uint32_t constrainedFrame :1; /**< [in]: Set to 1 if client wants to encode this frame with each slice completely independent of other slices in the frame. NV_ENC_INITIALIZE_PARAMS::enableConstrainedEncoding should be set to 1 */ uint32_t sliceModeDataUpdate :1; /**< [in]: Set to 1 if client wants to change the sliceModeData field to specify new sliceSize Parameter When forceIntraRefreshWithFrameCnt is set it will have priority over sliceMode setting */ @@ -1599,10 +2131,16 @@ typedef struct _NV_ENC_PIC_PARAMS_H264 sliceMode = 2, sliceModeData specifies # of MB rows in each slice (except last slice) sliceMode = 3, sliceModeData specifies number of slices in the picture. Driver will divide picture into slices optimally */ uint32_t ltrMarkFrameIdx; /**< [in]: Specifies the long term referenceframe index to use for marking this frame as LTR.*/ - uint32_t ltrUseFrameBitmap; /**< [in]: Specifies the the associated bitmap of LTR frame indices to use when encoding this frame. */ + uint32_t ltrUseFrameBitmap; /**< [in]: Specifies the associated bitmap of LTR frame indices to use when encoding this frame. */ uint32_t ltrUsageMode; /**< [in]: Not supported. Reserved for future use and must be set to 0. */ - uint32_t reserved [243]; /**< [in]: Reserved and must be set to 0. */ - void* reserved2[62]; /**< [in]: Reserved and must be set to NULL. */ + uint32_t forceIntraSliceCount; /**< [in]: Specifies the number of slices to be forced to Intra in the current picture. + This option along with forceIntraSliceIdx[] array needs to be used with sliceMode = 3 only */ + uint32_t *forceIntraSliceIdx; /**< [in]: Slice indices to be forced to intra in the current picture. Each slice index should be <= num_slices_in_picture -1. Index starts from 0 for first slice. + The number of entries in this array should be equal to forceIntraSliceCount */ + NV_ENC_PIC_PARAMS_H264_EXT h264ExtPicParams; /**< [in]: Specifies the H264 extension config parameters using this config. */ + NV_ENC_TIME_CODE timeCode; /**< [in]: Specifies the clock timestamp sets used in picture timing SEI. Applicable only when NV_ENC_CONFIG_H264::enableTimeCode is set to 1. */ + uint32_t reserved [203]; /**< [in]: Reserved and must be set to 0. */ + void* reserved2[61]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_PIC_PARAMS_H264; /** @@ -1614,18 +2152,18 @@ typedef struct _NV_ENC_PIC_PARAMS_HEVC uint32_t displayPOCSyntax; /**< [in]: Specifies the display POC syntax This is required to be set if client is handling the picture type decision. */ uint32_t refPicFlag; /**< [in]: Set to 1 for a reference picture. This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */ uint32_t temporalId; /**< [in]: Specifies the temporal id of the picture */ - uint32_t forceIntraRefreshWithFrameCnt; /**< [in]: Forces an intra refresh with duration equal to intraRefreshFrameCnt. - When outputRecoveryPointSEI is set this is value is used for recovery_frame_cnt in recovery point SEI message + uint32_t forceIntraRefreshWithFrameCnt; /**< [in]: Forces an intra refresh with duration equal to intraRefreshFrameCnt. + When outputRecoveryPointSEI is set this is value is used for recovery_frame_cnt in recovery point SEI message forceIntraRefreshWithFrameCnt cannot be used if B frames are used in the GOP structure specified */ - uint32_t constrainedFrame :1; /**< [in]: Set to 1 if client wants to encode this frame with each slice completely independent of other slices in the frame. + uint32_t constrainedFrame :1; /**< [in]: Set to 1 if client wants to encode this frame with each slice completely independent of other slices in the frame. NV_ENC_INITIALIZE_PARAMS::enableConstrainedEncoding should be set to 1 */ uint32_t sliceModeDataUpdate :1; /**< [in]: Set to 1 if client wants to change the sliceModeData field to specify new sliceSize Parameter When forceIntraRefreshWithFrameCnt is set it will have priority over sliceMode setting */ uint32_t ltrMarkFrame :1; /**< [in]: Set to 1 if client wants to mark this frame as LTR */ uint32_t ltrUseFrames :1; /**< [in]: Set to 1 if client allows encoding this frame using the LTR frames specified in ltrFrameBitmap */ uint32_t reservedBitFields :28; /**< [in]: Reserved bit fields and must be set to 0 */ - uint8_t* sliceTypeData; /**< [in]: Array which specifies the slice type used to force intra slice for a particular slice. Currently supported only for NV_ENC_CONFIG_H264::sliceMode == 3. - Client should allocate array of size sliceModeData where sliceModeData is specified in field of ::_NV_ENC_CONFIG_H264 + uint8_t* sliceTypeData; /**< [in]: Array which specifies the slice type used to force intra slice for a particular slice. Currently supported only for NV_ENC_CONFIG_H264::sliceMode == 3. + Client should allocate array of size sliceModeData where sliceModeData is specified in field of ::_NV_ENC_CONFIG_H264 Array element with index n corresponds to nth slice. To force a particular slice to intra client should set corresponding array element to NV_ENC_SLICE_TYPE_I all other array elements should be set to NV_ENC_SLICE_TYPE_DEFAULT */ uint32_t sliceTypeArrayCnt; /**< [in]: Client should set this to the number of elements allocated in sliceTypeData array. If sliceTypeData is NULL then this should be set to 0 */ @@ -1644,10 +2182,60 @@ typedef struct _NV_ENC_PIC_PARAMS_HEVC uint32_t seiPayloadArrayCnt; /**< [in]: Specifies the number of elements allocated in seiPayloadArray array. */ uint32_t reserved; /**< [in]: Reserved and must be set to 0. */ NV_ENC_SEI_PAYLOAD* seiPayloadArray; /**< [in]: Array of SEI payloads which will be inserted for this frame. */ - uint32_t reserved2 [244]; /**< [in]: Reserved and must be set to 0. */ + NV_ENC_TIME_CODE timeCode; /**< [in]: Specifies the clock timestamp sets used in time code SEI. Applicable only when NV_ENC_CONFIG_HEVC::enableTimeCodeSEI is set to 1. */ + uint32_t reserved2 [237]; /**< [in]: Reserved and must be set to 0. */ void* reserved3[61]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_PIC_PARAMS_HEVC; +#define NV_ENC_AV1_OBU_PAYLOAD NV_ENC_SEI_PAYLOAD + +/** +* \struct _NV_ENC_PIC_PARAMS_AV1 +* AV1 specific enc pic params. sent on a per frame basis. +*/ +typedef struct _NV_ENC_PIC_PARAMS_AV1 +{ + uint32_t displayPOCSyntax; /**< [in]: Specifies the display POC syntax This is required to be set if client is handling the picture type decision. */ + uint32_t refPicFlag; /**< [in]: Set to 1 for a reference picture. This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */ + uint32_t temporalId; /**< [in]: Specifies the temporal id of the picture */ + uint32_t forceIntraRefreshWithFrameCnt; /**< [in]: Forces an intra refresh with duration equal to intraRefreshFrameCnt. + forceIntraRefreshWithFrameCnt cannot be used if B frames are used in the GOP structure specified */ + uint32_t goldenFrameFlag : 1; /**< [in]: Encode frame as Golden Frame. This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */ + uint32_t arfFrameFlag : 1; /**< [in]: Encode frame as Alternate Reference Frame. This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */ + uint32_t arf2FrameFlag : 1; /**< [in]: Encode frame as Alternate Reference 2 Frame. This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */ + uint32_t bwdFrameFlag : 1; /**< [in]: Encode frame as Backward Reference Frame. This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */ + uint32_t overlayFrameFlag : 1; /**< [in]: Encode frame as overlay frame. A previously encoded frame with the same displayPOCSyntax value should be present in reference frame buffer. + This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */ + uint32_t showExistingFrameFlag : 1; /**< [in]: When ovelayFrameFlag is set to 1, this flag controls the value of the show_existing_frame syntax element associated with the overlay frame. + This flag is added to the interface as a placeholder. Its value is ignored for now and always assumed to be set to 1. + This is ignored if NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1. */ + uint32_t errorResilientModeFlag : 1; /**< [in]: encode frame independently from previously encoded frames */ + + uint32_t tileConfigUpdate : 1; /**< [in]: Set to 1 if client wants to overwrite the default tile configuration with the tile parameters specified below + When forceIntraRefreshWithFrameCnt is set it will have priority over tileConfigUpdate setting */ + uint32_t enableCustomTileConfig : 1; /**< [in]: Set 1 to enable custom tile configuration: numTileColumns and numTileRows must have non zero values and tileWidths and tileHeights must point to a valid address */ + uint32_t filmGrainParamsUpdate : 1; /**< [in]: Set to 1 if client wants to update previous film grain parameters: filmGrainParams must point to a valid address and encoder must have been configured with film grain enabled */ + uint32_t reservedBitFields : 22; /**< [in]: Reserved bitfields and must be set to 0 */ + uint32_t numTileColumns; /**< [in]: This parameter in conjunction with the flag enableCustomTileConfig and the array tileWidths[] specifies the way in which the picture is divided into tile columns. + When enableCustomTileConfig == 0, the picture will be uniformly divided into numTileColumns tile columns. If numTileColumns is not a power of 2, + it will be rounded down to the next power of 2 value. If numTileColumns == 0, the picture will be coded with the smallest number of vertical tiles as allowed by standard. + When enableCustomTileConfig == 1, numTileColumns must be > 0 and <= NV_MAX_TILE_COLS_AV1 and tileWidths must point to a valid array of numTileColumns entries. + Entry i specifies the width in 64x64 CTU unit of tile colum i. The sum of all the entries should be equal to the picture width in 64x64 CTU units. */ + uint32_t numTileRows; /**< [in]: This parameter in conjunction with the flag enableCustomTileConfig and the array tileHeights[] specifies the way in which the picture is divided into tiles rows + When enableCustomTileConfig == 0, the picture will be uniformly divided into numTileRows tile rows. If numTileRows is not a power of 2, + it will be rounded down to the next power of 2 value. If numTileRows == 0, the picture will be coded with the smallest number of horizontal tiles as allowed by standard. + When enableCustomTileConfig == 1, numTileRows must be > 0 and <= NV_MAX_TILE_ROWS_AV1 and tileHeights must point to a valid array of numTileRows entries. + Entry i specifies the height in 64x64 CTU unit of tile row i. The sum of all the entries should be equal to the picture hieght in 64x64 CTU units. */ + uint32_t *tileWidths; /**< [in]: If enableCustomTileConfig == 1, tileWidths[i] specifies the width of tile column i in 64x64 CTU unit, with 0 <= i <= numTileColumns -1. */ + uint32_t *tileHeights; /**< [in]: If enableCustomTileConfig == 1, tileHeights[i] specifies the height of tile row i in 64x64 CTU unit, with 0 <= i <= numTileRows -1. */ + uint32_t obuPayloadArrayCnt; /**< [in]: Specifies the number of elements allocated in obuPayloadArray array. */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0. */ + NV_ENC_AV1_OBU_PAYLOAD* obuPayloadArray; /**< [in]: Array of OBU payloads which will be inserted for this frame. */ + NV_ENC_FILM_GRAIN_PARAMS_AV1 *filmGrainParams; /**< [in]: If filmGrainParamsUpdate == 1, filmGrainParams must point to a valid NV_ENC_FILM_GRAIN_PARAMS_AV1 structure */ + uint32_t reserved2[247]; /**< [in]: Reserved and must be set to 0. */ + void* reserved3[61]; /**< [in]: Reserved and must be set to NULL. */ +} NV_ENC_PIC_PARAMS_AV1; + /** * Codec specific per-picture encoding parameters. */ @@ -1655,9 +2243,11 @@ typedef union _NV_ENC_CODEC_PIC_PARAMS { NV_ENC_PIC_PARAMS_H264 h264PicParams; /**< [in]: H264 encode picture params. */ NV_ENC_PIC_PARAMS_HEVC hevcPicParams; /**< [in]: HEVC encode picture params. */ + NV_ENC_PIC_PARAMS_AV1 av1PicParams; /**< [in]: AV1 encode picture params. */ uint32_t reserved[256]; /**< [in]: Reserved and must be set to 0. */ } NV_ENC_CODEC_PIC_PARAMS; + /** * \struct _NV_ENC_PIC_PARAMS * Encoding parameters that need to be sent on a per frame basis. @@ -1665,42 +2255,58 @@ typedef union _NV_ENC_CODEC_PIC_PARAMS typedef struct _NV_ENC_PIC_PARAMS { uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_PIC_PARAMS_VER. */ - uint32_t inputWidth; /**< [in]: Specifies the input buffer width */ - uint32_t inputHeight; /**< [in]: Specifies the input buffer height */ + uint32_t inputWidth; /**< [in]: Specifies the input frame width */ + uint32_t inputHeight; /**< [in]: Specifies the input frame height */ uint32_t inputPitch; /**< [in]: Specifies the input buffer pitch. If pitch value is not known, set this to inputWidth. */ - uint32_t encodePicFlags; /**< [in]: Specifies bit-wise OR`ed encode pic flags. See ::NV_ENC_PIC_FLAGS enum. */ + uint32_t encodePicFlags; /**< [in]: Specifies bit-wise OR of encode picture flags. See ::NV_ENC_PIC_FLAGS enum. */ uint32_t frameIdx; /**< [in]: Specifies the frame index associated with the input frame [optional]. */ - uint64_t inputTimeStamp; /**< [in]: Specifies presentation timestamp associated with the input picture. */ + uint64_t inputTimeStamp; /**< [in]: Specifies opaque data which is associated with the encoded frame, but not actually encoded in the output bitstream. + This opaque data can be used later to uniquely refer to the corresponding encoded frame. For example, it can be used + for identifying the frame to be invalidated in the reference picture buffer, if lost at the client. */ uint64_t inputDuration; /**< [in]: Specifies duration of the input picture */ NV_ENC_INPUT_PTR inputBuffer; /**< [in]: Specifies the input buffer pointer. Client must use a pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs.*/ - NV_ENC_OUTPUT_PTR outputBitstream; /**< [in]: Specifies the pointer to output buffer. Client should use a pointer obtained from ::NvEncCreateBitstreamBuffer() API. */ - void* completionEvent; /**< [in]: Specifies an event to be signalled on completion of encoding of this Frame [only if operating in Asynchronous mode]. Each output buffer should be associated with a distinct event pointer. */ + NV_ENC_OUTPUT_PTR outputBitstream; /**< [in]: Specifies the output buffer pointer. + If NV_ENC_INITIALIZE_PARAMS::enableOutputInVidmem is set to 0, specifies the pointer to output buffer. Client should use a pointer obtained from ::NvEncCreateBitstreamBuffer() API. + If NV_ENC_INITIALIZE_PARAMS::enableOutputInVidmem is set to 1, client should allocate buffer in video memory for NV_ENC_ENCODE_OUT_PARAMS struct and encoded bitstream data. Client + should use a pointer obtained from ::NvEncMapInputResource() API, when mapping this output buffer and assign it to NV_ENC_PIC_PARAMS::outputBitstream. + First 256 bytes of this buffer should be interpreted as NV_ENC_ENCODE_OUT_PARAMS struct followed by encoded bitstream data. Recommended size for output buffer is sum of size of + NV_ENC_ENCODE_OUT_PARAMS struct and twice the input frame size for lower resolution eg. CIF and 1.5 times the input frame size for higher resolutions. If encoded bitstream size is + greater than the allocated buffer size for encoded bitstream, then the output buffer will have encoded bitstream data equal to buffer size. All CUDA operations on this buffer must use + the default stream. */ + void* completionEvent; /**< [in]: Specifies an event to be signaled on completion of encoding of this Frame [only if operating in Asynchronous mode]. Each output buffer should be associated with a distinct event pointer. */ NV_ENC_BUFFER_FORMAT bufferFmt; /**< [in]: Specifies the input buffer format. */ NV_ENC_PIC_STRUCT pictureStruct; /**< [in]: Specifies structure of the input picture. */ NV_ENC_PIC_TYPE pictureType; /**< [in]: Specifies input picture type. Client required to be set explicitly by the client if the client has not set NV_ENC_INITALIZE_PARAMS::enablePTD to 1 while calling NvInitializeEncoder. */ NV_ENC_CODEC_PIC_PARAMS codecPicParams; /**< [in]: Specifies the codec specific per-picture encoding parameters. */ - NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE meHintCountsPerBlock[2]; /**< [in]: Specifies the number of hint candidates per block per direction for the current frame. meHintCountsPerBlock[0] is for L0 predictors and meHintCountsPerBlock[1] is for L1 predictors. - The candidate count in NV_ENC_PIC_PARAMS::meHintCountsPerBlock[lx] must never exceed NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[lx] provided during encoder intialization. */ - NVENC_EXTERNAL_ME_HINT *meExternalHints; /**< [in]: Specifies the pointer to ME external hints for the current frame. The size of ME hint buffer should be equal to number of macroblocks * the total number of candidates per macroblock. - The total number of candidates per MB per direction = 1*meHintCountsPerBlock[Lx].numCandsPerBlk16x16 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk16x8 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk8x8 + NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE meHintCountsPerBlock[2]; /**< [in]: For H264 and Hevc, specifies the number of hint candidates per block per direction for the current frame. meHintCountsPerBlock[0] is for L0 predictors and meHintCountsPerBlock[1] is for L1 predictors. + The candidate count in NV_ENC_PIC_PARAMS::meHintCountsPerBlock[lx] must never exceed NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[lx] provided during encoder initialization. */ + NVENC_EXTERNAL_ME_HINT *meExternalHints; /**< [in]: For H264 and Hevc, Specifies the pointer to ME external hints for the current frame. The size of ME hint buffer should be equal to number of macroblocks * the total number of candidates per macroblock. + The total number of candidates per MB per direction = 1*meHintCountsPerBlock[Lx].numCandsPerBlk16x16 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk16x8 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk8x8 + 4*meHintCountsPerBlock[Lx].numCandsPerBlk8x8. For frames using bidirectional ME , the total number of candidates for single macroblock is sum of total number of candidates per MB for each direction (L0 and L1) */ uint32_t reserved1[6]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[2]; /**< [in]: Reserved and must be set to NULL */ - int8_t *qpDeltaMap; /**< [in]: Specifies the pointer to signed byte array containing value per MB in raster scan order for the current picture, which will be Interperated depending on NV_ENC_RC_PARAMS::qpMapMode. - If NV_ENC_RC_PARAMS::qpMapMode is NV_ENC_QP_MAP_DELTA , This specify QP modifier to be applied on top of the QP chosen by rate control. - If NV_ENC_RC_PARAMS::qpMapMode is NV_ENC_QP_MAP_EMPHASIS, it specifies emphasis level map per MB. This level value along with QP chosen by rate control is used to compute the QP modifier, - which in turn is applied on top of QP chosen by rate control. - If NV_ENC_RC_PARAMS::qpMapMode is NV_ENC_QP_MAP_DISABLED value in qpDeltaMap will be ignored.*/ - uint32_t qpDeltaMapSize; /**< [in]: Specifies the size in bytes of qpDeltaMap surface allocated by client and pointed to by NV_ENC_PIC_PARAMS::qpDeltaMap. Surface (array) should be picWidthInMbs * picHeightInMbs */ + int8_t *qpDeltaMap; /**< [in]: Specifies the pointer to signed byte array containing value per MB for H264, per CTB for HEVC and per SB for AV1 in raster scan order for the current picture, which will be interpreted depending on NV_ENC_RC_PARAMS::qpMapMode. + If NV_ENC_RC_PARAMS::qpMapMode is NV_ENC_QP_MAP_DELTA, qpDeltaMap specifies QP modifier per MB for H264, per CTB for HEVC and per SB for AV1. This QP modifier will be applied on top of the QP chosen by rate control. + If NV_ENC_RC_PARAMS::qpMapMode is NV_ENC_QP_MAP_EMPHASIS, qpDeltaMap specifies Emphasis Level Map per MB for H264. This level value along with QP chosen by rate control is used to + compute the QP modifier, which in turn is applied on top of QP chosen by rate control. + If NV_ENC_RC_PARAMS::qpMapMode is NV_ENC_QP_MAP_DISABLED, value in qpDeltaMap will be ignored.*/ + uint32_t qpDeltaMapSize; /**< [in]: Specifies the size in bytes of qpDeltaMap surface allocated by client and pointed to by NV_ENC_PIC_PARAMS::qpDeltaMap. Surface (array) should be picWidthInMbs * picHeightInMbs for H264, picWidthInCtbs * picHeightInCtbs for HEVC and + picWidthInSbs * picHeightInSbs for AV1 */ uint32_t reservedBitFields; /**< [in]: Reserved bitfields and must be set to 0 */ - uint16_t meHintRefPicDist[2]; /**< [in]: Specifies temporal distance for reference picture (NVENC_EXTERNAL_ME_HINT::refidx = 0) used during external ME with NV_ENC_INITALIZE_PARAMS::enablePTD = 1 . meHintRefPicDist[0] is for L0 hints and meHintRefPicDist[1] is for L1 hints. + uint16_t meHintRefPicDist[2]; /**< [in]: Specifies temporal distance for reference picture (NVENC_EXTERNAL_ME_HINT::refidx = 0) used during external ME with NV_ENC_INITALIZE_PARAMS::enablePTD = 1 . meHintRefPicDist[0] is for L0 hints and meHintRefPicDist[1] is for L1 hints. If not set, will internally infer distance of 1. Ignored for NV_ENC_INITALIZE_PARAMS::enablePTD = 0 */ - uint32_t reserved3[286]; /**< [in]: Reserved and must be set to 0 */ - void* reserved4[60]; /**< [in]: Reserved and must be set to NULL */ + NV_ENC_INPUT_PTR alphaBuffer; /**< [in]: Specifies the input alpha buffer pointer. Client must use a pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs. + Applicable only when encoding hevc with alpha layer is enabled. */ + NVENC_EXTERNAL_ME_SB_HINT *meExternalSbHints; /**< [in]: For AV1,Specifies the pointer to ME external SB hints for the current frame. The size of ME hint buffer should be equal to meSbHintsCount. */ + uint32_t meSbHintsCount; /**< [in]: For AV1, specifies the total number of external ME SB hint candidates for the frame + NV_ENC_PIC_PARAMS::meSbHintsCount must never exceed the total number of SBs in frame * the max number of candidates per SB provided during encoder initialization. + The max number of candidates per SB is maxMeHintCountsPerBlock[0].numCandsPerSb + maxMeHintCountsPerBlock[1].numCandsPerSb */ + uint32_t reserved3[285]; /**< [in]: Reserved and must be set to 0 */ + void* reserved4[58]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_PIC_PARAMS; /** Macro for constructing the version field of ::_NV_ENC_PIC_PARAMS */ -#define NV_ENC_PIC_PARAMS_VER (NVENCAPI_STRUCT_VERSION(4) | ( 1<<31 )) +#define NV_ENC_PIC_PARAMS_VER (NVENCAPI_STRUCT_VERSION(6) | ( 1<<31 )) /** @@ -1711,22 +2317,27 @@ typedef struct _NV_ENC_PIC_PARAMS typedef struct _NV_ENC_MEONLY_PARAMS { uint32_t version; /**< [in]: Struct version. Must be set to NV_ENC_MEONLY_PARAMS_VER.*/ - uint32_t inputWidth; /**< [in]: Specifies the input buffer width */ - uint32_t inputHeight; /**< [in]: Specifies the input buffer height */ + uint32_t inputWidth; /**< [in]: Specifies the input frame width */ + uint32_t inputHeight; /**< [in]: Specifies the input frame height */ NV_ENC_INPUT_PTR inputBuffer; /**< [in]: Specifies the input buffer pointer. Client must use a pointer obtained from NvEncCreateInputBuffer() or NvEncMapInputResource() APIs. */ NV_ENC_INPUT_PTR referenceFrame; /**< [in]: Specifies the reference frame pointer */ - NV_ENC_OUTPUT_PTR mvBuffer; /**< [in]: Specifies the pointer to motion vector data buffer allocated by NvEncCreateMVBuffer. Client must lock mvBuffer using ::NvEncLockBitstream() API to get the motion vector data. */ + NV_ENC_OUTPUT_PTR mvBuffer; /**< [in]: Specifies the output buffer pointer. + If NV_ENC_INITIALIZE_PARAMS::enableOutputInVidmem is set to 0, specifies the pointer to motion vector data buffer allocated by NvEncCreateMVBuffer. + Client must lock mvBuffer using ::NvEncLockBitstream() API to get the motion vector data. + If NV_ENC_INITIALIZE_PARAMS::enableOutputInVidmem is set to 1, client should allocate buffer in video memory for storing the motion vector data. The size of this buffer must + be equal to total number of macroblocks multiplied by size of NV_ENC_H264_MV_DATA struct. Client should use a pointer obtained from ::NvEncMapInputResource() API, when mapping this + output buffer and assign it to NV_ENC_MEONLY_PARAMS::mvBuffer. All CUDA operations on this buffer must use the default stream. */ NV_ENC_BUFFER_FORMAT bufferFmt; /**< [in]: Specifies the input buffer format. */ - void* completionEvent; /**< [in]: Specifies an event to be signalled on completion of motion estimation - of this Frame [only if operating in Asynchronous mode]. + void* completionEvent; /**< [in]: Specifies an event to be signaled on completion of motion estimation + of this Frame [only if operating in Asynchronous mode]. Each output buffer should be associated with a distinct event pointer. */ - uint32_t viewID; /**< [in]: Specifies left,right viewID if NV_ENC_CONFIG_H264_MEONLY::bStereoEnable is set. + uint32_t viewID; /**< [in]: Specifies left or right viewID if NV_ENC_CONFIG_H264_MEONLY::bStereoEnable is set. viewID can be 0,1 if bStereoEnable is set, 0 otherwise. */ - NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE + NVENC_EXTERNAL_ME_HINT_COUNTS_PER_BLOCKTYPE meHintCountsPerBlock[2]; /**< [in]: Specifies the number of hint candidates per block for the current frame. meHintCountsPerBlock[0] is for L0 predictors. - The candidate count in NV_ENC_PIC_PARAMS::meHintCountsPerBlock[lx] must never exceed NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[lx] provided during encoder intialization. */ + The candidate count in NV_ENC_PIC_PARAMS::meHintCountsPerBlock[lx] must never exceed NV_ENC_INITIALIZE_PARAMS::maxMEHintCountsPerBlock[lx] provided during encoder initialization. */ NVENC_EXTERNAL_ME_HINT *meExternalHints; /**< [in]: Specifies the pointer to ME external hints for the current frame. The size of ME hint buffer should be equal to number of macroblocks * the total number of candidates per macroblock. - The total number of candidates per MB per direction = 1*meHintCountsPerBlock[Lx].numCandsPerBlk16x16 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk16x8 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk8x8 + The total number of candidates per MB per direction = 1*meHintCountsPerBlock[Lx].numCandsPerBlk16x16 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk16x8 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk8x8 + 4*meHintCountsPerBlock[Lx].numCandsPerBlk8x8. For frames using bidirectional ME , the total number of candidates for single macroblock is sum of total number of candidates per MB for each direction (L0 and L1) */ uint32_t reserved1[243]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[59]; /**< [in]: Reserved and must be set to NULL */ @@ -1741,20 +2352,23 @@ typedef struct _NV_ENC_MEONLY_PARAMS * Bitstream buffer lock parameters. */ typedef struct _NV_ENC_LOCK_BITSTREAM -{ +{ uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_LOCK_BITSTREAM_VER. */ uint32_t doNotWait :1; /**< [in]: If this flag is set, the NvEncodeAPI interface will return buffer pointer even if operation is not completed. If not set, the call will block until operation completes. */ uint32_t ltrFrame :1; /**< [out]: Flag indicating this frame is marked as LTR frame */ - uint32_t reservedBitFields :30; /**< [in]: Reserved bit fields and must be set to 0 */ + uint32_t getRCStats :1; /**< [in]: If this flag is set then lockBitstream call will add additional intra-inter MB count and average MVX, MVY */ + uint32_t reservedBitFields :29; /**< [in]: Reserved bit fields and must be set to 0 */ void* outputBitstream; /**< [in]: Pointer to the bitstream buffer being locked. */ - uint32_t* sliceOffsets; /**< [in,out]: Array which receives the slice offsets. This is not supported if NV_ENC_CONFIG_H264::sliceMode is 1 on Kepler GPUs. Array size must be equal to size of frame in MBs. */ - uint32_t frameIdx; /**< [out]: Frame no. for which the bitstream is being retrieved. */ + uint32_t* sliceOffsets; /**< [in, out]: Array which receives the slice (H264/HEVC) or tile (AV1) offsets. This is not supported if NV_ENC_CONFIG_H264::sliceMode is 1 on Kepler GPUs. Array size must be equal to size of frame in MBs. */ + uint32_t frameIdx; /**< [out]: Frame no. for which the bitstream is being retrieved. */ uint32_t hwEncodeStatus; /**< [out]: The NvEncodeAPI interface status for the locked picture. */ - uint32_t numSlices; /**< [out]: Number of slices in the encoded picture. Will be reported only if NV_ENC_INITIALIZE_PARAMS::reportSliceOffsets set to 1. */ - uint32_t bitstreamSizeInBytes; /**< [out]: Actual number of bytes generated and copied to the memory pointed by bitstreamBufferPtr. */ + uint32_t numSlices; /**< [out]: Number of slices (H264/HEVC) or tiles (AV1) in the encoded picture. Will be reported only if NV_ENC_INITIALIZE_PARAMS::reportSliceOffsets set to 1. */ + uint32_t bitstreamSizeInBytes; /**< [out]: Actual number of bytes generated and copied to the memory pointed by bitstreamBufferPtr. + When HEVC alpha layer encoding is enabled, this field reports the total encoded size in bytes i.e it is the encoded size of the base plus the alpha layer. + For AV1 when enablePTD is set, this field reports the total encoded size in bytes of all the encoded frames packed into the current output surface i.e. show frame plus all preceding no-show frames */ uint64_t outputTimeStamp; /**< [out]: Presentation timestamp associated with the encoded output. */ uint64_t outputDuration; /**< [out]: Presentation duration associates with the encoded output. */ - void* bitstreamBufferPtr; /**< [out]: Pointer to the generated output bitstream. + void* bitstreamBufferPtr; /**< [out]: Pointer to the generated output bitstream. For MEOnly mode _NV_ENC_LOCK_BITSTREAM::bitstreamBufferPtr should be typecast to NV_ENC_H264_MV_DATA/NV_ENC_HEVC_MV_DATA pointer respectively for H264/HEVC */ NV_ENC_PIC_TYPE pictureType; /**< [out]: Picture type of the encoded picture. */ @@ -1763,12 +2377,20 @@ typedef struct _NV_ENC_LOCK_BITSTREAM uint32_t frameSatd; /**< [out]: Total SATD cost for whole frame. */ uint32_t ltrFrameIdx; /**< [out]: Frame index associated with this LTR frame. */ uint32_t ltrFrameBitmap; /**< [out]: Bitmap of LTR frames indices which were used for encoding this frame. Value of 0 if no LTR frames were used. */ - uint32_t reserved [236]; /**< [in]: Reserved and must be set to 0 */ + uint32_t temporalId; /**< [out]: TemporalId value of the frame when using temporalSVC encoding */ + uint32_t reserved[12]; /**< [in]: Reserved and must be set to 0 */ + uint32_t intraMBCount; /**< [out]: For H264, Number of Intra MBs in the encoded frame. For HEVC, Number of Intra CTBs in the encoded frame. For AV1, Number of Intra SBs in the encoded show frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */ + uint32_t interMBCount; /**< [out]: For H264, Number of Inter MBs in the encoded frame, includes skip MBs. For HEVC, Number of Inter CTBs in the encoded frame. For AV1, Number of Inter SBs in the encoded show frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */ + int32_t averageMVX; /**< [out]: Average Motion Vector in X direction for the encoded frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */ + int32_t averageMVY; /**< [out]: Average Motion Vector in y direction for the encoded frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */ + uint32_t alphaLayerSizeInBytes; /**< [out]: Number of bytes generated for the alpha layer in the encoded output. Applicable only when HEVC with alpha encoding is enabled. */ + + uint32_t reserved1[218]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_LOCK_BITSTREAM; /** Macro for constructing the version field of ::_NV_ENC_LOCK_BITSTREAM */ -#define NV_ENC_LOCK_BITSTREAM_VER NVENCAPI_STRUCT_VERSION(1) +#define NV_ENC_LOCK_BITSTREAM_VER NVENCAPI_STRUCT_VERSION(2) /** @@ -1821,6 +2443,60 @@ typedef struct _NV_ENC_INPUT_RESOURCE_OPENGL_TEX uint32_t target; /**< [in]: Accepted values are GL_TEXTURE_RECTANGLE and GL_TEXTURE_2D. */ } NV_ENC_INPUT_RESOURCE_OPENGL_TEX; +/** \struct NV_ENC_FENCE_POINT_D3D12 +* Fence and fence value for synchronization. +*/ +typedef struct _NV_ENC_FENCE_POINT_D3D12 +{ + uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_FENCE_POINT_D3D12_VER. */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0. */ + void* pFence; /**< [in]: Pointer to ID3D12Fence. This fence object is used for synchronization. */ + uint64_t waitValue; /**< [in]: Fence value to reach or exceed before the GPU operation. */ + uint64_t signalValue; /**< [in]: Fence value to set the fence to, after the GPU operation. */ + uint32_t bWait:1; /**< [in]: Wait on 'waitValue' if bWait is set to 1, before starting GPU operation. */ + uint32_t bSignal:1; /**< [in]: Signal on 'signalValue' if bSignal is set to 1, after GPU operation is complete. */ + uint32_t reservedBitField:30; /**< [in]: Reserved and must be set to 0. */ + uint32_t reserved1[7]; /**< [in]: Reserved and must be set to 0. */ +} NV_ENC_FENCE_POINT_D3D12; + +#define NV_ENC_FENCE_POINT_D3D12_VER NVENCAPI_STRUCT_VERSION(1) + +/** + * \struct _NV_ENC_INPUT_RESOURCE_D3D12 + * NV_ENC_PIC_PARAMS::inputBuffer and NV_ENC_PIC_PARAMS::alphaBuffer must be a pointer to a struct of this type, + * when D3D12 interface is used + */ +typedef struct _NV_ENC_INPUT_RESOURCE_D3D12 +{ + uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_INPUT_RESOURCE_D3D12_VER. */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0. */ + NV_ENC_INPUT_PTR pInputBuffer; /**< [in]: Specifies the input surface pointer. Client must use a pointer obtained from NvEncMapInputResource() in NV_ENC_MAP_INPUT_RESOURCE::mappedResource + when mapping the input surface. */ + NV_ENC_FENCE_POINT_D3D12 inputFencePoint; /**< [in]: Specifies the fence and corresponding fence values to do GPU wait and signal. */ + uint32_t reserved1[16]; /**< [in]: Reserved and must be set to 0. */ + void* reserved2[16]; /**< [in]: Reserved and must be set to NULL. */ +} NV_ENC_INPUT_RESOURCE_D3D12; + +#define NV_ENC_INPUT_RESOURCE_D3D12_VER NVENCAPI_STRUCT_VERSION(1) + +/** + * \struct _NV_ENC_OUTPUT_RESOURCE_D3D12 + * NV_ENC_PIC_PARAMS::outputBitstream and NV_ENC_LOCK_BITSTREAM::outputBitstream must be a pointer to a struct of this type, + * when D3D12 interface is used + */ +typedef struct _NV_ENC_OUTPUT_RESOURCE_D3D12 +{ + uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_OUTPUT_RESOURCE_D3D12_VER. */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0. */ + NV_ENC_INPUT_PTR pOutputBuffer; /**< [in]: Specifies the output buffer pointer. Client must use a pointer obtained from NvEncMapInputResource() in NV_ENC_MAP_INPUT_RESOURCE::mappedResource + when mapping output bitstream buffer */ + NV_ENC_FENCE_POINT_D3D12 outputFencePoint; /**< [in]: Specifies the fence and corresponding fence values to do GPU wait and signal.*/ + uint32_t reserved1[16]; /**< [in]: Reserved and must be set to 0. */ + void* reserved2[16]; /**< [in]: Reserved and must be set to NULL. */ +} NV_ENC_OUTPUT_RESOURCE_D3D12; + +#define NV_ENC_OUTPUT_RESOURCE_D3D12_VER NVENCAPI_STRUCT_VERSION(1) + /** * \struct _NV_ENC_REGISTER_RESOURCE * Register a resource for future use with the Nvidia Video Encoder Interface. @@ -1833,19 +2509,38 @@ typedef struct _NV_ENC_REGISTER_RESOURCE ::NV_ENC_INPUT_RESOURCE_TYPE_DIRECTX, ::NV_ENC_INPUT_RESOURCE_TYPE_CUDADEVICEPTR, ::NV_ENC_INPUT_RESOURCE_TYPE_OPENGL_TEX */ - uint32_t width; /**< [in]: Input buffer Width. */ - uint32_t height; /**< [in]: Input buffer Height. */ - uint32_t pitch; /**< [in]: Input buffer Pitch. */ + uint32_t width; /**< [in]: Input frame width. */ + uint32_t height; /**< [in]: Input frame height. */ + uint32_t pitch; /**< [in]: Input buffer pitch. + For ::NV_ENC_INPUT_RESOURCE_TYPE_DIRECTX resources, set this to 0. + For ::NV_ENC_INPUT_RESOURCE_TYPE_CUDADEVICEPTR resources, set this to + the pitch as obtained from cuMemAllocPitch(), or to the width in + bytes (if this resource was created by using cuMemAlloc()). This + value must be a multiple of 4. + For ::NV_ENC_INPUT_RESOURCE_TYPE_CUDAARRAY resources, set this to the + width of the allocation in bytes (i.e. + CUDA_ARRAY3D_DESCRIPTOR::Width * CUDA_ARRAY3D_DESCRIPTOR::NumChannels). + For ::NV_ENC_INPUT_RESOURCE_TYPE_OPENGL_TEX resources, set this to the + texture width multiplied by the number of components in the texture + format. */ uint32_t subResourceIndex; /**< [in]: Subresource Index of the DirectX resource to be registered. Should be set to 0 for other interfaces. */ void* resourceToRegister; /**< [in]: Handle to the resource that is being registered. */ NV_ENC_REGISTERED_PTR registeredResource; /**< [out]: Registered resource handle. This should be used in future interactions with the Nvidia Video Encoder Interface. */ NV_ENC_BUFFER_FORMAT bufferFormat; /**< [in]: Buffer format of resource to be registered. */ - uint32_t reserved1[248]; /**< [in]: Reserved and must be set to 0. */ - void* reserved2[62]; /**< [in]: Reserved and must be set to NULL. */ + NV_ENC_BUFFER_USAGE bufferUsage; /**< [in]: Usage of resource to be registered. */ + NV_ENC_FENCE_POINT_D3D12* pInputFencePoint; /**< [in]: Specifies the input fence and corresponding fence values to do GPU wait and signal. + To be used only when NV_ENC_REGISTER_RESOURCE::resourceToRegister represents D3D12 surface and + NV_ENC_BUFFER_USAGE::bufferUsage is NV_ENC_INPUT_IMAGE. + The fence NV_ENC_FENCE_POINT_D3D12::pFence and NV_ENC_FENCE_POINT_D3D12::waitValue will be used to do GPU wait + before starting GPU operation, if NV_ENC_FENCE_POINT_D3D12::bWait is set. + The fence NV_ENC_FENCE_POINT_D3D12::pFence and NV_ENC_FENCE_POINT_D3D12::signalValue will be used to do GPU signal + when GPU operation finishes, if NV_ENC_FENCE_POINT_D3D12::bSignal is set. */ + uint32_t reserved1[247]; /**< [in]: Reserved and must be set to 0. */ + void* reserved2[61]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_REGISTER_RESOURCE; /** Macro for constructing the version field of ::_NV_ENC_REGISTER_RESOURCE */ -#define NV_ENC_REGISTER_RESOURCE_VER NVENCAPI_STRUCT_VERSION(3) +#define NV_ENC_REGISTER_RESOURCE_VER NVENCAPI_STRUCT_VERSION(4) /** * \struct _NV_ENC_STAT @@ -1861,7 +2556,15 @@ typedef struct _NV_ENC_STAT uint32_t lastValidByteOffset; /**< [out]: Offset of last valid bytes of completed bitstream */ uint32_t sliceOffsets[16]; /**< [out]: Offsets of each slice */ uint32_t picIdx; /**< [out]: Picture number */ - uint32_t reserved1[233]; /**< [in]: Reserved and must be set to 0 */ + uint32_t frameAvgQP; /**< [out]: Average QP of the frame. */ + uint32_t ltrFrame :1; /**< [out]: Flag indicating this frame is marked as LTR frame */ + uint32_t reservedBitFields :31; /**< [in]: Reserved bit fields and must be set to 0 */ + uint32_t ltrFrameIdx; /**< [out]: Frame index associated with this LTR frame. */ + uint32_t intraMBCount; /**< [out]: For H264, Number of Intra MBs in the encoded frame. For HEVC, Number of Intra CTBs in the encoded frame. */ + uint32_t interMBCount; /**< [out]: For H264, Number of Inter MBs in the encoded frame, includes skip MBs. For HEVC, Number of Inter CTBs in the encoded frame. */ + int32_t averageMVX; /**< [out]: Average Motion Vector in X direction for the encoded frame. */ + int32_t averageMVY; /**< [out]: Average Motion Vector in y direction for the encoded frame. */ + uint32_t reserved1[226]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_STAT; @@ -1876,11 +2579,12 @@ typedef struct _NV_ENC_STAT typedef struct _NV_ENC_SEQUENCE_PARAM_PAYLOAD { uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_INITIALIZE_PARAMS_VER. */ - uint32_t inBufferSize; /**< [in]: Specifies the size of the spsppsBuffer provied by the client */ + uint32_t inBufferSize; /**< [in]: Specifies the size of the spsppsBuffer provided by the client */ uint32_t spsId; /**< [in]: Specifies the SPS id to be used in sequence header. Default value is 0. */ uint32_t ppsId; /**< [in]: Specifies the PPS id to be used in picture header. Default value is 0. */ - void* spsppsBuffer; /**< [in]: Specifies bitstream header pointer of size NV_ENC_SEQUENCE_PARAM_PAYLOAD::inBufferSize. It is the client's responsibility to manage this memory. */ - uint32_t* outSPSPPSPayloadSize; /**< [out]: Size of the sequence and picture header in bytes written by the NvEncodeAPI interface to the SPSPPSBuffer. */ + void* spsppsBuffer; /**< [in]: Specifies bitstream header pointer of size NV_ENC_SEQUENCE_PARAM_PAYLOAD::inBufferSize. + It is the client's responsibility to manage this memory. */ + uint32_t* outSPSPPSPayloadSize; /**< [out]: Size of the sequence and picture header in bytes. */ uint32_t reserved [250]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_SEQUENCE_PARAM_PAYLOAD; @@ -1931,7 +2635,7 @@ typedef struct _NV_ENC_OPEN_ENCODE_SESSIONEX_PARAMS // NvEncOpenEncodeSession /** * \brief Opens an encoding session. - * + * * Deprecated. * * \return @@ -1944,12 +2648,12 @@ NVENCSTATUS NVENCAPI NvEncOpenEncodeSession (void* device, u /** * \brief Retrieves the number of supported encode GUIDs. * - * The function returns the number of codec guids supported by the NvEncodeAPI + * The function returns the number of codec GUIDs supported by the NvEncodeAPI * interface. - * - * \param [in] encoder + * + * \param [in] encoder * Pointer to the NvEncodeAPI interface. - * \param [out] encodeGUIDCount + * \param [out] encodeGUIDCount * Number of supported encode GUIDs. * * \return @@ -1970,12 +2674,12 @@ NVENCSTATUS NVENCAPI NvEncGetEncodeGUIDCount (void* encoder, /** * \brief Retrieves an array of supported encoder codec GUIDs. * - * The function returns an array of codec guids supported by the NvEncodeAPI interface. + * The function returns an array of codec GUIDs supported by the NvEncodeAPI interface. * The client must allocate an array where the NvEncodeAPI interface can - * fill the supported guids and pass the pointer in \p *GUIDs parameter. + * fill the supported GUIDs and pass the pointer in \p *GUIDs parameter. * The size of the array can be determined by using ::NvEncGetEncodeGUIDCount() API. - * The Nvidia Encoding interface returns the number of codec guids it has actually - * filled in the guid array in the \p GUIDCount parameter. + * The Nvidia Encoding interface returns the number of codec GUIDs it has actually + * filled in the GUID array in the \p GUIDCount parameter. * * \param [in] encoder * Pointer to the NvEncodeAPI interface. @@ -2005,16 +2709,16 @@ NVENCSTATUS NVENCAPI NvEncGetEncodeGUIDs (void* encoder, /** * \brief Retrieves the number of supported profile GUIDs. * - * The function returns the number of profile GUIDs supported for a given codec. - * The client must first enumerate the codec guids supported by the NvEncodeAPI - * interface. After determining the codec guid, it can query the NvEncodeAPI - * interface to determine the number of profile guids supported for a particular - * codec guid. + * The function returns the number of profile GUIDs supported for a given codec. + * The client must first enumerate the codec GUIDs supported by the NvEncodeAPI + * interface. After determining the codec GUID, it can query the NvEncodeAPI + * interface to determine the number of profile GUIDs supported for a particular + * codec GUID. * - * \param [in] encoder + * \param [in] encoder * Pointer to the NvEncodeAPI interface. - * \param [in] encodeGUID - * The codec guid for which the profile guids are being enumerated. + * \param [in] encodeGUID + * The codec GUID for which the profile GUIDs are being enumerated. * \param [out] encodeProfileGUIDCount * Number of encode profiles supported for the given encodeGUID. * @@ -2036,9 +2740,9 @@ NVENCSTATUS NVENCAPI NvEncGetEncodeProfileGUIDCount (void* en /** * \brief Retrieves an array of supported encode profile GUIDs. * - * The function returns an array of supported profile guids for a particular - * codec guid. The client must allocate an array where the NvEncodeAPI interface - * can populate the profile guids. The client can determine the array size using + * The function returns an array of supported profile GUIDs for a particular + * codec GUID. The client must allocate an array where the NvEncodeAPI interface + * can populate the profile GUIDs. The client can determine the array size using * ::NvEncGetEncodeProfileGUIDCount() API. The client must also validiate that the * NvEncodeAPI interface supports the GUID the client wants to pass as \p encodeGUID * parameter. @@ -2046,9 +2750,9 @@ NVENCSTATUS NVENCAPI NvEncGetEncodeProfileGUIDCount (void* en * \param [in] encoder * Pointer to the NvEncodeAPI interface. * \param [in] encodeGUID - * The encode guid whose profile guids are being enumerated. + * The encode GUID whose profile GUIDs are being enumerated. * \param [in] guidArraySize - * Number of GUIDs to be retrieved. Should be set to the number retrieved using + * Number of GUIDs to be retrieved. Should be set to the number retrieved using * ::NvEncGetEncodeProfileGUIDCount. * \param [out] profileGUIDs * Array of supported Encode Profile GUIDs @@ -2079,7 +2783,7 @@ NVENCSTATUS NVENCAPI NvEncGetEncodeProfileGUIDs (v * \param [in] encoder * Pointer to the NvEncodeAPI interface. * \param [in] encodeGUID - * Encode GUID, corresponding to which the number of supported input formats + * Encode GUID, corresponding to which the number of supported input formats * is to be retrieved. * \param [out] inputFmtCount * Number of input formats supported for specified Encode GUID. @@ -2101,13 +2805,13 @@ NVENCSTATUS NVENCAPI NvEncGetInputFormatCount (void* encoder, /** * \brief Retrieves an array of supported Input formats * - * Returns an array of supported input formats The client must use the input + * Returns an array of supported input formats The client must use the input * format to create input surface using ::NvEncCreateInputBuffer() API. - * - * \param [in] encoder + * + * \param [in] encoder * Pointer to the NvEncodeAPI interface. * \param [in] encodeGUID - * Encode GUID, corresponding to which the number of supported input formats + * Encode GUID, corresponding to which the number of supported input formats * is to be retrieved. *\param [in] inputFmtArraySize * Size input format count array passed in \p inputFmts. @@ -2135,9 +2839,9 @@ NVENCSTATUS NVENCAPI NvEncGetInputFormats (void* encoder, /** * \brief Retrieves the capability value for a specified encoder attribute. * - * The function returns the capability value for a given encoder attribute. The - * client must validate the encodeGUID using ::NvEncGetEncodeGUIDs() API before - * calling this function. The encoder attribute being queried are enumerated in + * The function returns the capability value for a given encoder attribute. The + * client must validate the encodeGUID using ::NvEncGetEncodeGUIDs() API before + * calling this function. The encoder attribute being queried are enumerated in * ::NV_ENC_CAPS_PARAM enum. * * \param [in] encoder @@ -2145,7 +2849,7 @@ NVENCSTATUS NVENCAPI NvEncGetInputFormats (void* encoder, * \param [in] encodeGUID * Encode GUID, corresponding to which the capability attribute is to be retrieved. * \param [in] capsParam - * Used to specify attribute being queried. Refer ::NV_ENC_CAPS_PARAM for more + * Used to specify attribute being queried. Refer ::NV_ENC_CAPS_PARAM for more * details. * \param [out] capsVal * The value corresponding to the capability attribute being queried. @@ -2167,14 +2871,14 @@ NVENCSTATUS NVENCAPI NvEncGetEncodeCaps (void* encoder, GUID /** * \brief Retrieves the number of supported preset GUIDs. * - * The function returns the number of preset GUIDs available for a given codec. - * The client must validate the codec guid using ::NvEncGetEncodeGUIDs() API + * The function returns the number of preset GUIDs available for a given codec. + * The client must validate the codec GUID using ::NvEncGetEncodeGUIDs() API * before calling this function. * * \param [in] encoder * Pointer to the NvEncodeAPI interface. * \param [in] encodeGUID - * Encode GUID, corresponding to which the number of supported presets is to + * Encode GUID, corresponding to which the number of supported presets is to * be retrieved. * \param [out] encodePresetGUIDCount * Receives the number of supported preset GUIDs. @@ -2197,30 +2901,30 @@ NVENCSTATUS NVENCAPI NvEncGetEncodePresetCount (void* encoder, GUID /** * \brief Receives an array of supported encoder preset GUIDs. * - * The function returns an array of encode preset guids available for a given codec. - * The client can directly use one of the preset guids based upon the use case - * or target device. The preset guid chosen can be directly used in - * NV_ENC_INITIALIZE_PARAMS::presetGUID parameter to ::NvEncEncodePicture() API. - * Alternately client can also use the preset guid to retrieve the encoding config + * The function returns an array of encode preset GUIDs available for a given codec. + * The client can directly use one of the preset GUIDs based upon the use case + * or target device. The preset GUID chosen can be directly used in + * NV_ENC_INITIALIZE_PARAMS::presetGUID parameter to ::NvEncEncodePicture() API. + * Alternately client can also use the preset GUID to retrieve the encoding config * parameters being used by NvEncodeAPI interface for that given preset, using * ::NvEncGetEncodePresetConfig() API. It can then modify preset config parameters - * as per its use case and send it to NvEncodeAPI interface as part of + * as per its use case and send it to NvEncodeAPI interface as part of * NV_ENC_INITIALIZE_PARAMS::encodeConfig parameter for NvEncInitializeEncoder() * API. * * - * \param [in] encoder + * \param [in] encoder * Pointer to the NvEncodeAPI interface. * \param [in] encodeGUID * Encode GUID, corresponding to which the list of supported presets is to be * retrieved. * \param [in] guidArraySize - * Size of array of preset guids passed in \p preset GUIDs + * Size of array of preset GUIDs passed in \p preset GUIDs * \param [out] presetGUIDs - * Array of supported Encode preset GUIDs from the NvEncodeAPI interface + * Array of supported Encode preset GUIDs from the NvEncodeAPI interface * to client. * \param [out] encodePresetGUIDCount - * Receives the number of preset GUIDs returned by the NvEncodeAPI + * Receives the number of preset GUIDs returned by the NvEncodeAPI * interface. * * \return @@ -2241,21 +2945,22 @@ NVENCSTATUS NVENCAPI NvEncGetEncodePresetGUIDs (void* encoder, /** * \brief Returns a preset config structure supported for given preset GUID. * - * The function returns a preset config structure for a given preset guid. Before - * using this function the client must enumerate the preset guids available for + * The function returns a preset config structure for a given preset GUID. + * NvEncGetEncodePresetConfig() API is not applicable to AV1. + * Before using this function the client must enumerate the preset GUIDs available for * a given codec. The preset config structure can be modified by the client depending - * upon its use case and can be then used to initialize the encoder using - * ::NvEncInitializeEncoder() API. The client can use this function only if it - * wants to modify the NvEncodeAPI preset configuration, otherwise it can - * directly use the preset guid. - * + * upon its use case and can be then used to initialize the encoder using + * ::NvEncInitializeEncoder() API. The client can use this function only if it + * wants to modify the NvEncodeAPI preset configuration, otherwise it can + * directly use the preset GUID. + * * \param [in] encoder - * Pointer to the NvEncodeAPI interface. + * Pointer to the NvEncodeAPI interface. * \param [in] encodeGUID * Encode GUID, corresponding to which the list of supported presets is to be * retrieved. * \param [in] presetGUID - * Preset GUID, corresponding to which the Encoding configurations is to be + * Preset GUID, corresponding to which the Encoding configurations is to be * retrieved. * \param [out] presetConfig * The requested Preset Encoder Attribute set. Refer ::_NV_ENC_CONFIG for @@ -2275,6 +2980,48 @@ NVENCSTATUS NVENCAPI NvEncGetEncodePresetGUIDs (void* encoder, */ NVENCSTATUS NVENCAPI NvEncGetEncodePresetConfig (void* encoder, GUID encodeGUID, GUID presetGUID, NV_ENC_PRESET_CONFIG* presetConfig); +// NvEncGetEncodePresetConfigEx +/** + * \brief Returns a preset config structure supported for given preset GUID. + * + * The function returns a preset config structure for a given preset GUID and tuning info. + * NvEncGetEncodePresetConfigEx() API is not applicable to H264 and HEVC meonly mode. + * Before using this function the client must enumerate the preset GUIDs available for + * a given codec. The preset config structure can be modified by the client depending + * upon its use case and can be then used to initialize the encoder using + * ::NvEncInitializeEncoder() API. The client can use this function only if it + * wants to modify the NvEncodeAPI preset configuration, otherwise it can + * directly use the preset GUID. + * + * \param [in] encoder + * Pointer to the NvEncodeAPI interface. + * \param [in] encodeGUID + * Encode GUID, corresponding to which the list of supported presets is to be + * retrieved. + * \param [in] presetGUID + * Preset GUID, corresponding to which the Encoding configurations is to be + * retrieved. + * \param [in] tuningInfo + * tuning info, corresponding to which the Encoding configurations is to be + * retrieved. + * \param [out] presetConfig + * The requested Preset Encoder Attribute set. Refer ::_NV_ENC_CONFIG for + * more details. + * + * \return + * ::NV_ENC_SUCCESS \n + * ::NV_ENC_ERR_INVALID_PTR \n + * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n + * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n + * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n + * ::NV_ENC_ERR_OUT_OF_MEMORY \n + * ::NV_ENC_ERR_INVALID_PARAM \n + * ::NV_ENC_ERR_INVALID_VERSION \n + * ::NV_ENC_ERR_GENERIC \n + * + */ +NVENCSTATUS NVENCAPI NvEncGetEncodePresetConfigEx (void* encoder, GUID encodeGUID, GUID presetGUID, NV_ENC_TUNING_INFO tuningInfo, NV_ENC_PRESET_CONFIG* presetConfig); + // NvEncInitializeEncoder /** * \brief Initialize the encoder. @@ -2285,16 +3032,16 @@ NVENCSTATUS NVENCAPI NvEncGetEncodePresetConfig (void* encoder, GU * - NV_ENC_INITIALIZE_PARAMS::encodeGUID * - NV_ENC_INITIALIZE_PARAMS::encodeWidth * - NV_ENC_INITIALIZE_PARAMS::encodeHeight - * - * The client can pass a preset guid directly to the NvEncodeAPI interface using - * NV_ENC_INITIALIZE_PARAMS::presetGUID field. If the client doesn't pass + * + * The client can pass a preset GUID directly to the NvEncodeAPI interface using + * NV_ENC_INITIALIZE_PARAMS::presetGUID field. If the client doesn't pass * NV_ENC_INITIALIZE_PARAMS::encodeConfig structure, the codec specific parameters - * will be selected based on the preset guid. The preset guid must have been + * will be selected based on the preset GUID. The preset GUID must have been * validated by the client using ::NvEncGetEncodePresetGUIDs() API. * If the client passes a custom ::_NV_ENC_CONFIG structure through * NV_ENC_INITIALIZE_PARAMS::encodeConfig , it will override the codec specific parameters - * based on the preset guid. It is recommended that even if the client passes a custom config, - * it should also send a preset guid. In this case, the preset guid passed by the client + * based on the preset GUID. It is recommended that even if the client passes a custom config, + * it should also send a preset GUID. In this case, the preset GUID passed by the client * will not override any of the custom config parameters programmed by the client, * it is only used as a hint by the NvEncodeAPI interface to determine certain encoder parameters * which are not exposed to the client. @@ -2310,9 +3057,9 @@ NVENCSTATUS NVENCAPI NvEncGetEncodePresetConfig (void* encoder, GU * The client operating in asynchronous mode must allocate completion event object * for each output buffer and pass the completion event object in the * ::NvEncEncodePicture() API. The client can create another thread and wait on - * the event object to be signalled by NvEncodeAPI interface on completion of the + * the event object to be signaled by NvEncodeAPI interface on completion of the * encoding process for the output frame. This should unblock the main thread from - * submitting work to the encoder. When the event is signalled the client can call + * submitting work to the encoder. When the event is signaled the client can call * NvEncodeAPI interfaces to copy the bitstream data using ::NvEncLockBitstream() * API. This is the preferred mode of operation. * @@ -2323,7 +3070,7 @@ NVENCSTATUS NVENCAPI NvEncGetEncodePresetConfig (void* encoder, GU * The client working in synchronous mode can work in a single threaded or multi * threaded mode. The client need not allocate any event objects. The client can * only lock the bitstream data after NvEncodeAPI interface has returned - * ::NV_ENC_SUCCESS from encode picture. The NvEncodeAPI interface can return + * ::NV_ENC_SUCCESS from encode picture. The NvEncodeAPI interface can return * ::NV_ENC_ERR_NEED_MORE_INPUT error code from ::NvEncEncodePicture() API. The * client must not lock the output buffer in such case but should send the next * frame for encoding. The client must keep on calling ::NvEncEncodePicture() API @@ -2334,16 +3081,16 @@ NVENCSTATUS NVENCAPI NvEncGetEncodePresetConfig (void* encoder, GU *\par Picture type decision: * If the client is taking the picture type decision and it must disable the picture * type decision module in NvEncodeAPI by setting NV_ENC_INITIALIZE_PARAMS::enablePTD - * to 0. In this case the client is required to send the picture in encoding + * to 0. In this case the client is required to send the picture in encoding * order to NvEncodeAPI by doing the re-ordering for B frames. \n - * If the client doesn't want to take the picture type decision it can enable - * picture type decision module in the NvEncodeAPI interface by setting - * NV_ENC_INITIALIZE_PARAMS::enablePTD to 1 and send the input pictures in display + * If the client doesn't want to take the picture type decision it can enable + * picture type decision module in the NvEncodeAPI interface by setting + * NV_ENC_INITIALIZE_PARAMS::enablePTD to 1 and send the input pictures in display * order. - * + * * \param [in] encoder * Pointer to the NvEncodeAPI interface. - * \param [in] createEncodeParams + * \param [in] createEncodeParams * Refer ::_NV_ENC_INITIALIZE_PARAMS for details. * * \return @@ -2366,10 +3113,10 @@ NVENCSTATUS NVENCAPI NvEncInitializeEncoder (void* encoder, * \brief Allocates Input buffer. * * This function is used to allocate an input buffer. The client must enumerate - * the input buffer format before allocating the input buffer resources. The - * NV_ENC_INPUT_PTR returned by the NvEncodeAPI interface in the + * the input buffer format before allocating the input buffer resources. The + * NV_ENC_INPUT_PTR returned by the NvEncodeAPI interface in the * NV_ENC_CREATE_INPUT_BUFFER::inputBuffer field can be directly used in - * ::NvEncEncodePicture() API. The number of input buffers to be allocated by the + * ::NvEncEncodePicture() API. The number of input buffers to be allocated by the * client must be at least 4 more than the number of B frames being used for encoding. * * \param [in] encoder @@ -2387,7 +3134,7 @@ NVENCSTATUS NVENCAPI NvEncInitializeEncoder (void* encoder, * ::NV_ENC_ERR_INVALID_PARAM \n * ::NV_ENC_ERR_INVALID_VERSION \n * ::NV_ENC_ERR_GENERIC \n - * + * */ NVENCSTATUS NVENCAPI NvEncCreateInputBuffer (void* encoder, NV_ENC_CREATE_INPUT_BUFFER* createInputBufferParams); @@ -2403,7 +3150,7 @@ NVENCSTATUS NVENCAPI NvEncCreateInputBuffer (void* encoder, * * \param [in] encoder * Pointer to the NvEncodeAPI interface. - * \param [in] inputBuffer + * \param [in] inputBuffer * Pointer to the input buffer to be released. * * \return @@ -2420,19 +3167,54 @@ NVENCSTATUS NVENCAPI NvEncCreateInputBuffer (void* encoder, */ NVENCSTATUS NVENCAPI NvEncDestroyInputBuffer (void* encoder, NV_ENC_INPUT_PTR inputBuffer); +// NvEncSetIOCudaStreams +/** + * \brief Set input and output CUDA stream for specified encoder attribute. + * + * Encoding may involve CUDA pre-processing on the input and post-processing on encoded output. + * This function is used to set input and output CUDA streams to pipeline the CUDA pre-processing + * and post-processing tasks. Clients should call this function before the call to + * NvEncUnlockInputBuffer(). If this function is not called, the default CUDA stream is used for + * input and output processing. After a successful call to this function, the streams specified + * in that call will replace the previously-used streams. + * This API is supported for NVCUVID interface only. + * + * \param [in] encoder + * Pointer to the NvEncodeAPI interface. + * \param [in] inputStream + * Pointer to CUstream which is used to process ::NV_ENC_PIC_PARAMS::inputFrame for encode. + * In case of ME-only mode, inputStream is used to process ::NV_ENC_MEONLY_PARAMS::inputBuffer and + * ::NV_ENC_MEONLY_PARAMS::referenceFrame + * \param [in] outputStream + * Pointer to CUstream which is used to process ::NV_ENC_PIC_PARAMS::outputBuffer for encode. + * In case of ME-only mode, outputStream is used to process ::NV_ENC_MEONLY_PARAMS::mvBuffer + * + * \return + * ::NV_ENC_SUCCESS \n + * ::NV_ENC_ERR_INVALID_PTR \n + * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n + * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n + * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n + * ::NV_ENC_ERR_OUT_OF_MEMORY \n + * ::NV_ENC_ERR_INVALID_PARAM \n + * ::NV_ENC_ERR_INVALID_VERSION \n + * ::NV_ENC_ERR_GENERIC \n + */ +NVENCSTATUS NVENCAPI NvEncSetIOCudaStreams (void* encoder, NV_ENC_CUSTREAM_PTR inputStream, NV_ENC_CUSTREAM_PTR outputStream); + // NvEncCreateBitstreamBuffer /** - * \brief Allocates an output bitstream buffer + * \brief Allocates an output bitstream buffer * - * This function is used to allocate an output bitstream buffer and returns a - * NV_ENC_OUTPUT_PTR to bitstream buffer to the client in the + * This function is used to allocate an output bitstream buffer and returns a + * NV_ENC_OUTPUT_PTR to bitstream buffer to the client in the * NV_ENC_CREATE_BITSTREAM_BUFFER::bitstreamBuffer field. - * The client can only call this function after the encoder session has been - * initialized using ::NvEncInitializeEncoder() API. The minimum number of output + * The client can only call this function after the encoder session has been + * initialized using ::NvEncInitializeEncoder() API. The minimum number of output * buffers allocated by the client must be at least 4 more than the number of B - * B frames being used for encoding. The client can only access the output - * bitsteam data by locking the \p bitstreamBuffer using the ::NvEncLockBitstream() + * B frames being used for encoding. The client can only access the output + * bitstream data by locking the \p bitstreamBuffer using the ::NvEncLockBitstream() * function. * * \param [in] encoder @@ -2458,7 +3240,7 @@ NVENCSTATUS NVENCAPI NvEncCreateBitstreamBuffer (void* encoder, // NvEncDestroyBitstreamBuffer /** - * \brief Release a bitstream buffer. + * \brief Release a bitstream buffer. * * This function is used to release the output bitstream buffer allocated using * the ::NvEncCreateBitstreamBuffer() function. The client must release the output @@ -2488,7 +3270,7 @@ NVENCSTATUS NVENCAPI NvEncDestroyBitstreamBuffer (void* encoder, /** * \brief Submit an input picture for encoding. * - * This function is used to submit an input picture buffer for encoding. The + * This function is used to submit an input picture buffer for encoding. The * encoding parameters are passed using \p *encodePicParams which is a pointer * to the ::_NV_ENC_PIC_PARAMS structure. * @@ -2499,57 +3281,73 @@ NVENCSTATUS NVENCAPI NvEncDestroyBitstreamBuffer (void* encoder, * - NV_ENC_PIC_PARAMS_H264::frameNumSyntax(H264 only) * - NV_ENC_PIC_PARAMS_H264::refPicFlag(H264 only) * + *\par MVC Encoding: + * For MVC encoding the client must call encode picture API for each view separately + * and must pass valid view id in NV_ENC_PIC_PARAMS_MVC::viewID field. Currently + * NvEncodeAPI only support stereo MVC so client must send viewID as 0 for base + * view and view ID as 1 for dependent view. * *\par Asynchronous Encoding - * If the client has enabled asynchronous mode of encoding by setting + * If the client has enabled asynchronous mode of encoding by setting * NV_ENC_INITIALIZE_PARAMS::enableEncodeAsync to 1 in the ::NvEncInitializeEncoder() * API ,then the client must send a valid NV_ENC_PIC_PARAMS::completionEvent. * Incase of asynchronous mode of operation, client can queue the ::NvEncEncodePicture() - * API commands from the main thread and then queue output buffers to be processed - * to a secondary worker thread. Before the locking the output buffers in the + * API commands from the main thread and then queue output buffers to be processed + * to a secondary worker thread. Before the locking the output buffers in the * secondary thread , the client must wait on NV_ENC_PIC_PARAMS::completionEvent * it has queued in ::NvEncEncodePicture() API call. The client must always process * completion event and the output buffer in the same order in which they have been - * submitted for encoding. The NvEncodeAPI interface is responsible for any + * submitted for encoding. The NvEncodeAPI interface is responsible for any * re-ordering required for B frames and will always ensure that encoded bitstream * data is written in the same order in which output buffer is submitted. + * The NvEncodeAPI interface may return ::NV_ENC_ERR_NEED_MORE_INPUT error code for + * some ::NvEncEncodePicture() API calls but the client must not treat it as a fatal error. + * The NvEncodeAPI interface might not be able to submit an input picture buffer for encoding + * immediately due to re-ordering for B frames. *\code The below example shows how asynchronous encoding in case of 1 B frames ------------------------------------------------------------------------ - Suppose the client allocated 4 input buffers(I1,I2..), 4 output buffers(O1,O2..) - and 4 completion events(E1, E2, ...). The NvEncodeAPI interface will need to - keep a copy of the input buffers for re-ordering and it allocates following + Suppose the client allocated 4 input buffers(I1,I2..), 4 output buffers(O1,O2..) + and 4 completion events(E1, E2, ...). The NvEncodeAPI interface will need to + keep a copy of the input buffers for re-ordering and it allocates following internal buffers (NvI1, NvI2...). These internal buffers are managed by NvEncodeAPI - and the client is not responsible for the allocating or freeing the memory of + and the client is not responsible for the allocating or freeing the memory of the internal buffers. - a) The client main thread will queue the following encode frame calls. - Note the picture type is unknown to the client, the decision is being taken by - NvEncodeAPI interface. The client should pass ::_NV_ENC_PIC_PARAMS parameter - consisting of allocated input buffer, output buffer and output events in successive + a) The client main thread will queue the following encode frame calls. + Note the picture type is unknown to the client, the decision is being taken by + NvEncodeAPI interface. The client should pass ::_NV_ENC_PIC_PARAMS parameter + consisting of allocated input buffer, output buffer and output events in successive ::NvEncEncodePicture() API calls along with other required encode picture params. For example: 1st EncodePicture parameters - (I1, O1, E1) 2nd EncodePicture parameters - (I2, O2, E2) 3rd EncodePicture parameters - (I3, O3, E3) - b) NvEncodeAPI SW will receive the following encode Commands from the client. - The left side shows input from client in the form (Input buffer, Output Buffer, + b) NvEncodeAPI SW will receive the following encode Commands from the client. + The left side shows input from client in the form (Input buffer, Output Buffer, Output Event). The right hand side shows a possible picture type decision take by the NvEncodeAPI interface. (I1, O1, E1) ---P1 Frame (I2, O2, E2) ---B2 Frame (I3, O3, E3) ---P3 Frame - c) NvEncodeAPI interface will make a copy of the input buffers to its internal - buffersfor re-ordering. These copies are done as part of nvEncEncodePicture - function call from the client and NvEncodeAPI interface is responsible for + c) NvEncodeAPI interface will make a copy of the input buffers to its internal + buffers for re-ordering. These copies are done as part of nvEncEncodePicture + function call from the client and NvEncodeAPI interface is responsible for synchronization of copy operation with the actual encoding operation. - I1 --> NvI1 - I2 --> NvI2 + I1 --> NvI1 + I2 --> NvI2 I3 --> NvI3 - d) After returning from ::NvEncEncodePicture() call , the client must queue the output + d) The NvEncodeAPI encodes I1 as P frame and submits I1 to encoder HW and returns ::NV_ENC_SUCCESS. + The NvEncodeAPI tries to encode I2 as B frame and fails with ::NV_ENC_ERR_NEED_MORE_INPUT error code. + The error is not fatal and it notifies client that I2 is not submitted to encoder immediately. + The NvEncodeAPI encodes I3 as P frame and submits I3 for encoding which will be used as backward + reference frame for I2. The NvEncodeAPI then submits I2 for encoding and returns ::NV_ENC_SUCESS. + Both the submission are part of the same ::NvEncEncodePicture() function call. + + e) After returning from ::NvEncEncodePicture() call , the client must queue the output bitstream processing work to the secondary thread. The output bitstream processing for asynchronous mode consist of first waiting on completion event(E1, E2..) and then locking the output bitstream buffer(O1, O2..) for reading the encoded @@ -2557,80 +3355,80 @@ NVENCSTATUS NVENCAPI NvEncDestroyBitstreamBuffer (void* encoder, (I1, O1, E1) (I2, O2, E2) (I3, O3, E3) - Note they are in the same order in which client calls ::NvEncEncodePicture() API + Note they are in the same order in which client calls ::NvEncEncodePicture() API in \p step a). - e) NvEncodeAPI interface will do the re-ordering such that Encoder HW will receive + f) NvEncodeAPI interface will do the re-ordering such that Encoder HW will receive the following encode commands: (NvI1, O1, E1) ---P1 Frame (NvI3, O2, E2) ---P3 Frame (NvI2, O3, E3) ---B2 frame - f) After the encoding operations are completed, the events will be signalled + g) After the encoding operations are completed, the events will be signaled by NvEncodeAPI interface in the following order : - (O1, E1) ---P1 Frame ,output bitstream copied to O1 and event E1 signalled. - (O2, E2) ---P3 Frame ,output bitstream copied to O2 and event E2 signalled. - (O3, E3) ---B2 Frame ,output bitstream copied to O3 and event E3 signalled. + (O1, E1) ---P1 Frame ,output bitstream copied to O1 and event E1 signaled. + (O2, E2) ---P3 Frame ,output bitstream copied to O2 and event E2 signaled. + (O3, E3) ---B2 Frame ,output bitstream copied to O3 and event E3 signaled. - g) The client must lock the bitstream data using ::NvEncLockBitstream() API in + h) The client must lock the bitstream data using ::NvEncLockBitstream() API in the order O1,O2,O3 to read the encoded data, after waiting for the events - to be signalled in the same order i.e E1, E2 and E3.The output processing is + to be signaled in the same order i.e E1, E2 and E3.The output processing is done in the secondary thread in the following order: Waits on E1, copies encoded bitstream from O1 Waits on E2, copies encoded bitstream from O2 Waits on E3, copies encoded bitstream from O3 - -Note the client will receive the events signalling and output buffer in the + -Note the client will receive the events signaling and output buffer in the same order in which they have submitted for encoding. - -Note the LockBitstream will have picture type field which will notify the + -Note the LockBitstream will have picture type field which will notify the output picture type to the clients. - -Note the input, output buffer and the output completion event are free to be - reused once NvEncodeAPI interfaced has signalled the event and the client has + -Note the input, output buffer and the output completion event are free to be + reused once NvEncodeAPI interfaced has signaled the event and the client has copied the data from the output buffer. * \endcode * *\par Synchronous Encoding - * The client can enable synchronous mode of encoding by setting + * The client can enable synchronous mode of encoding by setting * NV_ENC_INITIALIZE_PARAMS::enableEncodeAsync to 0 in ::NvEncInitializeEncoder() API. * The NvEncodeAPI interface may return ::NV_ENC_ERR_NEED_MORE_INPUT error code for - * some ::NvEncEncodePicture() API calls when NV_ENC_INITIALIZE_PARAMS::enablePTD - * is set to 1, but the client must not treat it as a fatal error. The NvEncodeAPI - * interface might not be able to submit an input picture buffer for encoding - * immediately due to re-ordering for B frames. The NvEncodeAPI interface cannot - * submit the input picture which is decided to be encoded as B frame as it waits + * some ::NvEncEncodePicture() API calls when NV_ENC_INITIALIZE_PARAMS::enablePTD + * is set to 1, but the client must not treat it as a fatal error. The NvEncodeAPI + * interface might not be able to submit an input picture buffer for encoding + * immediately due to re-ordering for B frames. The NvEncodeAPI interface cannot + * submit the input picture which is decided to be encoded as B frame as it waits * for backward reference from temporally subsequent frames. This input picture * is buffered internally and waits for more input picture to arrive. The client - * must not call ::NvEncLockBitstream() API on the output buffers whose - * ::NvEncEncodePicture() API returns ::NV_ENC_ERR_NEED_MORE_INPUT. The client must - * wait for the NvEncodeAPI interface to return ::NV_ENC_SUCCESS before locking the + * must not call ::NvEncLockBitstream() API on the output buffers whose + * ::NvEncEncodePicture() API returns ::NV_ENC_ERR_NEED_MORE_INPUT. The client must + * wait for the NvEncodeAPI interface to return ::NV_ENC_SUCCESS before locking the * output bitstreams to read the encoded bitstream data. The following example * explains the scenario with synchronous encoding with 2 B frames. *\code The below example shows how synchronous encoding works in case of 1 B frames ----------------------------------------------------------------------------- - Suppose the client allocated 4 input buffers(I1,I2..), 4 output buffers(O1,O2..) - and 4 completion events(E1, E2, ...). The NvEncodeAPI interface will need to - keep a copy of the input buffers for re-ordering and it allocates following + Suppose the client allocated 4 input buffers(I1,I2..), 4 output buffers(O1,O2..) + and 4 completion events(E1, E2, ...). The NvEncodeAPI interface will need to + keep a copy of the input buffers for re-ordering and it allocates following internal buffers (NvI1, NvI2...). These internal buffers are managed by NvEncodeAPI - and the client is not responsible for the allocating or freeing the memory of + and the client is not responsible for the allocating or freeing the memory of the internal buffers. The client calls ::NvEncEncodePicture() API with input buffer I1 and output buffer O1. The NvEncodeAPI decides to encode I1 as P frame and submits it to encoder - HW and returns ::NV_ENC_SUCCESS. + HW and returns ::NV_ENC_SUCCESS. The client can now read the encoded data by locking the output O1 by calling NvEncLockBitstream API. The client calls ::NvEncEncodePicture() API with input buffer I2 and output buffer O2. The NvEncodeAPI decides to encode I2 as B frame and buffers I2 by copying it to internal buffer and returns ::NV_ENC_ERR_NEED_MORE_INPUT. - The error is not fatal and it notifies client that it cannot read the encoded + The error is not fatal and it notifies client that it cannot read the encoded data by locking the output O2 by calling ::NvEncLockBitstream() API without submitting more work to the NvEncodeAPI interface. - + The client calls ::NvEncEncodePicture() with input buffer I3 and output buffer O3. - The NvEncodeAPI decides to encode I3 as P frame and it first submits I3 for + The NvEncodeAPI decides to encode I3 as P frame and it first submits I3 for encoding which will be used as backward reference frame for I2. The NvEncodeAPI then submits I2 for encoding and returns ::NV_ENC_SUCESS. Both the submission are part of the same ::NvEncEncodePicture() function call. @@ -2670,16 +3468,16 @@ NVENCSTATUS NVENCAPI NvEncEncodePicture (void* encoder, * \brief Lock output bitstream buffer * * This function is used to lock the bitstream buffer to read the encoded data. - * The client can only access the encoded data by calling this function. - * The pointer to client accessible encoded data is returned in the + * The client can only access the encoded data by calling this function. + * The pointer to client accessible encoded data is returned in the * NV_ENC_LOCK_BITSTREAM::bitstreamBufferPtr field. The size of the encoded data * in the output buffer is returned in the NV_ENC_LOCK_BITSTREAM::bitstreamSizeInBytes - * The NvEncodeAPI interface also returns the output picture type and picture structure + * The NvEncodeAPI interface also returns the output picture type and picture structure * of the encoded frame in NV_ENC_LOCK_BITSTREAM::pictureType and * NV_ENC_LOCK_BITSTREAM::pictureStruct fields respectively. If the client has * set NV_ENC_LOCK_BITSTREAM::doNotWait to 1, the function might return - * ::NV_ENC_ERR_LOCK_BUSY if client is operating in synchronous mode. This is not - * a fatal failure if NV_ENC_LOCK_BITSTREAM::doNotWait is set to 1. In the above case the client can + * ::NV_ENC_ERR_LOCK_BUSY if client is operating in synchronous mode. This is not + * a fatal failure if NV_ENC_LOCK_BITSTREAM::doNotWait is set to 1. In the above case the client can * retry the function after few milliseconds. * * \param [in] encoder @@ -2741,9 +3539,9 @@ NVENCSTATUS NVENCAPI NvEncUnlockBitstream (void* encoder, * This function is used to lock the input buffer to load the uncompressed YUV * pixel data into input buffer memory. The client must pass the NV_ENC_INPUT_PTR * it had previously allocated using ::NvEncCreateInputBuffer()in the - * NV_ENC_LOCK_INPUT_BUFFER::inputBuffer field. - * The NvEncodeAPI interface returns pointer to client accessible input buffer - * memory in NV_ENC_LOCK_INPUT_BUFFER::bufferDataPtr field. + * NV_ENC_LOCK_INPUT_BUFFER::inputBuffer field. + * The NvEncodeAPI interface returns pointer to client accessible input buffer + * memory in NV_ENC_LOCK_INPUT_BUFFER::bufferDataPtr field. * * \param [in] encoder * Pointer to the NvEncodeAPI interface. @@ -2804,6 +3602,8 @@ NVENCSTATUS NVENCAPI NvEncUnlockInputBuffer (void* encoder, * * This function is used to retrieve the encoding statistics. * This API is not supported when encode device type is CUDA. + * Note that this API will be removed in future Video Codec SDK release. + * Clients should use NvEncLockBitstream() API to retrieve the encoding statistics. * * \param [in] encoder * Pointer to the NvEncodeAPI interface. @@ -2829,16 +3629,16 @@ NVENCSTATUS NVENCAPI NvEncGetEncodeStats (void* encoder, /** * \brief Get encoded sequence and picture header. * - * This function can be used to retrieve the sequence and picture header out of - * band. The client must call this function only after the encoder has been - * initialized using ::NvEncInitializeEncoder() function. The client must + * This function can be used to retrieve the sequence and picture header out of + * band. The client must call this function only after the encoder has been + * initialized using ::NvEncInitializeEncoder() function. The client must * allocate the memory where the NvEncodeAPI interface can copy the bitstream - * header and pass the pointer to the memory in NV_ENC_SEQUENCE_PARAM_PAYLOAD::spsppsBuffer. + * header and pass the pointer to the memory in NV_ENC_SEQUENCE_PARAM_PAYLOAD::spsppsBuffer. * The size of buffer is passed in the field NV_ENC_SEQUENCE_PARAM_PAYLOAD::inBufferSize. - * The NvEncodeAPI interface will copy the bitstream header payload and returns + * The NvEncodeAPI interface will copy the bitstream header payload and returns * the actual size of the bitstream header in the field * NV_ENC_SEQUENCE_PARAM_PAYLOAD::outSPSPPSPayloadSize. - * The client must call ::NvEncGetSequenceParams() function from the same thread which is + * The client must call ::NvEncGetSequenceParams() function from the same thread which is * being used to call ::NvEncEncodePicture() function. * * \param [in] encoder @@ -2856,22 +3656,60 @@ NVENCSTATUS NVENCAPI NvEncGetEncodeStats (void* encoder, * ::NV_ENC_ERR_INVALID_VERSION \n * ::NV_ENC_ERR_INVALID_PARAM \n * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n - * ::NV_ENC_ERR_GENERIC \n + * ::NV_ENC_ERR_GENERIC \n * */ NVENCSTATUS NVENCAPI NvEncGetSequenceParams (void* encoder, NV_ENC_SEQUENCE_PARAM_PAYLOAD* sequenceParamPayload); +// NvEncGetSequenceParamEx +/** + * \brief Get sequence and picture header. + * + * This function can be used to retrieve the sequence and picture header out of band, even when + * encoder has not been initialized using ::NvEncInitializeEncoder() function. + * The client must allocate the memory where the NvEncodeAPI interface can copy the bitstream + * header and pass the pointer to the memory in NV_ENC_SEQUENCE_PARAM_PAYLOAD::spsppsBuffer. + * The size of buffer is passed in the field NV_ENC_SEQUENCE_PARAM_PAYLOAD::inBufferSize. + * If encoder has not been initialized using ::NvEncInitializeEncoder() function, client must + * send NV_ENC_INITIALIZE_PARAMS as input. The NV_ENC_INITIALIZE_PARAMS passed must be same as the + * one which will be used for initializing encoder using ::NvEncInitializeEncoder() function later. + * If encoder is already initialized using ::NvEncInitializeEncoder() function, the provided + * NV_ENC_INITIALIZE_PARAMS structure is ignored. The NvEncodeAPI interface will copy the bitstream + * header payload and returns the actual size of the bitstream header in the field + * NV_ENC_SEQUENCE_PARAM_PAYLOAD::outSPSPPSPayloadSize. The client must call ::NvEncGetSequenceParamsEx() + * function from the same thread which is being used to call ::NvEncEncodePicture() function. + * + * \param [in] encoder + * Pointer to the NvEncodeAPI interface. + * \param [in] encInitParams + * Pointer to the _NV_ENC_INITIALIZE_PARAMS structure. + * \param [in,out] sequenceParamPayload + * Pointer to the ::_NV_ENC_SEQUENCE_PARAM_PAYLOAD structure. + * + * \return + * ::NV_ENC_SUCCESS \n + * ::NV_ENC_ERR_INVALID_PTR \n + * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n + * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n + * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n + * ::NV_ENC_ERR_OUT_OF_MEMORY \n + * ::NV_ENC_ERR_INVALID_VERSION \n + * ::NV_ENC_ERR_INVALID_PARAM \n + * ::NV_ENC_ERR_GENERIC \n + * + */ +NVENCSTATUS NVENCAPI NvEncGetSequenceParamEx (void* encoder, NV_ENC_INITIALIZE_PARAMS* encInitParams, NV_ENC_SEQUENCE_PARAM_PAYLOAD* sequenceParamPayload); // NvEncRegisterAsyncEvent /** * \brief Register event for notification to encoding completion. * - * This function is used to register the completion event with NvEncodeAPI - * interface. The event is required when the client has configured the encoder to + * This function is used to register the completion event with NvEncodeAPI + * interface. The event is required when the client has configured the encoder to * work in asynchronous mode. In this mode the client needs to send a completion - * event with every output buffer. The NvEncodeAPI interface will signal the - * completion of the encoding process using this event. Only after the event is - * signalled the client can get the encoded data using ::NvEncLockBitstream() function. + * event with every output buffer. The NvEncodeAPI interface will signal the + * completion of the encoding process using this event. Only after the event is + * signaled the client can get the encoded data using ::NvEncLockBitstream() function. * * \param [in] encoder * Pointer to the NvEncodeAPI interface. @@ -2923,7 +3761,7 @@ NVENCSTATUS NVENCAPI NvEncRegisterAsyncEvent (void* encoder, NVENCSTATUS NVENCAPI NvEncUnregisterAsyncEvent (void* encoder, NV_ENC_EVENT_PARAMS* eventParams); -// NvEncMapInputResource +// NvEncMapInputResource /** * \brief Map an externally created input resource pointer for encoding. * @@ -2932,9 +3770,12 @@ NVENCSTATUS NVENCAPI NvEncUnregisterAsyncEvent (void* encoder, * mapped resource is returned in the field NV_ENC_MAP_INPUT_RESOURCE::outputResourcePtr. * The NvEncodeAPI interface also returns the buffer format of the mapped resource * in the field NV_ENC_MAP_INPUT_RESOURCE::outbufferFmt. - * This function provides synchronization guarantee that any graphics or compute - * work submitted on the input buffer is completed before the buffer is used for encoding. + * This function provides synchronization guarantee that any graphics work submitted + * on the input buffer is completed before the buffer is used for encoding. This is + * also true for compute (i.e. CUDA) work, provided that the previous workload using + * the input resource was submitted to the default stream. * The client should not access any input buffer while they are mapped by the encoder. + * For D3D12 interface type, this function does not provide synchronization guarantee. * * \param [in] encoder * Pointer to the NvEncodeAPI interface. @@ -2959,7 +3800,7 @@ NVENCSTATUS NVENCAPI NvEncUnregisterAsyncEvent (void* encoder, NVENCSTATUS NVENCAPI NvEncMapInputResource (void* encoder, NV_ENC_MAP_INPUT_RESOURCE* mapInputResParams); -// NvEncUnmapInputResource +// NvEncUnmapInputResource /** * \brief UnMaps a NV_ENC_INPUT_PTR which was mapped for encoding * @@ -2967,7 +3808,7 @@ NVENCSTATUS NVENCAPI NvEncMapInputResource (void* encode * UnMaps an input buffer which was previously mapped using ::NvEncMapInputResource() * API. The mapping created using ::NvEncMapInputResource() should be invalidated * using this API before the external resource is destroyed by the client. The client - * must unmap the buffer after ::NvEncLockBitstream() API returns succuessfully for encode + * must unmap the buffer after ::NvEncLockBitstream() API returns successfully for encode * work submitted using the mapped input buffer. * * @@ -2998,14 +3839,14 @@ NVENCSTATUS NVENCAPI NvEncUnmapInputResource (void* enco * \brief Destroy Encoding Session * * Destroys the encoder session previously created using ::NvEncOpenEncodeSession() - * function. The client must flush the encoder before freeing any resources. In order - * to flush the encoder the client must pass a NULL encode picture packet and either - * wait for the ::NvEncEncodePicture() function to return in synchronous mode or wait + * function. The client must flush the encoder before freeing any resources. In order + * to flush the encoder the client must pass a NULL encode picture packet and either + * wait for the ::NvEncEncodePicture() function to return in synchronous mode or wait * for the flush event to be signaled by the encoder in asynchronous mode. * The client must free all the input and output resources created using the * NvEncodeAPI interface before destroying the encoder. If the client is operating * in asynchronous mode, it must also unregister the completion events previously - * registered. + * registered. * * \param [in] encoder * Pointer to the NvEncodeAPI interface. @@ -3025,15 +3866,15 @@ NVENCSTATUS NVENCAPI NvEncDestroyEncoder (void* encoder); // NvEncInvalidateRefFrames /** - * \brief Invalidate reference frames + * \brief Invalidate reference frames * - * Invalidates reference frame based on the time stamp provided by the client. + * Invalidates reference frame based on the time stamp provided by the client. * The encoder marks any reference frames or any frames which have been reconstructed * using the corrupt frame as invalid for motion estimation and uses older reference - * frames for motion estimation. The encoded forces the current frame to be encoded + * frames for motion estimation. The encoder forces the current frame to be encoded * as an intra frame if no reference frames are left after invalidation process. - * This is useful for low latency application for error resiliency. The client - * is recommended to set NV_ENC_CONFIG_H264::maxNumRefFrames to a large value so + * This is useful for low latency application for error resiliency. The client + * is recommended to set NV_ENC_CONFIG_H264::maxNumRefFrames to a large value so * that encoder can keep a backup of older reference frames in the DPB and can use them * for motion estimation when the newer reference frames have been invalidated. * This API can be called multiple times. @@ -3059,14 +3900,14 @@ NVENCSTATUS NVENCAPI NvEncInvalidateRefFrames(void* encoder, uint64_t invalidRef // NvEncOpenEncodeSessionEx /** * \brief Opens an encoding session. - * + * * Opens an encoding session and returns a pointer to the encoder interface in * the \p **encoder parameter. The client should start encoding process by calling - * this API first. + * this API first. * The client must pass a pointer to IDirect3DDevice9 device or CUDA context in the \p *device parameter. * For the OpenGL interface, \p device must be NULL. An OpenGL context must be current when * calling all NvEncodeAPI functions. - * If the creation of encoder session fails, the client must call ::NvEncDestroyEncoder API + * If the creation of encoder session fails, the client must call ::NvEncDestroyEncoder API * before exiting. * * \param [in] openSessionExParams @@ -3089,7 +3930,7 @@ NVENCSTATUS NVENCAPI NvEncOpenEncodeSessionEx (NV_ENC_OPEN_ENC // NvEncRegisterResource /** * \brief Registers a resource with the Nvidia Video Encoder Interface. - * + * * Registers a resource with the Nvidia Video Encoder Interface for book keeping. * The client is expected to pass the registered resource handle as well, while calling ::NvEncMapInputResource API. * @@ -3098,7 +3939,7 @@ NVENCSTATUS NVENCAPI NvEncOpenEncodeSessionEx (NV_ENC_OPEN_ENC * * \param [in] registerResParams * Pointer to a ::_NV_ENC_REGISTER_RESOURCE structure - * + * * \return * ::NV_ENC_SUCCESS \n * ::NV_ENC_ERR_INVALID_PTR \n @@ -3119,9 +3960,9 @@ NVENCSTATUS NVENCAPI NvEncRegisterResource (void* encoder, // NvEncUnregisterResource /** * \brief Unregisters a resource previously registered with the Nvidia Video Encoder Interface. - * + * * Unregisters a resource previously registered with the Nvidia Video Encoder Interface. - * The client is expected to unregister any resource that it has registered with the + * The client is expected to unregister any resource that it has registered with the * Nvidia Video Encoder Interface before destroying the resource. * * \param [in] encoder @@ -3150,16 +3991,16 @@ NVENCSTATUS NVENCAPI NvEncUnregisterResource (void* encoder, // NvEncReconfigureEncoder /** * \brief Reconfigure an existing encoding session. - * + * * Reconfigure an existing encoding session. - * The client should call this API to change/reconfigure the parameter passed during + * The client should call this API to change/reconfigure the parameter passed during * NvEncInitializeEncoder API call. * Currently Reconfiguration of following are not supported. * Change in GOP structure. * Change in sync-Async mode. * Change in MaxWidth & MaxHeight. - * Change in PTDmode. - * + * Change in PTD mode. + * * Resolution change is possible only if maxEncodeWidth & maxEncodeHeight of NV_ENC_INITIALIZE_PARAMS * is set while creating encoder session. * @@ -3290,9 +4131,25 @@ NVENCSTATUS NVENCAPI NvEncRunMotionEstimationOnly (void* encoder, NVENCSTATUS NVENCAPI NvEncodeAPIGetMaxSupportedVersion (uint32_t* version); +// NvEncGetLastErrorString +/** + * \brief Get the description of the last error reported by the API. + * + * This function returns a null-terminated string that can be used by clients to better understand the reason + * for failure of a previous API call. + * + * \param [in] encoder + * Pointer to the NvEncodeAPI interface. + * + * \return + * Pointer to buffer containing the details of the last error encountered by the API. + */ +const char * NVENCAPI NvEncGetLastErrorString (void* encoder); + + /// \cond API PFN /* - * Defines API function pointers + * Defines API function pointers */ typedef NVENCSTATUS (NVENCAPI* PNVENCOPENENCODESESSION) (void* device, uint32_t deviceType, void** encoder); typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEGUIDCOUNT) (void* encoder, uint32_t* encodeGUIDCount); @@ -3305,6 +4162,7 @@ typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODECAPS) (void* encoder, typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEPRESETCOUNT) (void* encoder, GUID encodeGUID, uint32_t* encodePresetGUIDCount); typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEPRESETGUIDS) (void* encoder, GUID encodeGUID, GUID* presetGUIDs, uint32_t guidArraySize, uint32_t* encodePresetGUIDCount); typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEPRESETCONFIG) (void* encoder, GUID encodeGUID, GUID presetGUID, NV_ENC_PRESET_CONFIG* presetConfig); +typedef NVENCSTATUS (NVENCAPI* PNVENCGETENCODEPRESETCONFIGEX) (void* encoder, GUID encodeGUID, GUID presetGUID, NV_ENC_TUNING_INFO tuningInfo, NV_ENC_PRESET_CONFIG* presetConfig); typedef NVENCSTATUS (NVENCAPI* PNVENCINITIALIZEENCODER) (void* encoder, NV_ENC_INITIALIZE_PARAMS* createEncodeParams); typedef NVENCSTATUS (NVENCAPI* PNVENCCREATEINPUTBUFFER) (void* encoder, NV_ENC_CREATE_INPUT_BUFFER* createInputBufferParams); typedef NVENCSTATUS (NVENCAPI* PNVENCDESTROYINPUTBUFFER) (void* encoder, NV_ENC_INPUT_PTR inputBuffer); @@ -3331,6 +4189,9 @@ typedef NVENCSTATUS (NVENCAPI* PNVENCRECONFIGUREENCODER) (void* encoder, typedef NVENCSTATUS (NVENCAPI* PNVENCCREATEMVBUFFER) (void* encoder, NV_ENC_CREATE_MV_BUFFER* createMVBufferParams); typedef NVENCSTATUS (NVENCAPI* PNVENCDESTROYMVBUFFER) (void* encoder, NV_ENC_OUTPUT_PTR mvBuffer); typedef NVENCSTATUS (NVENCAPI* PNVENCRUNMOTIONESTIMATIONONLY) (void* encoder, NV_ENC_MEONLY_PARAMS* meOnlyParams); +typedef const char * (NVENCAPI* PNVENCGETLASTERROR) (void* encoder); +typedef NVENCSTATUS (NVENCAPI* PNVENCSETIOCUDASTREAMS) (void* encoder, NV_ENC_CUSTREAM_PTR inputStream, NV_ENC_CUSTREAM_PTR outputStream); +typedef NVENCSTATUS (NVENCAPI* PNVENCGETSEQUENCEPARAMEX) (void* encoder, NV_ENC_INITIALIZE_PARAMS* encInitParams, NV_ENC_SEQUENCE_PARAM_PAYLOAD* sequenceParamPayload); /// \endcond @@ -3383,7 +4244,11 @@ typedef struct _NV_ENCODE_API_FUNCTION_LIST PNVENCCREATEMVBUFFER nvEncCreateMVBuffer; /**< [out]: Client should access ::NvEncCreateMVBuffer API through this pointer. */ PNVENCDESTROYMVBUFFER nvEncDestroyMVBuffer; /**< [out]: Client should access ::NvEncDestroyMVBuffer API through this pointer. */ PNVENCRUNMOTIONESTIMATIONONLY nvEncRunMotionEstimationOnly; /**< [out]: Client should access ::NvEncRunMotionEstimationOnly API through this pointer. */ - void* reserved2[281]; /**< [in]: Reserved and must be set to NULL */ + PNVENCGETLASTERROR nvEncGetLastErrorString; /**< [out]: Client should access ::nvEncGetLastErrorString API through this pointer. */ + PNVENCSETIOCUDASTREAMS nvEncSetIOCudaStreams; /**< [out]: Client should access ::nvEncSetIOCudaStreams API through this pointer. */ + PNVENCGETENCODEPRESETCONFIGEX nvEncGetEncodePresetConfigEx; /**< [out]: Client should access ::NvEncGetEncodePresetConfigEx() API through this pointer. */ + PNVENCGETSEQUENCEPARAMEX nvEncGetSequenceParamEx; /**< [out]: Client should access ::NvEncGetSequenceParamEx() API through this pointer. */ + void* reserved2[277]; /**< [in]: Reserved and must be set to NULL */ } NV_ENCODE_API_FUNCTION_LIST; /** Macro for constructing the version field of ::_NV_ENCODEAPI_FUNCTION_LIST. */ @@ -3393,7 +4258,7 @@ typedef struct _NV_ENCODE_API_FUNCTION_LIST /** * \ingroup ENCODE_FUNC * Entry Point to the NvEncodeAPI interface. - * + * * Creates an instance of the NvEncodeAPI interface, and populates the * pFunctionList with function pointers to the API routines implemented by the * NvEncodeAPI interface. diff --git a/alvr/server/cpp/alvr_server/nvencoderclioptions.h b/alvr/server/cpp/alvr_server/nvencoderclioptions.h deleted file mode 100644 index 27872cbbdb..0000000000 --- a/alvr/server/cpp/alvr_server/nvencoderclioptions.h +++ /dev/null @@ -1,572 +0,0 @@ -/* -* Copyright 2017-2018 NVIDIA Corporation. All rights reserved. -* -* Please refer to the NVIDIA end user license agreement (EULA) associated -* with this source code for terms and conditions that govern your use of -* this software. Any use, reproduction, disclosure, or distribution of -* this software and related documentation outside the terms of the EULA -* is strictly prohibited. -* -*/ - -#pragma once -#include -#include -#include -#include -#include -#include -#include -#include "Logger.h" - -#ifndef _WIN32 -#include -inline bool operator==(const GUID &guid1, const GUID &guid2) { - return !memcmp(&guid1, &guid2, sizeof(GUID)); -} - -inline bool operator!=(const GUID &guid1, const GUID &guid2) { - return !(guid1 == guid2); -} -#endif - -class NvEncoderInitParam { -public: - NvEncoderInitParam(const char *szParam = "", - std::function *pfuncInit = NULL, bool _bLowLatency = false) - : strParam(szParam), bLowLatency(_bLowLatency) - { - if (pfuncInit) { - funcInit = *pfuncInit; - } - - std::transform(strParam.begin(), strParam.end(), strParam.begin(), tolower); - std::istringstream ss(strParam); - tokens = std::vector { - std::istream_iterator(ss), - std::istream_iterator() - }; - - for (unsigned i = 0; i < tokens.size(); i++) - { - if (tokens[i] == "-codec" && ++i != tokens.size()) - { - ParseString("-codec", tokens[i], vCodec, szCodecNames, &guidCodec); - continue; - } - if (bLowLatency) - { - if (tokens[i] == "-preset" && ++i != tokens.size()) { - ParseString("-preset", tokens[i], vLowLatencyPreset, szLowLatencyPresetNames, &guidPreset); - continue; - } - } - else - { - if (tokens[i] == "-preset" && ++i != tokens.size()) { - ParseString("-preset", tokens[i], vPreset, szPresetNames, &guidPreset); - continue; - } - } - } - - if (bLowLatency) guidPreset = NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID; - } - virtual ~NvEncoderInitParam() {} - virtual bool IsCodecH264() { - return GetEncodeGUID() == NV_ENC_CODEC_H264_GUID; - } - - virtual bool IsCodecHEVC() { - return GetEncodeGUID() == NV_ENC_CODEC_HEVC_GUID; - } - std::string GetHelpMessage(bool bMeOnly = false, bool bUnbuffered = false, bool bHide444 = false) - { - std::ostringstream oss; - oss << "-codec Codec: " << szCodecNames << std::endl - << "-preset Preset: " << (bLowLatency ? szLowLatencyPresetNames : szPresetNames) << std::endl - << "-profile H264: " << szH264ProfileNames << "; HEVC: " << szHevcProfileNames << std::endl; - if (!bHide444 && !bLowLatency) - { - oss << "-444 (Only for RGB input) YUV444 encode" << std::endl; - } - if (bMeOnly) return oss.str(); - oss << "-rc Rate control mode: " << szRcModeNames << std::endl - << "-fps Frame rate" << std::endl - << "-gop Length of GOP (Group of Pictures)" << std::endl; - if (!bUnbuffered && !bLowLatency) - { - oss << "-bf Number of consecutive B-frames" << std::endl; - } - oss << "-bitrate Average bit rate, can be in unit of 1, K, M" << std::endl - << "-maxbitrate Max bit rate, can be in unit of 1, K, M" << std::endl - << "-vbvbufsize VBV buffer size in bits, can be in unit of 1, K, M" << std::endl - << "-vbvinit VBV initial delay in bits, can be in unit of 1, K, M" << std::endl; - if (!bLowLatency) - { - oss << "-aq Enable spatial AQ and set its stength (range 1-15, 0-auto)" << std::endl - << "-temporalaq (No value) Enable temporal AQ" << std::endl; - } - if (!bUnbuffered && !bLowLatency) - { - oss << "-lookahead Maximum depth of lookahead (range 0-32)" << std::endl; - } - oss << "-cq Target constant quality level for VBR mode (range 1-51, 0-auto)" << std::endl - << "-qmin Min QP value" << std::endl - << "-qmax Max QP value" << std::endl - << "-initqp Initial QP value" << std::endl; - if (!bLowLatency) - { - oss << "-constqp QP value for constqp rate control mode" << std::endl - << "Note: QP value can be in the form of qp_of_P_B_I or qp_P,qp_B,qp_I (no space)" << std::endl; - } - if (bUnbuffered && !bLowLatency) - { - oss << "Note: Options -bf and -lookahead are unavailable for this app" << std::endl; - } - return oss.str(); - } - - std::string MainParamToString(const NV_ENC_INITIALIZE_PARAMS *pParams) { - std::ostringstream os; - os - << "Encoding Parameters:" - << std::endl << "\tcodec : " << ConvertValueToString(vCodec, szCodecNames, pParams->encodeGUID) - << std::endl << "\tpreset : " << ConvertValueToString(vPreset, szPresetNames, pParams->presetGUID) - << std::endl << "\tprofile : " << ConvertValueToString(vProfile, szProfileNames, pParams->encodeConfig->profileGUID) - << std::endl << "\tchroma : " << ConvertValueToString(vChroma, szChromaNames, (pParams->encodeGUID == NV_ENC_CODEC_H264_GUID) ? pParams->encodeConfig->encodeCodecConfig.h264Config.chromaFormatIDC : pParams->encodeConfig->encodeCodecConfig.hevcConfig.chromaFormatIDC) - << std::endl << "\tbitdepth : " << ((pParams->encodeGUID == NV_ENC_CODEC_H264_GUID) ? 0 : pParams->encodeConfig->encodeCodecConfig.hevcConfig.pixelBitDepthMinus8) + 8 - << std::endl << "\trc : " << ConvertValueToString(vRcMode, szRcModeNames, pParams->encodeConfig->rcParams.rateControlMode) - ; - if (pParams->encodeConfig->rcParams.rateControlMode == NV_ENC_PARAMS_RC_CONSTQP) { - os << " (P,B,I=" << pParams->encodeConfig->rcParams.constQP.qpInterP << "," << pParams->encodeConfig->rcParams.constQP.qpInterB << "," << pParams->encodeConfig->rcParams.constQP.qpIntra << ")"; - } - os - << std::endl << "\tfps : " << pParams->frameRateNum << "/" << pParams->frameRateDen - << std::endl << "\tgop : " << (pParams->encodeConfig->gopLength == NVENC_INFINITE_GOPLENGTH ? "INF" : std::to_string(pParams->encodeConfig->gopLength)) - << std::endl << "\tbf : " << pParams->encodeConfig->frameIntervalP - 1 - << std::endl << "\tsize : " << pParams->encodeWidth << "x" << pParams->encodeHeight - << std::endl << "\tbitrate : " << pParams->encodeConfig->rcParams.averageBitRate - << std::endl << "\tmaxbitrate : " << pParams->encodeConfig->rcParams.maxBitRate - << std::endl << "\tvbvbufsize : " << pParams->encodeConfig->rcParams.vbvBufferSize - << std::endl << "\tvbvinit : " << pParams->encodeConfig->rcParams.vbvInitialDelay - << std::endl << "\taq : " << (pParams->encodeConfig->rcParams.enableAQ ? (pParams->encodeConfig->rcParams.aqStrength ? std::to_string(pParams->encodeConfig->rcParams.aqStrength) : "auto") : "disabled") - << std::endl << "\ttemporalaq : " << (pParams->encodeConfig->rcParams.enableTemporalAQ ? "enabled" : "disabled") - << std::endl << "\tlookahead : " << (pParams->encodeConfig->rcParams.enableLookahead ? std::to_string(pParams->encodeConfig->rcParams.lookaheadDepth) : "disabled") - << std::endl << "\tcq : " << (int)pParams->encodeConfig->rcParams.targetQuality - << std::endl << "\tqmin : P,B,I=" << pParams->encodeConfig->rcParams.minQP.qpInterP << "," << pParams->encodeConfig->rcParams.minQP.qpInterB << "," << pParams->encodeConfig->rcParams.minQP.qpIntra - << std::endl << "\tqmax : P,B,I=" << pParams->encodeConfig->rcParams.maxQP.qpInterP << "," << pParams->encodeConfig->rcParams.maxQP.qpInterB << "," << pParams->encodeConfig->rcParams.maxQP.qpIntra - << std::endl << "\tinitqp : P,B,I=" << pParams->encodeConfig->rcParams.initialRCQP.qpInterP << "," << pParams->encodeConfig->rcParams.initialRCQP.qpInterB << "," << pParams->encodeConfig->rcParams.initialRCQP.qpIntra - ; - return os.str(); - } - -public: - virtual GUID GetEncodeGUID() { return guidCodec; } - virtual GUID GetPresetGUID() { return guidPreset; } - virtual void SetInitParams(NV_ENC_INITIALIZE_PARAMS *pParams, NV_ENC_BUFFER_FORMAT eBufferFormat) - { - NV_ENC_CONFIG &config = *pParams->encodeConfig; - for (unsigned i = 0; i < tokens.size(); i++) - { - if ( - tokens[i] == "-codec" && ++i || - tokens[i] == "-preset" && ++i || - tokens[i] == "-profile" && ++i != tokens.size() && (IsCodecH264() ? - ParseString("-profile", tokens[i], vH264Profile, szH264ProfileNames, &config.profileGUID) : - ParseString("-profile", tokens[i], vHevcProfile, szHevcProfileNames, &config.profileGUID)) || - tokens[i] == "-rc" && ++i != tokens.size() && ParseString("-rc", tokens[i], vRcMode, szRcModeNames, &config.rcParams.rateControlMode) || - tokens[i] == "-fps" && ++i != tokens.size() && ParseInt("-fps", tokens[i], &pParams->frameRateNum) || - tokens[i] == "-bf" && ++i != tokens.size() && ParseInt("-bf", tokens[i], &config.frameIntervalP) && ++config.frameIntervalP || - tokens[i] == "-bitrate" && ++i != tokens.size() && ParseBitRate("-bitrate", tokens[i], &config.rcParams.averageBitRate) || - tokens[i] == "-maxbitrate" && ++i != tokens.size() && ParseBitRate("-maxbitrate", tokens[i], &config.rcParams.maxBitRate) || - tokens[i] == "-vbvbufsize" && ++i != tokens.size() && ParseBitRate("-vbvbufsize", tokens[i], &config.rcParams.vbvBufferSize) || - tokens[i] == "-vbvinit" && ++i != tokens.size() && ParseBitRate("-vbvinit", tokens[i], &config.rcParams.vbvInitialDelay) || - tokens[i] == "-lookahead" && ++i != tokens.size() && ParseInt("-lookahead", tokens[i], &config.rcParams.lookaheadDepth) && (config.rcParams.enableLookahead = true) || - tokens[i] == "-cq" && ++i != tokens.size() && ParseInt("-cq", tokens[i], &config.rcParams.targetQuality) || - tokens[i] == "-initqp" && ++i != tokens.size() && ParseQp("-initqp", tokens[i], &config.rcParams.initialRCQP) && (config.rcParams.enableInitialRCQP = true) || - tokens[i] == "-qmin" && ++i != tokens.size() && ParseQp("-qmin", tokens[i], &config.rcParams.minQP) && (config.rcParams.enableMinQP = true) || - tokens[i] == "-qmax" && ++i != tokens.size() && ParseQp("-qmax", tokens[i], &config.rcParams.maxQP) && (config.rcParams.enableMaxQP = true) || - tokens[i] == "-constqp" && ++i != tokens.size() && ParseQp("-constqp", tokens[i], &config.rcParams.constQP) || - tokens[i] == "-temporalaq" && (config.rcParams.enableTemporalAQ = true) - ) - { - continue; - } - int aqStrength; - if (tokens[i] == "-aq" && ++i != tokens.size() && ParseInt("-aq", tokens[i], &aqStrength)) { - config.rcParams.enableAQ = true; - config.rcParams.aqStrength = aqStrength; - continue; - } - - if (tokens[i] == "-gop" && ++i != tokens.size() && ParseInt("-gop", tokens[i], &config.gopLength)) - { - if (IsCodecH264()) - { - config.encodeCodecConfig.h264Config.idrPeriod = config.gopLength; - } - else - { - config.encodeCodecConfig.hevcConfig.idrPeriod = config.gopLength; - } - continue; - } - - if (tokens[i] == "-444") - { - if (IsCodecH264()) - { - config.encodeCodecConfig.h264Config.chromaFormatIDC = 3; - } else - { - config.encodeCodecConfig.hevcConfig.chromaFormatIDC = 3; - } - continue; - } - - std::ostringstream errmessage; - errmessage << "Incorrect parameter: " << tokens[i] << std::endl; - errmessage << "Re-run the application with the -h option to get a list of the supported options."; - errmessage << std::endl; - - throw std::invalid_argument(errmessage.str()); - } - - if (IsCodecHEVC()) - { - if (eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT || eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) - { - config.encodeCodecConfig.hevcConfig.pixelBitDepthMinus8 = 2; - } - } - - funcInit(pParams); - //LOG(INFO) << NvEncoderInitParam().MainParamToString(pParams); - //LOG(TRACE) << NvEncoderInitParam().FullParamToString(pParams); - } - -private: - template - bool ParseString(const std::string &strName, const std::string &strValue, const std::vector &vValue, const std::string &strValueNames, T *pValue) { - std::vector vstrValueName = split(strValueNames, ' '); - auto it = std::find(vstrValueName.begin(), vstrValueName.end(), strValue); - if (it == vstrValueName.end()) { - //LOG(ERROR) << strName << " options: " << strValueNames; - return false; - } - *pValue = vValue[it - vstrValueName.begin()]; - return true; - } - template - std::string ConvertValueToString(const std::vector &vValue, const std::string &strValueNames, T value) { - auto it = std::find(vValue.begin(), vValue.end(), value); - if (it == vValue.end()) { - //LOG(ERROR) << "Invalid value. Can't convert to one of " << strValueNames; - return std::string(); - } - return split(strValueNames, ' ')[it - vValue.begin()]; - } - bool ParseBitRate(const std::string &strName, const std::string &strValue, unsigned *pBitRate) { - try { - size_t l; - double r = std::stod(strValue, &l); - char c = strValue[l]; - if (c != 0 && c != 'k' && c != 'm') { - //LOG(ERROR) << strName << " units: 1, K, M (lower case also allowed)"; - } - *pBitRate = (unsigned)((c == 'm' ? 1000000 : (c == 'k' ? 1000 : 1)) * r); - } catch (std::invalid_argument) { - return false; - } - return true; - } - template - bool ParseInt(const std::string &strName, const std::string &strValue, T *pInt) { - try { - *pInt = std::stoi(strValue); - } catch (std::invalid_argument) { - //LOG(ERROR) << strName << " need a value of positive number"; - return false; - } - return true; - } - bool ParseQp(const std::string &strName, const std::string &strValue, NV_ENC_QP *pQp) { - std::vector vQp = split(strValue, ','); - try { - if (vQp.size() == 1) { - unsigned qp = (unsigned)std::stoi(vQp[0]); - *pQp = {qp, qp, qp}; - } else if (vQp.size() == 3) { - *pQp = {(unsigned)std::stoi(vQp[0]), (unsigned)std::stoi(vQp[1]), (unsigned)std::stoi(vQp[2])}; - } else { - //LOG(ERROR) << strName << " qp_for_P_B_I or qp_P,qp_B,qp_I (no space is allowed)"; - return false; - } - } catch (std::invalid_argument) { - return false; - } - return true; - } - std::vector split(const std::string &s, char delim) { - std::stringstream ss(s); - std::string token; - std::vector tokens; - while (getline(ss, token, delim)) { - tokens.push_back(token); - } - return tokens; - } - -private: - std::string strParam; - std::function funcInit = [](NV_ENC_INITIALIZE_PARAMS *pParams){}; - std::vector tokens; - GUID guidCodec = NV_ENC_CODEC_H264_GUID; - GUID guidPreset = NV_ENC_PRESET_DEFAULT_GUID; - bool bLowLatency = false; - - const char *szCodecNames = "h264 hevc"; - std::vector vCodec = std::vector { - NV_ENC_CODEC_H264_GUID, - NV_ENC_CODEC_HEVC_GUID - }; - - const char *szChromaNames = "yuv420 yuv444"; - std::vector vChroma = std::vector - { - 1, 3 - }; - - const char *szPresetNames = "default hp hq bd ll ll_hp ll_hq lossless lossless_hp"; - const char *szLowLatencyPresetNames = "ll ll_hp ll_hq"; - std::vector vPreset = std::vector { - NV_ENC_PRESET_DEFAULT_GUID, - NV_ENC_PRESET_HP_GUID, - NV_ENC_PRESET_HQ_GUID, - NV_ENC_PRESET_BD_GUID, - NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID, - NV_ENC_PRESET_LOW_LATENCY_HP_GUID, - NV_ENC_PRESET_LOW_LATENCY_HQ_GUID, - NV_ENC_PRESET_LOSSLESS_DEFAULT_GUID, - NV_ENC_PRESET_LOSSLESS_HP_GUID - }; - - std::vector vLowLatencyPreset = std::vector { - NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID, - NV_ENC_PRESET_LOW_LATENCY_HP_GUID, - NV_ENC_PRESET_LOW_LATENCY_HQ_GUID, - }; - - const char *szH264ProfileNames = "baseline main high high444"; - std::vector vH264Profile = std::vector { - NV_ENC_H264_PROFILE_BASELINE_GUID, - NV_ENC_H264_PROFILE_MAIN_GUID, - NV_ENC_H264_PROFILE_HIGH_GUID, - NV_ENC_H264_PROFILE_HIGH_444_GUID, - }; - const char *szHevcProfileNames = "main main10 frext"; - std::vector vHevcProfile = std::vector { - NV_ENC_HEVC_PROFILE_MAIN_GUID, - NV_ENC_HEVC_PROFILE_MAIN10_GUID, - NV_ENC_HEVC_PROFILE_FREXT_GUID, - }; - const char *szProfileNames = "(default) auto baseline(h264) main(h264) high(h264) high444(h264)" - " stereo(h264) svc_temporal_scalability(h264) progressiv_high(h264) constrained_high(h264)" - " main(hevc) main10(hevc) frext(hevc)"; - std::vector vProfile = std::vector { - GUID{}, - NV_ENC_CODEC_PROFILE_AUTOSELECT_GUID, - NV_ENC_H264_PROFILE_BASELINE_GUID, - NV_ENC_H264_PROFILE_MAIN_GUID, - NV_ENC_H264_PROFILE_HIGH_GUID, - NV_ENC_H264_PROFILE_HIGH_444_GUID, - NV_ENC_H264_PROFILE_STEREO_GUID, - NV_ENC_H264_PROFILE_SVC_TEMPORAL_SCALABILTY, - NV_ENC_H264_PROFILE_PROGRESSIVE_HIGH_GUID, - NV_ENC_H264_PROFILE_CONSTRAINED_HIGH_GUID, - NV_ENC_HEVC_PROFILE_MAIN_GUID, - NV_ENC_HEVC_PROFILE_MAIN10_GUID, - NV_ENC_HEVC_PROFILE_FREXT_GUID, - }; - - const char *szRcModeNames = "constqp vbr cbr cbr_ll_hq cbr_hq vbr_hq"; - std::vector vRcMode = std::vector { - NV_ENC_PARAMS_RC_CONSTQP, - NV_ENC_PARAMS_RC_VBR, - NV_ENC_PARAMS_RC_CBR, - NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ, - NV_ENC_PARAMS_RC_CBR_HQ, - NV_ENC_PARAMS_RC_VBR_HQ, - }; - - const char *szQpMapModeNames = "disabled emphasis_level_map delta_qp_map qp_map"; - std::vector vQpMapMode = std::vector { - NV_ENC_QP_MAP_DISABLED, - NV_ENC_QP_MAP_EMPHASIS, - NV_ENC_QP_MAP_DELTA, - NV_ENC_QP_MAP, - }; - - -public: - std::string FullParamToString(const NV_ENC_INITIALIZE_PARAMS *pInitializeParams) { - std::ostringstream os; - os << "NV_ENC_INITIALIZE_PARAMS:" << std::endl - << "encodeGUID: " << ConvertValueToString(vCodec, szCodecNames, pInitializeParams->encodeGUID) << std::endl - << "presetGUID: " << ConvertValueToString(vPreset, szPresetNames, pInitializeParams->presetGUID) << std::endl - << "encodeWidth: " << pInitializeParams->encodeWidth << std::endl - << "encodeHeight: " << pInitializeParams->encodeHeight << std::endl - << "darWidth: " << pInitializeParams->darWidth << std::endl - << "darHeight: " << pInitializeParams->darHeight << std::endl - << "frameRateNum: " << pInitializeParams->frameRateNum << std::endl - << "frameRateDen: " << pInitializeParams->frameRateDen << std::endl - << "enableEncodeAsync: " << pInitializeParams->enableEncodeAsync << std::endl - << "reportSliceOffsets: " << pInitializeParams->reportSliceOffsets << std::endl - << "enableSubFrameWrite: " << pInitializeParams->enableSubFrameWrite << std::endl - << "enableExternalMEHints: " << pInitializeParams->enableExternalMEHints << std::endl - << "enableMEOnlyMode: " << pInitializeParams->enableMEOnlyMode << std::endl - << "enableWeightedPrediction: " << pInitializeParams->enableWeightedPrediction << std::endl - << "maxEncodeWidth: " << pInitializeParams->maxEncodeWidth << std::endl - << "maxEncodeHeight: " << pInitializeParams->maxEncodeHeight << std::endl - << "maxMEHintCountsPerBlock: " << pInitializeParams->maxMEHintCountsPerBlock << std::endl - ; - NV_ENC_CONFIG *pConfig = pInitializeParams->encodeConfig; - os << "NV_ENC_CONFIG:" << std::endl - << "profile: " << ConvertValueToString(vProfile, szProfileNames, pConfig->profileGUID) << std::endl - << "gopLength: " << pConfig->gopLength << std::endl - << "frameIntervalP: " << pConfig->frameIntervalP << std::endl - << "monoChromeEncoding: " << pConfig->monoChromeEncoding << std::endl - << "frameFieldMode: " << pConfig->frameFieldMode << std::endl - << "mvPrecision: " << pConfig->mvPrecision << std::endl - << "NV_ENC_RC_PARAMS:" << std::endl - << " rateControlMode: 0x" << std::hex << pConfig->rcParams.rateControlMode << std::dec << std::endl - << " constQP: " << pConfig->rcParams.constQP.qpInterP << ", " << pConfig->rcParams.constQP.qpInterB << ", " << pConfig->rcParams.constQP.qpIntra << std::endl - << " averageBitRate: " << pConfig->rcParams.averageBitRate << std::endl - << " maxBitRate: " << pConfig->rcParams.maxBitRate << std::endl - << " vbvBufferSize: " << pConfig->rcParams.vbvBufferSize << std::endl - << " vbvInitialDelay: " << pConfig->rcParams.vbvInitialDelay << std::endl - << " enableMinQP: " << pConfig->rcParams.enableMinQP << std::endl - << " enableMaxQP: " << pConfig->rcParams.enableMaxQP << std::endl - << " enableInitialRCQP: " << pConfig->rcParams.enableInitialRCQP << std::endl - << " enableAQ: " << pConfig->rcParams.enableAQ << std::endl - << " qpMapMode: " << ConvertValueToString(vQpMapMode, szQpMapModeNames, pConfig->rcParams.qpMapMode) << std::endl - << " enableLookahead: " << pConfig->rcParams.enableLookahead << std::endl - << " disableIadapt: " << pConfig->rcParams.disableIadapt << std::endl - << " disableBadapt: " << pConfig->rcParams.disableBadapt << std::endl - << " enableTemporalAQ: " << pConfig->rcParams.enableTemporalAQ << std::endl - << " zeroReorderDelay: " << pConfig->rcParams.zeroReorderDelay << std::endl - << " enableNonRefP: " << pConfig->rcParams.enableNonRefP << std::endl - << " strictGOPTarget: " << pConfig->rcParams.strictGOPTarget << std::endl - << " aqStrength: " << pConfig->rcParams.aqStrength << std::endl - << " minQP: " << pConfig->rcParams.minQP.qpInterP << ", " << pConfig->rcParams.minQP.qpInterB << ", " << pConfig->rcParams.minQP.qpIntra << std::endl - << " maxQP: " << pConfig->rcParams.maxQP.qpInterP << ", " << pConfig->rcParams.maxQP.qpInterB << ", " << pConfig->rcParams.maxQP.qpIntra << std::endl - << " initialRCQP: " << pConfig->rcParams.initialRCQP.qpInterP << ", " << pConfig->rcParams.initialRCQP.qpInterB << ", " << pConfig->rcParams.initialRCQP.qpIntra << std::endl - << " temporallayerIdxMask: " << pConfig->rcParams.temporallayerIdxMask << std::endl - << " temporalLayerQP: " << (int)pConfig->rcParams.temporalLayerQP[0] << ", " << (int)pConfig->rcParams.temporalLayerQP[1] << ", " << (int)pConfig->rcParams.temporalLayerQP[2] << ", " << (int)pConfig->rcParams.temporalLayerQP[3] << ", " << (int)pConfig->rcParams.temporalLayerQP[4] << ", " << (int)pConfig->rcParams.temporalLayerQP[5] << ", " << (int)pConfig->rcParams.temporalLayerQP[6] << ", " << (int)pConfig->rcParams.temporalLayerQP[7] << std::endl - << " targetQuality: " << (int)pConfig->rcParams.targetQuality << std::endl - << " lookaheadDepth: " << pConfig->rcParams.lookaheadDepth << std::endl; - if (pInitializeParams->encodeGUID == NV_ENC_CODEC_H264_GUID) { - os - << "NV_ENC_CODEC_CONFIG (H264):" << std::endl - << " enableTemporalSVC: " << pConfig->encodeCodecConfig.h264Config.enableTemporalSVC << std::endl - << " enableStereoMVC: " << pConfig->encodeCodecConfig.h264Config.enableStereoMVC << std::endl - << " hierarchicalPFrames: " << pConfig->encodeCodecConfig.h264Config.hierarchicalPFrames << std::endl - << " hierarchicalBFrames: " << pConfig->encodeCodecConfig.h264Config.hierarchicalBFrames << std::endl - << " outputBufferingPeriodSEI: " << pConfig->encodeCodecConfig.h264Config.outputBufferingPeriodSEI << std::endl - << " outputPictureTimingSEI: " << pConfig->encodeCodecConfig.h264Config.outputPictureTimingSEI << std::endl - << " outputAUD: " << pConfig->encodeCodecConfig.h264Config.outputAUD << std::endl - << " disableSPSPPS: " << pConfig->encodeCodecConfig.h264Config.disableSPSPPS << std::endl - << " outputFramePackingSEI: " << pConfig->encodeCodecConfig.h264Config.outputFramePackingSEI << std::endl - << " outputRecoveryPointSEI: " << pConfig->encodeCodecConfig.h264Config.outputRecoveryPointSEI << std::endl - << " enableIntraRefresh: " << pConfig->encodeCodecConfig.h264Config.enableIntraRefresh << std::endl - << " enableConstrainedEncoding: " << pConfig->encodeCodecConfig.h264Config.enableConstrainedEncoding << std::endl - << " repeatSPSPPS: " << pConfig->encodeCodecConfig.h264Config.repeatSPSPPS << std::endl - << " enableVFR: " << pConfig->encodeCodecConfig.h264Config.enableVFR << std::endl - << " enableLTR: " << pConfig->encodeCodecConfig.h264Config.enableLTR << std::endl - << " qpPrimeYZeroTransformBypassFlag: " << pConfig->encodeCodecConfig.h264Config.qpPrimeYZeroTransformBypassFlag << std::endl - << " useConstrainedIntraPred: " << pConfig->encodeCodecConfig.h264Config.useConstrainedIntraPred << std::endl - << " level: " << pConfig->encodeCodecConfig.h264Config.level << std::endl - << " idrPeriod: " << pConfig->encodeCodecConfig.h264Config.idrPeriod << std::endl - << " separateColourPlaneFlag: " << pConfig->encodeCodecConfig.h264Config.separateColourPlaneFlag << std::endl - << " disableDeblockingFilterIDC: " << pConfig->encodeCodecConfig.h264Config.disableDeblockingFilterIDC << std::endl - << " numTemporalLayers: " << pConfig->encodeCodecConfig.h264Config.numTemporalLayers << std::endl - << " enableTemporalSVC: " << pConfig->encodeCodecConfig.h264Config.enableTemporalSVC << std::endl - << " spsId: " << pConfig->encodeCodecConfig.h264Config.spsId << std::endl - << " ppsId: " << pConfig->encodeCodecConfig.h264Config.ppsId << std::endl - << " adaptiveTransformMode: " << pConfig->encodeCodecConfig.h264Config.adaptiveTransformMode << std::endl - << " fmoMode: " << pConfig->encodeCodecConfig.h264Config.fmoMode << std::endl - << " bdirectMode: " << pConfig->encodeCodecConfig.h264Config.bdirectMode << std::endl - << " entropyCodingMode: " << pConfig->encodeCodecConfig.h264Config.entropyCodingMode << std::endl - << " stereoMode: " << pConfig->encodeCodecConfig.h264Config.stereoMode << std::endl - << " intraRefreshPeriod: " << pConfig->encodeCodecConfig.h264Config.intraRefreshPeriod << std::endl - << " intraRefreshCnt: " << pConfig->encodeCodecConfig.h264Config.intraRefreshCnt << std::endl - << " maxNumRefFrames: " << pConfig->encodeCodecConfig.h264Config.maxNumRefFrames << std::endl - << " sliceMode: " << pConfig->encodeCodecConfig.h264Config.sliceMode << std::endl - << " sliceModeData: " << pConfig->encodeCodecConfig.h264Config.sliceModeData << std::endl - << " NV_ENC_CONFIG_H264_VUI_PARAMETERS:" << std::endl - << " overscanInfoPresentFlag: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.overscanInfoPresentFlag << std::endl - << " overscanInfo: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.overscanInfo << std::endl - << " videoSignalTypePresentFlag: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.videoSignalTypePresentFlag << std::endl - << " videoFormat: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.videoFormat << std::endl - << " videoFullRangeFlag: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.videoFullRangeFlag << std::endl - << " colourDescriptionPresentFlag: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.colourDescriptionPresentFlag << std::endl - << " colourPrimaries: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.colourPrimaries << std::endl - << " transferCharacteristics: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.transferCharacteristics << std::endl - << " colourMatrix: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.colourMatrix << std::endl - << " chromaSampleLocationFlag: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.chromaSampleLocationFlag << std::endl - << " chromaSampleLocationTop: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.chromaSampleLocationTop << std::endl - << " chromaSampleLocationBot: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.chromaSampleLocationBot << std::endl - << " bitstreamRestrictionFlag: " << pConfig->encodeCodecConfig.h264Config.h264VUIParameters.bitstreamRestrictionFlag << std::endl - << " ltrNumFrames: " << pConfig->encodeCodecConfig.h264Config.ltrNumFrames << std::endl - << " ltrTrustMode: " << pConfig->encodeCodecConfig.h264Config.ltrTrustMode << std::endl - << " chromaFormatIDC: " << pConfig->encodeCodecConfig.h264Config.chromaFormatIDC << std::endl - << " maxTemporalLayers: " << pConfig->encodeCodecConfig.h264Config.maxTemporalLayers << std::endl; - } else if (pInitializeParams->encodeGUID == NV_ENC_CODEC_HEVC_GUID) { - os - << "NV_ENC_CODEC_CONFIG (HEVC):" << std::endl - << " level: " << pConfig->encodeCodecConfig.hevcConfig.level << std::endl - << " tier: " << pConfig->encodeCodecConfig.hevcConfig.tier << std::endl - << " minCUSize: " << pConfig->encodeCodecConfig.hevcConfig.minCUSize << std::endl - << " maxCUSize: " << pConfig->encodeCodecConfig.hevcConfig.maxCUSize << std::endl - << " useConstrainedIntraPred: " << pConfig->encodeCodecConfig.hevcConfig.useConstrainedIntraPred << std::endl - << " disableDeblockAcrossSliceBoundary: " << pConfig->encodeCodecConfig.hevcConfig.disableDeblockAcrossSliceBoundary << std::endl - << " outputBufferingPeriodSEI: " << pConfig->encodeCodecConfig.hevcConfig.outputBufferingPeriodSEI << std::endl - << " outputPictureTimingSEI: " << pConfig->encodeCodecConfig.hevcConfig.outputPictureTimingSEI << std::endl - << " outputAUD: " << pConfig->encodeCodecConfig.hevcConfig.outputAUD << std::endl - << " enableLTR: " << pConfig->encodeCodecConfig.hevcConfig.enableLTR << std::endl - << " disableSPSPPS: " << pConfig->encodeCodecConfig.hevcConfig.disableSPSPPS << std::endl - << " repeatSPSPPS: " << pConfig->encodeCodecConfig.hevcConfig.repeatSPSPPS << std::endl - << " enableIntraRefresh: " << pConfig->encodeCodecConfig.hevcConfig.enableIntraRefresh << std::endl - << " chromaFormatIDC: " << pConfig->encodeCodecConfig.hevcConfig.chromaFormatIDC << std::endl - << " pixelBitDepthMinus8: " << pConfig->encodeCodecConfig.hevcConfig.pixelBitDepthMinus8 << std::endl - << " idrPeriod: " << pConfig->encodeCodecConfig.hevcConfig.idrPeriod << std::endl - << " intraRefreshPeriod: " << pConfig->encodeCodecConfig.hevcConfig.intraRefreshPeriod << std::endl - << " intraRefreshCnt: " << pConfig->encodeCodecConfig.hevcConfig.intraRefreshCnt << std::endl - << " maxNumRefFramesInDPB: " << pConfig->encodeCodecConfig.hevcConfig.maxNumRefFramesInDPB << std::endl - << " ltrNumFrames: " << pConfig->encodeCodecConfig.hevcConfig.ltrNumFrames << std::endl - << " vpsId: " << pConfig->encodeCodecConfig.hevcConfig.vpsId << std::endl - << " spsId: " << pConfig->encodeCodecConfig.hevcConfig.spsId << std::endl - << " ppsId: " << pConfig->encodeCodecConfig.hevcConfig.ppsId << std::endl - << " sliceMode: " << pConfig->encodeCodecConfig.hevcConfig.sliceMode << std::endl - << " sliceModeData: " << pConfig->encodeCodecConfig.hevcConfig.sliceModeData << std::endl - << " maxTemporalLayersMinus1: " << pConfig->encodeCodecConfig.hevcConfig.maxTemporalLayersMinus1 << std::endl - << " NV_ENC_CONFIG_HEVC_VUI_PARAMETERS:" << std::endl - << " overscanInfoPresentFlag: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.overscanInfoPresentFlag << std::endl - << " overscanInfo: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.overscanInfo << std::endl - << " videoSignalTypePresentFlag: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.videoSignalTypePresentFlag << std::endl - << " videoFormat: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.videoFormat << std::endl - << " videoFullRangeFlag: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.videoFullRangeFlag << std::endl - << " colourDescriptionPresentFlag: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.colourDescriptionPresentFlag << std::endl - << " colourPrimaries: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.colourPrimaries << std::endl - << " transferCharacteristics: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.transferCharacteristics << std::endl - << " colourMatrix: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.colourMatrix << std::endl - << " chromaSampleLocationFlag: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.chromaSampleLocationFlag << std::endl - << " chromaSampleLocationTop: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.chromaSampleLocationTop << std::endl - << " chromaSampleLocationBot: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.chromaSampleLocationBot << std::endl - << " bitstreamRestrictionFlag: " << pConfig->encodeCodecConfig.hevcConfig.hevcVUIParameters.bitstreamRestrictionFlag << std::endl - << " ltrTrustMode: " << pConfig->encodeCodecConfig.hevcConfig.ltrTrustMode << std::endl; - } - return os.str(); - } -}; diff --git a/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp b/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp index 4d8bc2a004..361b7f565a 100644 --- a/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp +++ b/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp @@ -155,6 +155,32 @@ alvr::EncodePipelineVAAPI::EncodePipelineVAAPI(std::vector& input_frame encoder_ctx->pix_fmt = AV_PIX_FMT_VAAPI; encoder_ctx->max_b_frames = 0; encoder_ctx->bit_rate = settings.mEncodeBitrateMBs * 1000 * 1000; + encoder_ctx->rc_min_rate = encoder_ctx->bit_rate; + encoder_ctx->rc_max_rate = encoder_ctx->bit_rate; + encoder_ctx->rc_buffer_size = encoder_ctx->bit_rate / settings.m_refreshRate; + + vlVaQualityBits quality = {}; + quality.valid_setting = 1; + quality.vbaq_mode = 1; //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas + switch (settings.m_encoderQualityPreset) + { + case ALVR_QUALITY: + quality.preset_mode = PRESET_MODE_QUALITY; + encoder_ctx->compression_level = quality.quality; // (QUALITY preset, no pre-encoding, vbaq) + break; + case ALVR_BALANCED: + quality.preset_mode = PRESET_MODE_BALANCE; + encoder_ctx->compression_level = quality.quality; // (BALANCE preset, no pre-encoding, vbaq) + break; + case ALVR_SPEED: + default: + quality.preset_mode = PRESET_MODE_SPEED; + encoder_ctx->compression_level = quality.quality; // (speed preset, no pre-encoding, vbaq) + break; + } + + AVUTIL.av_opt_set_int(encoder_ctx->priv_data, "idr_interval", INT_MAX, 0); + AVUTIL.av_opt_set_int(encoder_ctx->priv_data, "async_depth", 1, 0); set_hwframe_ctx(encoder_ctx, hw_ctx); diff --git a/alvr/server/cpp/platform/win32/NvCodecUtils.h b/alvr/server/cpp/platform/win32/NvCodecUtils.h index 17b41511c4..e4d451d32a 100644 --- a/alvr/server/cpp/platform/win32/NvCodecUtils.h +++ b/alvr/server/cpp/platform/win32/NvCodecUtils.h @@ -1,5 +1,5 @@ /* -* Copyright 2017-2018 NVIDIA Corporation. All rights reserved. +* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. * * Please refer to the NVIDIA end user license agreement (EULA) associated * with this source code for terms and conditions that govern your use of @@ -9,6 +9,13 @@ * */ +//--------------------------------------------------------------------------- +//! \file NvCodecUtils.h +//! \brief Miscellaneous classes and error checking functions. +//! +//! Used by Transcode/Encode samples apps for reading input files, mutithreading, performance measurement or colorspace conversion while decoding. +//--------------------------------------------------------------------------- + #pragma once #include #include @@ -16,15 +23,21 @@ #include #include #include -#include "alvr_server/Logger.h" +#include +#include +#include +#include #include +#include +#include +#include #ifdef __cuda_cuda_h__ inline bool check(CUresult e, int iLine, const char *szFile) { if (e != CUDA_SUCCESS) { const char *szErrName = NULL; cuGetErrorName(e, &szErrName); - LogDriver("CUDA driver API error %hs at line %d in file %hs", szErrName, iLine, szFile); + //LOG(FATAL) << "CUDA driver API error " << szErrName << " at line " << iLine << " in file " << szFile; return false; } return true; @@ -34,7 +47,7 @@ inline bool check(CUresult e, int iLine, const char *szFile) { #ifdef __CUDA_RUNTIME_H__ inline bool check(cudaError_t e, int iLine, const char *szFile) { if (e != cudaSuccess) { - LOG(FATAL) << "CUDA runtime API error " << cudaGetErrorName(e) << " at line " << iLine << " in file " << szFile; + //LOG(FATAL) << "CUDA runtime API error " << cudaGetErrorName(e) << " at line " << iLine << " in file " << szFile; return false; } return true; @@ -82,7 +95,9 @@ inline bool check(NVENCSTATUS e, int iLine, const char *szFile) { #ifdef _WINERROR_ inline bool check(HRESULT e, int iLine, const char *szFile) { if (e != S_OK) { - //LOG(FATAL) << "HRESULT error 0x" << (void *)(intptr_t)e << " at line " << iLine << " in file " << szFile; + std::stringstream stream; + stream << std::hex << std::uppercase << e; + //LOG(FATAL) << "HRESULT error 0x" << stream.str() << " at line " << iLine << " in file " << szFile; return false; } return true; @@ -108,7 +123,13 @@ inline bool check(int e, int iLine, const char *szFile) { } #define ck(call) check(call, __LINE__, __FILE__) +#define MAKE_FOURCC( ch0, ch1, ch2, ch3 ) \ + ( (uint32_t)(uint8_t)(ch0) | ( (uint32_t)(uint8_t)(ch1) << 8 ) | \ + ( (uint32_t)(uint8_t)(ch2) << 16 ) | ( (uint32_t)(uint8_t)(ch3) << 24 ) ) +/** +* @brief Wrapper class around std::thread +*/ class NvThread { public: @@ -150,23 +171,30 @@ class NvThread #ifndef _WIN32 #define _stricmp strcasecmp +#define _stat64 stat64 #endif +/** +* @brief Utility class to allocate buffer memory. Helps avoid I/O during the encode/decode loop in case of performance tests. +*/ class BufferedFileReader { public: + /** + * @brief Constructor function to allocate appropriate memory and copy file contents into it + */ BufferedFileReader(const char *szFileName, bool bPartial = false) { - struct stat st; + struct _stat64 st; - if (stat(szFileName, &st) != 0) { + if (_stat64(szFileName, &st) != 0) { return; } nSize = st.st_size; while (nSize) { try { - pBuf = new uint8_t[nSize]; + pBuf = new uint8_t[(size_t)nSize]; if (nSize != st.st_size) { - //LOG(WARNING) << "File is too large - only " << std::setprecision(4) << 100.0 * nSize / (uint32_t)st.st_size << "% is loaded"; + //LOG(WARNING) << "File is too large - only " << std::setprecision(4) << 100.0 * nSize / st.st_size << "% is loaded"; } break; } catch(std::bad_alloc) { @@ -195,7 +223,7 @@ class BufferedFileReader { delete[] pBuf; } } - bool GetBuffer(uint8_t **ppBuf, uint32_t *pnSize) { + bool GetBuffer(uint8_t **ppBuf, uint64_t *pnSize) { if (!pBuf) { return false; } @@ -207,35 +235,44 @@ class BufferedFileReader { private: uint8_t *pBuf = NULL; - uint32_t nSize = 0; + uint64_t nSize = 0; }; +/** +* @brief Template class to facilitate color space conversion +*/ template class YuvConverter { public: YuvConverter(int nWidth, int nHeight) : nWidth(nWidth), nHeight(nHeight) { - pQuad = new T[nWidth * nHeight / 4]; + pQuad = new T[((nWidth + 1) / 2) * ((nHeight + 1) / 2)]; } ~YuvConverter() { - delete pQuad; + delete[] pQuad; } void PlanarToUVInterleaved(T *pFrame, int nPitch = 0) { if (nPitch == 0) { nPitch = nWidth; } - T *puv = pFrame + nPitch * nHeight; + + // sizes of source surface plane + int nSizePlaneY = nPitch * nHeight; + int nSizePlaneU = ((nPitch + 1) / 2) * ((nHeight + 1) / 2); + int nSizePlaneV = nSizePlaneU; + + T *puv = pFrame + nSizePlaneY; if (nPitch == nWidth) { - memcpy(pQuad, puv, nWidth * nHeight / 4 * sizeof(T)); + memcpy(pQuad, puv, nSizePlaneU * sizeof(T)); } else { - for (int i = 0; i < nHeight / 2; i++) { - memcpy(pQuad + nWidth / 2 * i, puv + nPitch / 2 * i, nWidth / 2 * sizeof(T)); + for (int i = 0; i < (nHeight + 1) / 2; i++) { + memcpy(pQuad + ((nWidth + 1) / 2) * i, puv + ((nPitch + 1) / 2) * i, ((nWidth + 1) / 2) * sizeof(T)); } } - T *pv = puv + (nPitch / 2) * (nHeight / 2); - for (int y = 0; y < nHeight / 2; y++) { - for (int x = 0; x < nWidth / 2; x++) { - puv[y * nPitch + x * 2] = pQuad[y * nWidth / 2 + x]; - puv[y * nPitch + x * 2 + 1] = pv[y * nPitch / 2 + x]; + T *pv = puv + nSizePlaneU; + for (int y = 0; y < (nHeight + 1) / 2; y++) { + for (int x = 0; x < (nWidth + 1) / 2; x++) { + puv[y * nPitch + x * 2] = pQuad[y * ((nWidth + 1) / 2) + x]; + puv[y * nPitch + x * 2 + 1] = pv[y * ((nPitch + 1) / 2) + x]; } } } @@ -243,20 +280,28 @@ class YuvConverter { if (nPitch == 0) { nPitch = nWidth; } - T *puv = pFrame + nPitch * nHeight, + + // sizes of source surface plane + int nSizePlaneY = nPitch * nHeight; + int nSizePlaneU = ((nPitch + 1) / 2) * ((nHeight + 1) / 2); + int nSizePlaneV = nSizePlaneU; + + T *puv = pFrame + nSizePlaneY, *pu = puv, - *pv = puv + nPitch * nHeight / 4; - for (int y = 0; y < nHeight / 2; y++) { - for (int x = 0; x < nWidth / 2; x++) { - pu[y * nPitch / 2 + x] = puv[y * nPitch + x * 2]; - pQuad[y * nWidth / 2 + x] = puv[y * nPitch + x * 2 + 1]; + *pv = puv + nSizePlaneU; + + // split chroma from interleave to planar + for (int y = 0; y < (nHeight + 1) / 2; y++) { + for (int x = 0; x < (nWidth + 1) / 2; x++) { + pu[y * ((nPitch + 1) / 2) + x] = puv[y * nPitch + x * 2]; + pQuad[y * ((nWidth + 1) / 2) + x] = puv[y * nPitch + x * 2 + 1]; } } if (nPitch == nWidth) { - memcpy(pv, pQuad, nWidth * nHeight / 4 * sizeof(T)); + memcpy(pv, pQuad, nSizePlaneV * sizeof(T)); } else { - for (int i = 0; i < nHeight / 2; i++) { - memcpy(pv + nPitch / 2 * i, pQuad + nWidth / 2 * i, nWidth / 2 * sizeof(T)); + for (int i = 0; i < (nHeight + 1) / 2; i++) { + memcpy(pv + ((nPitch + 1) / 2) * i, pQuad + ((nWidth + 1) / 2) * i, ((nWidth + 1) / 2) * sizeof(T)); } } } @@ -266,6 +311,64 @@ class YuvConverter { int nWidth, nHeight; }; +/** +* @brief Class for writing IVF format header for AV1 codec +*/ +class IVFUtils { +public: + void WriteFileHeader(std::vector &vPacket, uint32_t nFourCC, uint32_t nWidth, uint32_t nHeight, uint32_t nFrameRateNum, uint32_t nFrameRateDen, uint32_t nFrameCnt) + { + char header[32]; + + header[0] = 'D'; + header[1] = 'K'; + header[2] = 'I'; + header[3] = 'F'; + mem_put_le16(header + 4, 0); // version + mem_put_le16(header + 6, 32); // header size + mem_put_le32(header + 8, nFourCC); // fourcc + mem_put_le16(header + 12, nWidth); // width + mem_put_le16(header + 14, nHeight); // height + mem_put_le32(header + 16, nFrameRateNum); // rate + mem_put_le32(header + 20, nFrameRateDen); // scale + mem_put_le32(header + 24, nFrameCnt); // length + mem_put_le32(header + 28, 0); // unused + + vPacket.insert(vPacket.end(), &header[0], &header[32]); + } + + void WriteFrameHeader(std::vector &vPacket, size_t nFrameSize, int64_t pts) + { + char header[12]; + mem_put_le32(header, (int)nFrameSize); + mem_put_le32(header + 4, (int)(pts & 0xFFFFFFFF)); + mem_put_le32(header + 8, (int)(pts >> 32)); + + vPacket.insert(vPacket.end(), &header[0], &header[12]); + } + +private: + static inline void mem_put_le32(void *vmem, int val) + { + unsigned char *mem = (unsigned char *)vmem; + mem[0] = (unsigned char)((val >> 0) & 0xff); + mem[1] = (unsigned char)((val >> 8) & 0xff); + mem[2] = (unsigned char)((val >> 16) & 0xff); + mem[3] = (unsigned char)((val >> 24) & 0xff); + } + + static inline void mem_put_le16(void *vmem, int val) + { + unsigned char *mem = (unsigned char *)vmem; + mem[0] = (unsigned char)((val >> 0) & 0xff); + mem[1] = (unsigned char)((val >> 8) & 0xff); + } + +}; + +/** +* @brief Utility class to measure elapsed time in seconds between the block of executed code +*/ class StopWatch { public: void Start() { @@ -279,6 +382,95 @@ class StopWatch { std::chrono::high_resolution_clock::time_point t0; }; +template +class ConcurrentQueue +{ + public: + + ConcurrentQueue() {} + ConcurrentQueue(size_t size) : maxSize(size) {} + ConcurrentQueue(const ConcurrentQueue&) = delete; + ConcurrentQueue& operator=(const ConcurrentQueue&) = delete; + + void setSize(size_t s) { + maxSize = s; + } + + void push_back(const T& value) { + // Do not use a std::lock_guard here. We will need to explicitly + // unlock before notify_one as the other waiting thread will + // automatically try to acquire mutex once it wakes up + // (which will happen on notify_one) + std::unique_lock lock(m_mutex); + auto wasEmpty = m_List.empty(); + + while (full()) { + m_cond.wait(lock); + } + + m_List.push_back(value); + if (wasEmpty && !m_List.empty()) { + lock.unlock(); + m_cond.notify_one(); + } + } + + T pop_front() { + std::unique_lock lock(m_mutex); + + while (m_List.empty()) { + m_cond.wait(lock); + } + auto wasFull = full(); + T data = std::move(m_List.front()); + m_List.pop_front(); + + if (wasFull && !full()) { + lock.unlock(); + m_cond.notify_one(); + } + + return data; + } + + T front() { + std::unique_lock lock(m_mutex); + + while (m_List.empty()) { + m_cond.wait(lock); + } + + return m_List.front(); + } + + size_t size() { + std::unique_lock lock(m_mutex); + return m_List.size(); + } + + bool empty() { + std::unique_lock lock(m_mutex); + return m_List.empty(); + } + void clear() { + std::unique_lock lock(m_mutex); + m_List.clear(); + } + +private: + bool full() { + if (m_List.size() == maxSize) + return true; + return false; + } + +private: + std::list m_List; + std::mutex m_mutex; + std::condition_variable m_cond; + size_t maxSize; +}; + inline void CheckInputFile(const char *szInFilePath) { std::ifstream fpIn(szInFilePath, std::ios::in | std::ios::binary); if (fpIn.fail()) { @@ -288,14 +480,44 @@ inline void CheckInputFile(const char *szInFilePath) { } } -void Nv12ToBgra32(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); -void Nv12ToBgra64(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); +inline void ValidateResolution(int nWidth, int nHeight) { + + if (nWidth <= 0 || nHeight <= 0) { + std::ostringstream err; + err << "Please specify positive non zero resolution as -s WxH. Current resolution is " << nWidth << "x" << nHeight << std::endl; + throw std::invalid_argument(err.str()); + } +} + +template +void Nv12ToColor32(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); +template +void Nv12ToColor64(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); + +template +void P016ToColor32(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); +template +void P016ToColor64(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); + +template +void YUV444ToColor32(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); +template +void YUV444ToColor64(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); -void P016ToBgra32(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); -void P016ToBgra64(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); +template +void YUV444P16ToColor32(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); +template +void YUV444P16ToColor64(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); -void Nv12ToBgrPlanar(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 0); -void P016ToBgrPlanar(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 4); +template +void Nv12ToColorPlanar(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 0); +template +void P016ToColorPlanar(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 4); + +template +void YUV444ToColorPlanar(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 0); +template +void YUV444P16ToColorPlanar(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 4); void Bgra64ToP016(uint8_t *dpBgra, int nBgraPitch, uint8_t *dpP016, int nP016Pitch, int nWidth, int nHeight, int iMatrix = 4); @@ -307,3 +529,7 @@ void ResizeP016(unsigned char *dpDstP016, int nDstPitch, int nDstWidth, int nDst void ScaleYUV420(unsigned char *dpDstY, unsigned char* dpDstU, unsigned char* dpDstV, int nDstPitch, int nDstChromaPitch, int nDstWidth, int nDstHeight, unsigned char *dpSrcY, unsigned char* dpSrcU, unsigned char* dpSrcV, int nSrcPitch, int nSrcChromaPitch, int nSrcWidth, int nSrcHeight, bool bSemiplanar); + +#ifdef __cuda_cuda_h__ +void ComputeCRC(uint8_t *pBuffer, uint32_t *crcValue, CUstream_st *outputCUStream); +#endif diff --git a/alvr/server/cpp/platform/win32/NvEncoder.cpp b/alvr/server/cpp/platform/win32/NvEncoder.cpp index 06f0f98b05..522091d406 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.cpp +++ b/alvr/server/cpp/platform/win32/NvEncoder.cpp @@ -1,5 +1,5 @@ /* -* Copyright 2017-2018 NVIDIA Corporation. All rights reserved. +* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. * * Please refer to the NVIDIA end user license agreement (EULA) associated * with this source code for terms and conditions that govern your use of @@ -23,7 +23,7 @@ static inline bool operator!=(const GUID &guid1, const GUID &guid2) { #endif NvEncoder::NvEncoder(NV_ENC_DEVICE_TYPE eDeviceType, void *pDevice, uint32_t nWidth, uint32_t nHeight, NV_ENC_BUFFER_FORMAT eBufferFormat, - uint32_t nExtraOutputDelay, bool bMotionEstimationOnly) : + uint32_t nExtraOutputDelay, bool bMotionEstimationOnly, bool bOutputInVideoMemory, bool bDX12Encode, bool bUseIVFContainer) : m_pDevice(pDevice), m_eDeviceType(eDeviceType), m_nWidth(nWidth), @@ -32,6 +32,9 @@ NvEncoder::NvEncoder(NV_ENC_DEVICE_TYPE eDeviceType, void *pDevice, uint32_t nWi m_nMaxEncodeHeight(nHeight), m_eBufferFormat(eBufferFormat), m_bMotionEstimationOnly(bMotionEstimationOnly), + m_bOutputInVideoMemory(bOutputInVideoMemory), + m_bIsDX12Encode(bDX12Encode), + m_bUseIVFContainer(bUseIVFContainer), m_nExtraOutputDelay(nExtraOutputDelay), m_hEncoder(nullptr) { @@ -49,7 +52,6 @@ NvEncoder::NvEncoder(NV_ENC_DEVICE_TYPE eDeviceType, void *pDevice, uint32_t nWi encodeSessionExParams.apiVersion = NVENCAPI_VERSION; void *hEncoder = NULL; NVENC_API_CALL(m_nvenc.nvEncOpenEncodeSessionEx(&encodeSessionExParams, &hEncoder)); - m_hEncoder = hEncoder; } @@ -118,7 +120,7 @@ NvEncoder::~NvEncoder() } } -void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeParams, GUID codecGuid, GUID presetGuid) +void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeParams, GUID codecGuid, GUID presetGuid, NV_ENC_TUNING_INFO tuningInfo) { if (!m_hEncoder) { @@ -154,8 +156,12 @@ void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeP pIntializeParams->maxEncodeWidth = m_nWidth; pIntializeParams->maxEncodeHeight = m_nHeight; pIntializeParams->enableMEOnlyMode = m_bMotionEstimationOnly; + pIntializeParams->enableOutputInVidmem = m_bOutputInVideoMemory; #if defined(_WIN32) - pIntializeParams->enableEncodeAsync = true; + if (!m_bOutputInVideoMemory) + { + pIntializeParams->enableEncodeAsync = GetCapabilityValue(codecGuid, NV_ENC_CAPS_ASYNC_ENCODE_SUPPORT); + } #endif NV_ENC_PRESET_CONFIG presetConfig = { NV_ENC_PRESET_CONFIG_VER, { NV_ENC_CONFIG_VER } }; @@ -166,12 +172,20 @@ void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeP pIntializeParams->encodeConfig->rcParams.rateControlMode = NV_ENC_PARAMS_RC_CONSTQP; - if (pIntializeParams->presetGUID != NV_ENC_PRESET_LOSSLESS_DEFAULT_GUID - && pIntializeParams->presetGUID != NV_ENC_PRESET_LOSSLESS_HP_GUID) + if (!m_bMotionEstimationOnly) { - pIntializeParams->encodeConfig->rcParams.constQP = { 28, 31, 25 }; + pIntializeParams->tuningInfo = tuningInfo; + NV_ENC_PRESET_CONFIG presetConfig = { NV_ENC_PRESET_CONFIG_VER, { NV_ENC_CONFIG_VER } }; + m_nvenc.nvEncGetEncodePresetConfigEx(m_hEncoder, codecGuid, presetGuid, tuningInfo, &presetConfig); + memcpy(pIntializeParams->encodeConfig, &presetConfig.presetCfg, sizeof(NV_ENC_CONFIG)); } - + else + { + m_encodeConfig.version = NV_ENC_CONFIG_VER; + m_encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CONSTQP; + m_encodeConfig.rcParams.constQP = { 28, 31, 25 }; + } + if (pIntializeParams->encodeGUID == NV_ENC_CODEC_H264_GUID) { if (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) @@ -190,7 +204,23 @@ void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeP } pIntializeParams->encodeConfig->encodeCodecConfig.hevcConfig.idrPeriod = pIntializeParams->encodeConfig->gopLength; } + else if (pIntializeParams->encodeGUID == NV_ENC_CODEC_AV1_GUID) + { + pIntializeParams->encodeConfig->encodeCodecConfig.av1Config.pixelBitDepthMinus8 = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT) ? 2 : 0; + pIntializeParams->encodeConfig->encodeCodecConfig.av1Config.inputPixelBitDepthMinus8 = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT) ? 2 : 0; + pIntializeParams->encodeConfig->encodeCodecConfig.av1Config.chromaFormatIDC = 1; + pIntializeParams->encodeConfig->encodeCodecConfig.av1Config.idrPeriod = pIntializeParams->encodeConfig->gopLength; + if (m_bOutputInVideoMemory) + { + pIntializeParams->encodeConfig->frameIntervalP = 1; + } + } + if (m_bIsDX12Encode) + { + pIntializeParams->bufferFormat = m_eBufferFormat; + } + return; } @@ -211,7 +241,7 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) NVENC_THROW_ERROR("Invalid encoder width and height", NV_ENC_ERR_INVALID_PARAM); } - if (pEncoderParams->encodeGUID != NV_ENC_CODEC_H264_GUID && pEncoderParams->encodeGUID != NV_ENC_CODEC_HEVC_GUID) + if (pEncoderParams->encodeGUID != NV_ENC_CODEC_H264_GUID && pEncoderParams->encodeGUID != NV_ENC_CODEC_HEVC_GUID && pEncoderParams->encodeGUID != NV_ENC_CODEC_AV1_GUID) { NVENC_THROW_ERROR("Invalid codec guid", NV_ENC_ERR_INVALID_PARAM); } @@ -224,6 +254,14 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) } } + if (pEncoderParams->encodeGUID == NV_ENC_CODEC_AV1_GUID) + { + if (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) + { + NVENC_THROW_ERROR("YUV444 format isn't supported by AV1 encoder", NV_ENC_ERR_INVALID_PARAM); + } + } + // set other necessary params if not set yet if (pEncoderParams->encodeGUID == NV_ENC_CODEC_H264_GUID) { @@ -249,6 +287,25 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) } } + if (pEncoderParams->encodeGUID == NV_ENC_CODEC_AV1_GUID) + { + bool yuv10BitFormat = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT) ? true : false; + if (yuv10BitFormat && pEncoderParams->encodeConfig->encodeCodecConfig.av1Config.pixelBitDepthMinus8 != 2) + { + NVENC_THROW_ERROR("Invalid PixelBitdepth", NV_ENC_ERR_INVALID_PARAM); + } + + if (pEncoderParams->encodeConfig->encodeCodecConfig.av1Config.chromaFormatIDC != 1) + { + NVENC_THROW_ERROR("Invalid ChromaFormatIDC", NV_ENC_ERR_INVALID_PARAM); + } + + if (m_bOutputInVideoMemory && pEncoderParams->encodeConfig->frameIntervalP > 1) + { + NVENC_THROW_ERROR("Alt Ref frames not supported for AV1 in case of OutputInVideoMemory", NV_ENC_ERR_INVALID_PARAM); + } + } + memcpy(&m_initializeParams, pEncoderParams, sizeof(m_initializeParams)); m_initializeParams.version = NV_ENC_INITIALIZE_PARAMS_VER; @@ -260,11 +317,21 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) else { NV_ENC_PRESET_CONFIG presetConfig = { NV_ENC_PRESET_CONFIG_VER, { NV_ENC_CONFIG_VER } }; - m_nvenc.nvEncGetEncodePresetConfig(m_hEncoder, pEncoderParams->encodeGUID, NV_ENC_PRESET_DEFAULT_GUID, &presetConfig); - memcpy(&m_encodeConfig, &presetConfig.presetCfg, sizeof(NV_ENC_CONFIG)); - m_encodeConfig.version = NV_ENC_CONFIG_VER; - m_encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CONSTQP; - m_encodeConfig.rcParams.constQP = { 28, 31, 25 }; + if (!m_bMotionEstimationOnly) + { + m_nvenc.nvEncGetEncodePresetConfigEx(m_hEncoder, pEncoderParams->encodeGUID, pEncoderParams->presetGUID, pEncoderParams->tuningInfo, &presetConfig); + memcpy(&m_encodeConfig, &presetConfig.presetCfg, sizeof(NV_ENC_CONFIG)); + if (m_bOutputInVideoMemory && pEncoderParams->encodeGUID == NV_ENC_CODEC_AV1_GUID) + { + m_encodeConfig.frameIntervalP = 1; + } + } + else + { + m_encodeConfig.version = NV_ENC_CONFIG_VER; + m_encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CONSTQP; + m_encodeConfig.rcParams.constQP = { 28, 31, 25 }; + } } m_initializeParams.encodeConfig = &m_encodeConfig; @@ -278,31 +345,43 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) m_nEncoderBuffer = m_encodeConfig.frameIntervalP + m_encodeConfig.rcParams.lookaheadDepth + m_nExtraOutputDelay; m_nOutputDelay = m_nEncoderBuffer - 1; - m_vMappedInputBuffers.resize(m_nEncoderBuffer, nullptr); - m_vBitstreamOutputBuffer.resize(m_nEncoderBuffer, nullptr); - for (int i = 0; i < m_nEncoderBuffer; i++) + if (!m_bOutputInVideoMemory) { - NV_ENC_CREATE_BITSTREAM_BUFFER createBitstreamBuffer = { NV_ENC_CREATE_BITSTREAM_BUFFER_VER }; - NVENC_API_CALL(m_nvenc.nvEncCreateBitstreamBuffer(m_hEncoder, &createBitstreamBuffer)); - m_vBitstreamOutputBuffer[i] = createBitstreamBuffer.bitstreamBuffer; + m_vpCompletionEvent.resize(m_nEncoderBuffer, nullptr); } - m_vpCompletionEvent.resize(m_nEncoderBuffer, nullptr); #if defined(_WIN32) - for (int i = 0; i < m_nEncoderBuffer; i++) + for (uint32_t i = 0; i < m_vpCompletionEvent.size(); i++) { m_vpCompletionEvent[i] = CreateEvent(NULL, FALSE, FALSE, NULL); - NV_ENC_EVENT_PARAMS eventParams = { NV_ENC_EVENT_PARAMS_VER }; - eventParams.completionEvent = m_vpCompletionEvent[i]; - m_nvenc.nvEncRegisterAsyncEvent(m_hEncoder, &eventParams); + if (!m_bIsDX12Encode) + { + NV_ENC_EVENT_PARAMS eventParams = { NV_ENC_EVENT_PARAMS_VER }; + eventParams.completionEvent = m_vpCompletionEvent[i]; + m_nvenc.nvEncRegisterAsyncEvent(m_hEncoder, &eventParams); + } } #endif + m_vMappedInputBuffers.resize(m_nEncoderBuffer, nullptr); + if (m_bMotionEstimationOnly) { m_vMappedRefBuffers.resize(m_nEncoderBuffer, nullptr); - InitializeMVOutputBuffer(); + + if (!m_bOutputInVideoMemory) + { + InitializeMVOutputBuffer(); + } + } + else + { + if (!m_bOutputInVideoMemory && !m_bIsDX12Encode) + { + m_vBitstreamOutputBuffer.resize(m_nEncoderBuffer, nullptr); + InitializeBitstreamBuffer(); + } } AllocateInputBuffers(m_nEncoderBuffer); @@ -327,23 +406,17 @@ void NvEncoder::DestroyHWEncoder() return; } - for (uint32_t i = 0; i < m_vBitstreamOutputBuffer.size(); i++) - { - if (m_vBitstreamOutputBuffer[i]) - { - m_nvenc.nvEncDestroyBitstreamBuffer(m_hEncoder, m_vBitstreamOutputBuffer[i]); - } - } - m_vBitstreamOutputBuffer.clear(); - #if defined(_WIN32) for (uint32_t i = 0; i < m_vpCompletionEvent.size(); i++) { if (m_vpCompletionEvent[i]) { - NV_ENC_EVENT_PARAMS eventParams = { NV_ENC_EVENT_PARAMS_VER }; - eventParams.completionEvent = m_vpCompletionEvent[i]; - m_nvenc.nvEncUnregisterAsyncEvent(m_hEncoder, &eventParams); + if (!m_bIsDX12Encode) + { + NV_ENC_EVENT_PARAMS eventParams = { NV_ENC_EVENT_PARAMS_VER }; + eventParams.completionEvent = m_vpCompletionEvent[i]; + m_nvenc.nvEncUnregisterAsyncEvent(m_hEncoder, &eventParams); + } CloseHandle(m_vpCompletionEvent[i]); } } @@ -354,6 +427,11 @@ void NvEncoder::DestroyHWEncoder() { DestroyMVOutputBuffer(); } + else + { + if (!m_bIsDX12Encode) + DestroyBitstreamBuffer(); + } m_nvenc.nvEncDestroyEncoder(m_hEncoder); @@ -374,6 +452,22 @@ const NvEncInputFrame* NvEncoder::GetNextReferenceFrame() return &m_vReferenceFrames[i]; } +void NvEncoder::MapResources(uint32_t bfrIdx) +{ + NV_ENC_MAP_INPUT_RESOURCE mapInputResource = { NV_ENC_MAP_INPUT_RESOURCE_VER }; + + mapInputResource.registeredResource = m_vRegisteredResources[bfrIdx]; + NVENC_API_CALL(m_nvenc.nvEncMapInputResource(m_hEncoder, &mapInputResource)); + m_vMappedInputBuffers[bfrIdx] = mapInputResource.mappedResource; + + if (m_bMotionEstimationOnly) + { + mapInputResource.registeredResource = m_vRegisteredResourcesForReference[bfrIdx]; + NVENC_API_CALL(m_nvenc.nvEncMapInputResource(m_hEncoder, &mapInputResource)); + m_vMappedRefBuffers[bfrIdx] = mapInputResource.mappedResource; + } +} + void NvEncoder::EncodeFrame(std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams) { vPacket.clear(); @@ -381,12 +475,22 @@ void NvEncoder::EncodeFrame(std::vector> &vPacket, NV_ENC_P { NVENC_THROW_ERROR("Encoder device not found", NV_ENC_ERR_NO_ENCODE_DEVICE); } - int i = m_iToSend % m_nEncoderBuffer; - NV_ENC_MAP_INPUT_RESOURCE mapInputResource = { NV_ENC_MAP_INPUT_RESOURCE_VER }; - mapInputResource.registeredResource = m_vRegisteredResources[i]; - NVENC_API_CALL(m_nvenc.nvEncMapInputResource(m_hEncoder, &mapInputResource)); - m_vMappedInputBuffers[i] = mapInputResource.mappedResource; - DoEncode(m_vMappedInputBuffers[i], vPacket, pPicParams); + + int bfrIdx = m_iToSend % m_nEncoderBuffer; + + MapResources(bfrIdx); + + NVENCSTATUS nvStatus = DoEncode(m_vMappedInputBuffers[bfrIdx], m_vBitstreamOutputBuffer[bfrIdx], pPicParams); + + if (nvStatus == NV_ENC_SUCCESS || nvStatus == NV_ENC_ERR_NEED_MORE_INPUT) + { + m_iToSend++; + GetEncodedPacket(m_vBitstreamOutputBuffer, vPacket, true); + } + else + { + NVENC_THROW_ERROR("nvEncEncodePicture API failed", nvStatus); + } } void NvEncoder::RunMotionEstimation(std::vector &mvData) @@ -397,21 +501,27 @@ void NvEncoder::RunMotionEstimation(std::vector &mvData) return; } - const uint32_t i = m_iToSend % m_nEncoderBuffer; + const uint32_t bfrIdx = m_iToSend % m_nEncoderBuffer; - NV_ENC_MAP_INPUT_RESOURCE mapInputResource = { NV_ENC_MAP_INPUT_RESOURCE_VER }; - mapInputResource.registeredResource = m_vRegisteredResources[i]; - NVENC_API_CALL(m_nvenc.nvEncMapInputResource(m_hEncoder, &mapInputResource)); - NV_ENC_INPUT_PTR pDeviceMemoryInputBuffer = mapInputResource.mappedResource; - m_vMappedInputBuffers[i] = mapInputResource.mappedResource; + MapResources(bfrIdx); + NVENCSTATUS nvStatus = DoMotionEstimation(m_vMappedInputBuffers[bfrIdx], m_vMappedRefBuffers[bfrIdx], m_vMVDataOutputBuffer[bfrIdx]); - mapInputResource.registeredResource = m_vRegisteredResourcesForReference[i]; - NVENC_API_CALL(m_nvenc.nvEncMapInputResource(m_hEncoder, &mapInputResource)); - NV_ENC_INPUT_PTR pDeviceMemoryInputBufferForReference = mapInputResource.mappedResource; - m_vMappedRefBuffers[i] = mapInputResource.mappedResource; - - DoMotionEstimation(pDeviceMemoryInputBuffer, pDeviceMemoryInputBufferForReference, mvData); + if (nvStatus == NV_ENC_SUCCESS) + { + m_iToSend++; + std::vector> vPacket; + GetEncodedPacket(m_vMVDataOutputBuffer, vPacket, true); + if (vPacket.size() != 1) + { + NVENC_THROW_ERROR("GetEncodedPacket() doesn't return one (and only one) MVData", NV_ENC_ERR_GENERIC); + } + mvData = vPacket[0]; + } + else + { + NVENC_THROW_ERROR("nvEncEncodePicture API failed", nvStatus); + } } @@ -430,7 +540,7 @@ void NvEncoder::GetSequenceParams(std::vector &seqParams) seqParams.insert(seqParams.end(), &spsppsData[0], &spsppsData[spsppsSize]); } -void NvEncoder::DoEncode(NV_ENC_INPUT_PTR inputBuffer, std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams) +NVENCSTATUS NvEncoder::DoEncode(NV_ENC_INPUT_PTR inputBuffer, NV_ENC_OUTPUT_PTR outputBuffer, NV_ENC_PIC_PARAMS *pPicParams) { NV_ENC_PIC_PARAMS picParams = {}; if (pPicParams) @@ -443,18 +553,19 @@ void NvEncoder::DoEncode(NV_ENC_INPUT_PTR inputBuffer, std::vector> &vPacket) @@ -465,10 +576,8 @@ void NvEncoder::EndEncode(std::vector> &vPacket) NVENC_THROW_ERROR("Encoder device not initialized", NV_ENC_ERR_ENCODER_NOT_INITIALIZED); } - NV_ENC_PIC_PARAMS picParams = { NV_ENC_PIC_PARAMS_VER }; - picParams.encodePicFlags = NV_ENC_PIC_FLAG_EOS; - picParams.completionEvent = m_vpCompletionEvent[m_iToSend % m_nEncoderBuffer]; - NVENC_API_CALL(m_nvenc.nvEncEncodePicture(m_hEncoder, &picParams)); + SendEOS(); + GetEncodedPacket(m_vBitstreamOutputBuffer, vPacket, false); } @@ -490,7 +599,19 @@ void NvEncoder::GetEncodedPacket(std::vector &vOutputBuffer, vPacket.push_back(std::vector()); } vPacket[i].clear(); + + if ((m_initializeParams.encodeGUID == NV_ENC_CODEC_AV1_GUID) && (m_bUseIVFContainer)) + { + if (m_bWriteIVFFileHeader) + { + m_IVFUtils.WriteFileHeader(vPacket[i], MAKE_FOURCC('A', 'V', '0', '1'), m_initializeParams.encodeWidth, m_initializeParams.encodeHeight, m_initializeParams.frameRateNum, m_initializeParams.frameRateDen, 0xFFFF); + m_bWriteIVFFileHeader = false; + } + + m_IVFUtils.WriteFrameHeader(vPacket[i], lockBitstreamData.bitstreamSizeInBytes, lockBitstreamData.outputTimeStamp); + } vPacket[i].insert(vPacket[i].end(), &pData[0], &pData[lockBitstreamData.bitstreamSizeInBytes]); + i++; NVENC_API_CALL(m_nvenc.nvEncUnlockBitstream(m_hEncoder, lockBitstreamData.outputBitstream)); @@ -527,20 +648,31 @@ bool NvEncoder::Reconfigure(const NV_ENC_RECONFIGURE_PARAMS *pReconfigureParams) return true; } -void NvEncoder::RegisterResources(std::vector inputframes, NV_ENC_INPUT_RESOURCE_TYPE eResourceType, +NV_ENC_REGISTERED_PTR NvEncoder::RegisterResource(void *pBuffer, NV_ENC_INPUT_RESOURCE_TYPE eResourceType, + int width, int height, int pitch, NV_ENC_BUFFER_FORMAT bufferFormat, NV_ENC_BUFFER_USAGE bufferUsage, + NV_ENC_FENCE_POINT_D3D12* pInputFencePoint) +{ + NV_ENC_REGISTER_RESOURCE registerResource = { NV_ENC_REGISTER_RESOURCE_VER }; + registerResource.resourceType = eResourceType; + registerResource.resourceToRegister = pBuffer; + registerResource.width = width; + registerResource.height = height; + registerResource.pitch = pitch; + registerResource.bufferFormat = bufferFormat; + registerResource.bufferUsage = bufferUsage; + registerResource.pInputFencePoint = pInputFencePoint; + NVENC_API_CALL(m_nvenc.nvEncRegisterResource(m_hEncoder, ®isterResource)); + + return registerResource.registeredResource; +} + +void NvEncoder::RegisterInputResources(std::vector inputframes, NV_ENC_INPUT_RESOURCE_TYPE eResourceType, int width, int height, int pitch, NV_ENC_BUFFER_FORMAT bufferFormat, bool bReferenceFrame) { for (uint32_t i = 0; i < inputframes.size(); ++i) { - NV_ENC_REGISTER_RESOURCE registerResource = { NV_ENC_REGISTER_RESOURCE_VER }; - registerResource.resourceType = eResourceType; - registerResource.resourceToRegister = (void *)inputframes[i]; - registerResource.width = width; - registerResource.height = height; - registerResource.pitch = pitch; - registerResource.bufferFormat = bufferFormat; - NVENC_API_CALL(m_nvenc.nvEncRegisterResource(m_hEncoder, ®isterResource)); - + NV_ENC_REGISTERED_PTR registeredPtr = RegisterResource(inputframes[i], eResourceType, width, height, pitch, bufferFormat, NV_ENC_INPUT_IMAGE); + std::vector _chromaOffsets; NvEncoder::GetChromaSubPlaneOffsets(bufferFormat, pitch, height, _chromaOffsets); NvEncInputFrame inputframe = {}; @@ -559,30 +691,39 @@ void NvEncoder::RegisterResources(std::vector inputframes, NV_ENC_INPUT_R if (bReferenceFrame) { - m_vRegisteredResourcesForReference.push_back(registerResource.registeredResource); + m_vRegisteredResourcesForReference.push_back(registeredPtr); m_vReferenceFrames.push_back(inputframe); } else { - m_vRegisteredResources.push_back(registerResource.registeredResource); + m_vRegisteredResources.push_back(registeredPtr); m_vInputFrames.push_back(inputframe); } } } -void NvEncoder::UnregisterResources() +void NvEncoder::FlushEncoder() { - // Incase of error it is possible for buffers still mapped to encoder. - // flush the encoder queue and then unmapped it if any surface is still mapped - try - { - std::vector> vPacket; - EndEncode(vPacket); - } - catch (...) + if (!m_bMotionEstimationOnly && !m_bOutputInVideoMemory) { + // Incase of error it is possible for buffers still mapped to encoder. + // flush the encoder queue and then unmapped it if any surface is still mapped + try + { + std::vector> vPacket; + EndEncode(vPacket); + } + catch (...) + { + } } +} + +void NvEncoder::UnregisterInputResources() +{ + FlushEncoder(); + if (m_bMotionEstimationOnly) { for (uint32_t i = 0; i < m_vMappedRefBuffers.size(); ++i) @@ -629,6 +770,16 @@ void NvEncoder::UnregisterResources() void NvEncoder::WaitForCompletionEvent(int iEvent) { #if defined(_WIN32) + // Check if we are in async mode. If not, don't wait for event; + NV_ENC_CONFIG sEncodeConfig = { 0 }; + NV_ENC_INITIALIZE_PARAMS sInitializeParams = { 0 }; + sInitializeParams.encodeConfig = &sEncodeConfig; + GetInitializeParams(&sInitializeParams); + + if (0U == sInitializeParams.enableEncodeAsync) + { + return; + } #ifdef DEBUG WaitForSingleObject(m_vpCompletionEvent[iEvent], INFINITE); #else @@ -684,7 +835,7 @@ uint32_t NvEncoder::GetNumChromaPlanes(const NV_ENC_BUFFER_FORMAT bufferFormat) return 0; default: NVENC_THROW_ERROR("Invalid Buffer format", NV_ENC_ERR_INVALID_PARAM); - return (uint32_t)-1; + return -1; } } @@ -708,7 +859,7 @@ uint32_t NvEncoder::GetChromaPitch(const NV_ENC_BUFFER_FORMAT bufferFormat,const return 0; default: NVENC_THROW_ERROR("Invalid Buffer format", NV_ENC_ERR_INVALID_PARAM); - return (uint32_t)-1; + return -1; } } @@ -846,6 +997,29 @@ void NvEncoder::GetInitializeParams(NV_ENC_INITIALIZE_PARAMS *pInitializeParams) pInitializeParams->encodeConfig = pEncodeConfig; } +void NvEncoder::InitializeBitstreamBuffer() +{ + for (int i = 0; i < m_nEncoderBuffer; i++) + { + NV_ENC_CREATE_BITSTREAM_BUFFER createBitstreamBuffer = { NV_ENC_CREATE_BITSTREAM_BUFFER_VER }; + NVENC_API_CALL(m_nvenc.nvEncCreateBitstreamBuffer(m_hEncoder, &createBitstreamBuffer)); + m_vBitstreamOutputBuffer[i] = createBitstreamBuffer.bitstreamBuffer; + } +} + +void NvEncoder::DestroyBitstreamBuffer() +{ + for (uint32_t i = 0; i < m_vBitstreamOutputBuffer.size(); i++) + { + if (m_vBitstreamOutputBuffer[i]) + { + m_nvenc.nvEncDestroyBitstreamBuffer(m_hEncoder, m_vBitstreamOutputBuffer[i]); + } + } + + m_vBitstreamOutputBuffer.clear(); +} + void NvEncoder::InitializeMVOutputBuffer() { for (int i = 0; i < m_nEncoderBuffer; i++) @@ -869,29 +1043,16 @@ void NvEncoder::DestroyMVOutputBuffer() m_vMVDataOutputBuffer.clear(); } -void NvEncoder::DoMotionEstimation(NV_ENC_INPUT_PTR inputBuffer, NV_ENC_INPUT_PTR inputBufferForReference, std::vector &mvData) +NVENCSTATUS NvEncoder::DoMotionEstimation(NV_ENC_INPUT_PTR inputBuffer, NV_ENC_INPUT_PTR inputBufferForReference, NV_ENC_OUTPUT_PTR outputBuffer) { NV_ENC_MEONLY_PARAMS meParams = { NV_ENC_MEONLY_PARAMS_VER }; meParams.inputBuffer = inputBuffer; meParams.referenceFrame = inputBufferForReference; meParams.inputWidth = GetEncodeWidth(); meParams.inputHeight = GetEncodeHeight(); - meParams.mvBuffer = m_vMVDataOutputBuffer[m_iToSend % m_nEncoderBuffer]; - meParams.completionEvent = m_vpCompletionEvent[m_iToSend % m_nEncoderBuffer]; + meParams.mvBuffer = outputBuffer; + meParams.completionEvent = GetCompletionEvent(m_iToSend % m_nEncoderBuffer); NVENCSTATUS nvStatus = m_nvenc.nvEncRunMotionEstimationOnly(m_hEncoder, &meParams); - if (nvStatus == NV_ENC_SUCCESS || nvStatus == NV_ENC_ERR_NEED_MORE_INPUT) - { - m_iToSend++; - std::vector> vPacket; - GetEncodedPacket(m_vMVDataOutputBuffer, vPacket, true); - if (vPacket.size() != 1) - { - NVENC_THROW_ERROR("GetEncodedPacket() doesn't return one (and only one) MVData", NV_ENC_ERR_GENERIC); - } - mvData = vPacket[0]; - } - else - { - NVENC_THROW_ERROR("nvEncEncodePicture API failed", nvStatus); - } + + return nvStatus; } diff --git a/alvr/server/cpp/platform/win32/NvEncoder.h b/alvr/server/cpp/platform/win32/NvEncoder.h index 9528b12c3b..447531fbd5 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.h +++ b/alvr/server/cpp/platform/win32/NvEncoder.h @@ -1,5 +1,5 @@ /* -* Copyright 2017-2018 NVIDIA Corporation. All rights reserved. +* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. * * Please refer to the NVIDIA end user license agreement (EULA) associated * with this source code for terms and conditions that govern your use of @@ -19,6 +19,7 @@ #include #include #include +#include "NvCodecUtils.h" /** * @brief Exception class for error reporting from NvEncodeAPI calls. @@ -90,7 +91,7 @@ class NvEncoder * Application must call this function to initialize the encoder, before * starting to encode any frames. */ - void CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncodeParams); + virtual void CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncodeParams); /** * @brief This function is used to destroy the encoder session. @@ -98,7 +99,7 @@ class NvEncoder * clean up any allocated resources. The application must call EndEncode() * function to get any queued encoded frames before calling DestroyEncoder(). */ - void DestroyEncoder(); + virtual void DestroyEncoder(); /** * @brief This function is used to reconfigure an existing encoder session. @@ -123,7 +124,7 @@ class NvEncoder * data, which has been copied to an input buffer obtained from the * GetNextInputFrame() function. */ - void EncodeFrame(std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams = nullptr); + virtual void EncodeFrame(std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams = nullptr); /** * @brief This function to flush the encoder queue. @@ -132,7 +133,7 @@ class NvEncoder * from the encoder. The application must call this function before destroying * an encoder session. */ - void EndEncode(std::vector> &vPacket); + virtual void EndEncode(std::vector> &vPacket); /** * @brief This function is used to query hardware encoder capabilities. @@ -176,7 +177,7 @@ class NvEncoder * directly or override them with application-specific settings before * using them in CreateEncoder() function. */ - void CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeParams, GUID codecGuid, GUID presetGuid); + void CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeParams, GUID codecGuid, GUID presetGuid, NV_ENC_TUNING_INFO tuningInfo = NV_ENC_TUNING_INFO_UNDEFINED); /** * @brief This function is used to get the current initialization parameters, @@ -249,6 +250,10 @@ class NvEncoder */ static uint32_t GetWidthInBytes(const NV_ENC_BUFFER_FORMAT bufferFormat, const uint32_t width); + /** + * @brief This function returns the number of allocated buffers. + */ + uint32_t GetEncoderBufferCount() const { return m_nEncoderBuffer; } protected: /** @@ -256,7 +261,8 @@ class NvEncoder * NvEncoder class constructor cannot be called directly by the application. */ NvEncoder(NV_ENC_DEVICE_TYPE eDeviceType, void *pDevice, uint32_t nWidth, uint32_t nHeight, - NV_ENC_BUFFER_FORMAT eBufferFormat, uint32_t m_nOutputDelay, bool bMotionEstimationOnly); + NV_ENC_BUFFER_FORMAT eBufferFormat, uint32_t nOutputDelay, bool bMotionEstimationOnly, bool bOutputInVideoMemory = false, bool bDX12Encode = false, + bool bUseIVFContainer = true); /** * @brief This function is used to check if hardware encoder is properly initialized. @@ -268,14 +274,22 @@ class NvEncoder * This is non public function and is called by derived class for allocating * and registering input buffers. */ - void RegisterResources(std::vector inputframes, NV_ENC_INPUT_RESOURCE_TYPE eResourceType, + void RegisterInputResources(std::vector inputframes, NV_ENC_INPUT_RESOURCE_TYPE eResourceType, int width, int height, int pitch, NV_ENC_BUFFER_FORMAT bufferFormat, bool bReferenceFrame = false); /** * @brief This function is used to unregister resources which had been previously registered for encoding - * using RegisterResources() function. + * using RegisterInputResources() function. */ - void UnregisterResources(); + void UnregisterInputResources(); + + /** + * @brief This function is used to register CUDA, D3D or OpenGL input or output buffers with NvEncodeAPI. + */ + NV_ENC_REGISTERED_PTR RegisterResource(void *pBuffer, NV_ENC_INPUT_RESOURCE_TYPE eResourceType, + int width, int height, int pitch, NV_ENC_BUFFER_FORMAT bufferFormat, NV_ENC_BUFFER_USAGE bufferUsage = NV_ENC_INPUT_IMAGE, + NV_ENC_FENCE_POINT_D3D12* pInputFencePoint = NULL); + /** * @brief This function returns maximum width used to open the encoder session. * All encode input buffers are allocated using maximum dimensions. @@ -288,17 +302,44 @@ class NvEncoder */ uint32_t GetMaxEncodeHeight() const { return m_nMaxEncodeHeight; } + /** + * @brief This function returns the completion event. + */ + void* GetCompletionEvent(uint32_t eventIdx) { return (m_vpCompletionEvent.size() == m_nEncoderBuffer) ? m_vpCompletionEvent[eventIdx] : nullptr; } + /** * @brief This function returns the current pixel format. */ NV_ENC_BUFFER_FORMAT GetPixelFormat() const { return m_eBufferFormat; } -private: /** - * @brief This is a private function which is used to wait for completion of encode command. + * @brief This function is used to submit the encode commands to the + * NVENC hardware. + */ + NVENCSTATUS DoEncode(NV_ENC_INPUT_PTR inputBuffer, NV_ENC_OUTPUT_PTR outputBuffer, NV_ENC_PIC_PARAMS *pPicParams); + + /** + * @brief This function is used to submit the encode commands to the + * NVENC hardware for ME only mode. + */ + NVENCSTATUS DoMotionEstimation(NV_ENC_INPUT_PTR inputBuffer, NV_ENC_INPUT_PTR inputBufferForReference, NV_ENC_OUTPUT_PTR outputBuffer); + + /** + * @brief This function is used to map the input buffers to NvEncodeAPI. + */ + void MapResources(uint32_t bfrIdx); + + /** + * @brief This function is used to wait for completion of encode command. */ void WaitForCompletionEvent(int iEvent); + /** + * @brief This function is used to send EOS to HW encoder. + */ + void SendEOS(); + +private: /** * @brief This is a private function which is used to check if there is any buffering done by encoder. @@ -313,24 +354,24 @@ class NvEncoder void LoadNvEncApi(); /** - * @brief This is a private function which is used to submit the encode - * commands to the NVENC hardware. + * @brief This is a private function which is used to get the output packets + * from the encoder HW. + * This is called by DoEncode() function. If there is buffering enabled, + * this may return without any output data. */ - void DoEncode(NV_ENC_INPUT_PTR inputBuffer, std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams); + void GetEncodedPacket(std::vector &vOutputBuffer, std::vector> &vPacket, bool bOutputDelay); /** - * @brief This is a private function which is used to submit the encode - * commands to the NVENC hardware for ME only mode. + * @brief This is a private function which is used to initialize the bitstream buffers. + * This is only used in the encoding mode. */ - void DoMotionEstimation(NV_ENC_INPUT_PTR inputBuffer, NV_ENC_INPUT_PTR referenceFrame, std::vector &mvData); + void InitializeBitstreamBuffer(); /** - * @brief This is a private function which is used to get the output packets - * from the encoder HW. - * This is called by DoEncode() function. If there is buffering enabled, - * this may return without any output data. + * @brief This is a private function which is used to destroy the bitstream buffers. + * This is only used in the encoding mode. */ - void GetEncodedPacket(std::vector &vOutputBuffer, std::vector> &vPacket, bool bOutputDelay); + void DestroyBitstreamBuffer(); /** * @brief This is a private function which is used to initialize MV output buffers. @@ -349,6 +390,11 @@ class NvEncoder */ void DestroyHWEncoder(); + /** + * @brief This function is used to flush the encoder queue. + */ + void FlushEncoder(); + private: /** * @brief This is a pure virtual function which is used to allocate input buffers. @@ -364,32 +410,39 @@ class NvEncoder protected: bool m_bMotionEstimationOnly = false; + bool m_bOutputInVideoMemory = false; + bool m_bIsDX12Encode = false; void *m_hEncoder = nullptr; NV_ENCODE_API_FUNCTION_LIST m_nvenc; + NV_ENC_INITIALIZE_PARAMS m_initializeParams = {}; std::vector m_vInputFrames; std::vector m_vRegisteredResources; std::vector m_vReferenceFrames; std::vector m_vRegisteredResourcesForReference; + std::vector m_vMappedInputBuffers; + std::vector m_vMappedRefBuffers; + std::vector m_vpCompletionEvent; + + int32_t m_iToSend = 0; + int32_t m_iGot = 0; + int32_t m_nEncoderBuffer = 0; + int32_t m_nOutputDelay = 0; + IVFUtils m_IVFUtils; + bool m_bWriteIVFFileHeader = true; + bool m_bUseIVFContainer = true; + private: uint32_t m_nWidth; uint32_t m_nHeight; NV_ENC_BUFFER_FORMAT m_eBufferFormat; void *m_pDevice; NV_ENC_DEVICE_TYPE m_eDeviceType; - NV_ENC_INITIALIZE_PARAMS m_initializeParams = {}; NV_ENC_CONFIG m_encodeConfig = {}; bool m_bEncoderInitialized = false; - uint32_t m_nExtraOutputDelay = 3; - std::vector m_vMappedInputBuffers; - std::vector m_vMappedRefBuffers; + uint32_t m_nExtraOutputDelay = 3; // To ensure encode and graphics can work in parallel, m_nExtraOutputDelay should be set to at least 1 std::vector m_vBitstreamOutputBuffer; std::vector m_vMVDataOutputBuffer; - std::vector m_vpCompletionEvent; uint32_t m_nMaxEncodeWidth = 0; uint32_t m_nMaxEncodeHeight = 0; void* m_hModule = nullptr; - int32_t m_iToSend = 0; - int32_t m_iGot = 0; - int32_t m_nEncoderBuffer = 0; - int32_t m_nOutputDelay = 0; }; diff --git a/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp b/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp index 3d07f015d8..54e0b63b63 100644 --- a/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp +++ b/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp @@ -1,5 +1,5 @@ /* -* Copyright 2017-2018 NVIDIA Corporation. All rights reserved. +* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. * * Please refer to the NVIDIA end user license agreement (EULA) associated * with this source code for terms and conditions that govern your use of @@ -10,6 +10,9 @@ */ +#ifndef _WIN32 +#include +#endif #include "NvEncoderD3D11.h" #include @@ -35,8 +38,8 @@ DXGI_FORMAT GetD3D11Format(NV_ENC_BUFFER_FORMAT eBufferFormat) } NvEncoderD3D11::NvEncoderD3D11(ID3D11Device* pD3D11Device, uint32_t nWidth, uint32_t nHeight, - NV_ENC_BUFFER_FORMAT eBufferFormat, uint32_t nExtraOutputDelay, bool bMotionEstimationOnly) : - NvEncoder(NV_ENC_DEVICE_TYPE_DIRECTX, pD3D11Device, nWidth, nHeight, eBufferFormat, nExtraOutputDelay, bMotionEstimationOnly) + NV_ENC_BUFFER_FORMAT eBufferFormat, uint32_t nExtraOutputDelay, bool bMotionEstimationOnly, bool bOutputInVideoMemory) : + NvEncoder(NV_ENC_DEVICE_TYPE_DIRECTX, pD3D11Device, nWidth, nHeight, eBufferFormat, nExtraOutputDelay, bMotionEstimationOnly, bOutputInVideoMemory) { if (!pD3D11Device) { @@ -96,7 +99,7 @@ void NvEncoderD3D11::AllocateInputBuffers(int32_t numInputBuffers) } inputFrames.push_back(pInputTextures); } - RegisterResources(inputFrames, NV_ENC_INPUT_RESOURCE_TYPE_DIRECTX, + RegisterInputResources(inputFrames, NV_ENC_INPUT_RESOURCE_TYPE_DIRECTX, GetMaxEncodeWidth(), GetMaxEncodeHeight(), 0, GetPixelFormat(), count == 1 ? true : false); } } @@ -113,7 +116,7 @@ void NvEncoderD3D11::ReleaseD3D11Resources() return; } - UnregisterResources(); + UnregisterInputResources(); for (uint32_t i = 0; i < m_vInputFrames.size(); ++i) { diff --git a/alvr/server/cpp/platform/win32/NvEncoderD3D11.h b/alvr/server/cpp/platform/win32/NvEncoderD3D11.h index 7acbdc97b9..8293d97596 100644 --- a/alvr/server/cpp/platform/win32/NvEncoderD3D11.h +++ b/alvr/server/cpp/platform/win32/NvEncoderD3D11.h @@ -1,5 +1,5 @@ /* -* Copyright 2017-2018 NVIDIA Corporation. All rights reserved. +* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. * * Please refer to the NVIDIA end user license agreement (EULA) associated * with this source code for terms and conditions that govern your use of @@ -22,8 +22,16 @@ class NvEncoderD3D11 : public NvEncoder { public: NvEncoderD3D11(ID3D11Device* pD3D11Device, uint32_t nWidth, uint32_t nHeight, NV_ENC_BUFFER_FORMAT eBufferFormat, - uint32_t nExtraOutputDelay = 3, bool bMotionEstimationOnly = false); + uint32_t nExtraOutputDelay = 3, bool bMotionEstimationOnly = false, bool bOPInVideoMemory = false); virtual ~NvEncoderD3D11(); + +protected: + /** + * @brief This function is used to release the input buffers allocated for encoding. + * This function is an override of virtual function NvEncoder::ReleaseInputBuffers(). + */ + virtual void ReleaseInputBuffers() override; + private: /** * @brief This function is used to allocate input buffers for encoding. @@ -33,17 +41,15 @@ class NvEncoderD3D11 : public NvEncoder */ virtual void AllocateInputBuffers(int32_t numInputBuffers) override; - /** - * @brief This function is used to release the input buffers allocated for encoding. - * This function is an override of virtual function NvEncoder::ReleaseInputBuffers(). - */ - virtual void ReleaseInputBuffers() override; private: /** * @brief This is a private function to release ID3D11Texture2D textures used for encoding. */ void ReleaseD3D11Resources(); -private: + +protected: ID3D11Device *m_pD3D11Device = nullptr; + +private: ID3D11DeviceContext* m_pD3D11DeviceContext = nullptr; }; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index b04e072559..e8f9cac1b3 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -1,7 +1,5 @@ - #include "VideoEncoderNVENC.h" #include "NvCodecUtils.h" -#include "alvr_server/nvencoderclioptions.h" #include "alvr_server/Statistics.h" #include "alvr_server/Logger.h" @@ -12,7 +10,6 @@ VideoEncoderNVENC::VideoEncoderNVENC(std::shared_ptr pD3DRender , std::shared_ptr listener , int width, int height) : m_pD3DRender(pD3DRender) - , m_nFrame(0) , m_Listener(listener) , m_codec(Settings::Instance().m_codec) , m_refreshRate(Settings::Instance().m_refreshRate) @@ -53,10 +50,9 @@ void VideoEncoderNVENC::Initialize() FillEncodeConfig(initializeParams, m_refreshRate, m_renderWidth, m_renderHeight, m_bitrateInMBits * 1'000'000); - try { m_NvNecoder->CreateEncoder(&initializeParams); - } + } catch (NVENCException e) { if (e.getErrorCode() == NV_ENC_ERR_INVALID_PARAM) { throw MakeException("This GPU does not support H.265 encoding. (NvEncoderCuda NV_ENC_ERR_INVALID_PARAM)"); @@ -124,7 +120,6 @@ void VideoEncoderNVENC::Transmit(ID3D11Texture2D *pTexture, uint64_t presentatio m_Listener->GetStatistics()->EncodeOutput(GetTimestampUs() - presentationTime); } - m_nFrame += (int)vPacket.size(); for (std::vector &packet : vPacket) { if (fpOut) { @@ -139,28 +134,21 @@ void VideoEncoderNVENC::Transmit(ID3D11Texture2D *pTexture, uint64_t presentatio void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializeParams, int refreshRate, int renderWidth, int renderHeight, uint64_t bitrateBits) { auto &encodeConfig = *initializeParams.encodeConfig; - GUID EncoderGUID = m_codec == ALVR_CODEC_H264 ? NV_ENC_CODEC_H264_GUID : NV_ENC_CODEC_HEVC_GUID; - - // According to the docment, NVIDIA Video Encoder (NVENC) Interface 8.1, - // following configrations are recommended for low latency application: - // 1. Low-latency high quality preset - // 2. Rate control mode = CBR - // 3. Very low VBV buffer size(single frame) - // 4. No B Frames - // 5. Infinite GOP length - // 6. Long term reference pictures - // 7. Intra refresh - // 8. Adaptive quantization(AQ) enabled - - GUID preset = NV_ENC_PRESET_LOW_LATENCY_HQ_GUID; - if (Settings::Instance().m_nvencPreset == 0) { - preset = NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID; - } else if (Settings::Instance().m_nvencPreset == 1) { - preset = NV_ENC_PRESET_LOW_LATENCY_HQ_GUID; - } else if (Settings::Instance().m_nvencPreset == 2) { - preset = NV_ENC_PRESET_LOW_LATENCY_HP_GUID; + GUID encoderGUID = m_codec == ALVR_CODEC_H264 ? NV_ENC_CODEC_H264_GUID : NV_ENC_CODEC_HEVC_GUID; + + // See recommended NVENC settings for low-latency encoding. + // https://docs.nvidia.com/video-technologies/video-codec-sdk/nvenc-video-encoder-api-prog-guide/#recommended-nvenc-settings + GUID qualityPreset = NV_ENC_PRESET_P1_GUID; + if (Settings::Instance().m_encoderQualityPreset == ALVR_QUALITY) { + qualityPreset = NV_ENC_PRESET_P7_GUID; + } else if (Settings::Instance().m_encoderQualityPreset == ALVR_BALANCED) { + qualityPreset = NV_ENC_PRESET_P4_GUID; + } else if (Settings::Instance().m_encoderQualityPreset == ALVR_SPEED) { + qualityPreset = NV_ENC_PRESET_P1_GUID; } - m_NvNecoder->CreateDefaultEncoderParams(&initializeParams, EncoderGUID, preset); + NV_ENC_TUNING_INFO tuningPreset = static_cast(Settings::Instance().m_nvencTuningPreset); + + m_NvNecoder->CreateDefaultEncoderParams(&initializeParams, encoderGUID, qualityPreset, tuningPreset); initializeParams.encodeWidth = initializeParams.darWidth = renderWidth; initializeParams.encodeHeight = initializeParams.darHeight = renderHeight; @@ -171,11 +159,7 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar initializeParams.frameRateNum = Settings::Instance().m_nvencRefreshRate; } - // Use reference frame invalidation to faster recovery from frame loss if supported. - mSupportsReferenceFrameInvalidation = m_NvNecoder->GetCapabilityValue(EncoderGUID, NV_ENC_CAPS_SUPPORT_REF_PIC_INVALIDATION); - bool supportsIntraRefresh = m_NvNecoder->GetCapabilityValue(EncoderGUID, NV_ENC_CAPS_SUPPORT_INTRA_REFRESH); - Debug("VideoEncoderNVENC: SupportsReferenceFrameInvalidation: %d\n", mSupportsReferenceFrameInvalidation); - Debug("VideoEncoderNVENC: SupportsIntraRefresh: %d\n", supportsIntraRefresh); + initializeParams.enableWeightedPrediction = Settings::Instance().m_nvencEnableWeightedPrediction; // 16 is recommended when using reference frame invalidation. But it has caused bad visual quality. // Now, use 0 (use default). @@ -192,15 +176,8 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar if (m_codec == ALVR_CODEC_H264) { auto &config = encodeConfig.encodeCodecConfig.h264Config; config.repeatSPSPPS = 1; - //if (supportsIntraRefresh) { - // config.enableIntraRefresh = 1; - // // Do intra refresh every 10sec. - // config.intraRefreshPeriod = refreshRate * 10; - // config.intraRefreshCnt = refreshRate; - //} - if (Settings::Instance().m_nvencEnableIntraRefresh != -1) { - config.enableIntraRefresh = Settings::Instance().m_nvencEnableIntraRefresh; - } + config.enableIntraRefresh = Settings::Instance().m_nvencEnableIntraRefresh; + if (Settings::Instance().m_nvencIntraRefreshPeriod != -1) { config.intraRefreshPeriod = Settings::Instance().m_nvencIntraRefreshPeriod; } @@ -219,19 +196,12 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar config.maxNumRefFrames = maxNumRefFrames; config.idrPeriod = gopLength; - } + } else { auto &config = encodeConfig.encodeCodecConfig.hevcConfig; config.repeatSPSPPS = 1; - //if (supportsIntraRefresh) { - // config.enableIntraRefresh = 1; - // // Do intra refresh every 10sec. - // config.intraRefreshPeriod = refreshRate * 10; - // config.intraRefreshCnt = refreshRate; - //} - if (Settings::Instance().m_nvencEnableIntraRefresh != -1) { - config.enableIntraRefresh = Settings::Instance().m_nvencEnableIntraRefresh; - } + config.enableIntraRefresh = Settings::Instance().m_nvencEnableIntraRefresh; + if (Settings::Instance().m_nvencIntraRefreshPeriod != -1) { config.intraRefreshPeriod = Settings::Instance().m_nvencIntraRefreshPeriod; } @@ -241,15 +211,11 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar config.maxNumRefFramesInDPB = maxNumRefFrames; config.idrPeriod = gopLength; - } - // According to the document, NVIDIA Video Encoder Interface 5.0, - // following configrations are recommended for low latency application: - // 1. NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP rate control mode. - // 2. Set vbvBufferSize and vbvInitialDelay to maxFrameSize. - // 3. Inifinite GOP length. - // NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP also assures maximum frame size, - // which introduces lower transport latency and fewer packet losses. + if (Settings::Instance().m_use10bitEncoder) { + encodeConfig.encodeCodecConfig.hevcConfig.pixelBitDepthMinus8 = 2; + } + } // Disable automatic IDR insertion by NVENC. We need to manually insert IDR when packet is dropped // if don't use reference frame invalidation. @@ -260,16 +226,20 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar encodeConfig.frameIntervalP = Settings::Instance().m_nvencPFrameStrategy; } - // NV_ENC_PARAMS_RC_CBR_HQ is equivalent to NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP. - //encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ;// NV_ENC_PARAMS_RC_CBR_HQ; switch (Settings::Instance().m_rateControlMode) { case ALVR_CBR: - encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ; + encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CBR; break; case ALVR_VBR: encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_VBR; break; } + encodeConfig.rcParams.multiPass = static_cast(Settings::Instance().m_nvencMultiPass); + encodeConfig.rcParams.lowDelayKeyFrameScale = 1; + + if (Settings::Instance().m_nvencLowDelayKeyFrameScale != -1) { + encodeConfig.rcParams.lowDelayKeyFrameScale = Settings::Instance().m_nvencLowDelayKeyFrameScale; + } uint32_t maxFrameSize = static_cast(bitrateBits / refreshRate); Debug("VideoEncoderNVENC: maxFrameSize=%d bits\n", maxFrameSize); @@ -277,6 +247,11 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar encodeConfig.rcParams.vbvInitialDelay = maxFrameSize; encodeConfig.rcParams.maxBitRate = static_cast(bitrateBits); encodeConfig.rcParams.averageBitRate = static_cast(bitrateBits); + if (Settings::Instance().m_nvencAdaptiveQuantizationMode == SpatialAQ) { + encodeConfig.rcParams.enableAQ = 1; + } else if (Settings::Instance().m_nvencAdaptiveQuantizationMode == TemporalAQ) { + encodeConfig.rcParams.enableTemporalAQ = 1; + } if (Settings::Instance().m_nvencRateControlMode != -1) { encodeConfig.rcParams.rateControlMode = (NV_ENC_PARAMS_RC_MODE)Settings::Instance().m_nvencRateControlMode; @@ -293,13 +268,4 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar if (Settings::Instance().m_nvencRcAverageBitrate != -1) { encodeConfig.rcParams.averageBitRate = Settings::Instance().m_nvencRcAverageBitrate; } - - if (Settings::Instance().m_use10bitEncoder) { - encodeConfig.rcParams.enableAQ = 1; - encodeConfig.encodeCodecConfig.hevcConfig.pixelBitDepthMinus8 = 2; - } - - if (Settings::Instance().m_nvencEnableAQ != -1) { - encodeConfig.rcParams.enableAQ = Settings::Instance().m_nvencEnableAQ; - } } \ No newline at end of file diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h index e25a0ad8f4..fe7bb54991 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h @@ -6,6 +6,11 @@ #include "VideoEncoder.h" #include "NvEncoderD3D11.h" +enum AdaptiveQuantizationMode { + SpatialAQ = 1, + TemporalAQ = 2 +}; + // Video encoder for NVIDIA NvEnc. class VideoEncoderNVENC : public VideoEncoder { @@ -27,12 +32,9 @@ class VideoEncoderNVENC : public VideoEncoder std::shared_ptr m_NvNecoder; std::shared_ptr m_pD3DRender; - int m_nFrame; std::shared_ptr m_Listener; - bool mSupportsReferenceFrameInvalidation = false; - int m_codec; int m_refreshRate; int m_renderWidth; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index cc43145f99..b7ddf7370d 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -182,13 +182,13 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_B_PIC_PATTERN, 0); switch (Settings::Instance().m_encoderQualityPreset) { - case QUALITY: + case ALVR_QUALITY: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY); break; - case BALANCED: + case ALVR_BALANCED: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_BALANCED); break; - case SPEED: + case ALVR_SPEED: default: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUALITY_PRESET, AMF_VIDEO_ENCODER_QUALITY_PRESET_SPEED); break; @@ -235,13 +235,13 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FRAMERATE, ::AMFConstructRate(frameRateIn, 1)); switch (Settings::Instance().m_encoderQualityPreset) { - case QUALITY: + case ALVR_QUALITY: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY); break; - case BALANCED: + case ALVR_BALANCED: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED); break; - case SPEED: + case ALVR_SPEED: default: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET, AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED); break; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index c385716973..2b1ed4ca61 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -49,12 +49,6 @@ class AMFPipeline { typedef AMFPipeline* AMFPipelinePtr; -enum EncoderQualityPreset { - QUALITY = 0, - BALANCED = 1, - SPEED = 2 -}; - // Video encoder for AMD VCE. class VideoEncoderVCE : public VideoEncoder { diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index e071166182..9c19c94292 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -258,7 +258,7 @@ async fn client_handshake( use_preproc: amf_controls.use_preproc, preproc_sigma: amf_controls.preproc_sigma, preproc_tor: amf_controls.preproc_tor, - encoder_quality_preset: amf_controls.encoder_quality_preset as u32, + encoder_quality_preset: settings.video.advanced_codec_options.encoder_quality_preset as u32, force_sw_encoding: false, //force_sw_encoding: settings.video.force_sw_encoding, sw_thread_count: settings.video.sw_thread_count, encode_bitrate_mbs: settings.video.encode_bitrate_mbs, @@ -472,7 +472,10 @@ async fn client_handshake( sharpening: session_settings.video.color_correction.content.sharpening, enable_fec: session_settings.connection.enable_fec, linux_async_reprojection: session_settings.extra.patches.linux_async_reprojection, - nvenc_preset: nvenc_overrides.preset as i64, + nvenc_tuning_preset: nvenc_overrides.tuning_preset as u32, + nvenc_multi_pass: nvenc_overrides.multi_pass as u32, + nvenc_adaptive_quantization_mode: nvenc_overrides.adaptive_quantization_mode as u32, + nvenc_low_delay_key_frame_scale: nvenc_overrides.low_delay_key_frame_scale, nvenc_refresh_rate: nvenc_overrides.refresh_rate, enable_intra_refresh: nvenc_overrides.enable_intra_refresh, intra_refresh_period: nvenc_overrides.intra_refresh_period, @@ -485,7 +488,7 @@ async fn client_handshake( rc_initial_delay: nvenc_overrides.rc_initial_delay, rc_max_bitrate: nvenc_overrides.rc_max_bitrate, rc_average_bitrate: nvenc_overrides.rc_average_bitrate, - enable_aq: nvenc_overrides.enable_aq, + nvenc_enable_weighted_prediction: nvenc_overrides.enable_weighted_prediction, }; if SESSION_MANAGER.lock().get().openvr_config != new_openvr_config { diff --git a/alvr/session/src/lib.rs b/alvr/session/src/lib.rs index cc59276176..7e787caa8e 100644 --- a/alvr/session/src/lib.rs +++ b/alvr/session/src/lib.rs @@ -122,9 +122,12 @@ pub struct OpenvrConfig { pub sharpening: f32, pub enable_fec: bool, pub linux_async_reprojection: bool, - pub nvenc_preset: i64, + pub nvenc_tuning_preset: u32, + pub nvenc_multi_pass: u32, + pub nvenc_adaptive_quantization_mode: u32, + pub nvenc_low_delay_key_frame_scale: i64, pub nvenc_refresh_rate: i64, - pub enable_intra_refresh: i64, + pub enable_intra_refresh: bool, pub intra_refresh_period: i64, pub intra_refresh_count: i64, pub max_num_ref_frames: i64, @@ -135,7 +138,7 @@ pub struct OpenvrConfig { pub rc_initial_delay: i64, pub rc_max_bitrate: i64, pub rc_average_bitrate: i64, - pub enable_aq: i64, + pub nvenc_enable_weighted_prediction: bool, } #[derive(Serialize, Deserialize, Clone, Debug)] diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index d44f4bdaef..2b2e9c40b9 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -35,15 +35,6 @@ pub enum FrameSize { }, } -#[repr(i64)] -#[derive(SettingsSchema, Serialize, Deserialize, Clone)] -#[serde(rename_all = "camelCase", tag = "type", content = "content")] -pub enum NvencPreset { - LowLatencyDefault = 0, - LowLatencyHighQuality = 1, - LowLatencyHighPerformance = 2, -} - #[repr(u32)] #[derive(SettingsSchema, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase", tag = "type", content = "content")] @@ -53,6 +44,34 @@ pub enum EncoderQualityPreset { Speed = 2, } +#[repr(u32)] +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase", tag = "type", content = "content")] +pub enum NvencTuningPreset { + HighQuality = 1, + LowLatency = 2, + UltraLowLatency = 3, + Lossless = 4, +} + +#[repr(u32)] +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase", tag = "type", content = "content")] +pub enum NvencMultiPass { + Disabled = 0, + QuarterResolution = 1, + FullResolution = 2, +} + +#[repr(u32)] +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(rename_all = "camelCase", tag = "type", content = "content")] +pub enum NvencAdaptiveQuantizationMode { + Disabled = 0, + Spatial = 1, + Temporal = 2, +} + #[repr(u8)] #[derive(SettingsSchema, Serialize, Deserialize, Clone)] #[serde(tag = "type", content = "content")] @@ -73,9 +92,12 @@ pub enum EntropyCoding { #[derive(SettingsSchema, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase")] pub struct NvencOverrides { - pub preset: NvencPreset, + pub tuning_preset: NvencTuningPreset, + pub multi_pass: NvencMultiPass, + pub adaptive_quantization_mode: NvencAdaptiveQuantizationMode, + pub low_delay_key_frame_scale: i64, pub refresh_rate: i64, - pub enable_intra_refresh: i64, + pub enable_intra_refresh: bool, pub intra_refresh_period: i64, pub intra_refresh_count: i64, pub max_num_ref_frames: i64, @@ -86,7 +108,7 @@ pub struct NvencOverrides { pub rc_initial_delay: i64, pub rc_max_bitrate: i64, pub rc_average_bitrate: i64, - pub enable_aq: i64, + pub enable_weighted_prediction: bool, } #[derive(SettingsSchema, Serialize, Deserialize, Clone)] @@ -97,7 +119,6 @@ pub struct AmfControls { pub preproc_sigma: u32, #[schema(min = 0, max = 10)] pub preproc_tor: u32, - pub encoder_quality_preset: EncoderQualityPreset, } #[derive(SettingsSchema, Serialize, Deserialize, Clone, Debug)] @@ -112,6 +133,7 @@ pub enum MediacodecDataType { #[derive(SettingsSchema, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase")] pub struct AdvancedCodecOptions { + pub encoder_quality_preset: EncoderQualityPreset, pub nvenc_overrides: NvencOverrides, pub amf_controls: AmfControls, pub mediacodec_extra_options: Vec<(String, MediacodecDataType)>, @@ -677,12 +699,22 @@ pub fn session_settings_default() -> SettingsDefault { }, }, advanced_codec_options: AdvancedCodecOptionsDefault { + encoder_quality_preset: EncoderQualityPresetDefault { + variant: EncoderQualityPresetDefaultVariant::Speed, + }, nvenc_overrides: NvencOverridesDefault { - preset: NvencPresetDefault { - variant: NvencPresetDefaultVariant::LowLatencyHighQuality, + tuning_preset: NvencTuningPresetDefault { + variant: NvencTuningPresetDefaultVariant::LowLatency, }, + multi_pass: NvencMultiPassDefault { + variant: NvencMultiPassDefaultVariant::QuarterResolution, + }, + adaptive_quantization_mode: NvencAdaptiveQuantizationModeDefault { + variant: NvencAdaptiveQuantizationModeDefaultVariant::Spatial, + }, + low_delay_key_frame_scale: -1, refresh_rate: -1, - enable_intra_refresh: -1, + enable_intra_refresh: false, intra_refresh_period: -1, intra_refresh_count: -1, max_num_ref_frames: -1, @@ -693,15 +725,12 @@ pub fn session_settings_default() -> SettingsDefault { rc_initial_delay: -1, rc_max_bitrate: -1, rc_average_bitrate: -1, - enable_aq: -1, + enable_weighted_prediction: false, }, amf_controls: AmfControlsDefault { use_preproc: false, preproc_sigma: 4, preproc_tor: 7, - encoder_quality_preset: EncoderQualityPresetDefault { - variant: EncoderQualityPresetDefaultVariant::Speed, - }, }, mediacodec_extra_options: DictionaryDefault { key: "".into(), From 79fcd0b6902fba09b9947db881f9a124b8102884 Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 4 Jan 2023 22:31:59 +0200 Subject: [PATCH 28/60] Add VBAQ option (#1336) * Add VBAQ option to AMF * Add VBAQ to VAAPI --- alvr/dashboard/js/app/nls/settings.js | 4 ++++ alvr/server/cpp/alvr_server/Settings.cpp | 1 + alvr/server/cpp/alvr_server/Settings.h | 1 + alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp | 2 +- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 4 ++-- alvr/server/src/connection.rs | 1 + alvr/session/src/lib.rs | 1 + alvr/session/src/settings.rs | 2 ++ 8 files changed, 13 insertions(+), 3 deletions(-) diff --git a/alvr/dashboard/js/app/nls/settings.js b/alvr/dashboard/js/app/nls/settings.js index a849d53f01..d10f8ede40 100644 --- a/alvr/dashboard/js/app/nls/settings.js +++ b/alvr/dashboard/js/app/nls/settings.js @@ -85,6 +85,10 @@ define({ "Specifies the entropy coding method (h264 only). CABAC - provides better quality at lower bitrate, but may increase the encoder/decoder latency, CAVLC - provides worse quality that can be compensated with higher bitrate, and may significantly decrease encoder/decoder latency.", "_root_video_entropyCoding_cabac-choice-.name": "CABAC", "_root_video_entropyCoding_cavlc-choice-.name": "CAVLC", + "_root_video_advancedCodecOptions_amfControls_enableVbaq.name": + "Enable VBAQ", + "_root_video_advancedCodecOptions_amfControls_enableVbaq.description": + "Enables Variance Based Adaptive Quantization (VBAQ) that allocates more bits to smooth areas (gradients, solid colors), but picture details may suffer from compression artifacts.", "_root_video_advancedCodecOptions_amfControls_usePreproc.name": "Enable Pre-Processor component", "_root_video_advancedCodecOptions_amfControls_usePreproc.description": diff --git a/alvr/server/cpp/alvr_server/Settings.cpp b/alvr/server/cpp/alvr_server/Settings.cpp index 52c7764398..d97f146525 100644 --- a/alvr/server/cpp/alvr_server/Settings.cpp +++ b/alvr/server/cpp/alvr_server/Settings.cpp @@ -100,6 +100,7 @@ void Settings::Load() m_adaptiveBitrateDownRate = (int)config.get("bitrate_down_rate").get(); m_adaptiveBitrateLightLoadThreshold = config.get("bitrate_light_load_threshold").get(); m_use10bitEncoder = config.get("use_10bit_encoder").get(); + m_enableVbaq = config.get("enable_vbaq").get(); m_usePreproc = config.get("use_preproc").get(); m_preProcSigma = (uint32_t)config.get("preproc_sigma").get(); m_preProcTor = (uint32_t)config.get("preproc_tor").get(); diff --git a/alvr/server/cpp/alvr_server/Settings.h b/alvr/server/cpp/alvr_server/Settings.h index 9bd76174e4..4cd23985d0 100644 --- a/alvr/server/cpp/alvr_server/Settings.h +++ b/alvr/server/cpp/alvr_server/Settings.h @@ -74,6 +74,7 @@ class Settings uint64_t m_adaptiveBitrateDownRate; float m_adaptiveBitrateLightLoadThreshold; bool m_use10bitEncoder; + bool m_enableVbaq; bool m_usePreproc; uint32_t m_preProcSigma; uint32_t m_preProcTor; diff --git a/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp b/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp index 361b7f565a..f429df6170 100644 --- a/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp +++ b/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.cpp @@ -161,7 +161,7 @@ alvr::EncodePipelineVAAPI::EncodePipelineVAAPI(std::vector& input_frame vlVaQualityBits quality = {}; quality.valid_setting = 1; - quality.vbaq_mode = 1; //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas + quality.vbaq_mode = Settings::Instance().m_enableVbaq; //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas switch (settings.m_encoderQualityPreset) { case ALVR_QUALITY: diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index b7ddf7370d..93e1e6be72 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -195,7 +195,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( } //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_ENABLE_VBAQ, true); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_ENABLE_VBAQ, Settings::Instance().m_enableVbaq); //Turns Off IDR/I Frames amfEncoder->SetProperty(AMF_VIDEO_ENCODER_IDR_PERIOD, 0); @@ -256,7 +256,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( } //No noticable performance difference and should improve subjective quality by allocating more bits to smooth areas - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ, true); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ, Settings::Instance().m_enableVbaq); //Turns Off IDR/I Frames amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_NUM_GOPS_PER_IDR, 0); diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 9c19c94292..9977ff4e61 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -255,6 +255,7 @@ async fn client_handshake( entropy_coding: settings.video.entropy_coding as u32, refresh_rate: fps as _, use_10bit_encoder: settings.video.use_10bit_encoder, + enable_vbaq: amf_controls.enable_vbaq, use_preproc: amf_controls.use_preproc, preproc_sigma: amf_controls.preproc_sigma, preproc_tor: amf_controls.preproc_tor, diff --git a/alvr/session/src/lib.rs b/alvr/session/src/lib.rs index 7e787caa8e..616b8fb57d 100644 --- a/alvr/session/src/lib.rs +++ b/alvr/session/src/lib.rs @@ -62,6 +62,7 @@ pub struct OpenvrConfig { pub codec: u32, pub refresh_rate: u32, pub use_10bit_encoder: bool, + pub enable_vbaq: bool, pub use_preproc: bool, pub preproc_sigma: u32, pub preproc_tor: u32, diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index 2b2e9c40b9..b411f6f086 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -114,6 +114,7 @@ pub struct NvencOverrides { #[derive(SettingsSchema, Serialize, Deserialize, Clone)] #[serde(rename_all = "camelCase")] pub struct AmfControls { + pub enable_vbaq: bool, pub use_preproc: bool, #[schema(min = 0, max = 10)] pub preproc_sigma: u32, @@ -728,6 +729,7 @@ pub fn session_settings_default() -> SettingsDefault { enable_weighted_prediction: false, }, amf_controls: AmfControlsDefault { + enable_vbaq: false, use_preproc: false, preproc_sigma: 4, preproc_tor: 7, From 214bb37ad5ef818a21e86c8f08864d9364e582a6 Mon Sep 17 00:00:00 2001 From: Yury Date: Mon, 23 Jan 2023 18:04:54 +0200 Subject: [PATCH 29/60] Minor AMF fixes for Windows (#1367) * Fix integer overflow in timeout * Localize timer precision usage in AMF --- .../cpp/platform/win32/VideoEncoderVCE.cpp | 19 +++++++++++-------- .../cpp/platform/win32/VideoEncoderVCE.h | 4 +++- 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 93e1e6be72..7caaf06a4c 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -21,7 +21,7 @@ AMFPipe::~AMFPipe() m_amfComponentSrc->Drain(); } -void AMFPipe::doPassthrough(bool hasQueryTimeout) +void AMFPipe::doPassthrough(bool hasQueryTimeout, uint32_t timerResolution) { amf::AMFDataPtr data = nullptr; if (hasQueryTimeout) { @@ -32,12 +32,16 @@ void AMFPipe::doPassthrough(bool hasQueryTimeout) Debug("Failed to get AMF component data. Last status: %d.\n", res); } } else { - uint8_t timeout = 1000; // 1s timeout + uint16_t timeout = 1000; // 1s timeout AMF_RESULT res = m_amfComponentSrc->QueryOutput(&data); + + timeBeginPeriod(timerResolution); while (!data && --timeout != 0) { amf_sleep(1); res = m_amfComponentSrc->QueryOutput(&data); } + timeEndPeriod(timerResolution); + if (data) { m_receiver(data); } else { @@ -71,7 +75,10 @@ void AMFSolidPipe::Passthrough(AMFDataPtr data) AMFPipeline::AMFPipeline() : m_pipes() -{} +{ + TIMECAPS tc; + m_timerResolution = timeGetDevCaps(&tc, sizeof(tc)) == TIMERR_NOERROR ? tc.wPeriodMin : 1; +} AMFPipeline::~AMFPipeline() { @@ -90,7 +97,7 @@ void AMFPipeline::Run(bool hasQueryTimeout) { for (auto &pipe : m_pipes) { - pipe->doPassthrough(hasQueryTimeout); + pipe->doPassthrough(hasQueryTimeout, m_timerResolution); } } @@ -334,8 +341,6 @@ void VideoEncoderVCE::Initialize() LoadAUDByteSequence(); - ::amf_increase_timer_precision(); - AMF_THROW_IF(g_AMFFactory.GetFactory()->CreateContext(&m_amfContext)); AMF_THROW_IF(m_amfContext->InitDX11(m_d3dRender->GetDevice())); @@ -390,8 +395,6 @@ void VideoEncoderVCE::Shutdown() g_AMFFactory.Terminate(); - amf_restore_timer_precision(); - if (fpOut) { fpOut.close(); } diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h index 2b1ed4ca61..e839cafa7e 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.h @@ -19,7 +19,7 @@ class AMFPipe { AMFPipe(amf::AMFComponentPtr src, AMFDataReceiver receiver); virtual ~AMFPipe(); - void doPassthrough(bool hasQueryTimeout); + void doPassthrough(bool hasQueryTimeout, uint32_t timerResolution); protected: amf::AMFComponentPtr m_amfComponentSrc; AMFDataReceiver m_receiver; @@ -44,6 +44,8 @@ class AMFPipeline { void Connect(AMFPipePtr pipe); void Run(bool hasQueryTimeout); protected: + uint32_t m_timerResolution; + std::vector m_pipes; }; From 439d43a78dc32a74a0be46f87d72832f9b066436 Mon Sep 17 00:00:00 2001 From: Yury Date: Mon, 23 Jan 2023 18:36:28 +0200 Subject: [PATCH 30/60] Windows: use 1.1 frame VBV buffer size for all encoders (#1397) --- .../cpp/platform/win32/VideoEncoderNVENC.cpp | 8 ++++---- alvr/server/cpp/platform/win32/VideoEncoderSW.cpp | 15 ++++++++++++++- .../server/cpp/platform/win32/VideoEncoderVCE.cpp | 8 ++++---- 3 files changed, 22 insertions(+), 9 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index e8f9cac1b3..3ef5a3e4e0 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -48,7 +48,7 @@ void VideoEncoderNVENC::Initialize() NV_ENC_CONFIG encodeConfig = { NV_ENC_CONFIG_VER }; initializeParams.encodeConfig = &encodeConfig; - FillEncodeConfig(initializeParams, m_refreshRate, m_renderWidth, m_renderHeight, m_bitrateInMBits * 1'000'000); + FillEncodeConfig(initializeParams, m_refreshRate, m_renderWidth, m_renderHeight, m_bitrateInMBits * 1'000'000L); try { m_NvNecoder->CreateEncoder(&initializeParams); @@ -95,7 +95,7 @@ void VideoEncoderNVENC::Transmit(ID3D11Texture2D *pTexture, uint64_t presentatio NV_ENC_INITIALIZE_PARAMS initializeParams = { NV_ENC_INITIALIZE_PARAMS_VER }; NV_ENC_CONFIG encodeConfig = { NV_ENC_CONFIG_VER }; initializeParams.encodeConfig = &encodeConfig; - FillEncodeConfig(initializeParams, m_refreshRate, m_renderWidth, m_renderHeight, m_bitrateInMBits * 1'000'000); + FillEncodeConfig(initializeParams, m_refreshRate, m_renderWidth, m_renderHeight, m_bitrateInMBits * 1'000'000L); NV_ENC_RECONFIGURE_PARAMS reconfigureParams = { NV_ENC_RECONFIGURE_PARAMS_VER }; reconfigureParams.reInitEncodeParams = initializeParams; m_NvNecoder->Reconfigure(&reconfigureParams); @@ -243,8 +243,8 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar uint32_t maxFrameSize = static_cast(bitrateBits / refreshRate); Debug("VideoEncoderNVENC: maxFrameSize=%d bits\n", maxFrameSize); - encodeConfig.rcParams.vbvBufferSize = maxFrameSize; - encodeConfig.rcParams.vbvInitialDelay = maxFrameSize; + encodeConfig.rcParams.vbvBufferSize = maxFrameSize * 1.1; + encodeConfig.rcParams.vbvInitialDelay = maxFrameSize * 1.1; encodeConfig.rcParams.maxBitRate = static_cast(bitrateBits); encodeConfig.rcParams.averageBitRate = static_cast(bitrateBits); if (Settings::Instance().m_nvencAdaptiveQuantizationMode == SpatialAQ) { diff --git a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp index ad3046ae48..887ff9d7a9 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp @@ -81,7 +81,18 @@ void VideoEncoderSW::Initialize() { m_codecContext->sample_aspect_ratio = AVRational{1, 1}; m_codecContext->pix_fmt = Settings::Instance().m_use10bitEncoder ? AV_PIX_FMT_YUV420P10LE : AV_PIX_FMT_YUV420P; m_codecContext->max_b_frames = 0; - m_codecContext->bit_rate = Settings::Instance().mEncodeBitrateMBs * 1000 * 1000; + m_codecContext->gop_size = 0; + m_codecContext->bit_rate = Settings::Instance().mEncodeBitrateMBs * 1'000'000L; + m_codecContext->rc_buffer_size = m_codecContext->bit_rate / Settings::Instance().m_refreshRate * 1.1; + switch (Settings::Instance().m_rateControlMode) { + case ALVR_CBR: + av_dict_set(&opt, "nal-hrd", "cbr", 0); + break; + case ALVR_VBR: + av_dict_set(&opt, "nal-hrd", "vbr", 0); + break; + } + m_codecContext->rc_max_rate = m_codecContext->bit_rate; m_codecContext->thread_count = Settings::Instance().m_swThreadCount; if((err = avcodec_open2(m_codecContext, codec, &opt))) throw MakeException("Cannot open video encoder codec: %d", err); @@ -156,6 +167,8 @@ void VideoEncoderSW::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationTi if(m_Listener->GetStatistics()->CheckBitrateUpdated()) { //Debug("Bitrate changed"); m_codecContext->bit_rate = m_Listener->GetStatistics()->GetBitrate() * 1000000L; + m_codecContext->rc_buffer_size = m_codecContext->bit_rate / Settings::Instance().m_refreshRate * 1.1; + m_codecContext->rc_max_rate = m_codecContext->bit_rate; } // Setup staging texture if not defined yet; we can only define it here as we now have the texture's size diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 7caaf06a4c..4d3b373c9f 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -211,7 +211,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( // FIXME: This option doesn't work in 22.10.3, but works in versions prior 22.5.1 amfEncoder->SetProperty(AMF_VIDEO_ENCODER_INSERT_AUD, false); - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / frameRateIn * 1.1); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_MAX_NUM_REFRAMES, 0); @@ -274,7 +274,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( // FIXME: This option doesn't work in 22.10.3, but works in versions prior 22.5.1 amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_INSERT_AUD, false); - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / frameRateIn); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / frameRateIn * 1.1); amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_MAX_NUM_REFRAMES, 0); @@ -414,13 +414,13 @@ void VideoEncoderVCE::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationT { m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_TARGET_BITRATE, bitRateIn); m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_PEAK_BITRATE, bitRateIn); - m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / m_refreshRate); + m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_VBV_BUFFER_SIZE, bitRateIn / m_refreshRate * 1.1); } else { m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_TARGET_BITRATE, bitRateIn); m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_PEAK_BITRATE, bitRateIn); - m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / m_refreshRate); + m_amfComponents.back()->SetProperty(AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE, bitRateIn / m_refreshRate * 1.1); } } } From a2b3a881a5df67c38f9c2a133b57012ad34eae37 Mon Sep 17 00:00:00 2001 From: Yury Date: Wed, 22 Feb 2023 00:04:10 +0100 Subject: [PATCH 31/60] Windows: Include filler data in nvenc --- alvr/server/cpp/alvr_server/Settings.cpp | 1 + alvr/server/cpp/alvr_server/Settings.h | 1 + alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp | 8 ++++++++ alvr/server/src/connection.rs | 1 + alvr/session/src/lib.rs | 1 + alvr/session/src/settings.rs | 4 ++++ 6 files changed, 16 insertions(+) diff --git a/alvr/server/cpp/alvr_server/Settings.cpp b/alvr/server/cpp/alvr_server/Settings.cpp index d97f146525..7f277155be 100644 --- a/alvr/server/cpp/alvr_server/Settings.cpp +++ b/alvr/server/cpp/alvr_server/Settings.cpp @@ -86,6 +86,7 @@ void Settings::Load() m_codec = (int32_t)config.get("codec").get(); m_rateControlMode = (uint32_t)config.get("rate_control_mode").get(); + m_fillerData = config.get("filler_data").get(); m_entropyCoding = (uint32_t)config.get("entropy_coding").get(); m_refreshRate = (int)config.get("refresh_rate").get(); mEncodeBitrateMBs = (int)config.get("encode_bitrate_mbs").get(); diff --git a/alvr/server/cpp/alvr_server/Settings.h b/alvr/server/cpp/alvr_server/Settings.h index 4cd23985d0..5126a70ecd 100644 --- a/alvr/server/cpp/alvr_server/Settings.h +++ b/alvr/server/cpp/alvr_server/Settings.h @@ -80,6 +80,7 @@ class Settings uint32_t m_preProcTor; uint32_t m_encoderQualityPreset; uint32_t m_rateControlMode; + bool m_fillerData; uint32_t m_entropyCoding; bool m_force_sw_encoding; uint32_t m_swThreadCount; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index 3ef5a3e4e0..dc90b6c9b0 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -196,6 +196,10 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar config.maxNumRefFrames = maxNumRefFrames; config.idrPeriod = gopLength; + + if (Settings::Instance().m_fillerData) { + config.enableFillerDataInsertion = Settings::Instance().m_rateControlMode == ALVR_CBR; + } } else { auto &config = encodeConfig.encodeCodecConfig.hevcConfig; @@ -215,6 +219,10 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar if (Settings::Instance().m_use10bitEncoder) { encodeConfig.encodeCodecConfig.hevcConfig.pixelBitDepthMinus8 = 2; } + + if (Settings::Instance().m_fillerData) { + config.enableFillerDataInsertion = Settings::Instance().m_rateControlMode == ALVR_CBR; + } } // Disable automatic IDR insertion by NVENC. We need to manually insert IDR when packet is dropped diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 9977ff4e61..23e98f9d68 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -252,6 +252,7 @@ async fn client_handshake( adapter_index: settings.video.adapter_index, codec: matches!(settings.video.codec, CodecType::HEVC) as _, rate_control_mode: settings.video.rate_control_mode as u32, + filler_data: settings.video.filler_data, entropy_coding: settings.video.entropy_coding as u32, refresh_rate: fps as _, use_10bit_encoder: settings.video.use_10bit_encoder, diff --git a/alvr/session/src/lib.rs b/alvr/session/src/lib.rs index 616b8fb57d..6bd47b1dc0 100644 --- a/alvr/session/src/lib.rs +++ b/alvr/session/src/lib.rs @@ -68,6 +68,7 @@ pub struct OpenvrConfig { pub preproc_tor: u32, pub encoder_quality_preset: u32, pub rate_control_mode: u32, + pub filler_data: bool, pub entropy_coding: u32, pub force_sw_encoding: bool, pub sw_thread_count: u32, diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index b411f6f086..ca22d39351 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -257,6 +257,9 @@ pub struct VideoDesc { #[schema(advanced)] pub rate_control_mode: RateControlMode, + #[schema(advanced)] + pub filler_data: bool, + #[schema(advanced)] pub entropy_coding: EntropyCoding, @@ -675,6 +678,7 @@ pub fn session_settings_default() -> SettingsDefault { variant: RateControlModeDefaultVariant::CBR, }, client_request_realtime_decoder: true, + filler_data: false, entropy_coding: EntropyCodingDefault { variant: EntropyCodingDefaultVariant::CAVLC, }, From 22fd669696bb340e830c2e3eaab1815dc1665b33 Mon Sep 17 00:00:00 2001 From: Yury Date: Sun, 26 Mar 2023 23:52:00 +0300 Subject: [PATCH 32/60] Use option instead of const for filler data (#1533) --- alvr/server/cpp/platform/win32/VideoEncoderSW.cpp | 4 +++- alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp | 4 ++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp index 887ff9d7a9..3f1ce33fca 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp @@ -86,7 +86,9 @@ void VideoEncoderSW::Initialize() { m_codecContext->rc_buffer_size = m_codecContext->bit_rate / Settings::Instance().m_refreshRate * 1.1; switch (Settings::Instance().m_rateControlMode) { case ALVR_CBR: - av_dict_set(&opt, "nal-hrd", "cbr", 0); + if (settings.m_fillerData) { + av_dict_set(&opt, "nal-hrd", "cbr", 0); + } break; case ALVR_VBR: av_dict_set(&opt, "nal-hrd", "vbr", 0); diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index 4d3b373c9f..d7159559aa 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -166,7 +166,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( case ALVR_CBR: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_CBR); // Required for CBR to work correctly - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FILLER_DATA_ENABLE, true); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FILLER_DATA_ENABLE, Settings::Instance().m_fillerData); break; case ALVR_VBR: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR); @@ -230,7 +230,7 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( case ALVR_CBR: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR); // Required for CBR to work correctly - amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FILLER_DATA_ENABLE, true); + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_FILLER_DATA_ENABLE, Settings::Instance().m_fillerData); break; case ALVR_VBR: amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR); From 2d6da3b72a1f4bf079aeeca63995b8cd7921e372 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sun, 21 May 2023 12:29:18 +0100 Subject: [PATCH 33/60] Recompile server d3d shaders --- .../win32/ColorCorrectionPixelShader.cso | Bin 2316 -> 1712 bytes .../win32/CompressAxisAlignedPixelShader.cso | Bin 2584 -> 1936 bytes .../cpp/platform/win32/FrameRenderPS.cso | Bin 744 -> 432 bytes .../cpp/platform/win32/FrameRenderVS.cso | Bin 636 -> 432 bytes .../cpp/platform/win32/QuadVertexShader.cso | Bin 688 -> 484 bytes 5 files changed, 0 insertions(+), 0 deletions(-) diff --git a/alvr/server/cpp/platform/win32/ColorCorrectionPixelShader.cso b/alvr/server/cpp/platform/win32/ColorCorrectionPixelShader.cso index 20869e9d9afdebf116d5d1400c4c29617e4e928e..1288779fa85261c402f34fc695ca3ddb43092bf3 100644 GIT binary patch delta 281 zcmeAX+Q6&p65-@L|Gw&pcg}lCKTc^AQA^)=nUR5kVFMcj12d4;0pbK8o&v<4lY5zz zC)Y5!3Asjy0ObRKVy!^MSsVuhs+NuWYW0(Ma3*XyszL2?&=cL4_> zt3w8l69?xG9V?v_gDyfBp_99tjxD;l#P7RHu!Q*Fd++!Ae1Cbr$GgkH`N5@rdFy`Z z@JjD^xH|l`ySRVLT>JDvBcfcED2==VZKa3?&}Zn?Iigzm!TLPbeC`0!p?Qdm(TL#> z=*5^bJ{$ZSjsb)c{rD0Cn-PKyK9Gan@@7U%3T!)V$CX0WMW@@AihQr9Y}t^{gPxL9 z^4gv%c}ht;a6ETYDADobn&_X7ATzGrkDv5%T$LL^SM++k-$Q0L&EJ7@p=tgRoSUEK zU%)TU;KzL!b2E%@;8$nx@8CRYzJO!WsFLoERF9mUparU9ia0oq#H&cB*$QY|adM^a zlkK^|6D9nBe1V|}9uzf2rz6O33DuRZ<2LE3Xgf`p9y+%2d~Y`}Z`5v@m5us_S#Js4 zX_mZB*TEYwtzy2Iw~9r}%3F7q@2*fa6ieae`h{}s2%pj_+EM5#+^=Yv@Z?P@dm4q> zBBx=JerkU**;5S4h)z-qY+Ta|QQMe{9_x1Eq@%BT?EKaXS~{v4OHswRmw0*<8nO4@ vD1cr+%%%6VYQ3@62ypdnCZOw&cN{!|AQpLXP3>%`hWQ^i2;#J diff --git a/alvr/server/cpp/platform/win32/CompressAxisAlignedPixelShader.cso b/alvr/server/cpp/platform/win32/CompressAxisAlignedPixelShader.cso index d3103b5aa5b6d5c5ec4a004d2801df458953e27c..15a4a9a1c717c4699221f47da1ee561e30e0244d 100644 GIT binary patch delta 96 zcmbOsGJ#*$CBn&>b8~_~OM3mWx#oYA^;gC2Vq{=on841!zzn2yfH(n&rvS0%+RetQs}G>9*!loIfo=RxvVzKb;AdvObK7&++Thhl#ok?Bspa0@KX)zMfE|9}hw{tpw0T9hw}MHTo0_R@FH diff --git a/alvr/server/cpp/platform/win32/FrameRenderPS.cso b/alvr/server/cpp/platform/win32/FrameRenderPS.cso index c16bdfd85a094a85db0c57eaa9db3820b6c2c225..d91ad3e8cb8850463eacee1a9f7aad8b1c99fc3e 100644 GIT binary patch delta 107 zcmaFCx`A28CBn&B)&Jx&*;USOZme}(rn4*I2_pjo!v-M145W2{cmWV!0pf{&RtdRA pfLH-QYzo9#91M(;w=l+Yb{}G3XmAb{Wti;1Br;ipNgPE)2LONI8`A&) literal 744 zcmbVH%}N4c6umYE7DQqMErNzt1rZu;3(FZ(Fh^!alL$&{)B$Z|oJB#@CfY@--k{p} z64EpD5G`7@X%pDF<9sv-ZMtx{=R5cBd`fjU^OFABy3s$DFJGO9=i9lr2ob$c5KSU) z0^dLv;uFw@t}AMG08NAhvdE9|_NnXioQ5Z_=&N$BU=(DdRXej>IpcJ?b{iy>Tu)KI z-_IL+#Wr@a&lpewIQWk6J_~-tVi2tRbr4I4fyRC#C>oXHl4j)1yjCPrt!6Y$SE!O# z4{%h&&9$JPZ_0p(@J;M6Yi`r>Fk|EteSoGkkOU6d-boycsJcK=>W+B1{QG8){I17I z+K9(}&-EBd32^oa@6x9{np*;&4s?}hO6b{OE_*%d6F0Z<%>?jQFW(OL&ZC!S40Ffy VP~v}!5PuH8{dpmTGW-5-`~WAmR~Y~R diff --git a/alvr/server/cpp/platform/win32/FrameRenderVS.cso b/alvr/server/cpp/platform/win32/FrameRenderVS.cso index 13ed7e2618504027376770b9abf45bc7ea9c693d..37b0a09f837efa5ddb69a2062df0fb2cc7e5bc55 100644 GIT binary patch delta 74 zcmeyvvVmFKCBn)1SHnIHbInYFfuSO)G#qHumWilAZ`HS4?vs(k^qVa zxwyKy0GY@@2E<|c_n!f%2E_KwOfJeV&QB{*&%>~Fu1~MQH%fJ5&Ks6w?Z)S2)esO+UiGoIurh Date: Sat, 10 Jun 2023 22:50:24 +0100 Subject: [PATCH 34/60] Fix json parse error message --- alvr/server/cpp/alvr_server/Settings.cpp | 2 -- alvr/server/cpp/alvr_server/Settings.h | 2 -- alvr/server/cpp/platform/win32/VideoEncoderSW.cpp | 2 +- 3 files changed, 1 insertion(+), 5 deletions(-) diff --git a/alvr/server/cpp/alvr_server/Settings.cpp b/alvr/server/cpp/alvr_server/Settings.cpp index 7f277155be..55e4f155bb 100644 --- a/alvr/server/cpp/alvr_server/Settings.cpp +++ b/alvr/server/cpp/alvr_server/Settings.cpp @@ -191,8 +191,6 @@ void Settings::Load() m_nvencRcAverageBitrate = config.get("rc_average_bitrate").get(); m_nvencEnableWeightedPrediction = config.get("nvenc_enable_weighted_prediction").get(); - m_captureFrameDir = config.get("capture_frame_dir").get(); - Debug("Config JSON: %hs\n", json.c_str()); Info("Serial Number: %hs\n", mSerialNumber.c_str()); Info("Model Number: %hs\n", mModelNumber.c_str()); diff --git a/alvr/server/cpp/alvr_server/Settings.h b/alvr/server/cpp/alvr_server/Settings.h index 5126a70ecd..da7e1ac8cb 100644 --- a/alvr/server/cpp/alvr_server/Settings.h +++ b/alvr/server/cpp/alvr_server/Settings.h @@ -156,6 +156,4 @@ class Settings int64_t m_nvencRcMaxBitrate; int64_t m_nvencRcAverageBitrate; bool m_nvencEnableWeightedPrediction; - - std::string m_captureFrameDir; }; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp index 3f1ce33fca..e5bd82a619 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp @@ -86,7 +86,7 @@ void VideoEncoderSW::Initialize() { m_codecContext->rc_buffer_size = m_codecContext->bit_rate / Settings::Instance().m_refreshRate * 1.1; switch (Settings::Instance().m_rateControlMode) { case ALVR_CBR: - if (settings.m_fillerData) { + if (Settings::Instance().m_fillerData) { av_dict_set(&opt, "nal-hrd", "cbr", 0); } break; From 0b03bbc62d4cb02407c2212a274b6a857a80daf3 Mon Sep 17 00:00:00 2001 From: Yury Date: Fri, 16 Jun 2023 09:09:07 +0300 Subject: [PATCH 35/60] Fix UE5 crash with custom depth texture (#1685) * Add error handling to OvrDirectModeComponent::CreateSwapTextureSet * Fix depth texture creating in OvrDirectModeComponent::CreateSwapTextureSet --- .../platform/win32/OvrDirectModeComponent.cpp | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp b/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp index 51cf2346db..f9fe01774a 100644 --- a/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp +++ b/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp @@ -20,19 +20,23 @@ void OvrDirectModeComponent::CreateSwapTextureSet(uint32_t unPid, const SwapText //HRESULT hr = D3D11CreateDevice(pAdapter, D3D_DRIVER_TYPE_HARDWARE, NULL, creationFlags, NULL, 0, D3D11_SDK_VERSION, &pDevice, &eFeatureLevel, &pContext); D3D11_TEXTURE2D_DESC SharedTextureDesc = {}; + DXGI_FORMAT format = (DXGI_FORMAT)pSwapTextureSetDesc->nFormat; + SharedTextureDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET; + if (format == DXGI_FORMAT_R32G8X24_TYPELESS || format == DXGI_FORMAT_R32_TYPELESS) { + SharedTextureDesc.BindFlags = D3D11_BIND_DEPTH_STENCIL; + } SharedTextureDesc.ArraySize = 1; SharedTextureDesc.MipLevels = 1; SharedTextureDesc.SampleDesc.Count = pSwapTextureSetDesc->nSampleCount; SharedTextureDesc.SampleDesc.Quality = 0; SharedTextureDesc.Usage = D3D11_USAGE_DEFAULT; - SharedTextureDesc.Format = (DXGI_FORMAT)pSwapTextureSetDesc->nFormat; + SharedTextureDesc.Format = format; // Some(or all?) applications request larger texture than we specified in GetRecommendedRenderTargetSize. // But, we must create textures in requested size to prevent cropped output. And then we must shrink texture to H.264 movie size. SharedTextureDesc.Width = pSwapTextureSetDesc->nWidth; SharedTextureDesc.Height = pSwapTextureSetDesc->nHeight; - SharedTextureDesc.BindFlags = D3D11_BIND_SHADER_RESOURCE | D3D11_BIND_RENDER_TARGET; //SharedTextureDesc.MiscFlags = D3D11_RESOURCE_MISC_SHARED_KEYEDMUTEX | D3D11_RESOURCE_MISC_SHARED_NTHANDLE; SharedTextureDesc.MiscFlags = D3D11_RESOURCE_MISC_SHARED; @@ -42,12 +46,28 @@ void OvrDirectModeComponent::CreateSwapTextureSet(uint32_t unPid, const SwapText for (int i = 0; i < 3; i++) { HRESULT hr = m_pD3DRender->GetDevice()->CreateTexture2D(&SharedTextureDesc, NULL, &processResource->textures[i]); //LogDriver("texture%d %p res:%d %s", i, texture[i], hr, GetDxErrorStr(hr).c_str()); + if (FAILED(hr)) { + Error("CreateSwapTextureSet CreateTexture2D %p %ls\n", hr, GetErrorStr(hr).c_str()); + delete processResource; + break; + } IDXGIResource* pResource; hr = processResource->textures[i]->QueryInterface(__uuidof(IDXGIResource), (void**)&pResource); + if (FAILED(hr)) { + Error("CreateSwapTextureSet QueryInterface %p %ls\n", hr, GetErrorStr(hr).c_str()); + delete processResource; + break; + } //LogDriver("QueryInterface %p res:%d %s", pResource, hr, GetDxErrorStr(hr).c_str()); hr = pResource->GetSharedHandle(&processResource->sharedHandles[i]); + if (FAILED(hr)) { + Error("CreateSwapTextureSet GetSharedHandle %p %ls\n", hr, GetErrorStr(hr).c_str()); + delete processResource; + pResource->Release(); + break; + } //LogDriver("GetSharedHandle %p res:%d %s", processResource->sharedHandles[i], hr, GetDxErrorStr(hr).c_str()); m_handleMap.insert(std::make_pair(processResource->sharedHandles[i], std::make_pair(processResource, i))); From 788445df7f96a492e91d6e2f118956ecb5c02cec Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Mon, 26 Jun 2023 22:49:17 +0100 Subject: [PATCH 36/60] better defaults --- alvr/dashboard/js/app/customSettings.js | 4 +-- alvr/dashboard/js/app/setupWizard.js | 27 ++++++++++---- alvr/dashboard/js/app/templates/wizard.html | 4 +-- alvr/session/src/settings.rs | 40 +++++++++------------ 4 files changed, 42 insertions(+), 33 deletions(-) diff --git a/alvr/dashboard/js/app/customSettings.js b/alvr/dashboard/js/app/customSettings.js index c7108371ae..15dc828d06 100644 --- a/alvr/dashboard/js/app/customSettings.js +++ b/alvr/dashboard/js/app/customSettings.js @@ -588,10 +588,10 @@ define([ ${alvrSettings.getHelpReset( "trackingSpeed", "_root_headset_controllers_content", - "steamvr", + "oculus", (postFix = ""), "trackingSpeed", - i18nWizard.steamvrTracking + i18nWizard.oculusTracking )}
diff --git a/alvr/dashboard/js/app/setupWizard.js b/alvr/dashboard/js/app/setupWizard.js index 9830b00850..e832bd8a97 100644 --- a/alvr/dashboard/js/app/setupWizard.js +++ b/alvr/dashboard/js/app/setupWizard.js @@ -50,6 +50,18 @@ define([ keyboard: false, }); + var trackingRadioButton = $("input:radio[name='tracking'][value='oculus']"); + if (trackingRadioButton.length > 0) { + trackingRadioButton.prop("checked", "true"); + trackingRadioButton.parent().addClass("active"); + } + + var perfRadioButton = $("input:radio[name='performance'][value='visual_quality']"); + if (perfRadioButton.length > 0) { + perfRadioButton.prop("checked", "true"); + perfRadioButton.parent().addClass("active"); + } + $("#wizardBackButton").hide(); $("#GPUSupportText").text(getAndCheckGPUSupport()); @@ -169,15 +181,17 @@ define([ const ffrStrengthTarget = $("#_root_video_foveatedRendering_content_strength"); const bitrateTarget = $("#_root_video_encodeBitrateMbs"); const preferredFps = $("#_root_video_preferredFps"); + const adaptiveBitrate = $("#_root_connection_adaptiveBitrateEnabled"); switch (target.attr("value")) { case "compatibility": - renderResolutionScale.val(0.75); - targetResolutionScale.val(0.75); - bitrateTarget.val(15); + renderResolutionScale.val(1); + targetResolutionScale.val(1); + bitrateTarget.val(60); enableFfrTarget.prop("checked", true); + adaptiveBitrate.prop("checked", true); ffrStrengthTarget.val(2); - preferredFps.val(72); + preferredFps.val(90); const h264CodecTarget = $("#_root_video_codec_H264-choice-"); h264CodecTarget @@ -192,8 +206,9 @@ define([ case "visual_quality": renderResolutionScale.val(1); targetResolutionScale.val(1); - bitrateTarget.val(40); - enableFfrTarget.prop("checked", false); + bitrateTarget.val(200); + adaptiveBitrate.prop("checked", false); + enableFfrTarget.prop("checked", true); preferredFps.val(90); const hevcCodecTarget = $("#_root_video_codec_HEVC-choice-"); diff --git a/alvr/dashboard/js/app/templates/wizard.html b/alvr/dashboard/js/app/templates/wizard.html index 0e38d702c1..591c3d2405 100644 --- a/alvr/dashboard/js/app/templates/wizard.html +++ b/alvr/dashboard/js/app/templates/wizard.html @@ -44,7 +44,7 @@
<%= titleTracking %>
diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index ca22d39351..7f42690dba 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -656,23 +656,23 @@ pub fn session_settings_default() -> SettingsDefault { adapter_index: 0, render_resolution: FrameSizeDefault { variant: FrameSizeDefaultVariant::Scale, - Scale: 0.75, + Scale: 1.0, Absolute: FrameSizeAbsoluteDefault { - width: 2880, - height: 1600, + width: 3664, + height: 1920, }, }, recommended_target_resolution: FrameSizeDefault { variant: FrameSizeDefaultVariant::Scale, - Scale: 0.75, + Scale: 1.0, Absolute: FrameSizeAbsoluteDefault { - width: 2880, - height: 1600, + width: 3664, + height: 1920, }, }, - preferred_fps: 72., + preferred_fps: 90., codec: CodecTypeDefault { - variant: CodecTypeDefaultVariant::H264, + variant: CodecTypeDefaultVariant::HEVC, }, rate_control_mode: RateControlModeDefault { variant: RateControlModeDefaultVariant::CBR, @@ -682,11 +682,11 @@ pub fn session_settings_default() -> SettingsDefault { entropy_coding: EntropyCodingDefault { variant: EntropyCodingDefaultVariant::CAVLC, }, - use_10bit_encoder: false, + use_10bit_encoder: true, sw_thread_count: 0, - encode_bitrate_mbs: 30, + encode_bitrate_mbs: 200, adaptive_bitrate: SwitchDefault { - enabled: true, + enabled: false, content: AdaptiveBitrateDescDefault { bitrate_maximum: 200, latency_target: 12000, @@ -773,7 +773,7 @@ pub fn session_settings_default() -> SettingsDefault { }, }, color_correction: SwitchDefault { - enabled: true, + enabled: false, content: ColorCorrectionDescDefault { brightness: 0., contrast: 0., @@ -854,11 +854,11 @@ pub fn session_settings_default() -> SettingsDefault { registered_device_type: "oculus/1WMGH000XX0000_Controller".into(), input_profile_path: "{oculus}/input/touch_profile.json".into(), pose_time_offset: 0.01, - clientside_prediction: false, - serverside_prediction: true, + clientside_prediction: true, + serverside_prediction: false, linear_velocity_cutoff: 0.01, angular_velocity_cutoff: 10., - position_offset_left: [-0.0065, 0.002, -0.051], + position_offset_left: [-0.008, 0.038, -0.01], rotation_offset_left: [40., 0., 0.], haptics_intensity: 1., haptics_amplitude_curve: 0.4, @@ -882,7 +882,7 @@ pub fn session_settings_default() -> SettingsDefault { variant: if !cfg!(target_os = "linux") { SocketProtocolDefaultVariant::Udp } else { - SocketProtocolDefaultVariant::Tcp + SocketProtocolDefaultVariant::Udp }, ThrottledUdp: SocketProtocolThrottledUdpDefault { bitrate_multiplier: 1.5, @@ -919,13 +919,7 @@ pub fn session_settings_default() -> SettingsDefault { restart_confirm_dialog: true, prompt_before_update: true, update_channel: UpdateChannelDefault { - variant: if alvr_common::is_stable() && cfg!(windows) { - UpdateChannelDefaultVariant::Stable - } else if alvr_common::is_nightly() && cfg!(windows) { - UpdateChannelDefaultVariant::Nightly - } else { - UpdateChannelDefaultVariant::NoUpdates - }, + variant: UpdateChannelDefaultVariant::NoUpdates, }, log_to_disk: cfg!(debug_assertions), notification_level: LogLevelDefault { From c3bc458a5d80347f9f94b96fd15aba7e74b88a9c Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Mon, 3 Jul 2023 22:38:48 +0100 Subject: [PATCH 37/60] fix linux builds --- alvr/server/build.rs | 2 +- .../cpp/platform/linux/EncodePipelineVAAPI.h | 16 ++++++++++++++++ .../platform/linux/generated/avutil_loader.cpp | 13 +++++++++++++ .../cpp/platform/linux/generated/avutil_loader.h | 1 + alvr/vulkan-layer/layer/layer.h | 12 ++++++++++++ alvr/vulkan-layer/layer/settings.h | 5 +++-- 6 files changed, 46 insertions(+), 3 deletions(-) diff --git a/alvr/server/build.rs b/alvr/server/build.rs index 04f79aef9a..bc8903c335 100644 --- a/alvr/server/build.rs +++ b/alvr/server/build.rs @@ -9,7 +9,7 @@ use std::{env, path::PathBuf}; #[cfg(target_os = "linux")] fn do_ffmpeg_pkg_config(build: &mut cc::Build) { let ffmpeg_path = - env::var("CARGO_MANIFEST_DIR").unwrap() + "/../../deps/linux/FFmpeg-release-5.1"; + env::var("CARGO_MANIFEST_DIR").unwrap() + "/../../deps/linux/FFmpeg-release-5.1/"; #[cfg(feature = "bundled_ffmpeg")] { diff --git a/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.h b/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.h index 92f7e9b520..73f2287f6b 100644 --- a/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.h +++ b/alvr/server/cpp/platform/linux/EncodePipelineVAAPI.h @@ -11,6 +11,10 @@ extern "C" struct AVFrame; namespace alvr { +#define PRESET_MODE_SPEED (0) +#define PRESET_MODE_BALANCE (1) +#define PRESET_MODE_QUALITY (2) + class EncodePipelineVAAPI: public EncodePipeline { public: @@ -25,5 +29,17 @@ class EncodePipelineVAAPI: public EncodePipeline AVFilterGraph *filter_graph = nullptr; AVFilterContext *filter_in = nullptr; AVFilterContext *filter_out = nullptr; + + union vlVaQualityBits { + unsigned int quality; + struct { + unsigned int valid_setting: 1; + unsigned int preset_mode: 2; + unsigned int pre_encode_mode: 1; + unsigned int vbaq_mode: 1; + unsigned int reservered: 27; + }; + }; + }; } diff --git a/alvr/server/cpp/platform/linux/generated/avutil_loader.cpp b/alvr/server/cpp/platform/linux/generated/avutil_loader.cpp index 7cd668fb88..4f84c06390 100644 --- a/alvr/server/cpp/platform/linux/generated/avutil_loader.cpp +++ b/alvr/server/cpp/platform/linux/generated/avutil_loader.cpp @@ -241,6 +241,19 @@ bool avutil::Load(const std::string& library_name) { return false; } +#if defined(LIBRARY_LOADER_AVUTIL_LOADER_H_DLOPEN) + av_opt_set_int = + reinterpret_castav_opt_set_int)>( + dlsym(library_, "av_opt_set_int")); +#else + av_opt_set_int = &::av_opt_set_int; +#endif + if (!av_opt_set_int) { + CleanUp(true); + return false; + } + + #if defined(LIBRARY_LOADER_AVUTIL_LOADER_H_DLOPEN) av_strdup = reinterpret_castav_strdup)>( diff --git a/alvr/server/cpp/platform/linux/generated/avutil_loader.h b/alvr/server/cpp/platform/linux/generated/avutil_loader.h index b747fb233c..eab27da1c7 100644 --- a/alvr/server/cpp/platform/linux/generated/avutil_loader.h +++ b/alvr/server/cpp/platform/linux/generated/avutil_loader.h @@ -45,6 +45,7 @@ class avutil { decltype(&::av_log_set_callback) av_log_set_callback; decltype(&::av_log_set_level) av_log_set_level; decltype(&::av_opt_set) av_opt_set; + decltype(&::av_opt_set_int) av_opt_set_int; decltype(&::av_strdup) av_strdup; decltype(&::av_strerror) av_strerror; decltype(&::av_vkfmt_from_pixfmt) av_vkfmt_from_pixfmt; diff --git a/alvr/vulkan-layer/layer/layer.h b/alvr/vulkan-layer/layer/layer.h index b1cf4fde2c..f782e0a6b8 100644 --- a/alvr/vulkan-layer/layer/layer.h +++ b/alvr/vulkan-layer/layer/layer.h @@ -13,6 +13,18 @@ #endif #endif +// VK_LAYER_EXPORT has been removed since 08/03/2003: +// ref: https://github.com/KhronosGroup/Vulkan-Headers/commit/e8b8e06d092ab406b097907ecaae1a8aae9c7d53 +#if !defined(VK_LAYER_EXPORT) +#if defined(__GNUC__) && __GNUC__ >= 4 +#define VK_LAYER_EXPORT __attribute__((visibility("default"))) +#elif defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590) +#define VK_LAYER_EXPORT __attribute__((visibility("default"))) +#else +#define VK_LAYER_EXPORT +#endif +#endif + extern "C" const char *g_sessionPath; extern "C" VK_LAYER_EXPORT PFN_vkVoidFunction VKAPI_CALL wsi_layer_vkGetDeviceProcAddr(VkDevice device, const char *funcName); diff --git a/alvr/vulkan-layer/layer/settings.h b/alvr/vulkan-layer/layer/settings.h index 4080a8389c..7fcfa5ce06 100644 --- a/alvr/vulkan-layer/layer/settings.h +++ b/alvr/vulkan-layer/layer/settings.h @@ -2,6 +2,7 @@ #include #include +#include class Settings { @@ -22,6 +23,6 @@ class Settings } int m_refreshRate; - uint32_t m_renderWidth; - uint32_t m_renderHeight; + std::uint32_t m_renderWidth; + std::uint32_t m_renderHeight; }; From f9604c5a598807b435402cf8f8272a34535412f2 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sat, 19 Aug 2023 18:34:31 +0100 Subject: [PATCH 38/60] AMF sdk v1.4.30 --- .../win32/amf/public/common/AMFMath.h | 12 +- .../win32/amf/public/common/ByteArray.h | 12 +- .../win32/amf/public/common/CPUCaps.h | 274 ++++++++++++ .../win32/amf/public/common/ObservableImpl.h | 5 + .../platform/win32/amf/public/common/Thread.h | 4 + .../public/common/Windows/ThreadWindows.cpp | 31 +- .../amf/public/include/components/Component.h | 1 + .../public/include/components/CursorCapture.h | 1 + .../include/components/FFMPEGEncoderAV1.h | 44 ++ .../include/components/FFMPEGEncoderH264.h | 44 ++ .../include/components/FFMPEGEncoderHEVC.h | 44 ++ .../amf/public/include/components/HQScaler.h | 6 +- .../public/include/components/PreAnalysis.h | 9 +- .../include/components/SupportedCodecs.h | 61 +++ .../public/include/components/VQEnhancer.h | 48 +++ .../include/components/VideoDecoderUVD.h | 13 +- .../include/components/VideoEncoderAV1.h | 361 ++++++++++++++++ .../include/components/VideoEncoderHEVC.h | 34 +- .../include/components/VideoEncoderVCE.h | 56 ++- .../amf/public/include/core/CurrentTime.h | 1 + .../win32/amf/public/include/core/Platform.h | 7 +- .../win32/amf/public/include/core/Variant.h | 394 +++++++++--------- .../win32/amf/public/include/core/Version.h | 2 +- .../win32/amf/public/include/core/VulkanAMF.h | 111 +++++ 24 files changed, 1360 insertions(+), 215 deletions(-) create mode 100644 alvr/server/cpp/platform/win32/amf/public/common/CPUCaps.h create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderAV1.h create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderH264.h create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderHEVC.h create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/components/SupportedCodecs.h create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/components/VQEnhancer.h create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h diff --git a/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h b/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h index ab38768aab..958a584424 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h @@ -893,13 +893,13 @@ namespace amf } inline bool DecomposeMatrix(amf::Quaternion &q, amf::Vector &p, amf::Vector &s) { - static amf::Vector g_XMIdentityR0( 1.0f, 0.0f, 0.0f, 0.0f ); - static amf::Vector g_XMIdentityR1( 0.0f, 1.0f, 0.0f, 0.0f ); - static amf::Vector g_XMIdentityR2( 0.0f, 0.0f, 1.0f, 0.0f ); + static amf::Vector amfXMIdentityR0( 1.0f, 0.0f, 0.0f, 0.0f ); + static amf::Vector amfXMIdentityR1( 0.0f, 1.0f, 0.0f, 0.0f ); + static amf::Vector amfXMIdentityR2( 0.0f, 0.0f, 1.0f, 0.0f ); static const amf::VectorPOD *pvCanonicalBasis[3] = { - &g_XMIdentityR0, - &g_XMIdentityR1, - &g_XMIdentityR2 + &amfXMIdentityR0, + &amfXMIdentityR1, + &amfXMIdentityR2 }; // p.Assign(-m.m[0][3], -m.m[1][3], -m.m[2][3], 0); diff --git a/alvr/server/cpp/platform/win32/amf/public/common/ByteArray.h b/alvr/server/cpp/platform/win32/amf/public/common/ByteArray.h index b841ac774a..766f2d8175 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/ByteArray.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/ByteArray.h @@ -38,6 +38,7 @@ #pragma once #include "../include/core/Platform.h" #define INIT_ARRAY_SIZE 1024 +#define ARRAY_MAX_SIZE (1LL << 60LL) // extremely large maximum size //------------------------------------------------------------------------ class AMFByteArray { @@ -76,7 +77,16 @@ class AMFByteArray } else if (num > m_iMaxSize) { - m_iMaxSize = (num / INIT_ARRAY_SIZE) * INIT_ARRAY_SIZE + INIT_ARRAY_SIZE; + // This is done to prevent the following error from surfacing + // for the pNewData allocation on some compilers: + // -Werror=alloc-size-larger-than= + amf_size newSize = (num / INIT_ARRAY_SIZE) * INIT_ARRAY_SIZE + INIT_ARRAY_SIZE; + if (newSize > ARRAY_MAX_SIZE) + { + return; + } + m_iMaxSize = newSize; + amf_uint8 *pNewData = new amf_uint8[m_iMaxSize]; memset(pNewData, 0, m_iMaxSize); if (m_pData != NULL) diff --git a/alvr/server/cpp/platform/win32/amf/public/common/CPUCaps.h b/alvr/server/cpp/platform/win32/amf/public/common/CPUCaps.h new file mode 100644 index 0000000000..9669eb94a0 --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/common/CPUCaps.h @@ -0,0 +1,274 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2019 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) +#include +#else +#include +#include +#endif + +class InstructionSet +{ + // forward declarations + class InstructionSet_Internal; + +public: + // getters + static std::string Vendor(void) { return CPU_Rep.vendor_; } + static std::string Brand(void) { return CPU_Rep.brand_; } + + static bool SSE3(void) { return CPU_Rep.f_1_ECX_[0]; } + static bool PCLMULQDQ(void) { return CPU_Rep.f_1_ECX_[1]; } + static bool MONITOR(void) { return CPU_Rep.f_1_ECX_[3]; } + static bool SSSE3(void) { return CPU_Rep.f_1_ECX_[9]; } + static bool FMA(void) { return CPU_Rep.f_1_ECX_[12]; } + static bool CMPXCHG16B(void) { return CPU_Rep.f_1_ECX_[13]; } + static bool SSE41(void) { return CPU_Rep.f_1_ECX_[19]; } + static bool SSE42(void) { return CPU_Rep.f_1_ECX_[20]; } + static bool MOVBE(void) { return CPU_Rep.f_1_ECX_[22]; } + static bool POPCNT(void) { return CPU_Rep.f_1_ECX_[23]; } + static bool AES(void) { return CPU_Rep.f_1_ECX_[25]; } + static bool XSAVE(void) { return CPU_Rep.f_1_ECX_[26]; } + static bool OSXSAVE(void) { return CPU_Rep.f_1_ECX_[27]; } + static bool AVX(void) { return CPU_Rep.f_1_ECX_[28]; } + static bool F16C(void) { return CPU_Rep.f_1_ECX_[29]; } + static bool RDRAND(void) { return CPU_Rep.f_1_ECX_[30]; } + + static bool MSR(void) { return CPU_Rep.f_1_EDX_[5]; } + static bool CX8(void) { return CPU_Rep.f_1_EDX_[8]; } + static bool SEP(void) { return CPU_Rep.f_1_EDX_[11]; } + static bool CMOV(void) { return CPU_Rep.f_1_EDX_[15]; } + static bool CLFSH(void) { return CPU_Rep.f_1_EDX_[19]; } + static bool MMX(void) { return CPU_Rep.f_1_EDX_[23]; } + static bool FXSR(void) { return CPU_Rep.f_1_EDX_[24]; } + static bool SSE(void) { return CPU_Rep.f_1_EDX_[25]; } + static bool SSE2(void) { return CPU_Rep.f_1_EDX_[26]; } + + static bool FSGSBASE(void) { return CPU_Rep.f_7_EBX_[0]; } + static bool BMI1(void) { return CPU_Rep.f_7_EBX_[3]; } + static bool HLE(void) { return CPU_Rep.isIntel_ && CPU_Rep.f_7_EBX_[4]; } + static bool AVX2(void) { return CPU_Rep.f_7_EBX_[5]; } + static bool BMI2(void) { return CPU_Rep.f_7_EBX_[8]; } + static bool ERMS(void) { return CPU_Rep.f_7_EBX_[9]; } + static bool INVPCID(void) { return CPU_Rep.f_7_EBX_[10]; } + static bool RTM(void) { return CPU_Rep.isIntel_ && CPU_Rep.f_7_EBX_[11]; } + static bool AVX512F(void) { return CPU_Rep.f_7_EBX_[16]; } + static bool RDSEED(void) { return CPU_Rep.f_7_EBX_[18]; } + static bool ADX(void) { return CPU_Rep.f_7_EBX_[19]; } + static bool AVX512PF(void) { return CPU_Rep.f_7_EBX_[26]; } + static bool AVX512ER(void) { return CPU_Rep.f_7_EBX_[27]; } + static bool AVX512CD(void) { return CPU_Rep.f_7_EBX_[28]; } + static bool SHA(void) { return CPU_Rep.f_7_EBX_[29]; } + + static bool PREFETCHWT1(void) { return CPU_Rep.f_7_ECX_[0]; } + + static bool LAHF(void) { return CPU_Rep.f_81_ECX_[0]; } + static bool LZCNT(void) { return CPU_Rep.isIntel_ && CPU_Rep.f_81_ECX_[5]; } + static bool ABM(void) { return CPU_Rep.isAMD_ && CPU_Rep.f_81_ECX_[5]; } + static bool SSE4a(void) { return CPU_Rep.isAMD_ && CPU_Rep.f_81_ECX_[6]; } + static bool XOP(void) { return CPU_Rep.isAMD_ && CPU_Rep.f_81_ECX_[11]; } + static bool TBM(void) { return CPU_Rep.isAMD_ && CPU_Rep.f_81_ECX_[21]; } + + static bool SYSCALL(void) { return CPU_Rep.isIntel_ && CPU_Rep.f_81_EDX_[11]; } + static bool MMXEXT(void) { return CPU_Rep.isAMD_ && CPU_Rep.f_81_EDX_[22]; } + static bool RDTSCP(void) { return CPU_Rep.isIntel_ && CPU_Rep.f_81_EDX_[27]; } + static bool _3DNOWEXT(void) { return CPU_Rep.isAMD_ && CPU_Rep.f_81_EDX_[30]; } + static bool _3DNOW(void) { return CPU_Rep.isAMD_ && CPU_Rep.f_81_EDX_[31]; } + +private: + static const InstructionSet_Internal CPU_Rep; + + class InstructionSet_Internal + { + protected: + void GetCpuID + ( + int32_t registers[4], //out + int32_t functionID, + int32_t subfunctionID = 0 + ) + { + #ifdef _WIN32 + if(!subfunctionID) + { + __cpuid((int *)registers, (int)functionID); + } + else + { + __cpuidex((int *)registers, (int)functionID, subfunctionID); + } + #else + + asm volatile + ( + "cpuid": + "=a" (registers[0]), + "=b" (registers[1]), + "=c" (registers[2]), + "=d" (registers[3]): + "a" (functionID), + "c" (subfunctionID) + ); + + #endif + } + public: + InstructionSet_Internal() + : nIds_( 0 ), + nExIds_( 0 ), + isIntel_( false ), + isAMD_( false ), + f_1_ECX_( 0 ), + f_1_EDX_( 0 ), + f_7_EBX_( 0 ), + f_7_ECX_( 0 ), + f_81_ECX_( 0 ), + f_81_EDX_( 0 ) + { + //int cpuInfo[4] = {-1}; + std::array cpui; + + // Calling __cpuid with 0x0 as the function_id argument + // gets the number of the highest valid function ID. + + //todo: verify + //__cpuid(cpui.data(), 0); + GetCpuID(cpui.data(), 0); + + nIds_ = cpui[0]; + + for (int i = 0; i <= nIds_; ++i) + { + //todo: verify + //__cpuidex(cpui.data(), i, 0); + GetCpuID(cpui.data(), i, 0); + + data_.push_back(cpui); + } + + // Capture vendor string + char vendor[0x20]; + std::memset(vendor, 0, sizeof(vendor)); + *reinterpret_cast(vendor) = data_[0][1]; + *reinterpret_cast(vendor + 4) = data_[0][3]; + *reinterpret_cast(vendor + 8) = data_[0][2]; + vendor_ = vendor; + if (vendor_ == "GenuineIntel") + { + isIntel_ = true; + } + else if (vendor_ == "AuthenticAMD") + { + isAMD_ = true; + } + + // load bitset with flags for function 0x00000001 + if (nIds_ >= 1) + { + f_1_ECX_ = data_[1][2]; + f_1_EDX_ = data_[1][3]; + } + + // load bitset with flags for function 0x00000007 + if (nIds_ >= 7) + { + f_7_EBX_ = data_[7][1]; + f_7_ECX_ = data_[7][2]; + } + + // Calling __cpuid with 0x80000000 as the function_id argument + // gets the number of the highest valid extended ID. + //todo: verify + //__cpuid(cpui.data(), 0x80000000); + GetCpuID(cpui.data(), 0x80000000); + + nExIds_ = cpui[0]; + + char brand[0x40]; + memset(brand, 0, sizeof(brand)); + + for (int i = 0x80000000; i <= nExIds_; ++i) + { + //todo: verify + //__cpuidex(cpui.data(), i, 0); + GetCpuID(cpui.data(), i, 0); + + extdata_.push_back(cpui); + } + + // load bitset with flags for function 0x80000001 + if (nExIds_ >= 0x80000001) + { + f_81_ECX_ = extdata_[1][2]; + f_81_EDX_ = extdata_[1][3]; + } + + // Interpret CPU brand string if reported + if (nExIds_ >= 0x80000004) + { + memcpy(brand, extdata_[2].data(), sizeof(cpui)); + memcpy(brand + 16, extdata_[3].data(), sizeof(cpui)); + memcpy(brand + 32, extdata_[4].data(), sizeof(cpui)); + brand_ = brand; + } + }; + + virtual ~InstructionSet_Internal() + { + int i = 0; + ++i; + } + + int nIds_; + int nExIds_; + std::string vendor_; + std::string brand_; + bool isIntel_; + bool isAMD_; + std::bitset<32> f_1_ECX_; + std::bitset<32> f_1_EDX_; + std::bitset<32> f_7_EBX_; + std::bitset<32> f_7_ECX_; + std::bitset<32> f_81_ECX_; + std::bitset<32> f_81_EDX_; + std::vector> data_; + std::vector> extdata_; + }; +}; diff --git a/alvr/server/cpp/platform/win32/amf/public/common/ObservableImpl.h b/alvr/server/cpp/platform/win32/amf/public/common/ObservableImpl.h index 44cd7f2e9a..8353f9996d 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/ObservableImpl.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/ObservableImpl.h @@ -60,6 +60,11 @@ namespace amf } virtual void AMF_STD_CALL AddObserver(Observer* pObserver) { + if (pObserver == nullptr) + { + return; + } + amf_bool found = false; AMFLock lock(&m_sc); diff --git a/alvr/server/cpp/platform/win32/amf/public/common/Thread.h b/alvr/server/cpp/platform/win32/amf/public/common/Thread.h index 324a37041b..ab5cac156b 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/Thread.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/Thread.h @@ -110,6 +110,10 @@ extern "C" #define amf_virtual_free amf_free #endif + // cpu +#ifdef _WIN32 + amf_int32 AMF_STD_CALL amf_get_cpu_cores(); +#endif } diff --git a/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp b/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp index 612261459a..a4f4af027d 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp @@ -37,6 +37,7 @@ #include #include +#include //---------------------------------------------------------------------------------------- // threading //---------------------------------------------------------------------------------------- @@ -382,7 +383,35 @@ void AMF_CDECL_CALL amf_virtual_free(void* ptr) { VirtualFree(ptr, NULL, MEM_RELEASE); } -#endif //#if !defined(METRO_APP)//---------------------------------------------------------------------------------------- +#endif //#if !defined(METRO_APP) +//---------------------------------------------------------------------------------------- +// cpu +//---------------------------------------------------------------------------------------- +amf_int32 AMF_STD_CALL amf_get_cpu_cores() +{ + //query the number of CPU HW cores + DWORD len = 0; + GetLogicalProcessorInformation(NULL, &len); + + amf_uint32 count = len / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); + std::unique_ptr pBuffer(new SYSTEM_LOGICAL_PROCESSOR_INFORMATION[count]); + if (pBuffer) + { + GetLogicalProcessorInformation(pBuffer.get(), &len); + count = len / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION); + amf_int32 iCores = 0; + for (amf_uint32 idx = 0; idx < count; idx++) + { + if (pBuffer[idx].Relationship == RelationProcessorCore) + { + iCores++; + } + } + return iCores; + } + + return 1; +} //---------------------------------------------------------------------------------------- //---------------------------------------------------------------------------------------- #endif // _WIN32 \ No newline at end of file diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/Component.h b/alvr/server/cpp/platform/win32/amf/public/include/components/Component.h index 2cd9fa5e46..5293b8f4e7 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/Component.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/Component.h @@ -414,6 +414,7 @@ typedef enum AMF_STREAM_CODEC_ID_ENUM // matched codecs from VideoDecoxcderU AMF_STREAM_CODEC_ID_VP9 = 11, // AMFVideoDecoderHW_VP9 AMF_STREAM_CODEC_ID_VP9_10BIT = 12, // AMFVideoDecoderHW_VP9_10BIT AMF_STREAM_CODEC_ID_AV1 = 13, // AMFVideoDecoderHW_AV1 + AMF_STREAM_CODEC_ID_AV1_12BIT = 14, // AMFVideoDecoderHW_AV1_12BIT } AMF_STREAM_CODEC_ID_ENUM; // common stream properties diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/CursorCapture.h b/alvr/server/cpp/platform/win32/amf/public/include/components/CursorCapture.h index 8b071c99ac..e21c169098 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/CursorCapture.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/CursorCapture.h @@ -43,6 +43,7 @@ namespace amf class AMFCursorCapture : public AMFInterface { public: + AMF_DECLARE_IID(0x166efa1a, 0x19b8, 0x42f2, 0x86, 0x0f, 0x56, 0x69, 0xca, 0x7a, 0x85, 0x4c) virtual AMF_RESULT AMF_STD_CALL AcquireCursor(amf::AMFSurface** pSurface) = 0; virtual AMF_RESULT AMF_STD_CALL Reset() = 0; }; diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderAV1.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderAV1.h new file mode 100644 index 0000000000..0e5e3f06d6 --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderAV1.h @@ -0,0 +1,44 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +//------------------------------------------------------------------------------------------------- +// HEVCEncoderFFMPEG interface declaration +//------------------------------------------------------------------------------------------------- +#ifndef AMF_AV1EncoderFFMPEG_h +#define AMF_AV1EncoderFFMPEG_h + +#pragma once + +#define FFMPEG_ENCODER_AV1 L"AV1EncoderFFMPEG" + + +#endif //#ifndef AMF_HEVCEncoderFFMPEG_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderH264.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderH264.h new file mode 100644 index 0000000000..ef5e74629a --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderH264.h @@ -0,0 +1,44 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; H264/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +//------------------------------------------------------------------------------------------------- +// H264EncoderFFMPEG interface declaration +//------------------------------------------------------------------------------------------------- +#ifndef AMF_H264EncoderFFMPEG_h +#define AMF_H264EncoderFFMPEG_h + +#pragma once + +#define FFMPEG_ENCODER_H264 L"H264EncoderFFMPEG" + + +#endif //#ifndef AMF_H264EncoderFFMPEG_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderHEVC.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderHEVC.h new file mode 100644 index 0000000000..a5fec4f23c --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/FFMPEGEncoderHEVC.h @@ -0,0 +1,44 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +//------------------------------------------------------------------------------------------------- +// HEVCEncoderFFMPEG interface declaration +//------------------------------------------------------------------------------------------------- +#ifndef AMF_HEVCEncoderFFMPEG_h +#define AMF_HEVCEncoderFFMPEG_h + +#pragma once + +#define FFMPEG_ENCODER_HEVC L"HEVCEncoderFFMPEG" + + +#endif //#ifndef AMF_HEVCEncoderFFMPEG_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/HQScaler.h b/alvr/server/cpp/platform/win32/amf/public/include/components/HQScaler.h index 6074ead421..251723e033 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/HQScaler.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/HQScaler.h @@ -43,7 +43,10 @@ enum AMF_HQ_SCALER_ALGORITHM_ENUM { AMF_HQ_SCALER_ALGORITHM_BILINEAR = 0, AMF_HQ_SCALER_ALGORITHM_BICUBIC = 1, - AMF_HQ_SCALER_ALGORITHM_FSR = 2, + AMF_HQ_SCALER_ALGORITHM_FSR = 2, // deprecated + AMF_HQ_SCALER_ALGORITHM_VIDEOSR1_0 = 2, + AMF_HQ_SCALER_ALGORITHM_POINT = 3, + AMF_HQ_SCALER_ALGORITHM_VIDEOSR1_1 = 4, }; @@ -61,5 +64,6 @@ enum AMF_HQ_SCALER_ALGORITHM_ENUM #define AMF_HQ_SCALER_FROM_SRGB L"FromSRGB" // bool (default=true) Convert to SRGB. #define AMF_HQ_SCALER_SHARPNESS L"HQScalerSharpness" // Float in the range of [0.0, 2.0] +#define AMF_HQ_SCALER_FRAME_RATE L"HQScalerFrameRate" // Frame rate (off, 15, 30, 60) #endif //#ifndef AMFHQScaler_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h b/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h index 2e64b28bb6..28c0192bfe 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h @@ -80,7 +80,8 @@ enum AMF_PA_PAQ_MODE_ENUM enum AMF_PA_TAQ_MODE_ENUM { AMF_PA_TAQ_MODE_NONE = 0, - AMF_PA_TAQ_MODE_1 = 1 + AMF_PA_TAQ_MODE_1 = 1, + AMF_PA_TAQ_MODE_2 = 2 }; enum AMF_PA_HIGH_MOTION_QUALITY_BOOST_MODE_ENUM @@ -123,10 +124,10 @@ enum AMF_PA_HIGH_MOTION_QUALITY_BOOST_MODE_ENUM ////////////////////////////////////////////////// -// properties set by PA on output buffer interface +// properties set by PA on output buffer interface in standalone mode #define AMF_PA_ACTIVITY_MAP L"PAActivityMap" // AMFInterface* -> AMFSurface*; Values: int32 - When PA is standalone, there will be a 2D Activity map generated for each frame -#define AMF_PA_SCENE_CHANGE_DETECT L"PASceneChangeDetect" // bool - True/False - available if AMF_PA_SCENE_CHANGE_DETECTION_ENABLE was set to True -#define AMF_PA_STATIC_SCENE_DETECT L"PAStaticSceneDetect" // bool - True/False - available if AMF_PA_STATIC_SCENE_DETECTION_ENABLE was set to True +#define AMF_PA_SCENE_CHANGE_DETECT L"PASceneChangeDetect" // bool - True/False - available if AMF_PA_SCENE_CHANGE_DETECTION_ENABLE was set to True when PA is standalone +#define AMF_PA_STATIC_SCENE_DETECT L"PAStaticSceneDetect" // bool - True/False - available if AMF_PA_STATIC_SCENE_DETECTION_ENABLE was set to True when PA is standalone #endif //#ifndef AMFPreAnalysis_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/SupportedCodecs.h b/alvr/server/cpp/platform/win32/amf/public/include/components/SupportedCodecs.h new file mode 100644 index 0000000000..efdd970537 --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/SupportedCodecs.h @@ -0,0 +1,61 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2017 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +//------------------------------------------------------------------------------------------------- +// An interface available on some components to provide information on supported input and output codecs +//------------------------------------------------------------------------------------------------- +#ifndef AMF_SupportedCodecs_h +#define AMF_SupportedCodecs_h + +#pragma once + +#include "public/include/core/Interface.h" + +//properties on the returned AMFPropertyStorage +#define SUPPORTEDCODEC_ID L"CodecId" //amf_int64 +#define SUPPORTEDCODEC_SAMPLERATE L"SampleRate" //amf_int32 + +namespace amf +{ + class AMFSupportedCodecs : public AMFInterface + { + public: + AMF_DECLARE_IID(0xc1003a83, 0x7934, 0x408a, 0x95, 0x5b, 0xc4, 0xdd, 0x85, 0x9d, 0xf5, 0x61) + + //call with increasing values until it returns AMF_OUT_OF_RANGE + virtual AMF_RESULT AMF_STD_CALL GetInputCodecAt(amf_size index, AMFPropertyStorage** codec) const = 0; + virtual AMF_RESULT AMF_STD_CALL GetOutputCodecAt(amf_size index, AMFPropertyStorage** codec) const = 0; + }; + typedef AMFInterfacePtr_T AMFSupportedCodecsPtr; +} + +#endif \ No newline at end of file diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VQEnhancer.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VQEnhancer.h new file mode 100644 index 0000000000..6d3468ab80 --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VQEnhancer.h @@ -0,0 +1,48 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2021 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +#ifndef AMFVQEnhancer_h +#define AMFVQEnhancer_h + +#pragma once + +#define VE_FCR_DEFAULT_ATTENUATION 0.1 + +#define AMFVQEnhancer L"AMFVQEnhancer" + +#define AMF_VIDEO_ENHANCER_ENGINE_TYPE L"AMF_VIDEI_ENHANCER_ENGINE_TYPE" // AMF_MEMORY_TYPE (DX11, DX12, OPENCL, VULKAN default : DX11)" - determines how the object is initialized and what kernels to use +#define AMF_VIDEO_ENHANCER_OUTPUT_SIZE L"AMF_VIDEO_ENHANCER_OUTPUT_SIZE" // AMFSize +#define AMF_VE_FCR_ATTENUATION L"AMF_VE_FCR_ATTENUATION" // Float in the range of [0.02, 0.4], default : 0.1 +#define AMF_VE_FCR_RADIUS L"AMF_VE_FCR_RADIUS" // int in the range of [1, 4] +#define AMF_VE_FCR_SPLIT_VIEW L"AMF_VE_FCR_SPLIT_VIEW" // FCR View split window + +#endif //#ifndef AMFVQEnhancer_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h index a3f94b5cdf..7d1a32cad4 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h @@ -53,6 +53,7 @@ #define AMFVideoDecoderHW_VP9 L"AMFVideoDecoderHW_VP9" #define AMFVideoDecoderHW_VP9_10BIT L"AMFVideoDecoderHW_VP9_10BIT" #define AMFVideoDecoderHW_AV1 L"AMFVideoDecoderHW_AV1" +#define AMFVideoDecoderHW_AV1_12BIT L"AMFVideoDecoderHW_AV1_12BIT" enum AMF_VIDEO_DECODER_MODE_ENUM { @@ -105,7 +106,7 @@ enum AMF_TIMESTAMP_MODE_ENUM // properties to be set on decoder if internal converter is used #define AMF_VIDEO_DECODER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 See VideoDecoderUVD.h for enum -#define AMF_VIDEO_DECODER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_DECODER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum #define AMF_VIDEO_DECODER_OUTPUT_HDR_METADATA L"OutHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL #define AMF_VIDEO_DECODER_LOW_LATENCY L"LowLatencyDecode" // amf_bool; default = false; true = low latency decode, false = regular decode @@ -119,5 +120,15 @@ enum AMF_TIMESTAMP_MODE_ENUM #define AMF_VIDEO_DECODER_NATIVEWINDOW L"AppleNativeWindow" // amf_int64; default = 0; pointer to native window #endif //__APPLE__ +#define AMF_VIDEO_DECODER_ENABLE_SMART_ACCESS_VIDEO L"EnableDecoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature +#define AMF_VIDEO_DECODER_SKIP_TRANSFER_SMART_ACCESS_VIDEO L"SkipTransferSmartAccessVideo" // amf_bool; default = false; true = keeps output on GPU where it ran + +#define AMF_VIDEO_DECODER_CAP_SUPPORT_SMART_ACCESS_VIDEO L"SupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video + +#define AMF_VIDEO_DECODER_SURFACE_CPU L"SurfaceCpu" // amf_bool. default = false, true = hint to decoder that output will be consumed on cpu + +#define AMF_VIDEO_DECODER_INSTANCE_INDEX L"DecoderInstance" // amf_int64; selected HW instance idx +#define AMF_VIDEO_DECODER_CAP_NUM_OF_HW_INSTANCES L"NumOfHwDecoderInstances" // amf_int64 number of HW decoder instances + #endif //#ifndef AMF_VideoDecoderUVD_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h new file mode 100644 index 0000000000..c1082f18bb --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h @@ -0,0 +1,361 @@ +// +// Copyright (c) 2021-2022 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +//------------------------------------------------------------------------------------------------- +// VideoEncoderHW_AV1 interface declaration +//------------------------------------------------------------------------------------------------- + +#ifndef AMF_VideoEncoderAV1_h +#define AMF_VideoEncoderAV1_h +#pragma once + +#include "Component.h" +#include "ColorSpace.h" +#include "PreAnalysis.h" + +#define AMFVideoEncoder_AV1 L"AMFVideoEncoderHW_AV1" + +enum AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE_NONE = 0, // No encoding latency requirement. Encoder will balance encoding time and power consumption. + AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE_POWER_SAVING_REAL_TIME = 1, // Try the best to finish encoding a frame within 1/framerate sec. This mode may cause more power consumption + AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE_REAL_TIME = 2, // Try the best to finish encoding a frame within 1/(2 x framerate) sec. This mode will cause more power consumption than POWER_SAVING_REAL_TIME + AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE_LOWEST_LATENCY = 3 // Encoding as fast as possible. This mode causes highest power consumption. +}; + +enum AMF_VIDEO_ENCODER_AV1_USAGE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_USAGE_TRANSCODING = 0, + AMF_VIDEO_ENCODER_AV1_USAGE_ULTRA_LOW_LATENCY = 2, + AMF_VIDEO_ENCODER_AV1_USAGE_LOW_LATENCY = 1, + AMF_VIDEO_ENCODER_AV1_USAGE_WEBCAM = 3, + AMF_VIDEO_ENCODER_AV1_USAGE_HIGH_QUALITY = 4, + AMF_VIDEO_ENCODER_AV1_USAGE_LOW_LATENCY_HIGH_QUALITY = 5 +}; + +enum AMF_VIDEO_ENCODER_AV1_PROFILE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_PROFILE_MAIN = 1 +}; + +enum AMF_VIDEO_ENCODER_AV1_LEVEL_ENUM +{ + AMF_VIDEO_ENCODER_AV1_LEVEL_2_0 = 0, + AMF_VIDEO_ENCODER_AV1_LEVEL_2_1 = 1, + AMF_VIDEO_ENCODER_AV1_LEVEL_2_2 = 2, + AMF_VIDEO_ENCODER_AV1_LEVEL_2_3 = 3, + AMF_VIDEO_ENCODER_AV1_LEVEL_3_0 = 4, + AMF_VIDEO_ENCODER_AV1_LEVEL_3_1 = 5, + AMF_VIDEO_ENCODER_AV1_LEVEL_3_2 = 6, + AMF_VIDEO_ENCODER_AV1_LEVEL_3_3 = 7, + AMF_VIDEO_ENCODER_AV1_LEVEL_4_0 = 8, + AMF_VIDEO_ENCODER_AV1_LEVEL_4_1 = 9, + AMF_VIDEO_ENCODER_AV1_LEVEL_4_2 = 10, + AMF_VIDEO_ENCODER_AV1_LEVEL_4_3 = 11, + AMF_VIDEO_ENCODER_AV1_LEVEL_5_0 = 12, + AMF_VIDEO_ENCODER_AV1_LEVEL_5_1 = 13, + AMF_VIDEO_ENCODER_AV1_LEVEL_5_2 = 14, + AMF_VIDEO_ENCODER_AV1_LEVEL_5_3 = 15, + AMF_VIDEO_ENCODER_AV1_LEVEL_6_0 = 16, + AMF_VIDEO_ENCODER_AV1_LEVEL_6_1 = 17, + AMF_VIDEO_ENCODER_AV1_LEVEL_6_2 = 18, + AMF_VIDEO_ENCODER_AV1_LEVEL_6_3 = 19, + AMF_VIDEO_ENCODER_AV1_LEVEL_7_0 = 20, + AMF_VIDEO_ENCODER_AV1_LEVEL_7_1 = 21, + AMF_VIDEO_ENCODER_AV1_LEVEL_7_2 = 22, + AMF_VIDEO_ENCODER_AV1_LEVEL_7_3 = 23 +}; + +enum AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_ENUM +{ + AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_UNKNOWN = -1, + AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_CONSTANT_QP = 0, + AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR = 1, + AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR = 2, + AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_CBR = 3, + AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_QUALITY_VBR = 4, + AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_HIGH_QUALITY_VBR = 5, + AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_HIGH_QUALITY_CBR = 6 +}; + +enum AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_ONLY = 1, + AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_1080P_CODED_1082 = 2, + AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_NO_RESTRICTIONS = 3 +}; + +enum AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_NONE = 0, + AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_KEY = 1, + AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_INTRA_ONLY = 2, + AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_SWITCH = 3, + AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_SHOW_EXISTING = 4 +}; + +enum AMF_VIDEO_ENCODER_AV1_OUTPUT_FRAME_TYPE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_OUTPUT_FRAME_TYPE_KEY = 0, + AMF_VIDEO_ENCODER_AV1_OUTPUT_FRAME_TYPE_INTRA_ONLY = 1, + AMF_VIDEO_ENCODER_AV1_OUTPUT_FRAME_TYPE_INTER = 2, + AMF_VIDEO_ENCODER_AV1_OUTPUT_FRAME_TYPE_SWITCH = 3, + AMF_VIDEO_ENCODER_AV1_OUTPUT_FRAME_TYPE_SHOW_EXISTING = 4 +}; + +enum AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_ENUM +{ + AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_HIGH_QUALITY = 0, + AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_QUALITY = 30, + AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_BALANCED = 70, + AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_SPEED = 100 +}; + +enum AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_NONE = 0, + AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_GOP_ALIGNED = 1, + AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_KEY_FRAME_ALIGNED = 2 +}; + +enum AMF_VIDEO_ENCODER_AV1_SWITCH_FRAME_INSERTION_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_SWITCH_FRAME_INSERTION_MODE_NONE = 0, + AMF_VIDEO_ENCODER_AV1_SWITCH_FRAME_INSERTION_MODE_FIXED_INTERVAL = 1 +}; + +enum AMF_VIDEO_ENCODER_AV1_CDEF_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_CDEF_DISABLE = 0, + AMF_VIDEO_ENCODER_AV1_CDEF_ENABLE_DEFAULT = 1 +}; + +enum AMF_VIDEO_ENCODER_AV1_CDF_FRAME_END_UPDATE_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_CDF_FRAME_END_UPDATE_MODE_DISABLE = 0, + AMF_VIDEO_ENCODER_AV1_CDF_FRAME_END_UPDATE_MODE_ENABLE_DEFAULT = 1 +}; + +enum AMF_VIDEO_ENCODER_AV1_AQ_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_AQ_MODE_NONE = 0, + AMF_VIDEO_ENCODER_AV1_AQ_MODE_CAQ = 1 // Content adaptive quantization mode +}; + +enum AMF_VIDEO_ENCODER_AV1_INTRA_REFRESH_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_INTRA_REFRESH_MODE__DISABLED = 0, + AMF_VIDEO_ENCODER_AV1_INTRA_REFRESH_MODE__GOP_ALIGNED = 1, + AMF_VIDEO_ENCODER_AV1_INTRA_REFRESH_MODE__CONTINUOUS = 2 +}; +enum AMF_VIDEO_ENCODER_AV1_LTR_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_LTR_MODE_RESET_UNUSED = 0, + AMF_VIDEO_ENCODER_AV1_LTR_MODE_KEEP_UNUSED = 1 +}; + +enum AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE_FRAME = 0, + AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE_TILE = 1 +}; + +enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM +{ + AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_FRAME = 0, + AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_TILE = 1, + AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_TILE_LAST = 2 +}; +// *** Static properties - can be set only before Init() *** + +// Encoder Engine Settings +#define AMF_VIDEO_ENCODER_AV1_ENCODER_INSTANCE_INDEX L"Av1EncoderInstanceIndex" // amf_int64; default = 0; selected HW instance idx. The number of instances is queried by using AMF_VIDEO_ENCODER_AV1_CAP_NUM_OF_HW_INSTANCES +#define AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE L"Av1EncodingLatencyMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE_ENUM); default = depends on USAGE; The encoding latency mode. +#define AMF_VIDEO_ENCODER_AV1_QUERY_TIMEOUT L"Av1QueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. + +// Usage Settings +#define AMF_VIDEO_ENCODER_AV1_USAGE L"Av1Usage" // amf_int64(AMF_VIDEO_ENCODER_AV1_USAGE_ENUM); default = N/A; Encoder usage. fully configures parameter set. + +// Session Configuration +#define AMF_VIDEO_ENCODER_AV1_FRAMESIZE L"Av1FrameSize" // AMFSize; default = 0,0; Frame size +#define AMF_VIDEO_ENCODER_AV1_COLOR_BIT_DEPTH L"Av1ColorBitDepth" // amf_int64(AMF_COLOR_BIT_DEPTH_ENUM); default = AMF_COLOR_BIT_DEPTH_8 +#define AMF_VIDEO_ENCODER_AV1_PROFILE L"Av1Profile" // amf_int64(AMF_VIDEO_ENCODER_AV1_PROFILE_ENUM) ; default = depends on USAGE; the codec profile of the coded bitstream +#define AMF_VIDEO_ENCODER_AV1_LEVEL L"Av1Level" // amf_int64 (AMF_VIDEO_ENCODER_AV1_LEVEL_ENUM); default = depends on USAGE; the codec level of the coded bitstream +#define AMF_VIDEO_ENCODER_AV1_TILES_PER_FRAME L"Av1NumTilesPerFrame" // amf_int64; default = 1; Number of tiles Per Frame. This is treated as suggestion. The actual number of tiles might be different due to compliance or encoder limitation. +#define AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET L"Av1QualityPreset" // amf_int64(AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_ENUM); default = depends on USAGE; Quality Preset + +// Codec Configuration +#define AMF_VIDEO_ENCODER_AV1_SCREEN_CONTENT_TOOLS L"Av1ScreenContentTools" // bool; default = depends on USAGE; If true, allow enabling screen content tools by AMF_VIDEO_ENCODER_AV1_PALETTE_MODE and AMF_VIDEO_ENCODER_AV1_FORCE_INTEGER_MV; if false, all screen content tools are disabled. +#define AMF_VIDEO_ENCODER_AV1_ORDER_HINT L"Av1OrderHint" // bool; default = depends on USAGE; If true, code order hint; if false, don't code order hint +#define AMF_VIDEO_ENCODER_AV1_FRAME_ID L"Av1FrameId" // bool; default = depends on USAGE; If true, code frame id; if false, don't code frame id +#define AMF_VIDEO_ENCODER_AV1_TILE_GROUP_OBU L"Av1TileGroupObu" // bool; default = depends on USAGE; If true, code FrameHeaderObu + TileGroupObu and each TileGroupObu contains one tile; if false, code FrameObu. +#define AMF_VIDEO_ENCODER_AV1_CDEF_MODE L"Av1CdefMode" // amd_int64(AMF_VIDEO_ENCODER_AV1_CDEF_MODE_ENUM); default = depends on USAGE; Cdef mode +#define AMF_VIDEO_ENCODER_AV1_ERROR_RESILIENT_MODE L"Av1ErrorResilientMode" // bool; default = depends on USAGE; If true, enable error resilient mode; if false, disable error resilient mode + +// Rate Control and Quality Enhancement +#define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD L"Av1RateControlMethod" // amf_int64(AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_METHOD_ENUM); default = depends on USAGE; Rate Control Method +#define AMF_VIDEO_ENCODER_AV1_QVBR_QUALITY_LEVEL L"Av1QvbrQualityLevel" // amf_int64; default = 23; QVBR quality level; range = 1-51 +#define AMF_VIDEO_ENCODER_AV1_INITIAL_VBV_BUFFER_FULLNESS L"Av1InitialVBVBufferFullness" // amf_int64; default = depends on USAGE; Initial VBV Buffer Fullness 0=0% 64=100% + +// Alignment Mode Configuration +#define AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE L"Av1AlignmentMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_ENUM); default = AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_ONLY; Alignment Mode. + +#define AMF_VIDEO_ENCODER_AV1_PRE_ANALYSIS_ENABLE L"Av1EnablePreAnalysis" // bool; default = depends on USAGE; If true, enables the pre-analysis module. Refer to AMF Video PreAnalysis API reference for more details. If false, disable the pre-analysis module. +#define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_PREENCODE L"Av1RateControlPreEncode" // bool; default = depends on USAGE; If true, enables pre-encode assist in rate control; if false, disables pre-encode assist in rate control. +#define AMF_VIDEO_ENCODER_AV1_HIGH_MOTION_QUALITY_BOOST L"Av1HighMotionQualityBoost" // bool; default = depends on USAGE; If true, enable high motion quality boost mode; if false, disable high motion quality boost mode. +#define AMF_VIDEO_ENCODER_AV1_AQ_MODE L"Av1AQMode" // amd_int64(AMF_VIDEO_ENCODER_AV1_AQ_MODE_ENUM); default = depends on USAGE; AQ mode + +// Picture Management Configuration +#define AMF_VIDEO_ENCODER_AV1_MAX_NUM_TEMPORAL_LAYERS L"Av1MaxNumOfTemporalLayers" // amf_int64; default = depends on USAGE; Max number of temporal layers might be enabled. The maximum value can be queried from AMF_VIDEO_ENCODER_AV1_CAP_MAX_NUM_TEMPORAL_LAYERS +#define AMF_VIDEO_ENCODER_AV1_MAX_LTR_FRAMES L"Av1MaxNumLTRFrames" // amf_int64; default = depends on USAGE; Max number of LTR frames. The maximum value can be queried from AMF_VIDEO_ENCODER_AV1_CAP_MAX_NUM_LTR_FRAMES +#define AMF_VIDEO_ENCODER_AV1_LTR_MODE L"Av1LTRMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_LTR_MODE_ENUM); default = AMF_VIDEO_ENCODER_AV1_LTR_MODE_RESET_UNUSED; remove/keep unused LTRs (not specified in property AMF_VIDEO_ENCODER_AV1_FORCE_LTR_REFERENCE_BITFIELD) +#define AMF_VIDEO_ENCODER_AV1_MAX_NUM_REFRAMES L"Av1MaxNumRefFrames" // amf_int64; default = 1; Maximum number of reference frames + +// color conversion +#define AMF_VIDEO_ENCODER_AV1_INPUT_HDR_METADATA L"Av1InHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL + +// Miscellaneous +#define AMF_VIDEO_ENCODER_AV1_EXTRA_DATA L"Av1ExtraData" // AMFInterface* - > AMFBuffer*; buffer to retrieve coded sequence header + +// Tile Output +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE L"AV1OutputMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE_ENUM); default = AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE_FRAME - defines encoder output mode + +// *** Dynamic properties - can be set anytime *** + +// Codec Configuration +#define AMF_VIDEO_ENCODER_AV1_PALETTE_MODE L"Av1PaletteMode" // bool; default = depends on USAGE; If true, enable palette mode; if false, disable palette mode. Valid only when AMF_VIDEO_ENCODER_AV1_SCREEN_CONTENT_TOOLS is true. +#define AMF_VIDEO_ENCODER_AV1_FORCE_INTEGER_MV L"Av1ForceIntegerMv" // bool; default = depends on USAGE; If true, enable force integer MV; if false, disable force integer MV. Valid only when AMF_VIDEO_ENCODER_AV1_SCREEN_CONTENT_TOOLS is true. +#define AMF_VIDEO_ENCODER_AV1_CDF_UPDATE L"Av1CdfUpdate" // bool; default = depends on USAGE; If true, enable CDF update; if false, disable CDF update. +#define AMF_VIDEO_ENCODER_AV1_CDF_FRAME_END_UPDATE_MODE L"Av1CdfFrameEndUpdateMode" // amd_int64(AMF_VIDEO_ENCODER_AV1_CDF_FRAME_END_UPDATE_MODE_ENUM); default = depends on USAGE; CDF frame end update mode + + +// Rate Control and Quality Enhancement +#define AMF_VIDEO_ENCODER_AV1_VBV_BUFFER_SIZE L"Av1VBVBufferSize" // amf_int64; default = depends on USAGE; VBV Buffer Size in bits +#define AMF_VIDEO_ENCODER_AV1_FRAMERATE L"Av1FrameRate" // AMFRate; default = depends on usage; Frame Rate +#define AMF_VIDEO_ENCODER_AV1_ENFORCE_HRD L"Av1EnforceHRD" // bool; default = depends on USAGE; If true, enforce HRD; if false, HRD is not enforced. +#define AMF_VIDEO_ENCODER_AV1_FILLER_DATA L"Av1FillerData" // bool; default = depends on USAGE; If true, code filler data when needed; if false, don't code filler data. +#define AMF_VIDEO_ENCODER_AV1_TARGET_BITRATE L"Av1TargetBitrate" // amf_int64; default = depends on USAGE; Target bit rate in bits +#define AMF_VIDEO_ENCODER_AV1_PEAK_BITRATE L"Av1PeakBitrate" // amf_int64; default = depends on USAGE; Peak bit rate in bits + +#define AMF_VIDEO_ENCODER_AV1_MAX_COMPRESSED_FRAME_SIZE L"Av1MaxCompressedFrameSize" // amf_int64; default = 0; Max compressed frame Size in bits. 0 - no limit +#define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTRA L"Av1MinQIndex_Intra" // amf_int64; default = depends on USAGE; Min QIndex for intra frames; range = 0-255 +#define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTRA L"Av1MaxQIndex_Intra" // amf_int64; default = depends on USAGE; Max QIndex for intra frames; range = 0-255 +#define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTER L"Av1MinQIndex_Inter" // amf_int64; default = depends on USAGE; Min QIndex for inter frames; range = 0-255 +#define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTER L"Av1MaxQIndex_Inter" // amf_int64; default = depends on USAGE; Max QIndex for inter frames; range = 0-255 + +#define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTRA L"Av1QIndex_Intra" // amf_int64; default = depends on USAGE; intra-frame QIndex; range = 0-255 +#define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTER L"Av1QIndex_Inter" // amf_int64; default = depends on USAGE; inter-frame QIndex; range = 0-255 + +#define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_SKIP_FRAME L"Av1RateControlSkipFrameEnable" // bool; default = depends on USAGE; If true, rate control may code skip frame when needed; if false, rate control will not code skip frame. + + +// Picture Management Configuration +#define AMF_VIDEO_ENCODER_AV1_GOP_SIZE L"Av1GOPSize" // amf_int64; default = depends on USAGE; GOP Size (distance between automatically inserted key frames). If 0, key frame will be inserted at first frame only. Note that GOP may be interrupted by AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE. +#define AMF_VIDEO_ENCODER_AV1_INTRA_PERIOD L"Av1IntraPeriod" // amf_int64; default = 0; Intra period in frames. +#define AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE L"Av1HeaderInsertionMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_ENUM); default = depends on USAGE; sequence header insertion mode +#define AMF_VIDEO_ENCODER_AV1_SWITCH_FRAME_INSERTION_MODE L"Av1SwitchFrameInsertionMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_SWITCH_FRAME_INSERTION_MODE_ENUM); default = depends on USAGE; switch frame insertin mode +#define AMF_VIDEO_ENCODER_AV1_SWITCH_FRAME_INTERVAL L"Av1SwitchFrameInterval" // amf_int64; default = depends on USAGE; the interval between two inserted switch frames. Valid only when AMF_VIDEO_ENCODER_AV1_SWITCH_FRAME_INSERTION_MODE is AMF_VIDEO_ENCODER_AV1_SWITCH_FRAME_INSERTION_MODE_FIXED_INTERVAL. +#define AMF_VIDEO_ENCODER_AV1_NUM_TEMPORAL_LAYERS L"Av1NumTemporalLayers" // amf_int64; default = depends on USAGE; Number of temporal layers. Can be changed at any time but the change is only applied when encoding next base layer frame. + +#define AMF_VIDEO_ENCODER_AV1_INTRA_REFRESH_MODE L"Av1IntraRefreshMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_INTRA_REFRESH_MODE_ENUM); default AMF_VIDEO_ENCODER_AV1_INTRA_REFRESH_MODE__DISABLED +#define AMF_VIDEO_ENCODER_AV1_INTRAREFRESH_STRIPES L"Av1IntraRefreshNumOfStripes" // amf_int64; default = N/A; Valid only when intra refresh is enabled. + +// color conversion +#define AMF_VIDEO_ENCODER_AV1_INPUT_COLOR_PROFILE L"Av1InputColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size +#define AMF_VIDEO_ENCODER_AV1_INPUT_TRANSFER_CHARACTERISTIC L"Av1InputColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 section 7.2 See VideoDecoderUVD.h for enum +#define AMF_VIDEO_ENCODER_AV1_INPUT_COLOR_PRIMARIES L"Av1InputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum + +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_COLOR_PROFILE L"Av1OutputColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_TRANSFER_CHARACTERISTIC L"Av1OutputColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_COLOR_PRIMARIES L"Av1OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum + + +// Frame encode parameters +#define AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE L"Av1ForceFrameType" // amf_int64(AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_ENUM); default = AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_NONE; generate particular frame type +#define AMF_VIDEO_ENCODER_AV1_FORCE_INSERT_SEQUENCE_HEADER L"Av1ForceInsertSequenceHeader" // bool; default = false; If true, force insert sequence header with current frame; +#define AMF_VIDEO_ENCODER_AV1_MARK_CURRENT_WITH_LTR_INDEX L"Av1MarkCurrentWithLTRIndex" // amf_int64; default = N/A; Mark current frame with LTR index +#define AMF_VIDEO_ENCODER_AV1_FORCE_LTR_REFERENCE_BITFIELD L"Av1ForceLTRReferenceBitfield" // amf_int64; default = 0; force LTR bit-field +#define AMF_VIDEO_ENCODER_AV1_ROI_DATA L"Av1ROIData" // 2D AMFSurface, surface format: AMF_SURFACE_GRAY32 +#define AMF_VIDEO_ENCODER_AV1_PSNR_FEEDBACK L"Av1PSNRFeedback" // amf_bool; default = false; Signal encoder to calculate PSNR score +#define AMF_VIDEO_ENCODER_AV1_SSIM_FEEDBACK L"Av1SSIMFeedback" // amf_bool; default = false; Signal encoder to calculate SSIM score +#define AMF_VIDEO_ENCODER_AV1_STATISTICS_FEEDBACK L"Av1StatisticsFeedback" // amf_bool; default = false; Signal encoder to collect and feedback encoder statistics +#define AMF_VIDEO_ENCODER_AV1_BLOCK_Q_INDEX_FEEDBACK L"Av1BlockQIndexFeedback" // amf_bool; default = false; Signal encoder to collect and feedback block level QIndex values + +// Encode output parameters +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_FRAME_TYPE L"Av1OutputFrameType" // amf_int64(AMF_VIDEO_ENCODER_AV1_OUTPUT_FRAME_TYPE_ENUM); default = N/A +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_MARKED_LTR_INDEX L"Av1MarkedLTRIndex" // amf_int64; default = N/A; Marked LTR index +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_REFERENCED_LTR_INDEX_BITFIELD L"Av1ReferencedLTRIndexBitfield" // amf_int64; default = N/A; referenced LTR bit-field +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE L"AV1OutputBufferType" // amf_int64(AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM); encoder output buffer type +#define AMF_VIDEO_ENCODER_AV1_RECONSTRUCTED_PICTURE L"Av1ReconstructedPicture" // AMFInterface(AMFSurface); returns reconstructed picture as an AMFSurface attached to the output buffer as property AMF_VIDEO_ENCODER_RECONSTRUCTED_PICTURE of AMFInterface type +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_PSNR_Y L"Av1PSNRY" // double; PSNR Y +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_PSNR_U L"Av1PSNRU" // double; PSNR U +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_PSNR_V L"Av1PSNRV" // double; PSNR V +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_PSNR_ALL L"Av1PSNRALL" // double; PSNR All +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_SSIM_Y L"Av1SSIMY" // double; SSIM Y +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_SSIM_U L"Av1SSIMU" // double; SSIM U +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_SSIM_V L"Av1SSIMV" // double; SSIM V +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_SSIM_ALL L"Av1SSIMALL" // double; SSIM ALL +// Encoder statistics feedback +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_FRAME_Q_INDEX L"Av1StatisticsFeedbackFrameQIndex" // amf_int64; Rate control base frame/initial QIndex +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_AVERAGE_Q_INDEX L"Av1StatisticsFeedbackAvgQIndex" // amf_int64; Average QIndex of all encoded SBs in a picture. Value may be different from the one reported by bitstream analyzer when there are skipped SBs. +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_MAX_Q_INDEX L"Av1StatisticsFeedbackMaxQIndex" // amf_int64; Max QIndex among all encoded SBs in a picture. Value may be different from the one reported by bitstream analyzer when there are skipped SBs. +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_MIN_Q_INDEX L"Av1StatisticsFeedbackMinQIndex" // amf_int64; Min QIndex among all encoded SBs in a picture. Value may be different from the one reported by bitstream analyzer when there are skipped SBs. +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_PIX_NUM_INTRA L"Av1StatisticsFeedbackPixNumIntra" // amf_int64; Number of the intra encoded pixels +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_PIX_NUM_INTER L"Av1StatisticsFeedbackPixNumInter" // amf_int64; Number of the inter encoded pixels +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_PIX_NUM_SKIP L"Av1StatisticsFeedbackPixNumSkip" // amf_int64; Number of the skip mode pixels +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_BITCOUNT_RESIDUAL L"Av1StatisticsFeedbackBitcountResidual" // amf_int64; The bit count that corresponds to residual data +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_BITCOUNT_MOTION L"Av1StatisticsFeedbackBitcountMotion" // amf_int64; The bit count that corresponds to motion vectors +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_BITCOUNT_INTER L"Av1StatisticsFeedbackBitcountInter" // amf_int64; The bit count that are assigned to inter SBs +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_BITCOUNT_INTRA L"Av1StatisticsFeedbackBitcountIntra" // amf_int64; The bit count that are assigned to intra SBs +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_BITCOUNT_ALL_MINUS_HEADER L"Av1StatisticsFeedbackBitcountAllMinusHeader" // amf_int64; The bit count of the bitstream excluding header +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_MV_X L"Av1StatisticsFeedbackMvX" // amf_int64; Accumulated absolute values of horizontal MV's +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_MV_Y L"Av1StatisticsFeedbackMvY" // amf_int64; Accumulated absolute values of vertical MV's +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_RD_COST_FINAL L"Av1StatisticsFeedbackRdCostFinal" // amf_int64; Frame level final RD cost for full encoding +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_RD_COST_INTRA L"Av1StatisticsFeedbackRdCostIntra" // amf_int64; Frame level intra RD cost for full encoding +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_RD_COST_INTER L"Av1StatisticsFeedbackRdCostInter" // amf_int64; Frame level inter RD cost for full encoding +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_SAD_FINAL L"Av1StatisticsFeedbackSadFinal" // amf_int64; Frame level final SAD for full encoding +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_SAD_INTRA L"Av1StatisticsFeedbackSadIntra" // amf_int64; Frame level intra SAD for full encoding +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_SAD_INTER L"Av1StatisticsFeedbackSadInter" // amf_int64; Frame level inter SAD for full encoding +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_SSE L"Av1StatisticsFeedbackSSE" // amf_int64; Frame level SSE (only calculated for AV1) +#define AMF_VIDEO_ENCODER_AV1_STATISTIC_VARIANCE L"Av1StatisticsFeedbackVariance" // amf_int64; Frame level variance for full encoding + + // Encoder block level feedback +#define AMF_VIDEO_ENCODER_AV1_BLOCK_Q_INDEX_MAP L"Av1BlockQIndexMap" // AMFInterface(AMFSurface); AMFSurface of format AMF_SURFACE_GRAY32 containing block level QIndex values + +// AV1 Encoder capabilities - exposed in AMFCaps interface +#define AMF_VIDEO_ENCODER_AV1_CAP_NUM_OF_HW_INSTANCES L"Av1CapNumOfHwInstances" // amf_int64; default = N/A; number of HW encoder instances +#define AMF_VIDEO_ENCODER_AV1_CAP_MAX_THROUGHPUT L"Av1CapMaxThroughput" // amf_int64; default = N/A; MAX throughput for AV1 encoder in MB (16 x 16 pixel) +#define AMF_VIDEO_ENCODER_AV1_CAP_REQUESTED_THROUGHPUT L"Av1CapRequestedThroughput" // amf_int64; default = N/A; Currently total requested throughput for AV1 encode in MB (16 x 16 pixel) +#define AMF_VIDEO_ENCODER_AV1_CAP_COLOR_CONVERSION L"Av1CapColorConversion" // amf_int64(AMF_ACCELERATION_TYPE); default = N/A; type of supported color conversion. +#define AMF_VIDEO_ENCODER_AV1_CAP_PRE_ANALYSIS L"Av1PreAnalysis" // amf_bool - pre analysis module is available for AV1 UVE encoder, n/a for the other encoders +#define AMF_VIDEO_ENCODER_AV1_CAP_MAX_BITRATE L"Av1MaxBitrate" // amf_int64; default = N/A; Maximum bit rate in bits +#define AMF_VIDEO_ENCODER_AV1_CAP_MAX_PROFILE L"Av1MaxProfile" // amf_int64(AMF_VIDEO_ENCODER_AV1_PROFILE_ENUM); default = N/A; max value of code profile +#define AMF_VIDEO_ENCODER_AV1_CAP_MAX_LEVEL L"Av1MaxLevel" // amf_int64(AMF_VIDEO_ENCODER_AV1_LEVEL_ENUM); default = N/A; max value of codec level +#define AMF_VIDEO_ENCODER_AV1_CAP_MAX_NUM_TEMPORAL_LAYERS L"Av1CapMaxNumTemporalLayers" // amf_int64; default = N/A; The cap of maximum number of temporal layers +#define AMF_VIDEO_ENCODER_AV1_CAP_MAX_NUM_LTR_FRAMES L"Av1CapMaxNumLTRFrames" // amf_int64; default = N/A; The cap of maximum number of LTR frames. This value is calculated based on current value of AMF_VIDEO_ENCODER_AV1_MAX_NUM_TEMPORAL_LAYERS. +#define AMF_VIDEO_ENCODER_AV1_CAP_SUPPORT_TILE_OUTPUT L"AV1SupportTileOutput" // amf_bool; if tile output is supported + +#define AMF_VIDEO_ENCODER_AV1_ENABLE_SMART_ACCESS_VIDEO L"Av1EnableEncoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature + +#define AMF_VIDEO_ENCODER_AV1_CAP_SUPPORT_SMART_ACCESS_VIDEO L"Av1EncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video + +#endif //#ifndef AMF_VideoEncoderAV1_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h index 6516fb5725..22b8f78fb6 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h @@ -80,7 +80,10 @@ enum AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_ENUM AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CONSTANT_QP = 0, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_LATENCY_CONSTRAINED_VBR, AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR, - AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR + AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_CBR, + AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_QUALITY_VBR, + AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_HIGH_QUALITY_VBR, + AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_HIGH_QUALITY_CBR }; enum AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_ENUM @@ -131,6 +134,19 @@ enum AMF_VIDEO_ENCODER_HEVC_LTR_MODE_ENUM AMF_VIDEO_ENCODER_HEVC_LTR_MODE_KEEP_UNUSED }; +enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE_ENUM +{ + AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE_FRAME = 0, + AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE_SLICE = 1 +}; + +enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_ENUM +{ + AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_FRAME = 0, + AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_SLICE = 1, + AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_SLICE_LAST = 2 +}; + // Static properties - can be set before Init() #define AMF_VIDEO_ENCODER_HEVC_INSTANCE_INDEX L"HevcEncoderInstance" // amf_int64; selected instance idx #define AMF_VIDEO_ENCODER_HEVC_FRAMESIZE L"HevcFrameSize" // AMFSize; default = 0,0; Frame size @@ -160,6 +176,7 @@ enum AMF_VIDEO_ENCODER_HEVC_LTR_MODE_ENUM // Rate control properties #define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD L"HevcRateControlMethod" // amf_int64(AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_ENUM); default = depends on USAGE; Rate Control Method +#define AMF_VIDEO_ENCODER_HEVC_QVBR_QUALITY_LEVEL L"HevcQvbrQualityLevel" // amf_int64; default = 23; QVBR quality level; range = 1-51 #define AMF_VIDEO_ENCODER_HEVC_VBV_BUFFER_SIZE L"HevcVBVBufferSize" // amf_int64; default = depends on USAGE; VBV Buffer Size in bits #define AMF_VIDEO_ENCODER_HEVC_INITIAL_VBV_BUFFER_FULLNESS L"HevcInitialVBVBufferFullness" // amf_int64; default = 64; Initial VBV Buffer Fullness 0=0% 64=100% #define AMF_VIDEO_ENCODER_HEVC_ENABLE_VBAQ L"HevcEnableVBAQ" // // bool; default = depends on USAGE; Enable auto VBAQ @@ -188,6 +205,9 @@ enum AMF_VIDEO_ENCODER_HEVC_LTR_MODE_ENUM #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_TRANSFER_CHARACTERISTIC L"HevcOutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PRIMARIES L"HevcOutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum +// Slice output +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE L"HevcOutputMode" // amf_int64(AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE_ENUM); default = AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE_FRAME - defines encoder output mode + // Dynamic properties - can be set at any time // Rate control properties @@ -223,7 +243,7 @@ enum AMF_VIDEO_ENCODER_HEVC_LTR_MODE_ENUM // misc #define AMF_VIDEO_ENCODER_HEVC_QUERY_TIMEOUT L"HevcQueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. -// Per-submittion properties - can be set on input surface interface +// Per-submission properties - can be set on input surface interface #define AMF_VIDEO_ENCODER_HEVC_END_OF_SEQUENCE L"HevcEndOfSequence" // bool; default = false; generate end of sequence #define AMF_VIDEO_ENCODER_HEVC_FORCE_PICTURE_TYPE L"HevcForcePictureType" // amf_int64(AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_ENUM); default = AMF_VIDEO_ENCODER_HEVC_PICTURE_TYPE_NONE; generate particular picture type #define AMF_VIDEO_ENCODER_HEVC_INSERT_AUD L"HevcInsertAUD" // bool; default = false; insert AUD @@ -243,6 +263,7 @@ enum AMF_VIDEO_ENCODER_HEVC_LTR_MODE_ENUM #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_MARKED_LTR_INDEX L"HevcMarkedLTRIndex" // amf_int64; default = -1; Marked LTR index #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_REFERENCED_LTR_INDEX_BITFIELD L"HevcReferencedLTRIndexBitfield"// amf_int64; default = 0; referenced LTR bit-field #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_TEMPORAL_LAYER L"HevcOutputTemporalLayer" // amf_int64; Temporal layer +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE L"HevcOutputBufferType" // amf_int64(AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_ENUM); encoder output buffer type #define AMF_VIDEO_ENCODER_HEVC_RECONSTRUCTED_PICTURE L"HevcReconstructedPicture" // AMFInterface(AMFSurface); returns reconstructed picture as an AMFSurface attached to the output buffer as property AMF_VIDEO_ENCODER_RECONSTRUCTED_PICTURE of AMFInterface type #define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PSNR_Y L"PSNRY" // double; PSNR Y #define AMF_VIDEO_ENCODER_HEVC_STATISTIC_PSNR_U L"PSNRU" // double; PSNR U @@ -274,6 +295,7 @@ enum AMF_VIDEO_ENCODER_HEVC_LTR_MODE_ENUM #define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SAD_FINAL L"HevcStatisticsFeedbackSadFinal" // amf_int64; Frame level final SAD for full encoding #define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SAD_INTRA L"HevcStatisticsFeedbackSadIntra" // amf_int64; Frame level intra SAD for full encoding #define AMF_VIDEO_ENCODER_HEVC_STATISTIC_SAD_INTER L"HevcStatisticsFeedbackSadInter" // amf_int64; Frame level inter SAD for full encoding +#define AMF_VIDEO_ENCODER_HEVC_STATISTIC_VARIANCE L"HevcStatisticsFeedbackVariance" // amf_int64; Frame level variance for full encoding // Encoder block level feedback #define AMF_VIDEO_ENCODER_HEVC_BLOCK_QP_MAP L"HevcBlockQpMap" // AMFInterface(AMFSurface); AMFSurface of format AMF_SURFACE_GRAY32 containing block level QP values @@ -293,9 +315,15 @@ enum AMF_VIDEO_ENCODER_HEVC_LTR_MODE_ENUM #define AMF_VIDEO_ENCODER_HEVC_CAP_ROI L"HevcROIMap" // amf_bool - ROI map support is available for HEVC UVE encoder, n/a for the other encoders #define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_THROUGHPUT L"HevcMaxThroughput" // amf_int64 - MAX throughput for HEVC encoder in MB (16 x 16 pixel) #define AMF_VIDEO_ENCODER_HEVC_CAP_REQUESTED_THROUGHPUT L"HevcRequestedThroughput" // amf_int64 - Currently total requested throughput for HEVC encode in MB (16 x 16 pixel) -#define AMF_VIDEO_ENCODER_CAPS_HEVC_QUERY_TIMEOUT_SUPPORT L"HevcQueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call +#define AMF_VIDEO_ENCODER_HEVC_CAP_QUERY_TIMEOUT_SUPPORT L"HevcQueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call +#define AMF_VIDEO_ENCODER_CAPS_HEVC_QUERY_TIMEOUT_SUPPORT L"HevcQueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call (Deprecated, please use AMF_VIDEO_ENCODER_HEVC_CAP_QUERY_TIMEOUT_SUPPORT instead) +#define AMF_VIDEO_ENCODER_HEVC_CAP_SUPPORT_SLICE_OUTPUT L"HevcSupportSliceOutput" // amf_bool - if slice output is supported // properties set on AMFComponent to control component creation #define AMF_VIDEO_ENCODER_HEVC_MEMORY_TYPE L"HevcEncoderMemoryType" // amf_int64(AMF_MEMORY_TYPE) , default is AMF_MEMORY_UNKNOWN, Values : AMF_MEMORY_DX11, AMF_MEMORY_DX9, AMF_MEMORY_UNKNOWN (auto) +#define AMF_VIDEO_ENCODER_HEVC_ENABLE_SMART_ACCESS_VIDEO L"HevcEnableEncoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature + +#define AMF_VIDEO_ENCODER_HEVC_CAP_SUPPORT_SMART_ACCESS_VIDEO L"HevcEncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video + #endif //#ifndef AMF_VideoEncoderHEVC_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h index 7cb839c094..ffe8e7fa3b 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h @@ -66,6 +66,29 @@ enum AMF_VIDEO_ENCODER_PROFILE_ENUM AMF_VIDEO_ENCODER_PROFILE_CONSTRAINED_HIGH = 257 }; +enum AMF_VIDEO_ENCODER_H264_LEVEL_ENUM +{ + AMF_H264_LEVEL__1 = 10, + AMF_H264_LEVEL__1_1 = 11, + AMF_H264_LEVEL__1_2 = 12, + AMF_H264_LEVEL__1_3 = 13, + AMF_H264_LEVEL__2 = 20, + AMF_H264_LEVEL__2_1 = 21, + AMF_H264_LEVEL__2_2 = 22, + AMF_H264_LEVEL__3 = 30, + AMF_H264_LEVEL__3_1 = 31, + AMF_H264_LEVEL__3_2 = 32, + AMF_H264_LEVEL__4 = 40, + AMF_H264_LEVEL__4_1 = 41, + AMF_H264_LEVEL__4_2 = 42, + AMF_H264_LEVEL__5 = 50, + AMF_H264_LEVEL__5_1 = 51, + AMF_H264_LEVEL__5_2 = 52, + AMF_H264_LEVEL__6 = 60, + AMF_H264_LEVEL__6_1 = 61, + AMF_H264_LEVEL__6_2 = 62 +}; + enum AMF_VIDEO_ENCODER_SCANTYPE_ENUM { AMF_VIDEO_ENCODER_SCANTYPE_PROGRESSIVE = 0, @@ -143,6 +166,18 @@ enum AMF_VIDEO_ENCODER_LTR_MODE_ENUM AMF_VIDEO_ENCODER_LTR_MODE_KEEP_UNUSED }; +enum AMF_VIDEO_ENCODER_OUTPUT_MODE_ENUM +{ + AMF_VIDEO_ENCODER_OUTPUT_MODE_FRAME = 0, + AMF_VIDEO_ENCODER_OUTPUT_MODE_SLICE = 1 +}; + +enum AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_ENUM +{ + AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_FRAME = 0, + AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_SLICE = 1, + AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_SLICE_LAST = 2 +}; // Static properties - can be set before Init() #define AMF_VIDEO_ENCODER_INSTANCE_INDEX L"EncoderInstance" // amf_int64; selected HW instance idx @@ -151,7 +186,7 @@ enum AMF_VIDEO_ENCODER_LTR_MODE_ENUM #define AMF_VIDEO_ENCODER_EXTRADATA L"ExtraData" // AMFInterface* - > AMFBuffer*; SPS/PPS buffer in Annex B format - read-only #define AMF_VIDEO_ENCODER_USAGE L"Usage" // amf_int64(AMF_VIDEO_ENCODER_USAGE_ENUM); default = N/A; Encoder usage type. fully configures parameter set. #define AMF_VIDEO_ENCODER_PROFILE L"Profile" // amf_int64(AMF_VIDEO_ENCODER_PROFILE_ENUM) ; default = AMF_VIDEO_ENCODER_PROFILE_MAIN; H264 profile -#define AMF_VIDEO_ENCODER_PROFILE_LEVEL L"ProfileLevel" // amf_int64; default = 42; H264 profile level +#define AMF_VIDEO_ENCODER_PROFILE_LEVEL L"ProfileLevel" // amf_int64(AMF_VIDEO_ENCODER_H264_LEVEL_ENUM); default = AMF_H264_LEVEL__4_2; H264 level #define AMF_VIDEO_ENCODER_MAX_LTR_FRAMES L"MaxOfLTRFrames" // amf_int64; default = 0; Max number of LTR frames #define AMF_VIDEO_ENCODER_LTR_MODE L"LTRMode" // amf_int64(AMF_VIDEO_ENCODER_LTR_MODE_ENUM); default = AMF_VIDEO_ENCODER_LTR_MODE_RESET_UNUSED; remove/keep unused LTRs (not specified in property AMF_VIDEO_ENCODER_FORCE_LTR_REFERENCE_BITFIELD) #define AMF_VIDEO_ENCODER_SCANTYPE L"ScanType" // amf_int64(AMF_VIDEO_ENCODER_SCANTYPE_ENUM); default = AMF_VIDEO_ENCODER_SCANTYPE_PROGRESSIVE; indicates input stream type @@ -188,6 +223,9 @@ enum AMF_VIDEO_ENCODER_LTR_MODE_ENUM #define AMF_VIDEO_ENCODER_OUTPUT_COLOR_PRIMARIES L"OutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.1 See ColorSpace.h for enum #define AMF_VIDEO_ENCODER_OUTPUT_HDR_METADATA L"OutHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +// Slice output +#define AMF_VIDEO_ENCODER_OUTPUT_MODE L"OutputMode" // amf_int64(AMF_VIDEO_ENCODER_OUTPUT_MODE_ENUM); default = AMF_VIDEO_ENCODER_OUTPUT_MODE_FRAME - defines encoder output mode + // Dynamic properties - can be set at any time // Rate control properties @@ -217,10 +255,11 @@ enum AMF_VIDEO_ENCODER_LTR_MODE_ENUM // Picture control properties #define AMF_VIDEO_ENCODER_HEADER_INSERTION_SPACING L"HeaderInsertionSpacing" // amf_int64; default = depends on USAGE; Header Insertion Spacing; range 0-1000 -#define AMF_VIDEO_ENCODER_B_PIC_PATTERN L"BPicturesPattern" // amf_int64; default = 3; B-picture Pattern (number of B-Frames) +#define AMF_VIDEO_ENCODER_B_PIC_PATTERN L"BPicturesPattern" // amf_int64; default = 0; B-picture Pattern (number of B-Frames) #define AMF_VIDEO_ENCODER_DE_BLOCKING_FILTER L"DeBlockingFilter" // bool; default = depends on USAGE; De-blocking Filter #define AMF_VIDEO_ENCODER_B_REFERENCE_ENABLE L"BReferenceEnable" // bool; default = true; Enable Refrence to B-frames #define AMF_VIDEO_ENCODER_IDR_PERIOD L"IDRPeriod" // amf_int64; default = depends on USAGE; IDR Period in frames +#define AMF_VIDEO_ENCODER_INTRA_PERIOD L"IntraPeriod" // amf_int64; default = 0; Intra period in frames #define AMF_VIDEO_ENCODER_INTRA_REFRESH_NUM_MBS_PER_SLOT L"IntraRefreshMBsNumberPerSlot" // amf_int64; default = depends on USAGE; Intra Refresh MBs Number Per Slot in Macroblocks #define AMF_VIDEO_ENCODER_SLICES_PER_FRAME L"SlicesPerFrame" // amf_int64; default = 1; Number of slices Per Frame #define AMF_VIDEO_ENCODER_CABAC_ENABLE L"CABACEnable" // amf_int64(AMF_VIDEO_ENCODER_CODING_ENUM) default = AMF_VIDEO_ENCODER_UNDEFINED @@ -238,7 +277,7 @@ enum AMF_VIDEO_ENCODER_LTR_MODE_ENUM // misc #define AMF_VIDEO_ENCODER_QUERY_TIMEOUT L"QueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. -// Per-submittion properties - can be set on input surface interface +// Per-submission properties - can be set on input surface interface #define AMF_VIDEO_ENCODER_END_OF_SEQUENCE L"EndOfSequence" // bool; default = false; generate end of sequence #define AMF_VIDEO_ENCODER_END_OF_STREAM L"EndOfStream" // bool; default = false; generate end of stream #define AMF_VIDEO_ENCODER_FORCE_PICTURE_TYPE L"ForcePictureType" // amf_int64(AMF_VIDEO_ENCODER_PICTURE_TYPE_ENUM); default = AMF_VIDEO_ENCODER_PICTURE_TYPE_NONE; generate particular picture type @@ -261,6 +300,7 @@ enum AMF_VIDEO_ENCODER_LTR_MODE_ENUM #define AMF_VIDEO_ENCODER_OUTPUT_MARKED_LTR_INDEX L"MarkedLTRIndex" //amf_int64; default = -1; Marked LTR index #define AMF_VIDEO_ENCODER_OUTPUT_REFERENCED_LTR_INDEX_BITFIELD L"ReferencedLTRIndexBitfield" // amf_int64; default = 0; referenced LTR bit-field #define AMF_VIDEO_ENCODER_OUTPUT_TEMPORAL_LAYER L"OutputTemporalLayer" // amf_int64; Temporal layer +#define AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE L"OutputBufferType" // amf_int64(AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_ENUM); encoder output buffer type #define AMF_VIDEO_ENCODER_PRESENTATION_TIME_STAMP L"PresentationTimeStamp" // amf_int64; Presentation time stamp (PTS) #define AMF_VIDEO_ENCODER_RECONSTRUCTED_PICTURE L"ReconstructedPicture" // AMFInterface(AMFSurface); returns reconstructed picture as an AMFSurface attached to the output buffer as property AMF_VIDEO_ENCODER_RECONSTRUCTED_PICTURE of AMFInterface type #define AMF_VIDEO_ENCODER_STATISTIC_PSNR_Y L"PSNRY" // double; PSNR Y @@ -293,6 +333,7 @@ enum AMF_VIDEO_ENCODER_LTR_MODE_ENUM #define AMF_VIDEO_ENCODER_STATISTIC_SATD_FINAL L"StatisticsFeedbackSatdFinal" // amf_int64; Frame level final SATD for full encoding #define AMF_VIDEO_ENCODER_STATISTIC_SATD_INTRA L"StatisticsFeedbackSatdIntra" // amf_int64; Frame level intra SATD for full encoding #define AMF_VIDEO_ENCODER_STATISTIC_SATD_INTER L"StatisticsFeedbackSatdInter" // amf_int64; Frame level inter SATD for full encoding +#define AMF_VIDEO_ENCODER_STATISTIC_VARIANCE L"StatisticsFeedbackVariance" // amf_int64; Frame level variance for full encoding // Encoder block level feedback #define AMF_VIDEO_ENCODER_BLOCK_QP_MAP L"BlockQpMap" // AMFInterface(AMFSurface); AMFSurface of format AMF_SURFACE_GRAY32 containing block level QP values @@ -321,9 +362,16 @@ enum AMF_VIDEO_ENCODER_LTR_MODE_ENUM #define AMF_VIDEO_ENCODER_CAP_ROI L"ROIMap" // amf_bool - ROI map support is available for H264 UVE encoder, n/a for the other encoders #define AMF_VIDEO_ENCODER_CAP_MAX_THROUGHPUT L"MaxThroughput" // amf_int64 - MAX throughput for H264 encoder in MB (16 x 16 pixel) #define AMF_VIDEO_ENCODER_CAP_REQUESTED_THROUGHPUT L"RequestedThroughput" // amf_int64 - Currently total requested throughput for H264 encoder in MB (16 x 16 pixel) -#define AMF_VIDEO_ENCODER_CAPS_QUERY_TIMEOUT_SUPPORT L"QueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call +#define AMF_VIDEO_ENCODER_CAPS_QUERY_TIMEOUT_SUPPORT L"QueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call (Deprecated, please use AMF_VIDEO_ENCODER_CAP_QUERY_TIMEOUT_SUPPORT ) +#define AMF_VIDEO_ENCODER_CAP_QUERY_TIMEOUT_SUPPORT L"QueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call + +#define AMF_VIDEO_ENCODER_CAP_SUPPORT_SLICE_OUTPUT L"SupportSliceOutput" // amf_bool - if slice output is supported // properties set on AMFComponent to control component creation #define AMF_VIDEO_ENCODER_MEMORY_TYPE L"EncoderMemoryType" // amf_int64(AMF_MEMORY_TYPE) , default is AMF_MEMORY_UNKNOWN, Values : AMF_MEMORY_DX11, AMF_MEMORY_DX9, AMF_MEMORY_VULKAN or AMF_MEMORY_UNKNOWN (auto) +#define AMF_VIDEO_ENCODER_ENABLE_SMART_ACCESS_VIDEO L"EnableEncoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature + +#define AMF_VIDEO_ENCODER_CAP_SUPPORT_SMART_ACCESS_VIDEO L"EncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video + #endif //#ifndef AMF_VideoEncoderVCE_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/CurrentTime.h b/alvr/server/cpp/platform/win32/amf/public/include/core/CurrentTime.h index dcbc35466a..c8a559ad9d 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/CurrentTime.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/CurrentTime.h @@ -38,6 +38,7 @@ namespace amf class AMF_NO_VTABLE AMFCurrentTime : public AMFInterface { public: + virtual amf_pts AMF_STD_CALL Get() = 0; virtual void AMF_STD_CALL Reset() = 0; diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h index 916ca3fce0..3ead3aed4e 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h @@ -72,7 +72,7 @@ // #error Need to define AMF_ALIGN #endif -#if defined(__linux) || defined(__ANDROID__) +#ifndef _WIN32 typedef signed int HRESULT; #define SUCCEEDED(hr) (((HRESULT)(hr)) >= 0) #define FAILED(hr) (((HRESULT)(hr)) < 0) @@ -382,13 +382,10 @@ static AMF_INLINE struct AMFRatio AMFConstructRatio(amf_uint32 num, amf_uint32 d #pragma pack(push, 1) #if defined(_MSC_VER) #pragma warning( push ) -#endif -#if defined(WIN32) -#if defined(_MSC_VER) #pragma warning(disable : 4200) #pragma warning(disable : 4201) #endif -#endif + typedef struct AMFColor { union diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h index ddb3da252d..edf14ae9c4 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h @@ -170,25 +170,25 @@ namespace amf //---------------------------------------------------------------------------------------------- static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantInit(AMFVariantStruct* pVariant); static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantClear(AMFVariantStruct* pVariant); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantCompare(const AMFVariantStruct* pFirst, const AMFVariantStruct* pSecond, amf_bool* equal); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantCompare(const AMFVariantStruct* pFirst, const AMFVariantStruct* pSecond, amf_bool* pEqual); static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantCopy(AMFVariantStruct* pDest, const AMFVariantStruct* pSrc); static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignBool(AMFVariantStruct* pDest, amf_bool value); static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignInt64(AMFVariantStruct* pDest, amf_int64 value); static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignDouble(AMFVariantStruct* pDest, amf_double value); static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloat(AMFVariantStruct* pDest, amf_float value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignString(AMFVariantStruct* pDest, const char* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignWString(AMFVariantStruct* pDest, const wchar_t* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignInterface(AMFVariantStruct* pDest, AMFInterface* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRect(AMFVariantStruct* pDest, const AMFRect* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignSize(AMFVariantStruct* pDest, const AMFSize* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignPoint(AMFVariantStruct* pDest, const AMFPoint* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatSize(AMFVariantStruct* pDest, const AMFFloatSize* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatPoint2D(AMFVariantStruct* pDest, const AMFFloatPoint2D* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatPoint3D(AMFVariantStruct* pDest, const AMFFloatPoint3D* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatVector4D(AMFVariantStruct* pDest, const AMFFloatVector4D* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRate(AMFVariantStruct* pDest, const AMFRate* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRatio(AMFVariantStruct* pDest, const AMFRatio* value); - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignColor(AMFVariantStruct* pDest, const AMFColor* value); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignString(AMFVariantStruct* pDest, const char* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignWString(AMFVariantStruct* pDest, const wchar_t* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignInterface(AMFVariantStruct* pDest, AMFInterface* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRect(AMFVariantStruct* pDest, const AMFRect* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignSize(AMFVariantStruct* pDest, const AMFSize* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignPoint(AMFVariantStruct* pDest, const AMFPoint* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatSize(AMFVariantStruct* pDest, const AMFFloatSize* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatPoint2D(AMFVariantStruct* pDest, const AMFFloatPoint2D* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatPoint3D(AMFVariantStruct* pDest, const AMFFloatPoint3D* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatVector4D(AMFVariantStruct* pDest, const AMFFloatVector4D* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRate(AMFVariantStruct* pDest, const AMFRate* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRatio(AMFVariantStruct* pDest, const AMFRatio* pValue); + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignColor(AMFVariantStruct* pDest, const AMFColor* pValue); #if defined(__cplusplus) static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRect(AMFVariantStruct* pDest, const AMFRect& value); @@ -204,10 +204,10 @@ namespace amf static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantChangeType(AMFVariantStruct* pDest, const AMFVariantStruct* pSrc, AMF_VARIANT_TYPE newType); #endif - static AMF_INLINE char* AMF_CDECL_CALL AMFVariantDuplicateString(const char* from); - static AMF_INLINE void AMF_CDECL_CALL AMFVariantFreeString(char* from); - static AMF_INLINE wchar_t* AMF_CDECL_CALL AMFVariantDuplicateWString(const wchar_t* from); - static AMF_INLINE void AMF_CDECL_CALL AMFVariantFreeWString(wchar_t* from); + static AMF_INLINE char* AMF_CDECL_CALL AMFVariantDuplicateString(const char* pFrom); + static AMF_INLINE void AMF_CDECL_CALL AMFVariantFreeString(char* pFrom); + static AMF_INLINE wchar_t* AMF_CDECL_CALL AMFVariantDuplicateWString(const wchar_t* pFrom); + static AMF_INLINE void AMF_CDECL_CALL AMFVariantFreeWString(wchar_t* pFrom); #if defined(__cplusplus) //---------------------------------------------------------------------------------------------- @@ -246,8 +246,8 @@ namespace amf explicit AMF_INLINE AMFVariant(const AMFRate & value) { AMFVariantInit(this); AMFVariantAssignRate(this, &value); } explicit AMF_INLINE AMFVariant(const AMFRatio& value) { AMFVariantInit(this); AMFVariantAssignRatio(this, &value); } explicit AMF_INLINE AMFVariant(const AMFColor& value) { AMFVariantInit(this); AMFVariantAssignColor(this, &value); } - explicit AMF_INLINE AMFVariant(const char* value) { AMFVariantInit(this); AMFVariantAssignString(this, value); } - explicit AMF_INLINE AMFVariant(const wchar_t* value) { AMFVariantInit(this); AMFVariantAssignWString(this, value); } + explicit AMF_INLINE AMFVariant(const char* pValue) { AMFVariantInit(this); AMFVariantAssignString(this, pValue); } + explicit AMF_INLINE AMFVariant(const wchar_t* pValue) { AMFVariantInit(this); AMFVariantAssignWString(this, pValue); } explicit AMF_INLINE AMFVariant(AMFInterface* pValue) { AMFVariantInit(this); AMFVariantAssignInterface(this, pValue); } ~AMFVariant() { AMFVariantClear(this); } @@ -273,9 +273,9 @@ namespace amf AMFVariant& operator=(const AMFRate & value) { AMFVariantAssignRate(this, &value); return *this;} AMFVariant& operator=(const AMFRatio& value) { AMFVariantAssignRatio(this, &value); return *this;} AMFVariant& operator=(const AMFColor& value) { AMFVariantAssignColor(this, &value); return *this;} - AMFVariant& operator=(const char* value) { AMFVariantAssignString(this, value); return *this;} - AMFVariant& operator=(const wchar_t* value) { AMFVariantAssignWString(this, value); return *this;} - AMFVariant& operator=(AMFInterface* value) { AMFVariantAssignInterface(this, value); return *this;} + AMFVariant& operator=(const char* pValue) { AMFVariantAssignString(this, pValue); return *this;} + AMFVariant& operator=(const wchar_t* pValue) { AMFVariantAssignWString(this, pValue); return *this;} + AMFVariant& operator=(AMFInterface* pValue) { AMFVariantAssignInterface(this, pValue); return *this;} template AMFVariant& operator=(const AMFInterfacePtr_T& value); @@ -315,7 +315,7 @@ namespace amf AMF_INLINE AMFRate ToRate () const { return Empty() ? AMFRate() : GetValue(AMFVariantGetRate); } AMF_INLINE AMFRatio ToRatio() const { return Empty() ? AMFRatio() : GetValue(AMFVariantGetRatio); } AMF_INLINE AMFColor ToColor() const { return Empty() ? AMFColor() : GetValue(AMFVariantGetColor); } - AMF_INLINE AMFInterface* ToInterface() const { return AMFVariantGetType(this) == AMF_VARIANT_INTERFACE ? this->pInterface : NULL; } + AMF_INLINE AMFInterface* ToInterface() const { return AMFVariantGetType(this) == AMF_VARIANT_INTERFACE ? this->pInterface : nullptr; } AMF_INLINE String ToString() const; AMF_INLINE WString ToWString() const; @@ -332,7 +332,7 @@ namespace amf AMFVariantStruct& GetVariant(); - void ChangeType(AMF_VARIANT_TYPE type, const AMFVariant* pSrc = NULL); + void ChangeType(AMF_VARIANT_TYPE type, const AMFVariant* pSrc = nullptr); bool Empty() const; private: @@ -348,25 +348,27 @@ namespace amf private: void Free() { - if (m_Str != NULL) + if (m_Str != nullptr) { AMFVariantFreeString(m_Str); - m_Str = NULL; + m_Str = nullptr; } } public: - String() :m_Str(NULL){} - String(const char* str) : m_Str(NULL) + String() :m_Str(nullptr){} + String(const char* str) : m_Str(nullptr) { m_Str = AMFVariantDuplicateString(str); } - String(const String& p_other) : m_Str(NULL) + String(const String& p_other) : m_Str(nullptr) { operator=(p_other); } #if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (_MSC_VER >= 1600) - String(String&& p_other) : m_Str(NULL) +#pragma warning (push) +#pragma warning (disable : 26439) //This kind of function may not throw. Declare it 'noexcept'. + String(String&& p_other) : m_Str(nullptr) { operator=(p_other); } @@ -396,17 +398,17 @@ namespace amf { Free(); m_Str = p_other.m_Str; - p_other.m_Str = NULL; // Transfer the ownership + p_other.m_Str = nullptr; // Transfer the ownership return *this; } #endif bool operator==(const String& p_other) const { - if (m_Str == NULL && p_other.m_Str == NULL) + if (m_Str == nullptr && p_other.m_Str == nullptr) { return true; } - else if ((m_Str == NULL && p_other.m_Str != NULL) || (m_Str != NULL && p_other.m_Str == NULL)) + else if ((m_Str == nullptr && p_other.m_Str != nullptr) || (m_Str != nullptr && p_other.m_Str == nullptr)) { return false; } @@ -415,7 +417,7 @@ namespace amf const char* c_str() const { return m_Str; } size_t size() const { - if(m_Str == NULL) + if (m_Str == nullptr) { return 0; } @@ -426,16 +428,16 @@ namespace amf void resize(size_t sizeAlloc) { - if(sizeAlloc == 0) + if (sizeAlloc == 0) { Free(); return; } char* str = (char*)amf_variant_alloc(sizeof(char)*(sizeAlloc + 1)); - if(m_Str != NULL) + if (m_Str != nullptr) { size_t copySize = sizeAlloc; - if(copySize > size()) + if (copySize > size()) { copySize = size(); } @@ -457,24 +459,24 @@ namespace amf private: void Free() { - if (m_Str != NULL) + if (m_Str != nullptr) { AMFVariantFreeWString(m_Str); - m_Str = NULL; + m_Str = nullptr; } } public: - WString() :m_Str(NULL){} - WString(const wchar_t* str) : m_Str(NULL) + WString() :m_Str(nullptr){} + WString(const wchar_t* str) : m_Str(nullptr) { m_Str = AMFVariantDuplicateWString(str); } - WString(const WString& p_other) : m_Str(NULL) + WString(const WString& p_other) : m_Str(nullptr) { operator=(p_other); } #if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (_MSC_VER >= 1600) - WString(WString&& p_other) : m_Str(NULL) + WString(WString&& p_other) : m_Str(nullptr) { operator=(p_other); } @@ -495,9 +497,10 @@ namespace amf { Free(); m_Str = p_other.m_Str; - p_other.m_Str = NULL; // Transfer the ownership + p_other.m_Str = nullptr; // Transfer the ownership return *this; } +#pragma warning (pop) #endif wchar_t& operator[](size_t index) { @@ -510,11 +513,11 @@ namespace amf bool operator==(const WString& p_other) const { - if (m_Str == NULL && p_other.m_Str == NULL) + if (m_Str == nullptr && p_other.m_Str == nullptr) { return true; } - else if ((m_Str == NULL && p_other.m_Str != NULL) || (m_Str != NULL && p_other.m_Str == NULL)) + else if ((m_Str == nullptr && p_other.m_Str != nullptr) || (m_Str != nullptr && p_other.m_Str == nullptr)) { return false; } @@ -524,7 +527,7 @@ namespace amf const wchar_t* c_str() const { return m_Str; } size_t size() const { - if(m_Str == NULL) + if (m_Str == nullptr) { return 0; } @@ -535,16 +538,16 @@ namespace amf void resize(size_t sizeAlloc) { - if(sizeAlloc == 0) + if (sizeAlloc == 0) { Free(); return; } wchar_t* str = (wchar_t*)amf_variant_alloc(sizeof(wchar_t)*(sizeAlloc + 1)); - if(m_Str != NULL) + if (m_Str != nullptr) { size_t copySize = sizeAlloc; - if(copySize > size()) + if (copySize > size()) { copySize = size(); } @@ -575,7 +578,7 @@ namespace amf //---------------------------------------------------------------------------------------------- #define AMF_VARIANT_RETURN_IF_INVALID_POINTER(p) \ { \ - if(p == NULL) \ + if (p == NULL) \ { \ return AMF_INVALID_POINTER; \ } \ @@ -593,7 +596,7 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pVariant); - switch(AMFVariantGetType(pVariant)) + switch (AMFVariantGetType(pVariant)) { case AMF_VARIANT_STRING: amf_variant_free(AMFVariantString(pVariant)); @@ -606,7 +609,7 @@ namespace amf break; case AMF_VARIANT_INTERFACE: - if(AMFVariantInterface(pVariant) != NULL) + if (AMFVariantInterface(pVariant) != NULL) { #if defined(__cplusplus) AMFVariantInterface(pVariant)->Release(); @@ -625,117 +628,118 @@ namespace amf return errRet; } //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantCompare(const AMFVariantStruct* pFirst, const AMFVariantStruct* pSecond, amf_bool* bEqual) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantCompare(const AMFVariantStruct* pFirst, const AMFVariantStruct* pSecond, amf_bool* pEqual) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pFirst); AMF_VARIANT_RETURN_IF_INVALID_POINTER(pSecond); - - if(pFirst == pSecond) + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pEqual); + + if (pFirst == pSecond) { - *bEqual = true; + *pEqual = true; } - else if(AMFVariantGetType(pFirst) != AMFVariantGetType(pSecond)) + else if (AMFVariantGetType(pFirst) != AMFVariantGetType(pSecond)) { - *bEqual = false; + *pEqual = false; } else { - switch(AMFVariantGetType(pFirst)) + switch (AMFVariantGetType(pFirst)) { case AMF_VARIANT_EMPTY: - *bEqual = true; + *pEqual = true; break; case AMF_VARIANT_BOOL: - *bEqual = AMFVariantGetBool(pFirst) == AMFVariantBool(pSecond); + *pEqual = AMFVariantGetBool(pFirst) == AMFVariantBool(pSecond); break; case AMF_VARIANT_INT64: - *bEqual = AMFVariantGetInt64(pFirst) == AMFVariantInt64(pSecond); + *pEqual = AMFVariantGetInt64(pFirst) == AMFVariantInt64(pSecond); break; case AMF_VARIANT_DOUBLE: - *bEqual = AMFVariantGetDouble(pFirst) == AMFVariantDouble(pSecond); + *pEqual = AMFVariantGetDouble(pFirst) == AMFVariantDouble(pSecond); break; case AMF_VARIANT_FLOAT: - *bEqual = AMFVariantGetFloat(pFirst) == AMFVariantFloat(pSecond); + *pEqual = AMFVariantGetFloat(pFirst) == AMFVariantFloat(pSecond); break; case AMF_VARIANT_RECT: #if defined(__cplusplus) - *bEqual = AMFVariantGetRect(pFirst) == AMFVariantGetRect(pSecond); + *pEqual = AMFVariantGetRect(pFirst) == AMFVariantGetRect(pSecond); #else - *bEqual = memcmp(&pFirst->rectValue, &pSecond->rectValue, sizeof(AMFRect)) == 0; + *pEqual = memcmp(&pFirst->rectValue, &pSecond->rectValue, sizeof(AMFRect)) == 0; #endif break; case AMF_VARIANT_SIZE: #if defined(__cplusplus) - *bEqual = AMFVariantGetSize(pFirst) == AMFVariantGetSize(pSecond); + *pEqual = AMFVariantGetSize(pFirst) == AMFVariantGetSize(pSecond); #else - *bEqual = memcmp(&pFirst->sizeValue, &pSecond->sizeValue, sizeof(AMFSize)) == 0; + *pEqual = memcmp(&pFirst->sizeValue, &pSecond->sizeValue, sizeof(AMFSize)) == 0; #endif break; case AMF_VARIANT_POINT: #if defined(__cplusplus) - *bEqual = AMFVariantGetPoint(pFirst) == AMFVariantGetPoint(pSecond); + *pEqual = AMFVariantGetPoint(pFirst) == AMFVariantGetPoint(pSecond); #else - *bEqual = memcmp(&pFirst->pointValue, &pSecond->pointValue, sizeof(AMFPoint)) == 0; + *pEqual = memcmp(&pFirst->pointValue, &pSecond->pointValue, sizeof(AMFPoint)) == 0; #endif break; case AMF_VARIANT_FLOAT_SIZE: #if defined(__cplusplus) - *bEqual = AMFVariantGetFloatSize(pFirst) == AMFVariantGetFloatSize(pSecond); + *pEqual = AMFVariantGetFloatSize(pFirst) == AMFVariantGetFloatSize(pSecond); #else - *bEqual = memcmp(&pFirst->floatSizeValue, &pSecond->floatSizeValue, sizeof(AMFFloatPoint2D)) == 0; + *pEqual = memcmp(&pFirst->floatSizeValue, &pSecond->floatSizeValue, sizeof(AMFFloatPoint2D)) == 0; #endif break; case AMF_VARIANT_FLOAT_POINT2D: #if defined(__cplusplus) - *bEqual = AMFVariantGetFloatPoint2D(pFirst) == AMFVariantGetFloatPoint2D(pSecond); + *pEqual = AMFVariantGetFloatPoint2D(pFirst) == AMFVariantGetFloatPoint2D(pSecond); #else - *bEqual = memcmp(&pFirst->floatPoint2DValue, &pSecond->floatPoint2DValue, sizeof(AMFFloatPoint2D)) == 0; + *pEqual = memcmp(&pFirst->floatPoint2DValue, &pSecond->floatPoint2DValue, sizeof(AMFFloatPoint2D)) == 0; #endif break; case AMF_VARIANT_FLOAT_POINT3D: #if defined(__cplusplus) - *bEqual = AMFVariantGetFloatPoint3D(pFirst) == AMFVariantGetFloatPoint3D(pSecond); + *pEqual = AMFVariantGetFloatPoint3D(pFirst) == AMFVariantGetFloatPoint3D(pSecond); #else - *bEqual = memcmp(&pFirst->floatPoint3DValue, &pSecond->floatPoint3DValue, sizeof(AMFFloatPoint3D)) == 0; + *pEqual = memcmp(&pFirst->floatPoint3DValue, &pSecond->floatPoint3DValue, sizeof(AMFFloatPoint3D)) == 0; #endif break; case AMF_VARIANT_FLOAT_VECTOR4D: #if defined(__cplusplus) - *bEqual = AMFVariantGetFloatVector4D(pFirst) == AMFVariantGetFloatVector4D(pSecond); + *pEqual = AMFVariantGetFloatVector4D(pFirst) == AMFVariantGetFloatVector4D(pSecond); #else - *bEqual = memcmp(&pFirst->floatVector4DValue, &pSecond->floatVector4DValue, sizeof(AMFFloatPoint3D)) == 0; + *pEqual = memcmp(&pFirst->floatVector4DValue, &pSecond->floatVector4DValue, sizeof(AMFFloatPoint3D)) == 0; #endif break; case AMF_VARIANT_RATE: #if defined(__cplusplus) - *bEqual = AMFVariantGetRate(pFirst) == AMFVariantGetRate(pSecond); + *pEqual = AMFVariantGetRate(pFirst) == AMFVariantGetRate(pSecond); #else - *bEqual = memcmp(&pFirst->rateValue, &pSecond->rateValue, sizeof(AMFRate)) == 0; + *pEqual = memcmp(&pFirst->rateValue, &pSecond->rateValue, sizeof(AMFRate)) == 0; #endif break; case AMF_VARIANT_RATIO: #if defined(__cplusplus) - *bEqual = AMFVariantGetRatio(pFirst) == AMFVariantGetRatio(pSecond); + *pEqual = AMFVariantGetRatio(pFirst) == AMFVariantGetRatio(pSecond); #else - *bEqual = memcmp(&pFirst->ratioValue, &pSecond->ratioValue, sizeof(AMFRatio)) == 0; + *pEqual = memcmp(&pFirst->ratioValue, &pSecond->ratioValue, sizeof(AMFRatio)) == 0; #endif break; case AMF_VARIANT_COLOR: #if defined(__cplusplus) - *bEqual = AMFVariantGetColor(pFirst) == AMFVariantGetColor(pSecond); + *pEqual = AMFVariantGetColor(pFirst) == AMFVariantGetColor(pSecond); #else - *bEqual = memcmp(&pFirst->colorValue, &pSecond->colorValue, sizeof(AMFColor)) == 0; + *pEqual = memcmp(&pFirst->colorValue, &pSecond->colorValue, sizeof(AMFColor)) == 0; #endif break; case AMF_VARIANT_STRING: - *bEqual = strcmp(AMFVariantString(pFirst), AMFVariantString(pSecond)) == 0; + *pEqual = strcmp(AMFVariantString(pFirst), AMFVariantString(pSecond)) == 0; break; case AMF_VARIANT_WSTRING: - *bEqual = wcscmp(AMFVariantWString(pFirst), AMFVariantWString(pSecond)) == 0; + *pEqual = wcscmp(AMFVariantWString(pFirst), AMFVariantWString(pSecond)) == 0; break; case AMF_VARIANT_INTERFACE: - *bEqual = AMFVariantInterface(pFirst) == AMFVariantInterface(pSecond); + *pEqual = AMFVariantInterface(pFirst) == AMFVariantInterface(pSecond); break; default: errRet = AMF_INVALID_ARG; @@ -750,9 +754,9 @@ namespace amf AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); AMF_VARIANT_RETURN_IF_INVALID_POINTER(pSrc); - if(pDest != pSrc) + if (pDest != pSrc) { - switch(AMFVariantGetType(pSrc)) + switch (AMFVariantGetType(pSrc)) { case AMF_VARIANT_EMPTY: errRet = AMFVariantInit(pDest); @@ -916,13 +920,13 @@ namespace amf { res = AMF_OK; AMFVariant::String tmp = value; - if(( tmp == "true") || ( tmp == "True") || ( tmp == "TRUE") || ( tmp == "1") ) + if (( tmp == "true") || ( tmp == "True") || ( tmp == "TRUE") || ( tmp == "1") ) { return true; } else { - if(( tmp == "false") || ( tmp == "False") || ( tmp == "FALSE") || ( tmp == "0") ) + if (( tmp == "false") || ( tmp == "False") || ( tmp == "FALSE") || ( tmp == "0") ) { return false; } @@ -937,15 +941,15 @@ namespace amf long long tmp = 0; int readElements = 0; - if(value.size() > 2 && ( value.c_str()[0] == '0') && ( value.c_str()[1] == 'x') ) + if (value.size() > 2 && ( value.c_str()[0] == '0') && ( value.c_str()[1] == 'x') ) { readElements = sscanf(value.c_str(), "0x%" AMFPRIx64, &tmp); } - else if(value.size() > 0) + else if (value.size() > 0) { readElements = sscanf(value.c_str(), "%" AMFPRId64, &tmp); } - if(readElements) + if (readElements) { return tmp; } @@ -958,11 +962,11 @@ namespace amf res = AMF_OK; amf_double tmp = 0; int readElements = 0; - if(value.size() > 0) + if (value.size() > 0) { readElements = sscanf(value.c_str(), "%lf", &tmp); } - if(readElements) + if (readElements) { return tmp; } @@ -991,7 +995,7 @@ namespace amf res = AMF_OK; // return amf_from_utf8_to_unicode(value); AMFVariant::WString result; - if(0 == value.size()) + if (0 == value.size()) { return result; } @@ -1000,7 +1004,7 @@ namespace amf #if defined(_WIN32) _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); int UnicodeBuffSize = ::MultiByteToWideChar(CP_UTF8, 0, pUtf8Buff, -1, NULL, 0); - if(0 == UnicodeBuffSize) + if (0 == UnicodeBuffSize) { return result; } @@ -1018,10 +1022,10 @@ namespace amf int len = value.size(); const char* pt = pUtf8Buff; int UnicodeBuffSize = 0; - while(len > 0) + while (len > 0) { size_t length = mbrlen (pt, len, &mbs); //MM TODO Android always return 1 - if((length == 0) || (length > len)) + if ((length == 0) || (length > len)) { break; } @@ -1036,10 +1040,10 @@ namespace amf len = value.size(); pt = pUtf8Buff; UnicodeBuffSize = 0; - while(len > 0) + while (len > 0) { size_t length = mbrlen (pt, len, &mbs); - if((length == 0) || (length > len)) + if ((length == 0) || (length > len)) { break; } @@ -1053,7 +1057,7 @@ namespace amf #else char* old_locale = setlocale(LC_CTYPE, "en_US.UTF8"); size_t UnicodeBuffSize = mbstowcs(NULL, pUtf8Buff, 0); - if(0 == UnicodeBuffSize) + if (0 == UnicodeBuffSize) { return result; } @@ -1070,7 +1074,7 @@ namespace amf res = AMF_OK; // return amf_from_unicode_to_utf8(value); AMFVariant::String result; - if(0 == value.size()) + if (0 == value.size()) { return result; } @@ -1080,7 +1084,7 @@ namespace amf #if defined(_WIN32) _configthreadlocale(_ENABLE_PER_THREAD_LOCALE); int Utf8BuffSize = ::WideCharToMultiByte(CP_UTF8, 0, pwBuff, -1, NULL, 0, NULL, NULL); - if(0 == Utf8BuffSize) + if (0 == Utf8BuffSize) { return result; } @@ -1091,7 +1095,7 @@ namespace amf #elif defined(__ANDROID__) char* old_locale = setlocale(LC_CTYPE, "en_US.UTF8"); int Utf8BuffSize = value.length(); - if(0 == Utf8BuffSize) + if (0 == Utf8BuffSize) { return result; } @@ -1102,7 +1106,7 @@ namespace amf mbrlen(NULL, 0, &mbs); Utf8BuffSize = 0; - for( int i = 0; i < value.length(); i++) + for (int i = 0; i < value.length(); i++) { //MM TODO Android - not implemented //int written = wcrtomb(&result[Utf8BuffSize], pwBuff[i], &mbs); @@ -1116,7 +1120,7 @@ namespace amf #else char* old_locale = setlocale(LC_CTYPE, "en_US.UTF8"); size_t Utf8BuffSize = wcstombs(NULL, pwBuff, 0); - if(0 == Utf8BuffSize) + if (0 == Utf8BuffSize) { return result; } @@ -1224,11 +1228,11 @@ namespace amf res = AMF_OK; AMFRect tmp = {}; int readElements = 0; - if(value.size() > 0) + if (value.size() > 0) { readElements = sscanf(value.c_str(), "%d,%d,%d,%d", &tmp.left, &tmp.top, &tmp.right, &tmp.bottom); } - if(readElements) + if (readElements) { return tmp; } @@ -1241,18 +1245,18 @@ namespace amf res = AMF_OK; AMFSize tmp = {}; int readElements = 0; - if(value.size() > 0) + if (value.size() > 0) { - if(strchr(value.c_str(), ',') != nullptr) + if (strchr(value.c_str(), ',') != nullptr) { readElements = sscanf(value.c_str(), "%d,%d", &tmp.width, &tmp.height); } - else if (strchr(value.c_str(), 'x') != nullptr) + else if (strchr(value.c_str(), 'x') != nullptr) { readElements = sscanf(value.c_str(), "%dx%d", &tmp.width, &tmp.height); } } - if(readElements) + if (readElements) { return tmp; } @@ -1264,11 +1268,11 @@ namespace amf res = AMF_OK; AMFPoint tmp = {}; int readElements = 0; - if(value.size() > 0) + if (value.size() > 0) { readElements = sscanf(value.c_str(), "%d,%d", &tmp.x, &tmp.y); } - if(readElements) + if (readElements) { return tmp; } @@ -1344,11 +1348,11 @@ namespace amf res = AMF_OK; AMFRate tmp = {}; int readElements = 0; - if(value.size() > 0) + if (value.size() > 0) { readElements = sscanf(value.c_str(), "%u,%u", &tmp.num, &tmp.den); } - if(readElements) + if (readElements) { return tmp; } @@ -1360,11 +1364,11 @@ namespace amf res = AMF_OK; AMFRatio tmp = {}; int readElements = 0; - if(value.size() > 0) + if (value.size() > 0) { readElements = sscanf(value.c_str(), "%u,%u", &tmp.num, &tmp.den); } - if(readElements) + if (readElements) { return tmp; } @@ -1379,11 +1383,11 @@ namespace amf amf_uint32 g = 0; amf_uint32 b = 0; amf_uint32 a = 0; - if(value.size() > 0) + if (value.size() > 0) { readElements = sscanf(value.c_str(), "%u,%u,%u,%u", &r, &g, &b, &a); } - if(readElements) + if (readElements) { return AMFConstructColor((amf_uint8)r, (amf_uint8)g, (amf_uint8)b, (amf_uint8)a); } @@ -1476,7 +1480,7 @@ namespace amf //------------------------------------------------------------------------------------------------- #define AMFConvertTool(srcType, dstType)\ - if(AMFVariantGetType(pSrc) == AMFVariantType##srcType && newType == AMFVariantType##dstType)\ + if (AMFVariantGetType(pSrc) == AMFVariantType##srcType && newType == AMFVariantType##dstType)\ {\ AMF_RESULT res = AMF_OK;\ AMFVariantAssign##dstType(pDest, AMFConvert##srcType##To##dstType(AMFVariant##srcType(pSrc), res));\ @@ -1487,20 +1491,24 @@ namespace amf { AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); - if(pSrc == 0) + if (pSrc == nullptr) { pSrc = pDest; } - if(AMFVariantGetType(pSrc) == newType) + if (AMFVariantGetType(pSrc) == newType) { - if(pDest == pSrc) + if (pDest == pSrc) { return AMF_OK; } return AMFVariantCopy(pDest, pSrc); } - AMFVariantClear(pDest); + + if (pDest != pSrc) + { + AMFVariantClear(pDest); + } AMFConvertTool(Empty, Bool); AMFConvertTool(Empty, Int64); @@ -1524,12 +1532,12 @@ namespace amf AMFConvertTool(Double, Bool); AMFConvertTool(Double, Int64); AMFConvertTool(Double, String); - AMFConvertTool(Double, String); + AMFConvertTool(Double, WString); AMFConvertTool(Float, Bool); AMFConvertTool(Float, Int64); AMFConvertTool(Float, String); - AMFConvertTool(Float, String); + AMFConvertTool(Float, WString); AMFConvertTool(String, Bool); AMFConvertTool(String, Int64); @@ -1582,7 +1590,7 @@ namespace amf AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_BOOL; AMFVariantBool(pDest) = value; @@ -1596,7 +1604,7 @@ namespace amf AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_INT64; AMFVariantInt64(pDest) = value; @@ -1610,7 +1618,7 @@ namespace amf AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_DOUBLE; AMFVariantDouble(pDest) = value; @@ -1639,12 +1647,12 @@ namespace amf AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { const size_t size = (strlen(pValue) + 1); pDest->type = AMF_VARIANT_STRING; AMFVariantString(pDest) = (char*)amf_variant_alloc(size * sizeof(char)); - if(AMFVariantString(pDest)) + if (AMFVariantString(pDest)) { memcpy(AMFVariantString(pDest), pValue, size * sizeof(char)); } @@ -1663,12 +1671,12 @@ namespace amf AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { const size_t size = (wcslen(pValue) + 1); pDest->type = AMF_VARIANT_WSTRING; AMFVariantWString(pDest) = (wchar_t*)amf_variant_alloc(size * sizeof(wchar_t)); - if(AMFVariantWString(pDest)) + if (AMFVariantWString(pDest)) { memcpy(AMFVariantWString(pDest), pValue, size * sizeof(wchar_t)); } @@ -1687,11 +1695,11 @@ namespace amf //AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue);//can be NULL errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_INTERFACE; AMFVariantInterface(pDest) = pValue; - if(AMFVariantInterface(pDest)) + if (AMFVariantInterface(pDest)) { #if defined(__cplusplus) AMFVariantInterface(pDest)->Acquire(); @@ -1710,16 +1718,17 @@ namespace amf } #endif //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRect (AMFVariantStruct* pDest, const AMFRect* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRect (AMFVariantStruct* pDest, const AMFRect* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_RECT; - AMFVariantRect(pDest) = *value; + AMFVariantRect(pDest) = *pValue; } return errRet; } @@ -1731,16 +1740,17 @@ namespace amf } #endif //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignSize (AMFVariantStruct* pDest, const AMFSize* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignSize (AMFVariantStruct* pDest, const AMFSize* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_SIZE; - AMFVariantSize(pDest) = *value; + AMFVariantSize(pDest) = *pValue; } return errRet; } @@ -1768,72 +1778,77 @@ namespace amf } #endif //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignPoint(AMFVariantStruct* pDest, const AMFPoint* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignPoint(AMFVariantStruct* pDest, const AMFPoint* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_POINT; - AMFVariantPoint(pDest) = *value; + AMFVariantPoint(pDest) = *pValue; } return errRet; } //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatSize(AMFVariantStruct* pDest, const AMFFloatSize* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatSize(AMFVariantStruct* pDest, const AMFFloatSize* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_FLOAT_SIZE; - AMFVariantFloatSize(pDest) = *value; + AMFVariantFloatSize(pDest) = *pValue; } return errRet; } //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatPoint2D(AMFVariantStruct* pDest, const AMFFloatPoint2D* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatPoint2D(AMFVariantStruct* pDest, const AMFFloatPoint2D* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_FLOAT_POINT2D; - AMFVariantFloatPoint2D(pDest) = *value; + AMFVariantFloatPoint2D(pDest) = *pValue; } return errRet; } //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatPoint3D(AMFVariantStruct* pDest, const AMFFloatPoint3D* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatPoint3D(AMFVariantStruct* pDest, const AMFFloatPoint3D* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_FLOAT_POINT3D; - AMFVariantFloatPoint3D(pDest) = *value; + AMFVariantFloatPoint3D(pDest) = *pValue; } return errRet; } //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatVector4D(AMFVariantStruct* pDest, const AMFFloatVector4D* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignFloatVector4D(AMFVariantStruct* pDest, const AMFFloatVector4D* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_FLOAT_VECTOR4D; - AMFVariantFloatVector4D(pDest) = *value; + AMFVariantFloatVector4D(pDest) = *pValue; } return errRet; } @@ -1845,16 +1860,17 @@ namespace amf } #endif //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRate (AMFVariantStruct* pDest, const AMFRate* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRate (AMFVariantStruct* pDest, const AMFRate* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_RATE; - AMFVariantRate(pDest) = *value; + AMFVariantRate(pDest) = *pValue; } return errRet; } @@ -1866,16 +1882,17 @@ namespace amf } #endif //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRatio(AMFVariantStruct* pDest, const AMFRatio* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignRatio(AMFVariantStruct* pDest, const AMFRatio* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_RATIO; - AMFVariantRatio(pDest) = *value; + AMFVariantRatio(pDest) = *pValue; } return errRet; } @@ -1887,56 +1904,57 @@ namespace amf } #endif //------------------------------------------------------------------------------------------------- - static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignColor(AMFVariantStruct* pDest, const AMFColor* value) + static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantAssignColor(AMFVariantStruct* pDest, const AMFColor* pValue) { AMF_RESULT errRet = AMF_OK; AMF_VARIANT_RETURN_IF_INVALID_POINTER(pDest); + AMF_VARIANT_RETURN_IF_INVALID_POINTER(pValue); errRet = AMFVariantInit(pDest); - if(errRet == AMF_OK) + if (errRet == AMF_OK) { pDest->type = AMF_VARIANT_COLOR; - AMFVariantColor(pDest) = *value; + AMFVariantColor(pDest) = *pValue; } return errRet; } //------------------------------------------------------------------------------------------------- - static AMF_INLINE char* AMF_CDECL_CALL AMFVariantDuplicateString(const char* from) + static AMF_INLINE char* AMF_CDECL_CALL AMFVariantDuplicateString(const char* pFrom) { char* ret = 0; - if(from) + if (pFrom) { - ret = (char*)amf_variant_alloc(sizeof(char)*(strlen(from) + 1)); - if(ret) + ret = (char*)amf_variant_alloc(sizeof(char)*(strlen(pFrom) + 1)); + if (ret) { - strcpy(ret, from); + strcpy(ret, pFrom); } } return ret; } //------------------------------------------------------------------------------------------------- - static AMF_INLINE void AMF_CDECL_CALL AMFVariantFreeString(char* from) + static AMF_INLINE void AMF_CDECL_CALL AMFVariantFreeString(char* pFrom) { - amf_variant_free(from); + amf_variant_free(pFrom); } //------------------------------------------------------------------------------------------------- - static AMF_INLINE wchar_t* AMF_CDECL_CALL AMFVariantDuplicateWString(const wchar_t* from) + static AMF_INLINE wchar_t* AMF_CDECL_CALL AMFVariantDuplicateWString(const wchar_t* pFrom) { wchar_t* ret = 0; - if(from) + if (pFrom) { - ret = (wchar_t*)amf_variant_alloc(sizeof(wchar_t)*(wcslen(from) + 1)); - if(ret) + ret = (wchar_t*)amf_variant_alloc(sizeof(wchar_t)*(wcslen(pFrom) + 1)); + if (ret) { - wcscpy(ret, from); + wcscpy(ret, pFrom); } } return ret; } //------------------------------------------------------------------------------------------------- - static AMF_INLINE void AMF_CDECL_CALL AMFVariantFreeWString(wchar_t* from) + static AMF_INLINE void AMF_CDECL_CALL AMFVariantFreeWString(wchar_t* pFrom) { - amf_variant_free(from); + amf_variant_free(pFrom); } //---------------------------------------------------------------------------------------------- // AMF_INLINE implementation of AMFVariant class @@ -1945,7 +1963,7 @@ namespace amf AMF_INLINE AMFVariant::AMFVariant(const AMFVariantStruct* pOther) { AMFVariantInit(this); - if(pOther != NULL) + if (pOther != nullptr) { AMFVariantCopy(this, const_cast(pOther)); } @@ -1962,7 +1980,7 @@ namespace amf ReturnType AMFVariant::GetValue(Getter getter) const { ReturnType str = ReturnType(); - if(AMFVariantGetType(this) == variantType) + if (AMFVariantGetType(this) == variantType) { str = static_cast(getter(this)); } @@ -1970,7 +1988,7 @@ namespace amf { AMFVariant varDest; varDest.ChangeType(variantType, this); - if(varDest.type != AMF_VARIANT_EMPTY) + if (varDest.type != AMF_VARIANT_EMPTY) { str = static_cast(getter(&varDest)); } @@ -1987,7 +2005,7 @@ namespace amf //------------------------------------------------------------------------------------------------- AMF_INLINE AMFVariant& AMFVariant::operator=(const AMFVariantStruct* pOther) { - if(pOther != NULL) + if (pOther != nullptr) { AMFVariantClear(this); AMFVariantCopy(this, const_cast(pOther)); @@ -2020,7 +2038,7 @@ namespace amf { //TODO: double check amf_bool ret = false; - if(pOther == NULL) + if (pOther == nullptr) { ret = false; } @@ -2041,11 +2059,11 @@ namespace amf return !(*this == pOther); } //------------------------------------------------------------------------------------------------- - AMF_INLINE void AMFVariant::Attach(AMFVariantStruct& variant) + AMF_INLINE void AMFVariant::Attach(AMFVariantStruct& pVariant) { Clear(); - memcpy(this, &variant, sizeof(variant)); - AMFVariantGetType(&variant) = AMF_VARIANT_EMPTY; + memcpy(this, &pVariant, sizeof(pVariant)); + AMFVariantGetType(&pVariant) = AMF_VARIANT_EMPTY; } //------------------------------------------------------------------------------------------------- AMF_INLINE AMFVariantStruct AMFVariant::Detach() diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h index 0458e06ff3..6bec015513 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h @@ -51,7 +51,7 @@ #define AMF_VERSION_MAJOR 1 #define AMF_VERSION_MINOR 4 -#define AMF_VERSION_RELEASE 26 +#define AMF_VERSION_RELEASE 30 #define AMF_VERSION_BUILD_NUM 0 #define AMF_FULL_VERSION AMF_MAKE_FULL_VERSION(AMF_VERSION_MAJOR, AMF_VERSION_MINOR, AMF_VERSION_RELEASE, AMF_VERSION_BUILD_NUM) diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h b/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h new file mode 100644 index 0000000000..e402bb12a7 --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h @@ -0,0 +1,111 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +#ifndef __VulkanAMF_h__ +#define __VulkanAMF_h__ +#pragma once +#include "Platform.h" + +#include "vulkan/vulkan.h" + +#if defined(__cplusplus) +namespace amf +{ +#endif + typedef struct AMFVulkanDevice + { + amf_size cbSizeof; // sizeof(AMFVulkanDevice) + void* pNext; // reserved for extensions + VkInstance hInstance; + VkPhysicalDevice hPhysicalDevice; + VkDevice hDevice; + } AMFVulkanDevice; + + typedef struct AMFVulkanSync + { + amf_size cbSizeof; // sizeof(AMFVulkanSync) + void* pNext; // reserved for extensions + VkSemaphore hSemaphore; // VkSemaphore; can be nullptr + amf_bool bSubmitted; // if true - wait for hSemaphore. re-submit hSemaphore if not synced by other ways and set to true + VkFence hFence; // To sync on CPU; can be nullptr. Submitted in vkQueueSubmit. If waited for hFence, null it, do not delete or reset. + } AMFVulkanSync; + + typedef struct AMFVulkanBuffer + { + amf_size cbSizeof; // sizeof(AMFVulkanBuffer) + void* pNext; // reserved for extensions + VkBuffer hBuffer; + VkDeviceMemory hMemory; + amf_int64 iSize; + amf_int64 iAllocatedSize; // for reuse + amf_uint32 eAccessFlags; // VkAccessFlagBits + amf_uint32 eUsage; // AMF_BUFFER_USAGE + amf_uint32 eAccess; // AMF_MEMORY_CPU_ACCESS + AMFVulkanSync Sync; + } AMFVulkanBuffer; + + typedef struct AMFVulkanSurface + { + amf_size cbSizeof; // sizeof(AMFVulkanSurface) + void* pNext; // reserved for extensions + // surface properties + VkImage hImage; // vulkan native image for which the surface is created + VkDeviceMemory hMemory; // memory for hImage, can be nullptr + amf_int64 iSize; // memory size + amf_uint32 eFormat; // VkFormat + amf_int32 iWidth; // image width + amf_int32 iHeight; // image height + amf_uint32 eCurrentLayout; // VkImageLayout + amf_uint32 eUsage; // AMF_SURFACE_USAGE + amf_uint32 eAccess; // AMF_MEMORY_CPU_ACCESS + AMFVulkanSync Sync; // To sync on GPU + } AMFVulkanSurface; + + typedef struct AMFVulkanView + { + amf_size cbSizeof; // sizeof(AMFVulkanView) + void* pNext; // reserved for extensions + // surface properties + AMFVulkanSurface *pSurface; + VkImageView hView; + amf_int32 iPlaneWidth; + amf_int32 iPlaneHeight; + amf_int32 iPlaneWidthPitch; + amf_int32 iPlaneHeightPitch; + } AMFVulkanView; + +#define AMF_CONTEXT_VULKAN_COMPUTE_QUEUE L"VulkanComputeQueue" // amf_int64; default=0; Compute queue index in range [0, (VkQueueFamilyProperties.queueCount-1)] of the compute queue family. + +#if defined(__cplusplus) +} // namespace amf +#endif +#endif // __VulkanAMF_h__ From 69ffc658cbf6dd19fa2bd40aa917156651f78739 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sat, 19 Aug 2023 19:24:16 +0100 Subject: [PATCH 39/60] nvenc sdk v12.1 --- alvr/server/cpp/alvr_server/nvEncodeAPI.h | 309 ++++++++++++++---- alvr/server/cpp/platform/win32/NvCodecUtils.h | 36 +- alvr/server/cpp/platform/win32/NvEncoder.cpp | 41 ++- alvr/server/cpp/platform/win32/NvEncoder.h | 39 ++- .../cpp/platform/win32/NvEncoderD3D11.cpp | 34 +- .../cpp/platform/win32/NvEncoderD3D11.h | 34 +- 6 files changed, 375 insertions(+), 118 deletions(-) diff --git a/alvr/server/cpp/alvr_server/nvEncodeAPI.h b/alvr/server/cpp/alvr_server/nvEncodeAPI.h index 8a56e840db..fd6ab5a8d5 100644 --- a/alvr/server/cpp/alvr_server/nvEncodeAPI.h +++ b/alvr/server/cpp/alvr_server/nvEncodeAPI.h @@ -1,7 +1,7 @@ /* * This copyright notice applies to this header file only: * - * Copyright (c) 2010-2022 NVIDIA Corporation + * Copyright (c) 2010-2023 NVIDIA Corporation * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation @@ -112,7 +112,7 @@ typedef void* NV_ENC_REGISTERED_PTR; /**< A Resource that has been regist typedef void* NV_ENC_CUSTREAM_PTR; /**< Pointer to CUstream*/ #define NVENCAPI_MAJOR_VERSION 12 -#define NVENCAPI_MINOR_VERSION 0 +#define NVENCAPI_MINOR_VERSION 1 #define NVENCAPI_VERSION (NVENCAPI_MAJOR_VERSION | (NVENCAPI_MINOR_VERSION << 24)) @@ -206,42 +206,6 @@ static const GUID NV_ENC_AV1_PROFILE_MAIN_GUID = // ========================================================================================= // * Preset GUIDS supported by the NvEncodeAPI interface. // ========================================================================================= -// {B2DFB705-4EBD-4C49-9B5F-24A777D3E587} -NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_DEFAULT_GUID = -{ 0xb2dfb705, 0x4ebd, 0x4c49, { 0x9b, 0x5f, 0x24, 0xa7, 0x77, 0xd3, 0xe5, 0x87 } }; - -// {60E4C59F-E846-4484-A56D-CD45BE9FDDF6} -NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_HP_GUID = -{ 0x60e4c59f, 0xe846, 0x4484, { 0xa5, 0x6d, 0xcd, 0x45, 0xbe, 0x9f, 0xdd, 0xf6 } }; - -// {34DBA71D-A77B-4B8F-9C3E-B6D5DA24C012} -NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_HQ_GUID = -{ 0x34dba71d, 0xa77b, 0x4b8f, { 0x9c, 0x3e, 0xb6, 0xd5, 0xda, 0x24, 0xc0, 0x12 } }; - -// {82E3E450-BDBB-4e40-989C-82A90DF9EF32} -NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_BD_GUID = -{ 0x82e3e450, 0xbdbb, 0x4e40, { 0x98, 0x9c, 0x82, 0xa9, 0xd, 0xf9, 0xef, 0x32 } }; - -// {49DF21C5-6DFA-4feb-9787-6ACC9EFFB726} -NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOW_LATENCY_DEFAULT_GUID = -{ 0x49df21c5, 0x6dfa, 0x4feb, { 0x97, 0x87, 0x6a, 0xcc, 0x9e, 0xff, 0xb7, 0x26 } }; - -// {C5F733B9-EA97-4cf9-BEC2-BF78A74FD105} -NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOW_LATENCY_HQ_GUID = -{ 0xc5f733b9, 0xea97, 0x4cf9, { 0xbe, 0xc2, 0xbf, 0x78, 0xa7, 0x4f, 0xd1, 0x5 } }; - -// {67082A44-4BAD-48FA-98EA-93056D150A58} -NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOW_LATENCY_HP_GUID = -{ 0x67082a44, 0x4bad, 0x48fa, { 0x98, 0xea, 0x93, 0x5, 0x6d, 0x15, 0xa, 0x58 } }; - -// {D5BFB716-C604-44e7-9BB8-DEA5510FC3AC} -NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOSSLESS_DEFAULT_GUID = -{ 0xd5bfb716, 0xc604, 0x44e7, { 0x9b, 0xb8, 0xde, 0xa5, 0x51, 0xf, 0xc3, 0xac } }; - -// {149998E7-2364-411d-82EF-179888093409} -NV_ENC_DEPRECATED static const GUID NV_ENC_PRESET_LOSSLESS_HP_GUID = -{ 0x149998e7, 0x2364, 0x411d, { 0x82, 0xef, 0x17, 0x98, 0x88, 0x9, 0x34, 0x9 } }; - // Performance degrades and quality improves as we move from P1 to P7. Presets P3 to P7 for H264 and Presets P2 to P7 for HEVC have B frames enabled by default // for HIGH_QUALITY and LOSSLESS tuning info, and will not work with Weighted Prediction enabled. In case Weighted Prediction is required, disable B frames by // setting frameIntervalP = 1 @@ -296,10 +260,6 @@ typedef enum _NV_ENC_PARAMS_RC_MODE NV_ENC_PARAMS_RC_CONSTQP = 0x0, /**< Constant QP mode */ NV_ENC_PARAMS_RC_VBR = 0x1, /**< Variable bitrate mode */ NV_ENC_PARAMS_RC_CBR = 0x2, /**< Constant bitrate mode */ - NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ = 0x8, /**< Deprecated, use NV_ENC_PARAMS_RC_CBR + NV_ENC_TWO_PASS_QUARTER_RESOLUTION / NV_ENC_TWO_PASS_FULL_RESOLUTION + - lowDelayKeyFrameScale=1 */ - NV_ENC_PARAMS_RC_CBR_HQ = 0x10, /**< Deprecated, use NV_ENC_PARAMS_RC_CBR + NV_ENC_TWO_PASS_QUARTER_RESOLUTION / NV_ENC_TWO_PASS_FULL_RESOLUTION */ - NV_ENC_PARAMS_RC_VBR_HQ = 0x20 /**< Deprecated, use NV_ENC_PARAMS_RC_VBR + NV_ENC_TWO_PASS_QUARTER_RESOLUTION / NV_ENC_TWO_PASS_FULL_RESOLUTION */ } NV_ENC_PARAMS_RC_MODE; /** @@ -312,6 +272,25 @@ typedef enum _NV_ENC_MULTI_PASS NV_ENC_TWO_PASS_FULL_RESOLUTION = 0x2, /**< Two Pass encoding is enabled where first Pass is full resolution */ } NV_ENC_MULTI_PASS; +/** + * Restore Encoder state + */ +typedef enum _NV_ENC_STATE_RESTORE_TYPE +{ + NV_ENC_STATE_RESTORE_FULL = 0x01, /**< Restore full encoder state */ + NV_ENC_STATE_RESTORE_RATE_CONTROL = 0x02, /**< Restore only rate control state */ + NV_ENC_STATE_RESTORE_ENCODE = 0x03, /**< Restore full encoder state except for rate control state */ +} NV_ENC_STATE_RESTORE_TYPE; + +typedef enum _NV_ENC_OUTPUT_STATS_LEVEL +{ + NV_ENC_OUTPUT_STATS_NONE = 0, /** No output stats */ + NV_ENC_OUTPUT_STATS_BLOCK_LEVEL = 1, /** Output stats for every block. + Block represents a CTB for HEVC, macroblock for H.264, super block for AV1 */ + NV_ENC_OUTPUT_STATS_ROW_LEVEL = 2, /** Output stats for every row. + Row represents a CTB row for HEVC, macroblock row for H.264, super block row for AV1 */ +} NV_ENC_OUTPUT_STATS_LEVEL; + /** * Emphasis Levels */ @@ -336,12 +315,6 @@ typedef enum _NV_ENC_QP_MAP_MODE NV_ENC_QP_MAP = 0x3, /**< Currently This is not supported. Value in NV_ENC_PIC_PARAMS::qpDeltaMap will be treated as QP value. */ } NV_ENC_QP_MAP_MODE; -#define NV_ENC_PARAMS_RC_VBR_MINQP (NV_ENC_PARAMS_RC_MODE)0x4 /**< Deprecated */ -#define NV_ENC_PARAMS_RC_2_PASS_QUALITY NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ /**< Deprecated */ -#define NV_ENC_PARAMS_RC_2_PASS_FRAMESIZE_CAP NV_ENC_PARAMS_RC_CBR_HQ /**< Deprecated */ -#define NV_ENC_PARAMS_RC_2_PASS_VBR NV_ENC_PARAMS_RC_VBR_HQ /**< Deprecated */ -#define NV_ENC_PARAMS_RC_CBR2 NV_ENC_PARAMS_RC_CBR /**< Deprecated */ - /** * Input picture structure */ @@ -682,6 +655,16 @@ typedef enum _NVENCSTATUS * that has not been successfully mapped. */ NV_ENC_ERR_RESOURCE_NOT_MAPPED, + + /** + * This indicates encode driver requires more output buffers to write an output + * bitstream. If this error is returned from ::NvEncRestoreEncoderState() API, this + * is not a fatal error. If the client is encoding with B frames then, + * ::NvEncRestoreEncoderState() API might be requiring the extra output buffer for accomodating overlay frame output in a separate buffer, for AV1 codec. + * In this case, client must call NvEncRestoreEncoderState() API again with NV_ENC_RESTORE_ENCODER_STATE_PARAMS::outputBitstream as input along with + * the parameters in the previous call. When operating in asynchronous mode of encoding, client must also specify NV_ENC_RESTORE_ENCODER_STATE_PARAMS::completionEvent. + */ + NV_ENC_ERR_NEED_MORE_OUTPUT, } NVENCSTATUS; @@ -696,6 +679,8 @@ typedef enum _NV_ENC_PIC_FLAGS [_NV_ENC_INITIALIZE_PARAMS::enablePTD == 1]. */ NV_ENC_PIC_FLAG_OUTPUT_SPSPPS = 0x4, /**< Write the sequence and picture header in encoded bitstream of the current picture */ NV_ENC_PIC_FLAG_EOS = 0x8, /**< Indicates end of the input stream */ + NV_ENC_PIC_FLAG_DISABLE_ENC_STATE_ADVANCE = 0x10, /**< Do not advance encoder state during encode */ + NV_ENC_PIC_FLAG_OUTPUT_RECON_FRAME = 0x20, /**< Write reconstructed frame */ } NV_ENC_PIC_FLAGS; /** @@ -796,6 +781,7 @@ typedef enum _NV_ENC_BUFFER_USAGE NV_ENC_OUTPUT_MOTION_VECTOR = 0x1, /**< Registered surface will be used for output of H.264 ME only mode. This buffer usage type is not supported for HEVC ME only mode. */ NV_ENC_OUTPUT_BITSTREAM = 0x2, /**< Registered surface will be used for output bitstream in encoding */ + NV_ENC_OUTPUT_RECON = 0x4, /**< Registered surface will be used for output reconstructed frame in encoding */ } NV_ENC_BUFFER_USAGE; /** @@ -1176,6 +1162,26 @@ typedef enum _NV_ENC_CAPS */ NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH, + /** + * Indicates encoding without advancing the state support. + */ + NV_ENC_CAPS_DISABLE_ENC_STATE_ADVANCE, + + /** + * Indicates reconstructed output support. + */ + NV_ENC_CAPS_OUTPUT_RECON_SURFACE, + + /** + * Indicates encoded frame output stats support for every block. Block represents a CTB for HEVC, macroblock for H.264 and super block for AV1. + */ + NV_ENC_CAPS_OUTPUT_BLOCK_STATS, + + /** + * Indicates encoded frame output stats support for every row. Row represents a CTB row for HEVC, macroblock row for H.264 and super block row for AV1. + */ + NV_ENC_CAPS_OUTPUT_ROW_STATS, + /** * Reserved - Not to be used by clients. */ @@ -1292,6 +1298,55 @@ typedef struct _NV_ENC_CAPS_PARAM #define NV_ENC_CAPS_PARAM_VER NVENCAPI_STRUCT_VERSION(1) +/** + * Restore encoder state parameters + */ +typedef struct _NV_ENC_RESTORE_ENCODER_STATE_PARAMS +{ + uint32_t version; /**< [in]: Struct version. */ + uint32_t bufferIdx; /**< [in]: State buffer index to which the encoder state will be restored */ + NV_ENC_STATE_RESTORE_TYPE state; /**< [in]: State type to restore */ + NV_ENC_OUTPUT_PTR outputBitstream; /**< [in]: Specifies the output buffer pointer, for AV1 encode only. + Application must call NvEncRestoreEncoderState() API with _NV_ENC_RESTORE_ENCODER_STATE_PARAMS::outputBitstream and + _NV_ENC_RESTORE_ENCODER_STATE_PARAMS::completionEvent as input when an earlier call to this API returned "NV_ENC_ERR_NEED_MORE_OUTPUT", for AV1 encode. */ + void* completionEvent; /**< [in]: Specifies the completion event when asynchronous mode of encoding is enabled. Used for AV1 encode only. */ + uint32_t reserved1[64]; /**< [in]: Reserved and must be set to 0 */ + void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ +} NV_ENC_RESTORE_ENCODER_STATE_PARAMS; + +/** NV_ENC_RESTORE_ENCODER_STATE_PARAMS struct version. */ +#define NV_ENC_RESTORE_ENCODER_STATE_PARAMS_VER NVENCAPI_STRUCT_VERSION(1) + +/** + * Encoded frame information parameters for every block. + */ +typedef struct _NV_ENC_OUTPUT_STATS_BLOCK +{ + uint32_t version; /**< [in]: Struct version */ + uint8_t QP; /**< [out]: QP of the block */ + uint8_t reserved[3]; /**< [in]: Reserved and must be set to 0 */ + uint32_t bitcount; /**< [out]: Bitcount of the block */ + uint32_t reserved1[13]; /**< [in]: Reserved and must be set to 0 */ +} NV_ENC_OUTPUT_STATS_BLOCK; + +/** NV_ENC_OUTPUT_STATS_BLOCK struct version. */ +#define NV_ENC_OUTPUT_STATS_BLOCK_VER NVENCAPI_STRUCT_VERSION(1) + +/** + * Encoded frame information parameters for every row. + */ +typedef struct _NV_ENC_OUTPUT_STATS_ROW +{ + uint32_t version; /**< [in]: Struct version */ + uint8_t QP; /**< [out]: QP of the row */ + uint8_t reserved[3]; /**< [in]: Reserved and must be set to 0 */ + uint32_t bitcount; /**< [out]: Bitcount of the row */ + uint32_t reserved1[13]; /**< [in]: Reserved and must be set to 0 */ +} NV_ENC_OUTPUT_STATS_ROW; + +/** NV_ENC_OUTPUT_STATS_ROW struct version. */ +#define NV_ENC_OUTPUT_STATS_ROW_VER NVENCAPI_STRUCT_VERSION(1) + /** * Encoder Output parameters */ @@ -1305,6 +1360,21 @@ typedef struct _NV_ENC_ENCODE_OUT_PARAMS /** NV_ENC_ENCODE_OUT_PARAMS struct version. */ #define NV_ENC_ENCODE_OUT_PARAMS_VER NVENCAPI_STRUCT_VERSION(1) +/** + * Lookahead picture parameters + */ +typedef struct _NV_ENC_LOOKAHEAD_PIC_PARAMS +{ + uint32_t version; /**< [in]: Struct version. */ + NV_ENC_INPUT_PTR inputBuffer; /**< [in]: Specifies the input buffer pointer. Client must use a pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs.*/ + NV_ENC_PIC_TYPE pictureType; /**< [in]: Specifies input picture type. Client required to be set explicitly by the client if the client has not set NV_ENC_INITALIZE_PARAMS::enablePTD to 1 while calling NvInitializeEncoder. */ + uint32_t reserved[64]; /**< [in]: Reserved and must be set to 0 */ + void* reserved1[64]; /**< [in]: Reserved and must be set to NULL */ +} NV_ENC_LOOKAHEAD_PIC_PARAMS; + +/** NV_ENC_LOOKAHEAD_PIC_PARAMS struct version. */ +#define NV_ENC_LOOKAHEAD_PIC_PARAMS_VER NVENCAPI_STRUCT_VERSION(1) + /** * Creation parameters for input buffer. */ @@ -1428,10 +1498,14 @@ typedef struct _NV_ENC_QP uint32_t strictGOPTarget :1; /**< [in]: Set this to 1 to minimize GOP-to-GOP rate fluctuations */ uint32_t aqStrength :4; /**< [in]: When AQ (Spatial) is enabled (i.e. NV_ENC_RC_PARAMS::enableAQ is set), this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive). If not set, strength is auto selected by driver. */ - uint32_t reservedBitFields :16; /**< [in]: Reserved bitfields and must be set to 0 */ + uint32_t enableExtLookahead :1; /**< [in]: Set this to 1 to enable lookahead externally. + Application must call NvEncLookahead() for NV_ENC_RC_PARAMS::lookaheadDepth number of frames, + before calling NvEncEncodePicture() for the first frame */ + uint32_t reservedBitFields :15; /**< [in]: Reserved bitfields and must be set to 0 */ NV_ENC_QP minQP; /**< [in]: Specifies the minimum QP used for rate control. Client must set NV_ENC_CONFIG::enableMinQP to 1. */ NV_ENC_QP maxQP; /**< [in]: Specifies the maximum QP used for rate control. Client must set NV_ENC_CONFIG::enableMaxQP to 1. */ - NV_ENC_QP initialRCQP; /**< [in]: Specifies the initial QP used for rate control. Client must set NV_ENC_CONFIG::enableInitialRCQP to 1. */ + NV_ENC_QP initialRCQP; /**< [in]: Specifies the initial QP hint used for rate control. The parameter is just used as hint to influence the QP difference between I,P and B frames. + Client must set NV_ENC_CONFIG::enableInitialRCQP to 1. */ uint32_t temporallayerIdxMask; /**< [in]: Specifies the temporal layers (as a bitmask) whose QPs have changed. Valid max bitmask is [2^NV_ENC_CAPS_NUM_MAX_TEMPORAL_LAYERS - 1]. Applicable only for constant QP mode (NV_ENC_RC_PARAMS::rateControlMode = NV_ENC_PARAMS_RC_CONSTQP). */ uint8_t temporalLayerQP[8]; /**< [in]: Specifies the temporal layer QPs used for rate control. Temporal layer index is used as the array index. @@ -1618,9 +1692,7 @@ typedef struct _NV_ENC_CONFIG_H264 Check support for lossless encoding using ::NV_ENC_CAPS_SUPPORT_LOSSLESS_ENCODE caps. */ uint32_t useConstrainedIntraPred :1; /**< [in]: Set 1 to enable constrained intra prediction. */ uint32_t enableFillerDataInsertion :1; /**< [in]: Set to 1 to enable insertion of filler data in the bitstream. - This flag will take effect only when one of the CBR rate - control modes (NV_ENC_PARAMS_RC_CBR, NV_ENC_PARAMS_RC_CBR_HQ, - NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ) is in use and both + This flag will take effect only when CBR rate control mode is in use and both NV_ENC_INITIALIZE_PARAMS::frameRateNum and NV_ENC_INITIALIZE_PARAMS::frameRateDen are set to non-zero values. Setting this field when @@ -1719,9 +1791,7 @@ typedef struct _NV_ENC_CONFIG_HEVC uint32_t chromaFormatIDC :2; /**< [in]: Specifies the chroma format. Should be set to 1 for yuv420 input, 3 for yuv444 input.*/ uint32_t pixelBitDepthMinus8 :3; /**< [in]: Specifies pixel bit depth minus 8. Should be set to 0 for 8 bit input, 2 for 10 bit input.*/ uint32_t enableFillerDataInsertion :1; /**< [in]: Set to 1 to enable insertion of filler data in the bitstream. - This flag will take effect only when one of the CBR rate - control modes (NV_ENC_PARAMS_RC_CBR, NV_ENC_PARAMS_RC_CBR_HQ, - NV_ENC_PARAMS_RC_CBR_LOWDELAY_HQ) is in use and both + This flag will take effect only when CBR rate control mode is in use and both NV_ENC_INITIALIZE_PARAMS::frameRateNum and NV_ENC_INITIALIZE_PARAMS::frameRateDen are set to non-zero values. Setting this field when @@ -1956,6 +2026,18 @@ typedef enum NV_ENC_TUNING_INFO NV_ENC_TUNING_INFO_COUNT /**< Count number of tuningInfos. Invalid value. */ }NV_ENC_TUNING_INFO; +/** + * Split Encoding Modes (Split Encoding is not applicable to H264). + */ +typedef enum _NV_ENC_SPLIT_ENCODE_MODE +{ + NV_ENC_SPLIT_AUTO_MODE = 0, /**< Default value, split frame forced mode disabled, split frame auto mode enabled */ + NV_ENC_SPLIT_AUTO_FORCED_MODE = 1, /**< Split frame forced mode enabled with number of strips automatically selected by driver to best fit configuration */ + NV_ENC_SPLIT_TWO_FORCED_MODE = 2, /**< Forced 2-strip split frame encoding (if NVENC number > 1, 1-strip encode otherwise) */ + NV_ENC_SPLIT_THREE_FORCED_MODE = 3, /**< Forced 3-strip split frame encoding (if NVENC number > 2, NVENC number of strips otherwise) */ + NV_ENC_SPLIT_DISABLE_MODE = 15, /**< Both split frame auto mode and forced mode are disabled */ +} NV_ENC_SPLIT_ENCODE_MODE; + /** * \struct _NV_ENC_INITIALIZE_PARAMS * Encode Session Initialization parameters. @@ -1983,13 +2065,21 @@ typedef struct _NV_ENC_INITIALIZE_PARAMS uint32_t enableMEOnlyMode :1; /**< [in]: Set to 1 to enable ME Only Mode .*/ uint32_t enableWeightedPrediction :1; /**< [in]: Set this to 1 to enable weighted prediction. Not supported if encode session is configured for B-Frames (i.e. NV_ENC_CONFIG::frameIntervalP > 1 or preset >=P3 when tuningInfo = ::NV_ENC_TUNING_INFO_HIGH_QUALITY or tuningInfo = ::NV_ENC_TUNING_INFO_LOSSLESS. This is because preset >=p3 internally enables B frames when tuningInfo = ::NV_ENC_TUNING_INFO_HIGH_QUALITY or ::NV_ENC_TUNING_INFO_LOSSLESS). */ + uint32_t splitEncodeMode :4; /**< [in]: Split Encoding mode in NVENC (Split Encoding is not applicable to H264). + Not supported if any of the following features: weighted prediction, alpha layer encoding, + subframe mode, output into video memory buffer, picture timing/buffering period SEI message + insertion with DX12 interface are enabled in case of HEVC. + For AV1, split encoding is not supported when output into video memory buffer is enabled. */ uint32_t enableOutputInVidmem :1; /**< [in]: Set this to 1 to enable output of NVENC in video memory buffer created by application. This feature is not supported for HEVC ME only mode. */ - uint32_t reservedBitFields :26; /**< [in]: Reserved bitfields and must be set to 0 */ + uint32_t enableReconFrameOutput :1; /**< [in]: Set this to 1 to enable reconstructed frame output. */ + uint32_t enableOutputStats :1; /**< [in]: Set this to 1 to enable encoded frame output stats. Client must allocate buffer of size equal to number of blocks multiplied by the size of + NV_ENC_OUTPUT_STATS_BLOCK struct in system memory and assign to NV_ENC_LOCK_BITSTREAM::encodedOutputStatsPtr to receive the encoded frame output stats.*/ + uint32_t reservedBitFields :20; /**< [in]: Reserved bitfields and must be set to 0 */ uint32_t privDataSize; /**< [in]: Reserved private data buffer size and must be set to 0 */ void* privData; /**< [in]: Reserved private data buffer and must be set to NULL */ NV_ENC_CONFIG* encodeConfig; /**< [in]: Specifies the advanced codec specific structure. If client has sent a valid codec config structure, it will override parameters set by the NV_ENC_INITIALIZE_PARAMS::presetGUID parameter. If set to NULL the NvEncodeAPI interface will use the NV_ENC_INITIALIZE_PARAMS::presetGUID to set the codec specific parameters. - Client can also optionally query the NvEncodeAPI interface to get codec specific parameters for a presetGUID using ::NvEncGetEncodePresetConfig() API. It can then modify (if required) some of the codec config parameters and send down a custom config structure as part of ::_NV_ENC_INITIALIZE_PARAMS. - Even in this case client is recommended to pass the same preset guid it has used in ::NvEncGetEncodePresetConfig() API to query the config structure; as NV_ENC_INITIALIZE_PARAMS::presetGUID. This will not override the custom config structure but will be used to determine other Encoder HW specific parameters not exposed in the API. */ + Client can also optionally query the NvEncodeAPI interface to get codec specific parameters for a presetGUID using ::NvEncGetEncodePresetConfigEx() API. It can then modify (if required) some of the codec config parameters and send down a custom config structure as part of ::_NV_ENC_INITIALIZE_PARAMS. + Even in this case client is recommended to pass the same preset guid it has used in ::NvEncGetEncodePresetConfigEx() API to query the config structure; as NV_ENC_INITIALIZE_PARAMS::presetGUID. This will not override the custom config structure but will be used to determine other Encoder HW specific parameters not exposed in the API. */ uint32_t maxEncodeWidth; /**< [in]: Maximum encode width to be used for current Encode session. Client should allocate output buffers according to this dimension for dynamic resolution change. If set to 0, Encoder will not allow dynamic resolution change. */ uint32_t maxEncodeHeight; /**< [in]: Maximum encode height to be allowed for current Encode session. @@ -1999,12 +2089,18 @@ typedef struct _NV_ENC_INITIALIZE_PARAMS This client must also set NV_ENC_INITIALIZE_PARAMS::enableExternalMEHints to 1. */ NV_ENC_TUNING_INFO tuningInfo; /**< [in]: Tuning Info of NVENC encoding(TuningInfo is not applicable to H264 and HEVC meonly mode). */ NV_ENC_BUFFER_FORMAT bufferFormat; /**< [in]: Input buffer format. Used only when DX12 interface type is used */ - uint32_t reserved [287]; /**< [in]: Reserved and must be set to 0 */ + uint32_t numStateBuffers; /**< [in]: Number of state buffers to allocate to save encoder state. Set this to value greater than zero to enable encoding without advancing the encoder state. */ + NV_ENC_OUTPUT_STATS_LEVEL outputStatsLevel; /**< [in]: Specifies the level for encoded frame output stats, when NV_ENC_INITIALIZE_PARAMS::enableOutputStats is set to 1. + Client should allocate buffer of size equal to number of blocks multiplied by the size of NV_ENC_OUTPUT_STATS_BLOCK struct + if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_BLOCK or number of rows multiplied by the size of + NV_ENC_OUTPUT_STATS_ROW struct if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_ROW + in system memory and assign to NV_ENC_LOCK_BITSTREAM::encodedOutputStatsPtr to receive the encoded frame output stats. */ + uint32_t reserved [285]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_INITIALIZE_PARAMS; /** macro for constructing the version field of ::_NV_ENC_INITIALIZE_PARAMS */ -#define NV_ENC_INITIALIZE_PARAMS_VER (NVENCAPI_STRUCT_VERSION(5) | ( 1<<31 )) +#define NV_ENC_INITIALIZE_PARAMS_VER (NVENCAPI_STRUCT_VERSION(6) | ( 1<<31 )) /** @@ -2301,8 +2397,16 @@ typedef struct _NV_ENC_PIC_PARAMS uint32_t meSbHintsCount; /**< [in]: For AV1, specifies the total number of external ME SB hint candidates for the frame NV_ENC_PIC_PARAMS::meSbHintsCount must never exceed the total number of SBs in frame * the max number of candidates per SB provided during encoder initialization. The max number of candidates per SB is maxMeHintCountsPerBlock[0].numCandsPerSb + maxMeHintCountsPerBlock[1].numCandsPerSb */ - uint32_t reserved3[285]; /**< [in]: Reserved and must be set to 0 */ - void* reserved4[58]; /**< [in]: Reserved and must be set to NULL */ + uint32_t stateBufferIdx; /**< [in]: Specifies the buffer index in which the encoder state will be saved for current frame encode. It must be in the + range 0 to NV_ENC_INITIALIZE_PARAMS::numStateBuffers - 1. */ + NV_ENC_OUTPUT_PTR outputReconBuffer; /**< [in]: Specifies the reconstructed frame buffer pointer to output reconstructed frame, if enabled by setting NV_ENC_INITIALIZE_PARAMS::enableReconFrameOutput. + Client must allocate buffers for writing the reconstructed frames and register them with the Nvidia Video Encoder Interface with NV_ENC_REGISTER_RESOURCE::bufferUsage + set to NV_ENC_OUTPUT_RECON. + Client must use the pointer obtained from ::NvEncMapInputResource() API and assign it to NV_ENC_PIC_PARAMS::outputReconBuffer. + Reconstructed output will be in NV_ENC_BUFFER_FORMAT_NV12 format when chromaFormatIDC is set to 1. + chromaFormatIDC = 3 is not supported. */ + uint32_t reserved3[284]; /**< [in]: Reserved and must be set to 0 */ + void* reserved4[57]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_PIC_PARAMS; /** Macro for constructing the version field of ::_NV_ENC_PIC_PARAMS */ @@ -2378,19 +2482,20 @@ typedef struct _NV_ENC_LOCK_BITSTREAM uint32_t ltrFrameIdx; /**< [out]: Frame index associated with this LTR frame. */ uint32_t ltrFrameBitmap; /**< [out]: Bitmap of LTR frames indices which were used for encoding this frame. Value of 0 if no LTR frames were used. */ uint32_t temporalId; /**< [out]: TemporalId value of the frame when using temporalSVC encoding */ - uint32_t reserved[12]; /**< [in]: Reserved and must be set to 0 */ uint32_t intraMBCount; /**< [out]: For H264, Number of Intra MBs in the encoded frame. For HEVC, Number of Intra CTBs in the encoded frame. For AV1, Number of Intra SBs in the encoded show frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */ uint32_t interMBCount; /**< [out]: For H264, Number of Inter MBs in the encoded frame, includes skip MBs. For HEVC, Number of Inter CTBs in the encoded frame. For AV1, Number of Inter SBs in the encoded show frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */ int32_t averageMVX; /**< [out]: Average Motion Vector in X direction for the encoded frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */ int32_t averageMVY; /**< [out]: Average Motion Vector in y direction for the encoded frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */ uint32_t alphaLayerSizeInBytes; /**< [out]: Number of bytes generated for the alpha layer in the encoded output. Applicable only when HEVC with alpha encoding is enabled. */ - - uint32_t reserved1[218]; /**< [in]: Reserved and must be set to 0 */ - void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ + uint32_t outputStatsPtrSize; /**< [in]: Size of the buffer pointed by NV_ENC_LOCK_BITSTREAM::outputStatsPtr. */ + void* outputStatsPtr; /**< [in, out]: Buffer which receives the encoded frame output stats, if NV_ENC_INITIALIZE_PARAMS::enableOutputStats is set to 1. */ + uint32_t frameIdxDisplay; /**< [out]: Frame index in display order */ + uint32_t reserved1[220]; /**< [in]: Reserved and must be set to 0 */ + void* reserved2[63]; /**< [in]: Reserved and must be set to NULL */ + uint32_t reservedInternal[8]; /**< [in]: Reserved and must be set to 0 */ } NV_ENC_LOCK_BITSTREAM; -/** Macro for constructing the version field of ::_NV_ENC_LOCK_BITSTREAM */ -#define NV_ENC_LOCK_BITSTREAM_VER NVENCAPI_STRUCT_VERSION(2) +#define NV_ENC_LOCK_BITSTREAM_VER (NVENCAPI_STRUCT_VERSION(1) | ( 1<<31 )) /** @@ -2535,7 +2640,11 @@ typedef struct _NV_ENC_REGISTER_RESOURCE before starting GPU operation, if NV_ENC_FENCE_POINT_D3D12::bWait is set. The fence NV_ENC_FENCE_POINT_D3D12::pFence and NV_ENC_FENCE_POINT_D3D12::signalValue will be used to do GPU signal when GPU operation finishes, if NV_ENC_FENCE_POINT_D3D12::bSignal is set. */ - uint32_t reserved1[247]; /**< [in]: Reserved and must be set to 0. */ + uint32_t chromaOffset[2]; /**< [out]: Chroma offset for the reconstructed output buffer when NV_ENC_BUFFER_USAGE::bufferUsage is set + to NV_ENC_OUTPUT_RECON and D3D11 interface is used. + When chroma components are interleaved, 'chromaOffset[0]' will contain chroma offset. + chromaOffset[1] is reserved for future use. */ + uint32_t reserved1[245]; /**< [in]: Reserved and must be set to 0. */ void* reserved2[61]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_REGISTER_RESOURCE; @@ -3531,6 +3640,34 @@ NVENCSTATUS NVENCAPI NvEncLockBitstream (void* encoder, */ NVENCSTATUS NVENCAPI NvEncUnlockBitstream (void* encoder, NV_ENC_OUTPUT_PTR bitstreamBuffer); +// NvEncRestoreEncoderState +/** + * \brief Restore state of encoder + * + * This function is used to restore the state of encoder with state saved internally in + * state buffer corresponding to index equal to 'NV_ENC_RESTORE_ENCODER_STATE_PARAMS::bfrIndex'. + * Client can specify the state type to be updated by specifying appropriate value in + * 'NV_ENC_RESTORE_ENCODER_STATE_PARAMS::state'. The client must call this + * function after all previous encodes have finished. + * + * \param [in] encoder + * Pointer to the NvEncodeAPI interface. + * \param [in] restoreState + * Pointer to the ::_NV_ENC_RESTORE_ENCODER_STATE_PARAMS structure + * + * \return + * ::NV_ENC_SUCCESS \n + * ::NV_ENC_ERR_INVALID_PTR \n + * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n + * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n + * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n + * ::NV_ENC_ERR_OUT_OF_MEMORY \n + * ::NV_ENC_ERR_INVALID_PARAM \n + * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n + * ::NV_ENC_ERR_GENERIC \n + * + */ +NVENCSTATUS NVENCAPI NvEncRestoreEncoderState (void* encoder, NV_ENC_RESTORE_ENCODER_STATE_PARAMS* restoreState); // NvLockInputBuffer /** @@ -4146,6 +4283,32 @@ NVENCSTATUS NVENCAPI NvEncodeAPIGetMaxSupportedVersion (uint32_t* versi */ const char * NVENCAPI NvEncGetLastErrorString (void* encoder); +// NvEncLookaheadPicture +/** + * \brief Submit an input picture for lookahead. + * + * This function can be used by clients to submit input frame for lookahead. Client could call this function + * NV_ENC_INITIALIZE_PARAMS::lookaheadDepth plus one number of frames, before calling NvEncEncodePicture() for the first frame. + * + * \param [in] encoder + * Pointer to the NvEncodeAPI interface. + * \param [in] lookaheadParams + * Pointer to the ::_NV_ENC_LOOKAHEAD_PIC_PARAMS structure. + * + * \return + * ::NV_ENC_SUCCESS \n + * ::NV_ENC_NEED_MORE_INPUT \n should we return this error is lookahead queue is not full? + * ::NV_ENC_ERR_INVALID_PTR \n + * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n + * ::NV_ENC_ERR_GENERIC \n + * ::NV_ENC_ERR_INVALID_ENCODERDEVICE \n + * ::NV_ENC_ERR_DEVICE_NOT_EXIST \n + * ::NV_ENC_ERR_UNSUPPORTED_PARAM \n + * ::NV_ENC_ERR_OUT_OF_MEMORY \n + * ::NV_ENC_ERR_INVALID_PARAM \n + * ::NV_ENC_ERR_INVALID_VERSION \n + */ +NVENCSTATUS NVENCAPI NvEncLookaheadPicture (void* encoder, NV_ENC_LOOKAHEAD_PIC_PARAMS *lookaheadParamas); /// \cond API PFN /* @@ -4192,6 +4355,8 @@ typedef NVENCSTATUS (NVENCAPI* PNVENCRUNMOTIONESTIMATIONONLY) (void* encoder, typedef const char * (NVENCAPI* PNVENCGETLASTERROR) (void* encoder); typedef NVENCSTATUS (NVENCAPI* PNVENCSETIOCUDASTREAMS) (void* encoder, NV_ENC_CUSTREAM_PTR inputStream, NV_ENC_CUSTREAM_PTR outputStream); typedef NVENCSTATUS (NVENCAPI* PNVENCGETSEQUENCEPARAMEX) (void* encoder, NV_ENC_INITIALIZE_PARAMS* encInitParams, NV_ENC_SEQUENCE_PARAM_PAYLOAD* sequenceParamPayload); +typedef NVENCSTATUS (NVENCAPI* PNVENCRESTOREENCODERSTATE) (void* encoder, NV_ENC_RESTORE_ENCODER_STATE_PARAMS* restoreState); +typedef NVENCSTATUS (NVENCAPI* PNVENCLOOKAHEADPICTURE) (void* encoder, NV_ENC_LOOKAHEAD_PIC_PARAMS* lookaheadParams); /// \endcond @@ -4248,7 +4413,9 @@ typedef struct _NV_ENCODE_API_FUNCTION_LIST PNVENCSETIOCUDASTREAMS nvEncSetIOCudaStreams; /**< [out]: Client should access ::nvEncSetIOCudaStreams API through this pointer. */ PNVENCGETENCODEPRESETCONFIGEX nvEncGetEncodePresetConfigEx; /**< [out]: Client should access ::NvEncGetEncodePresetConfigEx() API through this pointer. */ PNVENCGETSEQUENCEPARAMEX nvEncGetSequenceParamEx; /**< [out]: Client should access ::NvEncGetSequenceParamEx() API through this pointer. */ - void* reserved2[277]; /**< [in]: Reserved and must be set to NULL */ + PNVENCRESTOREENCODERSTATE nvEncRestoreEncoderState; /**< [out]: Client should access ::NvEncRestoreEncoderState() API through this pointer. */ + PNVENCLOOKAHEADPICTURE nvEncLookaheadPicture; /**< [out]: Client should access ::NvEncLookaheadPicture() API through this pointer. */ + void* reserved2[275]; /**< [in]: Reserved and must be set to NULL */ } NV_ENCODE_API_FUNCTION_LIST; /** Macro for constructing the version field of ::_NV_ENCODEAPI_FUNCTION_LIST. */ diff --git a/alvr/server/cpp/platform/win32/NvCodecUtils.h b/alvr/server/cpp/platform/win32/NvCodecUtils.h index e4d451d32a..cfc87e0e3f 100644 --- a/alvr/server/cpp/platform/win32/NvCodecUtils.h +++ b/alvr/server/cpp/platform/win32/NvCodecUtils.h @@ -1,13 +1,29 @@ /* -* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. -* -* Please refer to the NVIDIA end user license agreement (EULA) associated -* with this source code for terms and conditions that govern your use of -* this software. Any use, reproduction, disclosure, or distribution of -* this software and related documentation outside the terms of the EULA -* is strictly prohibited. -* -*/ + * This copyright notice applies to this header file only: + * + * Copyright (c) 2010-2023 NVIDIA Corporation + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the software, and to permit persons to whom the + * software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ //--------------------------------------------------------------------------- //! \file NvCodecUtils.h @@ -459,7 +475,7 @@ class ConcurrentQueue private: bool full() { - if (m_List.size() == maxSize) + if (maxSize > 0 && m_List.size() == maxSize) return true; return false; } diff --git a/alvr/server/cpp/platform/win32/NvEncoder.cpp b/alvr/server/cpp/platform/win32/NvEncoder.cpp index 522091d406..c385a83c77 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.cpp +++ b/alvr/server/cpp/platform/win32/NvEncoder.cpp @@ -1,13 +1,29 @@ /* -* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. -* -* Please refer to the NVIDIA end user license agreement (EULA) associated -* with this source code for terms and conditions that govern your use of -* this software. Any use, reproduction, disclosure, or distribution of -* this software and related documentation outside the terms of the EULA -* is strictly prohibited. -* -*/ + * This copyright notice applies to this header file only: + * + * Copyright (c) 2010-2023 NVIDIA Corporation + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the software, and to permit persons to whom the + * software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ #include "NvEncoder.h" @@ -84,7 +100,6 @@ void NvEncoder::LoadNvEncApi() uint32_t version = 0; uint32_t currentVersion = (NVENCAPI_MAJOR_VERSION << 4) | NVENCAPI_MINOR_VERSION; NVENC_API_CALL(NvEncodeAPIGetMaxSupportedVersion(&version)); - if (currentVersion > version) { NVENC_THROW_ERROR("Current Driver Version does not support this NvEncodeAPI version, please upgrade driver", NV_ENC_ERR_INVALID_VERSION); @@ -333,6 +348,12 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) m_encodeConfig.rcParams.constQP = { 28, 31, 25 }; } } + + if (((uint32_t)m_encodeConfig.frameIntervalP) > m_encodeConfig.gopLength) + { + m_encodeConfig.frameIntervalP = m_encodeConfig.gopLength; + } + m_initializeParams.encodeConfig = &m_encodeConfig; NVENC_API_CALL(m_nvenc.nvEncInitializeEncoder(m_hEncoder, &m_initializeParams)); diff --git a/alvr/server/cpp/platform/win32/NvEncoder.h b/alvr/server/cpp/platform/win32/NvEncoder.h index 447531fbd5..ebe1bed336 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.h +++ b/alvr/server/cpp/platform/win32/NvEncoder.h @@ -1,13 +1,29 @@ /* -* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. -* -* Please refer to the NVIDIA end user license agreement (EULA) associated -* with this source code for terms and conditions that govern your use of -* this software. Any use, reproduction, disclosure, or distribution of -* this software and related documentation outside the terms of the EULA -* is strictly prohibited. -* -*/ + * This copyright notice applies to this header file only: + * + * Copyright (c) 2010-2023 NVIDIA Corporation + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the software, and to permit persons to whom the + * software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ #pragma once @@ -254,6 +270,11 @@ class NvEncoder * @brief This function returns the number of allocated buffers. */ uint32_t GetEncoderBufferCount() const { return m_nEncoderBuffer; } + + /* + * @brief This function returns initializeParams(width, height, fps etc). + */ + NV_ENC_INITIALIZE_PARAMS GetinitializeParams() const { return m_initializeParams; } protected: /** diff --git a/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp b/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp index 54e0b63b63..3c23f87608 100644 --- a/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp +++ b/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp @@ -1,13 +1,29 @@ /* -* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. -* -* Please refer to the NVIDIA end user license agreement (EULA) associated -* with this source code for terms and conditions that govern your use of -* this software. Any use, reproduction, disclosure, or distribution of -* this software and related documentation outside the terms of the EULA -* is strictly prohibited. -* -*/ + * This copyright notice applies to this header file only: + * + * Copyright (c) 2010-2023 NVIDIA Corporation + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the software, and to permit persons to whom the + * software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ #ifndef _WIN32 diff --git a/alvr/server/cpp/platform/win32/NvEncoderD3D11.h b/alvr/server/cpp/platform/win32/NvEncoderD3D11.h index 8293d97596..c605469c85 100644 --- a/alvr/server/cpp/platform/win32/NvEncoderD3D11.h +++ b/alvr/server/cpp/platform/win32/NvEncoderD3D11.h @@ -1,13 +1,29 @@ /* -* Copyright 2017-2022 NVIDIA Corporation. All rights reserved. -* -* Please refer to the NVIDIA end user license agreement (EULA) associated -* with this source code for terms and conditions that govern your use of -* this software. Any use, reproduction, disclosure, or distribution of -* this software and related documentation outside the terms of the EULA -* is strictly prohibited. -* -*/ + * This copyright notice applies to this header file only: + * + * Copyright (c) 2010-2023 NVIDIA Corporation + * + * Permission is hereby granted, free of charge, to any person + * obtaining a copy of this software and associated documentation + * files (the "Software"), to deal in the Software without + * restriction, including without limitation the rights to use, + * copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the software, and to permit persons to whom the + * software is furnished to do so, subject to the following + * conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + */ #pragma once From b09104114c15361b25a10fc4551eb137824f24cc Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sun, 20 Aug 2023 21:42:10 +0100 Subject: [PATCH 40/60] OpenVR SDK 1.26.7 --- alvr/server/cpp/openvr/headers/openvr.h | 277 ++++++++++++------ .../server/cpp/openvr/headers/openvr_driver.h | 242 ++++++++++----- alvr/server/cpp/openvr/lib/libopenvr_api.a | Bin 1712110 -> 0 bytes alvr/server/cpp/openvr/lib/libopenvr_api.so | Bin 0 -> 6963816 bytes alvr/server/cpp/openvr/lib/openvr_api.lib | Bin 6666 -> 5500 bytes 5 files changed, 351 insertions(+), 168 deletions(-) delete mode 100644 alvr/server/cpp/openvr/lib/libopenvr_api.a create mode 100644 alvr/server/cpp/openvr/lib/libopenvr_api.so diff --git a/alvr/server/cpp/openvr/headers/openvr.h b/alvr/server/cpp/openvr/headers/openvr.h index ff6d1fe235..17d0e98b2d 100644 --- a/alvr/server/cpp/openvr/headers/openvr.h +++ b/alvr/server/cpp/openvr/headers/openvr.h @@ -16,8 +16,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 1; - static const uint32_t k_nSteamVRVersionMinor = 16; - static const uint32_t k_nSteamVRVersionBuild = 8; + static const uint32_t k_nSteamVRVersionMinor = 26; + static const uint32_t k_nSteamVRVersionBuild = 7; } // namespace vr // public_vrtypes.h @@ -29,6 +29,8 @@ namespace vr { #pragma pack( push, 8 ) +typedef uint32_t PropertyTypeTag_t; + // right-handed system // +y is up // +x is to the right @@ -102,40 +104,6 @@ struct VRBoneTransform_t HmdQuaternionf_t orientation; }; -#pragma pack( pop ) - -} // namespace vr - -#endif - -// vrtypes.h - -#ifndef _INCLUDE_VRTYPES_H -#define _INCLUDE_VRTYPES_H - -// Forward declarations to avoid requiring vulkan.h -struct VkDevice_T; -struct VkPhysicalDevice_T; -struct VkInstance_T; -struct VkQueue_T; - -// Forward declarations to avoid requiring d3d12.h -struct ID3D12Resource; -struct ID3D12CommandQueue; - -namespace vr -{ -#pragma pack( push, 8 ) - -/** A handle for a spatial anchor. This handle is only valid during the session it was created in. -* Anchors that live beyond one session should be saved by their string descriptors. */ -typedef uint32_t SpatialAnchorHandle_t; - -typedef void* glSharedTextureHandle_t; -typedef int32_t glInt_t; -typedef uint32_t glUInt_t; - - /** Used to return the post-distortion UVs for each color channel. * UVs range from 0 to 1 with 0,0 in the upper left corner of the * source render target. The 0,0 to 1,1 range covers a single eye. */ @@ -162,9 +130,9 @@ enum ETextureType TextureType_DirectX12 = 4, // Handle is a pointer to a D3D12TextureData_t structure TextureType_DXGISharedHandle = 5, // Handle is a HANDLE DXGI share handle, only supported for Overlay render targets. // this texture is used directly by our renderer, so only perform atomic (copyresource or resolve) on it - TextureType_Metal = 6, // Handle is a MTLTexture conforming to the MTLSharedTexture protocol. Textures submitted to IVRCompositor::Submit which - // are of type MTLTextureType2DArray assume layer 0 is the left eye texture (vr::EVREye::Eye_left), layer 1 is the right - // eye texture (vr::EVREye::Eye_Right) + TextureType_Metal = 6, // Handle is a MTLTexture conforming to the MTLSharedTexture protocol. Textures submitted to IVRCompositor::Submit which + // are of type MTLTextureType2DArray assume layer 0 is the left eye texture (vr::EVREye::Eye_left), layer 1 is the right + // eye texture (vr::EVREye::Eye_Right) }; enum EColorSpace @@ -181,6 +149,81 @@ struct Texture_t EColorSpace eColorSpace; }; +/** Allows the application to control what part of the provided texture will be used in the +* frame buffer. */ +struct VRTextureBounds_t +{ + float uMin, vMin; + float uMax, vMax; +}; + +/** Allows specifying pose used to render provided scene texture (if different from value returned by WaitGetPoses). */ +struct VRTextureWithPose_t : public Texture_t +{ + HmdMatrix34_t mDeviceToAbsoluteTracking; // Actual pose used to render scene textures. +}; + +struct VRTextureDepthInfo_t +{ + void* handle; // See ETextureType definition above + HmdMatrix44_t mProjection; + HmdVector2_t vRange; // 0..1 +}; + +struct VRTextureWithDepth_t : public Texture_t +{ + VRTextureDepthInfo_t depth; +}; + +struct VRTextureWithPoseAndDepth_t : public VRTextureWithPose_t +{ + VRTextureDepthInfo_t depth; +}; + +// 64-bit types that are part of public structures +// that are replicated in shared memory. +#if defined(__linux__) || defined(__APPLE__) +typedef uint64_t vrshared_uint64_t __attribute__ ((aligned(8))); +typedef double vrshared_double __attribute__ ((aligned(8))); +#else +typedef uint64_t vrshared_uint64_t; +typedef double vrshared_double; +#endif + +#pragma pack( pop ) + +} // namespace vr + +#endif + +// vrtypes.h + +#ifndef _INCLUDE_VRTYPES_H +#define _INCLUDE_VRTYPES_H + +// Forward declarations to avoid requiring vulkan.h +struct VkDevice_T; +struct VkPhysicalDevice_T; +struct VkInstance_T; +struct VkQueue_T; + +// Forward declarations to avoid requiring d3d12.h +struct ID3D12Resource; +struct ID3D12CommandQueue; + +namespace vr +{ +#pragma pack( push, 8 ) + +/** A handle for a spatial anchor. This handle is only valid during the session it was created in. +* Anchors that live beyond one session should be saved by their string descriptors. */ +typedef uint32_t SpatialAnchorHandle_t; + +typedef void* glSharedTextureHandle_t; +typedef int32_t glInt_t; +typedef uint32_t glUInt_t; + + // Handle to a shared texture (HANDLE on Windows obtained using OpenSharedResource). typedef uint64_t SharedTextureHandle_t; #define INVALID_SHARED_TEXTURE_HANDLE ((vr::SharedTextureHandle_t)0) @@ -387,6 +430,8 @@ enum ETrackedDeviceProperty Prop_ManufacturerSerialNumber_String = 1049, Prop_ComputedSerialNumber_String = 1050, Prop_EstimatedDeviceFirstUseTime_Int32 = 1051, + Prop_DevicePowerUsage_Float = 1052, + Prop_IgnoreMotionForStandby_Bool = 1053, // Properties that are unique to TrackedDeviceClass_HMD Prop_ReportsTimeSinceVSync_Bool = 2000, @@ -479,10 +524,23 @@ enum ETrackedDeviceProperty Prop_CameraGlobalGain_Float = 2089, // Prop_DashboardLayoutPathName_String = 2090, // DELETED Prop_DashboardScale_Float = 2091, + Prop_PeerButtonInfo_String = 2092, + Prop_Hmd_SupportsHDR10_Bool = 2093, + Prop_Hmd_EnableParallelRenderCameras_Bool = 2094, + Prop_DriverProvidedChaperoneJson_String = 2095, // higher priority than Prop_DriverProvidedChaperonePath_String + Prop_IpdUIRangeMinMeters_Float = 2100, Prop_IpdUIRangeMaxMeters_Float = 2101, Prop_Hmd_SupportsHDCP14LegacyCompat_Bool = 2102, Prop_Hmd_SupportsMicMonitoring_Bool = 2103, + Prop_Hmd_SupportsDisplayPortTrainingMode_Bool = 2104, + Prop_Hmd_SupportsRoomViewDirect_Bool = 2105, + Prop_Hmd_SupportsAppThrottling_Bool = 2106, + Prop_Hmd_SupportsGpuBusMonitoring_Bool = 2107, + + Prop_DSCVersion_Int32 = 2110, + Prop_DSCSliceCount_Int32 = 2111, + Prop_DSCBPPx16_Int32 = 2112, // Driver requested mura correction properties Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, @@ -604,37 +662,6 @@ static const VRActionSetHandle_t k_ulInvalidActionSetHandle = 0; static const VRInputValueHandle_t k_ulInvalidInputValueHandle = 0; -/** Allows the application to control what part of the provided texture will be used in the -* frame buffer. */ -struct VRTextureBounds_t -{ - float uMin, vMin; - float uMax, vMax; -}; - -/** Allows specifying pose used to render provided scene texture (if different from value returned by WaitGetPoses). */ -struct VRTextureWithPose_t : public Texture_t -{ - HmdMatrix34_t mDeviceToAbsoluteTracking; // Actual pose used to render scene textures. -}; - -struct VRTextureDepthInfo_t -{ - void* handle; // See ETextureType definition above - HmdMatrix44_t mProjection; - HmdVector2_t vRange; // 0..1 -}; - -struct VRTextureWithDepth_t : public Texture_t -{ - VRTextureDepthInfo_t depth; -}; - -struct VRTextureWithPoseAndDepth_t : public VRTextureWithPose_t -{ - VRTextureDepthInfo_t depth; -}; - /** Allows the application to control how scene textures are used by the compositor when calling Submit. */ enum EVRSubmitFlags { @@ -671,8 +698,8 @@ enum EVRSubmitFlags Submit_GlArrayTexture = 0x80, // Do not use - Submit_Reserved2 = 0x8000, - + Submit_Reserved2 = 0x08000, + Submit_Reserved3 = 0x10000, }; @@ -774,7 +801,7 @@ enum EVREventType // VREvent_SceneFocusLost = 402, // data is process // VREvent_SceneFocusGained = 403, // data is process VREvent_SceneApplicationChanged = 404, // data is process - The App actually drawing the scene changed (usually to or from the compositor) - VREvent_SceneFocusChanged = 405, // data is process - New app got access to draw the scene + // VREvent_SceneFocusChanged = 405, // data is process - This is defunct and will not be called. VREvent_InputFocusChanged = 406, // data is process // VREvent_SceneApplicationSecondaryRenderingStarted = 407, VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408, // data is process @@ -785,6 +812,8 @@ enum EVREventType VREvent_SceneApplicationStateChanged = 412, // No data; but query VRApplications()->GetSceneApplicationState(); + VREvent_SceneAppPipeDisconnected = 413, // data is process - Called when the scene app's pipe has been closed. + VREvent_ConsoleOpened = 420, VREvent_ConsoleClosed = 421, @@ -824,6 +853,11 @@ enum EVREventType VREvent_DesktopViewUpdating = 530, VREvent_DesktopViewReady = 531, + VREvent_StartDashboard = 532, + VREvent_ElevatePrism = 533, + + VREvent_OverlayClosed = 534, + VREvent_Notification_Shown = 600, VREvent_Notification_Hidden = 601, VREvent_Notification_BeginInteraction = 602, @@ -835,6 +869,7 @@ enum EVREventType VREvent_QuitAcknowledged = 703, // data is process VREvent_DriverRequestedQuit = 704, // The driver has requested that SteamVR shut down VREvent_RestartRequested = 705, // A driver or other component wants the user to restart SteamVR + VREvent_InvalidateSwapTextureSets = 706, VREvent_ChaperoneDataHasChanged = 800, // this will never happen with the new chaperone system VREvent_ChaperoneUniverseHasChanged = 801, @@ -905,6 +940,7 @@ enum EVREventType VREvent_Compositor_OutOfVideoMemory = 1417, VREvent_Compositor_DisplayModeNotSupported = 1418, // k_pch_SteamVR_PreferredRefreshRate VREvent_Compositor_StageOverrideReady = 1419, + VREvent_Compositor_RequestDisconnectReconnect = 1420, VREvent_TrackedCamera_StartVideoStream = 1500, VREvent_TrackedCamera_StopVideoStream = 1501, @@ -991,6 +1027,9 @@ enum EVRButtonId k_EButton_IndexController_B = k_EButton_ApplicationMenu, k_EButton_IndexController_JoyStick = k_EButton_Axis3, + k_EButton_Reserved0 = 50, + k_EButton_Reserved1 = 51, + k_EButton_Max = 64 }; @@ -1484,6 +1523,7 @@ enum EVROverlayError VROverlayError_TextureAlreadyLocked = 31, VROverlayError_TextureLockCapacityReached = 32, VROverlayError_TextureNotLocked = 33, + VROverlayError_TimedOut = 34, }; /** enum values to pass in to VR_Init to identify whether the application will @@ -1505,6 +1545,7 @@ enum EVRApplicationType VRApplication_OpenXRScene = 10, // reserved for openxr (started session) VRApplication_OpenXROverlay = 11, // reserved for openxr (started overlay session) VRApplication_Prism = 12, // reserved for the vrprismhost process + VRApplication_RoomView = 13, // reserved for the RoomView process VRApplication_Max }; @@ -1520,6 +1561,15 @@ inline bool IsOpenXRAppType( EVRApplicationType eType ) } +/** returns true if the specified application type submits eye buffers */ +inline bool BAppTypeSubmitsEyeBuffers( EVRApplicationType eType ) +{ + return eType == VRApplication_Scene + || eType == VRApplication_OpenXRScene + || eType == VRApplication_RoomView; +} + + /** error codes for firmware */ enum EVRFirmwareError { @@ -1641,8 +1691,20 @@ enum EVRInitError VRInitError_Init_PrismNeedsNewDrivers = 151, VRInitError_Init_PrismStartupTimedOut = 152, VRInitError_Init_CouldNotStartPrism = 153, - VRInitError_Init_CreateDriverDirectDeviceFailed = 154, - VRInitError_Init_PrismExitedUnexpectedly = 155, + VRInitError_Init_PrismClientInitFailed = 154, + VRInitError_Init_PrismClientStartFailed = 155, + VRInitError_Init_PrismExitedUnexpectedly = 156, + VRInitError_Init_BadLuid = 157, + VRInitError_Init_NoServerForAppContainer = 158, + VRInitError_Init_DuplicateBootstrapper = 159, + VRInitError_Init_VRDashboardServicePending = 160, + VRInitError_Init_VRDashboardServiceTimeout = 161, + VRInitError_Init_VRDashboardServiceStopped = 162, + VRInitError_Init_VRDashboardAlreadyStarted = 163, + VRInitError_Init_VRDashboardCopyFailed = 164, + VRInitError_Init_VRDashboardTokenFailure = 165, + VRInitError_Init_VRDashboardEnvironmentFailure = 166, + VRInitError_Init_VRDashboardPathFailure = 167, VRInitError_Driver_Failed = 200, VRInitError_Driver_Unknown = 201, @@ -1658,6 +1720,9 @@ enum EVRInitError VRInitError_Driver_HmdDriverIdOutOfBounds = 211, VRInitError_Driver_HmdDisplayMirrored = 212, VRInitError_Driver_HmdDisplayNotFoundLaptop = 213, + VRInitError_Driver_PeerDriverNotInstalled = 214, + VRInitError_Driver_WirelessHmdNotConnected = 215, + // Never make error 259 because we return it from main and it would conflict with STILL_ACTIVE VRInitError_IPC_ServerInitFailed = 300, @@ -1766,9 +1831,12 @@ enum EVRInitError VRInitError_Compositor_WindowInterfaceIsNull = 491, VRInitError_Compositor_SystemLayerCreateInstance = 492, VRInitError_Compositor_SystemLayerCreateSession = 493, + VRInitError_Compositor_CreateInverseDistortUVs = 494, + VRInitError_Compositor_CreateBackbufferDepth = 495, VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, VRInitError_VendorSpecific_WindowsNotInDevMode = 1001, + VRInitError_VendorSpecific_OculusLinkNotEnabled = 1002, VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101, VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, @@ -1784,6 +1852,7 @@ enum EVRInitError VRInitError_VendorSpecific_HmdFound_UserDataError = 1112, VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, VRInitError_VendorSpecific_OculusRuntimeBadInstall = 1114, + VRInitError_VendorSpecific_HmdFound_UnexpectedConfiguration_1 = 1115, VRInitError_Steam_SteamInstallationNotFound = 2000, @@ -2727,6 +2796,8 @@ namespace vr static const char * const k_pch_SteamVR_MotionSmoothingOverride_Int32 = "motionSmoothingOverride"; static const char * const k_pch_SteamVR_FramesToThrottle_Int32 = "framesToThrottle"; static const char * const k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; + static const char * const k_pch_SteamVR_WorldScale_Float = "worldScale"; + static const char * const k_pch_SteamVR_FovScale_Int32 = "fovScale"; static const char * const k_pch_SteamVR_DisableAsyncReprojection_Bool = "disableAsync"; static const char * const k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; static const char * const k_pch_SteamVR_DefaultMirrorView_Int32 = "mirrorView"; @@ -2753,7 +2824,6 @@ namespace vr static const char * const k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; static const char * const k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; static const char * const k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; - static const char * const k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; static const char * const k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; static const char * const k_pch_SteamVR_EnableSafeMode = "enableSafeMode"; static const char * const k_pch_SteamVR_PreferredRefreshRate = "preferredRefreshRate"; @@ -2770,6 +2840,7 @@ namespace vr static const char * const k_pch_SteamVR_BlockOculusSDKOnOpenVRLaunchOption_Bool = "blockOculusSDKOnOpenVRLaunchOption"; static const char * const k_pch_SteamVR_BlockOculusSDKOnAllLaunches_Bool = "blockOculusSDKOnAllLaunches"; static const char * const k_pch_SteamVR_HDCPLegacyCompatibility_Bool = "hdcp14legacyCompatibility"; + static const char * const k_pch_SteamVR_DisplayPortTrainingMode_Int = "displayPortTrainingMode"; static const char * const k_pch_SteamVR_UsePrism_Bool = "usePrism"; //----------------------------------------------------------------------------- @@ -2846,6 +2917,7 @@ namespace vr static const char * const k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; static const char * const k_pch_Perf_TestData_Float = "perfTestData"; static const char * const k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; + static const char * const k_pch_Perf_GpuBusMonitoring_Bool = "gpuBusMonitoring"; //----------------------------------------------------------------------------- // collision bounds keys @@ -2917,6 +2989,8 @@ namespace vr static const char * const k_pch_Dashboard_DesktopScale = "desktopScale"; static const char * const k_pch_Dashboard_DashboardScale = "dashboardScale"; static const char * const k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; + static const char * const k_pch_Dashboard_StickyDashboard = "stickyDashboard"; + static const char * const k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; //----------------------------------------------------------------------------- // model skin keys @@ -2947,7 +3021,8 @@ namespace vr // per-app keys - the section name for these is the app key itself. Some of these are prefixed by the controller type static const char* const k_pch_App_BindingAutosaveURLSuffix_String = "AutosaveURL"; static const char* const k_pch_App_BindingLegacyAPISuffix_String = "_legacy"; - static const char* const k_pch_App_BindingSteamVRInputAPISuffix_String = "_steamvrinput"; + static const char *const k_pch_App_BindingSteamVRInputAPISuffix_String = "_steamvrinput"; + static const char *const k_pch_App_BindingOpenXRAPISuffix_String = "_openxr"; static const char* const k_pch_App_BindingCurrentURLSuffix_String = "CurrentURL"; static const char* const k_pch_App_BindingPreviousURLSuffix_String = "PreviousURL"; static const char* const k_pch_App_NeedToUpdateAutosaveSuffix_Bool = "NeedToUpdateAutosave"; @@ -3228,6 +3303,16 @@ struct Compositor_CumulativeStats uint32_t m_nNumFramePresentsTimedOut; uint32_t m_nNumDroppedFramesTimedOut; uint32_t m_nNumReprojectedFramesTimedOut; + + /** For items in this section, divide all the values by m_nNumFrameSubmits. */ + uint32_t m_nNumFrameSubmits; + vrshared_double m_flSumCompositorCPUTimeMS; + vrshared_double m_flSumCompositorGPUTimeMS; + vrshared_double m_flSumTargetFrameTimes; + vrshared_double m_flSumApplicationCPUTimeMS; + vrshared_double m_flSumApplicationGPUTimeMS; + + uint32_t m_nNumFramesWithDepth; // total frames submitted with depth by the current application }; struct Compositor_StageRenderSettings @@ -3635,8 +3720,7 @@ typedef uint32_t VRNotificationId; #pragma pack( pop ) -/** Allows notification sources to interact with the VR system - This current interface is not yet implemented. Do not use yet. */ +/** Allows notification sources to interact with the VR system. */ class IVRNotifications { public: @@ -3688,13 +3772,14 @@ namespace vr VROverlayTransform_Invalid = -1, VROverlayTransform_Absolute = 0, VROverlayTransform_TrackedDeviceRelative = 1, - VROverlayTransform_SystemOverlay = 2, + //VROverlayTransform_SystemOverlay = 2, // Deleted from the SDK. VROverlayTransform_TrackedComponent = 3, VROverlayTransform_Cursor = 4, VROverlayTransform_DashboardTab = 5, VROverlayTransform_DashboardThumb = 6, VROverlayTransform_Mountable = 7, VROverlayTransform_Projection = 8, + VROverlayTransform_Subview = 9, }; /** Overlay control settings */ @@ -3753,6 +3838,12 @@ namespace vr // If this is set, alpha composition assumes the texture is pre-multiplied VROverlayFlags_IsPremultiplied = 1 << 21, + + // If this is set, the alpha values of the overlay texture will be ignored + VROverlayFlags_IgnoreTextureAlpha = 1 << 22, + + // Do not use + VROverlayFlags_Reserved = 1 << 26, }; enum VRMessageOverlayResponse @@ -3929,6 +4020,9 @@ namespace vr * Within a category overlays are rendered lowest sort order to highest sort order. Overlays with the same * sort order are rendered back to front base on distance from the HMD. * + * Subview overlays are always drawn immediately on top of their parent overlay, and the sort order is + * only relative to their peer subviews for that overlay. + * * Sort order defaults to 0. */ virtual EVROverlayError SetOverlaySortOrder( VROverlayHandle_t ulOverlayHandle, uint32_t unSortOrder ) = 0; @@ -3948,6 +4042,12 @@ namespace vr /** Returns the curvature of the overlay as a percentage from (0..1] where 1 is a fully closed cylinder. */ virtual EVROverlayError GetOverlayCurvature( VROverlayHandle_t ulOverlayHandle, float *pfCurvature ) = 0; + /** Sets the pitch angle (in radians) of the overlay before curvature is applied -- to form a fan or disk. */ + virtual EVROverlayError SetOverlayPreCurvePitch( VROverlayHandle_t ulOverlayHandle, float fRadians ) = 0; + + /** Returns the overlay's set pre-curve pitch angle (in radians). */ + virtual EVROverlayError GetOverlayPreCurvePitch( VROverlayHandle_t ulOverlayHandle, float *pfRadians ) = 0; + /** Sets the colorspace the overlay texture's data is in. Defaults to 'auto'. * If the texture needs to be resolved, you should call SetOverlayTexture with the appropriate colorspace instead. */ virtual EVROverlayError SetOverlayTextureColorSpace( VROverlayHandle_t ulOverlayHandle, EColorSpace eTextureColorSpace ) = 0; @@ -3983,12 +4083,6 @@ namespace vr /** Gets the transform information when the overlay is rendering on a component. */ virtual EVROverlayError GetOverlayTransformTrackedDeviceComponent( VROverlayHandle_t ulOverlayHandle, TrackedDeviceIndex_t *punDeviceIndex, VR_OUT_STRING() char *pchComponentName, uint32_t unComponentNameSize ) = 0; - /** Gets the transform if it is relative to another overlay. Returns an error if the transform is some other type. */ - virtual vr::EVROverlayError GetOverlayTransformOverlayRelative( VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t *ulOverlayHandleParent, HmdMatrix34_t *pmatParentOverlayToOverlayTransform ) = 0; - - /** Sets the transform to relative to the transform of the specified overlay. This overlays visibility will also track the parents visibility */ - virtual vr::EVROverlayError SetOverlayTransformOverlayRelative( VROverlayHandle_t ulOverlayHandle, VROverlayHandle_t ulOverlayHandleParent, const HmdMatrix34_t *pmatParentOverlayToOverlayTransform ) = 0; - /** Sets the hotspot for the specified overlay when that overlay is used as a cursor. These are in texture space with 0,0 in the upper left corner of * the texture and 1,1 in the lower right corner of the texture. */ virtual EVROverlayError SetOverlayTransformCursor( VROverlayHandle_t ulCursorOverlayHandle, const HmdVector2_t *pvHotspot ) = 0; @@ -4013,6 +4107,11 @@ namespace vr /** Get the transform in 3d space associated with a specific 2d point in the overlay's coordinate space (where 0,0 is the lower left). -Z points out of the overlay */ virtual EVROverlayError GetTransformForOverlayCoordinates( VROverlayHandle_t ulOverlayHandle, ETrackingUniverseOrigin eTrackingOrigin, HmdVector2_t coordinatesInOverlay, HmdMatrix34_t *pmatTransform ) = 0; + /** This function will block until the top of each frame, and can therefore be used to synchronize with the runtime's update rate. + * Note: In non-async mode, some signals may be dropped due to scene app performance, so passing a timeout of 1000/refresh rate + * may be useful depending on the overlay app's desired behavior. */ + virtual EVROverlayError WaitFrameSync( uint32_t nTimeoutMs ) = 0; + // --------------------------------------------- // Overlay input methods // --------------------------------------------- @@ -4165,7 +4264,7 @@ namespace vr virtual void CloseMessageOverlay() = 0; }; - static const char * const IVROverlay_Version = "IVROverlay_025"; + static const char * const IVROverlay_Version = "IVROverlay_027"; } // namespace vr @@ -4285,7 +4384,8 @@ enum EVRRenderModelTextureFormat VRRenderModelTextureFormat_BC2, VRRenderModelTextureFormat_BC4, VRRenderModelTextureFormat_BC7, - VRRenderModelTextureFormat_BC7_SRGB + VRRenderModelTextureFormat_BC7_SRGB, + VRRenderModelTextureFormat_RGBA16_FLOAT, }; /** A single vertex in a render model */ @@ -4308,6 +4408,7 @@ struct RenderModel_TextureMap_t uint16_t unWidth, unHeight; // width and height of the texture map in pixels const uint8_t *rubTextureMapData; // Map texture data. EVRRenderModelTextureFormat format; // Refer to EVRRenderModelTextureFormat + uint16_t unMipLevels; }; #if defined(__linux__) || defined(__APPLE__) #pragma pack( pop ) diff --git a/alvr/server/cpp/openvr/headers/openvr_driver.h b/alvr/server/cpp/openvr/headers/openvr_driver.h index 34b7053d25..ee885beb77 100644 --- a/alvr/server/cpp/openvr/headers/openvr_driver.h +++ b/alvr/server/cpp/openvr/headers/openvr_driver.h @@ -16,8 +16,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 1; - static const uint32_t k_nSteamVRVersionMinor = 16; - static const uint32_t k_nSteamVRVersionBuild = 8; + static const uint32_t k_nSteamVRVersionMinor = 26; + static const uint32_t k_nSteamVRVersionBuild = 7; } // namespace vr // public_vrtypes.h @@ -29,6 +29,8 @@ namespace vr { #pragma pack( push, 8 ) +typedef uint32_t PropertyTypeTag_t; + // right-handed system // +y is up // +x is to the right @@ -102,40 +104,6 @@ struct VRBoneTransform_t HmdQuaternionf_t orientation; }; -#pragma pack( pop ) - -} // namespace vr - -#endif - -// vrtypes.h - -#ifndef _INCLUDE_VRTYPES_H -#define _INCLUDE_VRTYPES_H - -// Forward declarations to avoid requiring vulkan.h -struct VkDevice_T; -struct VkPhysicalDevice_T; -struct VkInstance_T; -struct VkQueue_T; - -// Forward declarations to avoid requiring d3d12.h -struct ID3D12Resource; -struct ID3D12CommandQueue; - -namespace vr -{ -#pragma pack( push, 8 ) - -/** A handle for a spatial anchor. This handle is only valid during the session it was created in. -* Anchors that live beyond one session should be saved by their string descriptors. */ -typedef uint32_t SpatialAnchorHandle_t; - -typedef void* glSharedTextureHandle_t; -typedef int32_t glInt_t; -typedef uint32_t glUInt_t; - - /** Used to return the post-distortion UVs for each color channel. * UVs range from 0 to 1 with 0,0 in the upper left corner of the * source render target. The 0,0 to 1,1 range covers a single eye. */ @@ -162,9 +130,9 @@ enum ETextureType TextureType_DirectX12 = 4, // Handle is a pointer to a D3D12TextureData_t structure TextureType_DXGISharedHandle = 5, // Handle is a HANDLE DXGI share handle, only supported for Overlay render targets. // this texture is used directly by our renderer, so only perform atomic (copyresource or resolve) on it - TextureType_Metal = 6, // Handle is a MTLTexture conforming to the MTLSharedTexture protocol. Textures submitted to IVRCompositor::Submit which - // are of type MTLTextureType2DArray assume layer 0 is the left eye texture (vr::EVREye::Eye_left), layer 1 is the right - // eye texture (vr::EVREye::Eye_Right) + TextureType_Metal = 6, // Handle is a MTLTexture conforming to the MTLSharedTexture protocol. Textures submitted to IVRCompositor::Submit which + // are of type MTLTextureType2DArray assume layer 0 is the left eye texture (vr::EVREye::Eye_left), layer 1 is the right + // eye texture (vr::EVREye::Eye_Right) }; enum EColorSpace @@ -181,6 +149,81 @@ struct Texture_t EColorSpace eColorSpace; }; +/** Allows the application to control what part of the provided texture will be used in the +* frame buffer. */ +struct VRTextureBounds_t +{ + float uMin, vMin; + float uMax, vMax; +}; + +/** Allows specifying pose used to render provided scene texture (if different from value returned by WaitGetPoses). */ +struct VRTextureWithPose_t : public Texture_t +{ + HmdMatrix34_t mDeviceToAbsoluteTracking; // Actual pose used to render scene textures. +}; + +struct VRTextureDepthInfo_t +{ + void* handle; // See ETextureType definition above + HmdMatrix44_t mProjection; + HmdVector2_t vRange; // 0..1 +}; + +struct VRTextureWithDepth_t : public Texture_t +{ + VRTextureDepthInfo_t depth; +}; + +struct VRTextureWithPoseAndDepth_t : public VRTextureWithPose_t +{ + VRTextureDepthInfo_t depth; +}; + +// 64-bit types that are part of public structures +// that are replicated in shared memory. +#if defined(__linux__) || defined(__APPLE__) +typedef uint64_t vrshared_uint64_t __attribute__ ((aligned(8))); +typedef double vrshared_double __attribute__ ((aligned(8))); +#else +typedef uint64_t vrshared_uint64_t; +typedef double vrshared_double; +#endif + +#pragma pack( pop ) + +} // namespace vr + +#endif + +// vrtypes.h + +#ifndef _INCLUDE_VRTYPES_H +#define _INCLUDE_VRTYPES_H + +// Forward declarations to avoid requiring vulkan.h +struct VkDevice_T; +struct VkPhysicalDevice_T; +struct VkInstance_T; +struct VkQueue_T; + +// Forward declarations to avoid requiring d3d12.h +struct ID3D12Resource; +struct ID3D12CommandQueue; + +namespace vr +{ +#pragma pack( push, 8 ) + +/** A handle for a spatial anchor. This handle is only valid during the session it was created in. +* Anchors that live beyond one session should be saved by their string descriptors. */ +typedef uint32_t SpatialAnchorHandle_t; + +typedef void* glSharedTextureHandle_t; +typedef int32_t glInt_t; +typedef uint32_t glUInt_t; + + // Handle to a shared texture (HANDLE on Windows obtained using OpenSharedResource). typedef uint64_t SharedTextureHandle_t; #define INVALID_SHARED_TEXTURE_HANDLE ((vr::SharedTextureHandle_t)0) @@ -387,6 +430,8 @@ enum ETrackedDeviceProperty Prop_ManufacturerSerialNumber_String = 1049, Prop_ComputedSerialNumber_String = 1050, Prop_EstimatedDeviceFirstUseTime_Int32 = 1051, + Prop_DevicePowerUsage_Float = 1052, + Prop_IgnoreMotionForStandby_Bool = 1053, // Properties that are unique to TrackedDeviceClass_HMD Prop_ReportsTimeSinceVSync_Bool = 2000, @@ -479,10 +524,23 @@ enum ETrackedDeviceProperty Prop_CameraGlobalGain_Float = 2089, // Prop_DashboardLayoutPathName_String = 2090, // DELETED Prop_DashboardScale_Float = 2091, + Prop_PeerButtonInfo_String = 2092, + Prop_Hmd_SupportsHDR10_Bool = 2093, + Prop_Hmd_EnableParallelRenderCameras_Bool = 2094, + Prop_DriverProvidedChaperoneJson_String = 2095, // higher priority than Prop_DriverProvidedChaperonePath_String + Prop_IpdUIRangeMinMeters_Float = 2100, Prop_IpdUIRangeMaxMeters_Float = 2101, Prop_Hmd_SupportsHDCP14LegacyCompat_Bool = 2102, Prop_Hmd_SupportsMicMonitoring_Bool = 2103, + Prop_Hmd_SupportsDisplayPortTrainingMode_Bool = 2104, + Prop_Hmd_SupportsRoomViewDirect_Bool = 2105, + Prop_Hmd_SupportsAppThrottling_Bool = 2106, + Prop_Hmd_SupportsGpuBusMonitoring_Bool = 2107, + + Prop_DSCVersion_Int32 = 2110, + Prop_DSCSliceCount_Int32 = 2111, + Prop_DSCBPPx16_Int32 = 2112, // Driver requested mura correction properties Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, @@ -604,37 +662,6 @@ static const VRActionSetHandle_t k_ulInvalidActionSetHandle = 0; static const VRInputValueHandle_t k_ulInvalidInputValueHandle = 0; -/** Allows the application to control what part of the provided texture will be used in the -* frame buffer. */ -struct VRTextureBounds_t -{ - float uMin, vMin; - float uMax, vMax; -}; - -/** Allows specifying pose used to render provided scene texture (if different from value returned by WaitGetPoses). */ -struct VRTextureWithPose_t : public Texture_t -{ - HmdMatrix34_t mDeviceToAbsoluteTracking; // Actual pose used to render scene textures. -}; - -struct VRTextureDepthInfo_t -{ - void* handle; // See ETextureType definition above - HmdMatrix44_t mProjection; - HmdVector2_t vRange; // 0..1 -}; - -struct VRTextureWithDepth_t : public Texture_t -{ - VRTextureDepthInfo_t depth; -}; - -struct VRTextureWithPoseAndDepth_t : public VRTextureWithPose_t -{ - VRTextureDepthInfo_t depth; -}; - /** Allows the application to control how scene textures are used by the compositor when calling Submit. */ enum EVRSubmitFlags { @@ -671,8 +698,8 @@ enum EVRSubmitFlags Submit_GlArrayTexture = 0x80, // Do not use - Submit_Reserved2 = 0x8000, - + Submit_Reserved2 = 0x08000, + Submit_Reserved3 = 0x10000, }; @@ -774,7 +801,7 @@ enum EVREventType // VREvent_SceneFocusLost = 402, // data is process // VREvent_SceneFocusGained = 403, // data is process VREvent_SceneApplicationChanged = 404, // data is process - The App actually drawing the scene changed (usually to or from the compositor) - VREvent_SceneFocusChanged = 405, // data is process - New app got access to draw the scene + // VREvent_SceneFocusChanged = 405, // data is process - This is defunct and will not be called. VREvent_InputFocusChanged = 406, // data is process // VREvent_SceneApplicationSecondaryRenderingStarted = 407, VREvent_SceneApplicationUsingWrongGraphicsAdapter = 408, // data is process @@ -785,6 +812,8 @@ enum EVREventType VREvent_SceneApplicationStateChanged = 412, // No data; but query VRApplications()->GetSceneApplicationState(); + VREvent_SceneAppPipeDisconnected = 413, // data is process - Called when the scene app's pipe has been closed. + VREvent_ConsoleOpened = 420, VREvent_ConsoleClosed = 421, @@ -824,6 +853,11 @@ enum EVREventType VREvent_DesktopViewUpdating = 530, VREvent_DesktopViewReady = 531, + VREvent_StartDashboard = 532, + VREvent_ElevatePrism = 533, + + VREvent_OverlayClosed = 534, + VREvent_Notification_Shown = 600, VREvent_Notification_Hidden = 601, VREvent_Notification_BeginInteraction = 602, @@ -835,6 +869,7 @@ enum EVREventType VREvent_QuitAcknowledged = 703, // data is process VREvent_DriverRequestedQuit = 704, // The driver has requested that SteamVR shut down VREvent_RestartRequested = 705, // A driver or other component wants the user to restart SteamVR + VREvent_InvalidateSwapTextureSets = 706, VREvent_ChaperoneDataHasChanged = 800, // this will never happen with the new chaperone system VREvent_ChaperoneUniverseHasChanged = 801, @@ -905,6 +940,7 @@ enum EVREventType VREvent_Compositor_OutOfVideoMemory = 1417, VREvent_Compositor_DisplayModeNotSupported = 1418, // k_pch_SteamVR_PreferredRefreshRate VREvent_Compositor_StageOverrideReady = 1419, + VREvent_Compositor_RequestDisconnectReconnect = 1420, VREvent_TrackedCamera_StartVideoStream = 1500, VREvent_TrackedCamera_StopVideoStream = 1501, @@ -991,6 +1027,9 @@ enum EVRButtonId k_EButton_IndexController_B = k_EButton_ApplicationMenu, k_EButton_IndexController_JoyStick = k_EButton_Axis3, + k_EButton_Reserved0 = 50, + k_EButton_Reserved1 = 51, + k_EButton_Max = 64 }; @@ -1484,6 +1523,7 @@ enum EVROverlayError VROverlayError_TextureAlreadyLocked = 31, VROverlayError_TextureLockCapacityReached = 32, VROverlayError_TextureNotLocked = 33, + VROverlayError_TimedOut = 34, }; /** enum values to pass in to VR_Init to identify whether the application will @@ -1505,6 +1545,7 @@ enum EVRApplicationType VRApplication_OpenXRScene = 10, // reserved for openxr (started session) VRApplication_OpenXROverlay = 11, // reserved for openxr (started overlay session) VRApplication_Prism = 12, // reserved for the vrprismhost process + VRApplication_RoomView = 13, // reserved for the RoomView process VRApplication_Max }; @@ -1520,6 +1561,15 @@ inline bool IsOpenXRAppType( EVRApplicationType eType ) } +/** returns true if the specified application type submits eye buffers */ +inline bool BAppTypeSubmitsEyeBuffers( EVRApplicationType eType ) +{ + return eType == VRApplication_Scene + || eType == VRApplication_OpenXRScene + || eType == VRApplication_RoomView; +} + + /** error codes for firmware */ enum EVRFirmwareError { @@ -1641,8 +1691,20 @@ enum EVRInitError VRInitError_Init_PrismNeedsNewDrivers = 151, VRInitError_Init_PrismStartupTimedOut = 152, VRInitError_Init_CouldNotStartPrism = 153, - VRInitError_Init_CreateDriverDirectDeviceFailed = 154, - VRInitError_Init_PrismExitedUnexpectedly = 155, + VRInitError_Init_PrismClientInitFailed = 154, + VRInitError_Init_PrismClientStartFailed = 155, + VRInitError_Init_PrismExitedUnexpectedly = 156, + VRInitError_Init_BadLuid = 157, + VRInitError_Init_NoServerForAppContainer = 158, + VRInitError_Init_DuplicateBootstrapper = 159, + VRInitError_Init_VRDashboardServicePending = 160, + VRInitError_Init_VRDashboardServiceTimeout = 161, + VRInitError_Init_VRDashboardServiceStopped = 162, + VRInitError_Init_VRDashboardAlreadyStarted = 163, + VRInitError_Init_VRDashboardCopyFailed = 164, + VRInitError_Init_VRDashboardTokenFailure = 165, + VRInitError_Init_VRDashboardEnvironmentFailure = 166, + VRInitError_Init_VRDashboardPathFailure = 167, VRInitError_Driver_Failed = 200, VRInitError_Driver_Unknown = 201, @@ -1658,6 +1720,9 @@ enum EVRInitError VRInitError_Driver_HmdDriverIdOutOfBounds = 211, VRInitError_Driver_HmdDisplayMirrored = 212, VRInitError_Driver_HmdDisplayNotFoundLaptop = 213, + VRInitError_Driver_PeerDriverNotInstalled = 214, + VRInitError_Driver_WirelessHmdNotConnected = 215, + // Never make error 259 because we return it from main and it would conflict with STILL_ACTIVE VRInitError_IPC_ServerInitFailed = 300, @@ -1766,9 +1831,12 @@ enum EVRInitError VRInitError_Compositor_WindowInterfaceIsNull = 491, VRInitError_Compositor_SystemLayerCreateInstance = 492, VRInitError_Compositor_SystemLayerCreateSession = 493, + VRInitError_Compositor_CreateInverseDistortUVs = 494, + VRInitError_Compositor_CreateBackbufferDepth = 495, VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, VRInitError_VendorSpecific_WindowsNotInDevMode = 1001, + VRInitError_VendorSpecific_OculusLinkNotEnabled = 1002, VRInitError_VendorSpecific_HmdFound_CantOpenDevice = 1101, VRInitError_VendorSpecific_HmdFound_UnableToRequestConfigStart = 1102, @@ -1784,6 +1852,7 @@ enum EVRInitError VRInitError_VendorSpecific_HmdFound_UserDataError = 1112, VRInitError_VendorSpecific_HmdFound_ConfigFailedSanityCheck = 1113, VRInitError_VendorSpecific_OculusRuntimeBadInstall = 1114, + VRInitError_VendorSpecific_HmdFound_UnexpectedConfiguration_1 = 1115, VRInitError_Steam_SteamInstallationNotFound = 2000, @@ -2078,6 +2147,7 @@ enum ECameraVideoStreamFormat CVS_FORMAT_YUYV16 = 5, // 16 bits per pixel CVS_FORMAT_BAYER16BG = 6, // 16 bits per pixel, 10-bit BG-format Bayer, see https://docs.opencv.org/3.1.0/de/d25/imgproc_color_conversions.html CVS_FORMAT_MJPEG = 7, // variable-sized MJPEG Open DML format, see https://www.loc.gov/preservation/digital/formats/fdd/fdd000063.shtml + CVS_FORMAT_RGBX32 = 8, // Full-sized pixels, 4BPP, LSB = RED CVS_MAX_FORMATS }; @@ -2318,6 +2388,8 @@ namespace vr static const char * const k_pch_SteamVR_MotionSmoothingOverride_Int32 = "motionSmoothingOverride"; static const char * const k_pch_SteamVR_FramesToThrottle_Int32 = "framesToThrottle"; static const char * const k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; + static const char * const k_pch_SteamVR_WorldScale_Float = "worldScale"; + static const char * const k_pch_SteamVR_FovScale_Int32 = "fovScale"; static const char * const k_pch_SteamVR_DisableAsyncReprojection_Bool = "disableAsync"; static const char * const k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; static const char * const k_pch_SteamVR_DefaultMirrorView_Int32 = "mirrorView"; @@ -2344,7 +2416,6 @@ namespace vr static const char * const k_pch_SteamVR_ForceWindows32bitVRMonitor = "forceWindows32BitVRMonitor"; static const char * const k_pch_SteamVR_DebugInputBinding = "debugInputBinding"; static const char * const k_pch_SteamVR_DoNotFadeToGrid = "doNotFadeToGrid"; - static const char * const k_pch_SteamVR_RenderCameraMode = "renderCameraMode"; static const char * const k_pch_SteamVR_EnableSharedResourceJournaling = "enableSharedResourceJournaling"; static const char * const k_pch_SteamVR_EnableSafeMode = "enableSafeMode"; static const char * const k_pch_SteamVR_PreferredRefreshRate = "preferredRefreshRate"; @@ -2361,6 +2432,7 @@ namespace vr static const char * const k_pch_SteamVR_BlockOculusSDKOnOpenVRLaunchOption_Bool = "blockOculusSDKOnOpenVRLaunchOption"; static const char * const k_pch_SteamVR_BlockOculusSDKOnAllLaunches_Bool = "blockOculusSDKOnAllLaunches"; static const char * const k_pch_SteamVR_HDCPLegacyCompatibility_Bool = "hdcp14legacyCompatibility"; + static const char * const k_pch_SteamVR_DisplayPortTrainingMode_Int = "displayPortTrainingMode"; static const char * const k_pch_SteamVR_UsePrism_Bool = "usePrism"; //----------------------------------------------------------------------------- @@ -2437,6 +2509,7 @@ namespace vr static const char * const k_pch_Perf_SaveTimingsOnExit_Bool = "saveTimingsOnExit"; static const char * const k_pch_Perf_TestData_Float = "perfTestData"; static const char * const k_pch_Perf_GPUProfiling_Bool = "GPUProfiling"; + static const char * const k_pch_Perf_GpuBusMonitoring_Bool = "gpuBusMonitoring"; //----------------------------------------------------------------------------- // collision bounds keys @@ -2508,6 +2581,8 @@ namespace vr static const char * const k_pch_Dashboard_DesktopScale = "desktopScale"; static const char * const k_pch_Dashboard_DashboardScale = "dashboardScale"; static const char * const k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; + static const char * const k_pch_Dashboard_StickyDashboard = "stickyDashboard"; + static const char * const k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; //----------------------------------------------------------------------------- // model skin keys @@ -2538,7 +2613,8 @@ namespace vr // per-app keys - the section name for these is the app key itself. Some of these are prefixed by the controller type static const char* const k_pch_App_BindingAutosaveURLSuffix_String = "AutosaveURL"; static const char* const k_pch_App_BindingLegacyAPISuffix_String = "_legacy"; - static const char* const k_pch_App_BindingSteamVRInputAPISuffix_String = "_steamvrinput"; + static const char *const k_pch_App_BindingSteamVRInputAPISuffix_String = "_steamvrinput"; + static const char *const k_pch_App_BindingOpenXRAPISuffix_String = "_openxr"; static const char* const k_pch_App_BindingCurrentURLSuffix_String = "CurrentURL"; static const char* const k_pch_App_BindingPreviousURLSuffix_String = "PreviousURL"; static const char* const k_pch_App_NeedToUpdateAutosaveSuffix_Bool = "NeedToUpdateAutosave"; @@ -2815,14 +2891,20 @@ namespace vr /** Submits queued layers for display. */ virtual void Present( vr::SharedTextureHandle_t syncTexture ) {} - /** Called after Present to allow driver to take more time until vsync after they've successfully acquired the sync texture in Present.*/ - virtual void PostPresent() {} + /** Called after Present to allow driver to take more time until vsync after they've successfully acquired the sync texture in Present. + * Set Prop_Hmd_SupportsAppThrottling_Bool to enable throttling / prediction UI in per-app video settings. */ + struct Throttling_t + { + uint32_t nFramesToThrottle; + uint32_t nAdditionalFramesToPredict; + }; + virtual void PostPresent( const Throttling_t *pThrottling ) {} /** Called to get additional frame timing stats from driver. Check m_nSize for versioning (new members will be added to end only). */ virtual void GetFrameTiming( DriverDirectMode_FrameTiming *pFrameTiming ) {} }; - static const char *IVRDriverDirectModeComponent_Version = "IVRDriverDirectModeComponent_007"; + static const char *IVRDriverDirectModeComponent_Version = "IVRDriverDirectModeComponent_008"; } diff --git a/alvr/server/cpp/openvr/lib/libopenvr_api.a b/alvr/server/cpp/openvr/lib/libopenvr_api.a deleted file mode 100644 index 3bacefb3d815e74199ba423502da7fda208fa663..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1712110 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 z80�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
aE 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

$6L6LqAXO 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�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%0AcGBLvGULy4o*8p;%re#vxc!t{xi)ZZ!(TkX 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%0AheOSk0u~qphuD#VZ#OkGJzd zM!SO-(Zx_DxJ$w#{)6<`N)eV|$>F=L8@STN!vKhh_yfXfAw0xLSeU%gClMh5nJ#Xm zOvCVpO0PLo%0^wqXCf|D1@13why7)`Se{OztfS8KcQg1TiduR#-vbKI-Ac`dze_gR zfZ2#(fXk=&@P2rM{D^08;-V*M?ScMT@99)*zfN6SQrMCXJ~Qgo)M_*leE`Ti%)n;f?W zvh)DY=d|{`$@a+!^m^wX3H0h!(k#7l01|B#JegkY37ke?rq_o4CcPREB6{f^CB5oZ zJRkA>px4je9XP#Od){PmD1lxT(-Y|Ri>Fz7?E*+FSMX$deNEsm2+Z_)A0f$KGZ7+s zWp$ABnxWzui0=oz<{t$A_ST*^d9)&dUV|P_px46UX6dyAAn~k%C)4X?0zXG!rq}%l zNqUtdMD!9Fl3wFfd?n)hL9eL?!N0w==S{{06X@l7EP-B+6g5k)=>UoG3Z6`_I|%G2 zFw^TYge1Mn5F&cbYA5McsNydnz900u@*w!PxAwfrS=hLUllQ+)OQ6@N^P8pDSb#*4 zf+y3$gIaURx0&dJRjL^lDIX9r693SL(_Gr&nvwo2%wy;cGw-d6Brdd(*AI|OEWJ%Ny3Map3f7?RgW=-3jzcdnkcky*a}bjB%0-Ci zH9bYrD_g}Y5pRxOv=gIM7anKcccS9QJLBQPVU|A~!NY~Nf1QkvjDsIke3A6eH)g+Pp*c`8DnIU~Q_Nx>XFdqs>Y! z>w}`J(BD6=xBF`@CC05!MAE&&hX1PxxZ!|LYyv(tW`94T3HU7z__(MIxFh!d{)b$EvDRN0-j3IY&{3L+xy_;*(tI7O1BJ`*7=ZnFAD!(pH_*3~a z#rD7dx%w~uQ~C47qkk&DF2?++{F&mcKb1d6r2nb>`C`Qt&Cmzq@wo35zek`FSkIMg z71O4q(H6sq=&I96LRjOU2P}eSTB<`kcvGH{UTnrx-5g$8ZlEm-95Om7##wQap9#aB>vtom?p5_?M- zcts*hJUZ+!Wm0s#ul z6n)|g44^=}Je*dN380arTcpK|YZS1b0a;7oPqyYH59cSc3cq zegp70`HejM{nj0*eDK_?&h4?fe>iVfZPn(NWWp1vyJ>I0+=-Mm!a*cdb5ATfsj!W7 zu(0a~nvX2A`Dq|rKaD+l_;10zje&I78G-cSWWSJIr}r(%8h9LSsH9=ka_!a=Ghto$i9Y+=chG#qVg>H`3#g zx58*cZ52|z;hS*T@krb!Rg9NhjD^0`?cUTyv2L_~Q}C@;F$E@smkchtSDi5Ipbb*@ z{b?y~qYe(pr}&JWV%ceAapSe7T2V*A)P=r+?ST)0z~7NV@47!k$ABBDj7ZO59~^~^ zz{jd!O#t^pVq?yXT@J>~FK%Xk%l#p?^HO57P5T=CGod5(&q&>vZ+4M;7kUHU-F~z> zc3zv5*uQQ2F?g=d`Lh%A8#4bK^)Rmc*MnQK z^uFir>400qI!GMKo)Gu^N_U&lKZ_q|zZ4zynYm#~*DT^WEaPL@U+FiT39|45f4F3; zn0gPF;Vqz!$r8Ei(Sfvm+8ft)fr?(#Aa#|VS_`u4Mjw}GY)_oKI5x~KkCq^4gOa8- zx`7t?BDbXa`i|Rrd%JKU$TX=V_vU(0bYUCiG+icY(=uf^QYQ4i-Lug&Ekx&Ea6nr( zzUE`@jpCL{5}6Bdo$&3a=#gRIj4k53Uod3w+G7AUF*Dct462oItNeUOUi2zu&j9hy zQ!%khUF<73)un|7$e}A9BQ%mxz#)CleX4!?lt3Ti3$?rE9^t-%_C2fW3i*7m&j4A7 ziE4}69GMaw1Uyonfj@@f;}m~Scqp6v(VzI^E!kHe_XB@CPvOjPf9~udyJ8L48j7XU zpTopC%-1+ik2;A`L_`k$#C|10cd-5(Cyu9lUV&!s^Bb%6c} z5K(U6Hk`_m?>~RaJL!W5;=<5-H_~BkA9}mchu+iS2ywR7yVzBx_4c_&YP|=!#%aBu zbd@8M*84dZ9fHw%zvi03zwfwa^6v+(8vH`$h^J0R9V6fZeH6~_pf7Qrxxz))4?tPa z(VJ|_NW4YNmyMK8xhf?~JbeZY@GWlK3^RoA+`EYCR&1U$ffOr-n>%C?*Z&K8Qx8+! zlKg(De!N%t2daJs`@4q=^Krw|LeL;k;4Apa@54pQkSBWYZQ`j@Xhz+Dj?R=0=~cMm z&XpnlIs=SNPesJ$ntl?<;xnRjM>DH1_lU*@J{N0jjnz2D8|IH8obWHnL{(F?M{5ww zqM%U%d6Rx#Lq)Rp8A1SWi5&DBOpHnLLVaT>iOU;P%UUtRr{so!DrTURoY zerii@PO;^8%jK_L^FLj_dr)4DRBjtH;wga}Xm>~|RIRcUr1;<>P#T5-c@$&4gE({P zi8Pkii?_DmeZzQsc$@0>Oi|U$-4deja|3wWPE>7 z__~|;VB^3y1gbRszC*xZxcxJJy``}sULMQ*5a8*TIrCfVF^Tyd^8?sZh1vM9H+^`l z9(K+z1`l%DpBUGT^~BWRZO}DNAJBPDIX@wMc-tX;ZF(X;*uVRUFBka!k%TW_ygP9J z>PI8@;v{^q|67Ys(z_674kI+&KhE{8M0(5oI`VHwv-8{QVNK^RL;eMh{PucTV*Yr3 zc1jAHr!!XCJoscu()f6}mmD8cH@0GYeDIZxt1KDU2!+c7T&)@(H#qR6B;)I>@NJJN zeD?TwrL9R%=lWqHeeCgZpELiT86OwZhY923tc&-L|7d))Pr{cYek|KRd^A4hw@IuY z=D+)ikH*IxN%(Z(X)Qi`e4ImQ{>1n=%#pt}<6}drjlYHQF*vVAnj=u*ET=-t975V2 zBp0r*8T)qf+l!=EerYCoQrzYJTt$H+=@pgKlt33-!z+D0o1McV=a$0T5;K%vUeF$| z>5&4PVFlk9owp2$H0k)@b{L&x3DCQUTSRA+M9C{C*|HjFp+24dU@`;!1t&7nUq1`7 zSGS1W$IAFx#Ni)J?Nb^O)8u8o@QF>f@A@yy#)gJVtR}aGk5`pJe+k?J3*mM!bscM_5?W8al+PF>YCB{Q!A^7uIksd0{3Qz!)25 zJd5M;-|w(H+5R4%d$f591-`fAK+&@OdLB5Wwj?{*e#Q`L(sqVjt=CTBJqa~mh_nCV z^sll`zyHkcxHm3C$HiNxr}U82>iVOcKgHp*>{Es7F$b=zl5wp$TH>l(N4Uz#nvb^+ zoT5+mNU;NBW-`Wz!WdwTm>)^`PWI`ozvJQt(>}HK%bM4}7dZ1<`)P^!o3Kxhqz@DH z@4Mdp)0d=wKi`vxFGq~oPkf|*jU;^eqI;|H?L$AQj{nyuHWOVtj7R@6E6E)FU6pp~ zXpht?Q!l*>AH+Dhy((TWxo%N%jWkR3G})@NL%ubR%(U0DFn$_G>Irej`YOX6>t7rnY3GkG@4=?ZBY6seSR-XB zPZ#a)fltBmZF$Ri3lrix$K&OPQ@%k&I#wbo?3xH23INv<(#oGFTiid5iR_$_pN$PS zqV2H_$?JRDK)(?Emb!;PBUv}yVWr3TW1tj= zb3Xzfs?`==b61VTq6(6;Nur8trNqX19G05J$60$Cv4niAZj8v5@9Bx@kEErThZ~?J z%IPa=?l@%iMaIEvey8ZR{SS~}8(0>rbmHnGX=%!n9h=KO8nkfNT}(ZS*Q-Q()qV-9B8F zE#W!M!E+@%KMBs>4vz7l@DgnpI`68ahrn&_S5 zh3Hqcgu#TrUVcOPSIQv48)T613mGK*TV)XVt9Hp?E`t29xiJJT9aVJ43))wRV5SV} z2xiG(8LCBBfuPm#{xryv!|7C?T$!2blP`l*pF$a=`sgx9^(m7J_1R13IlylHgAC^bvh)G(X98kx@DI1MXw6X9_E+@BgbrShUs{CWs?>O~4 zLH!gJygH@cysnhM?3_D1?LI3dCOc|o!EIU|Z2Z;~pA2QU-5CvD-!3H}> zj6na8VXF*LaF-oS0Ws+xQi%~%kQhM)i4jyV+YVCSt5oWI6{OBr!9qJoov%`<^Hq>K zUj;|nLF#;!N}aEQ)cGn{u7WUtDFo40$ntcDW#3O;VySUupBK|Zqu@x^I>iRUoRUF7 z@GM#VB(bdVO#HOW!goayzIga~O~UQ^^iP7bK26leS$6ph&rXQvB*b$Q;`w$wzJ7-% zl^+k^LE}TZswsLU=v#{t-4%?t`vA)ZS&4$h*i}M6k<<6*b96u!X7hg5T3p&_@B*jhJ zQsPT!R@$2}OCYBJVlLWMVTEY%mmWTZrx=Z8bbwYaW;^*Wx&IG|TkqB*-3?s6Ob-|Z z7eJjJk)V&%F;Z-0vsD3tXNVkfFM{7-EqOcKsJsn4DI&WYxf?9@gPsdcjOMT@$+O+dOZA^=|gR%Z}Bi8M=h+D^`rC7^QXCXpdWA>Rv zA1Zf=X7}3-8=d_&4>dw}XGL$s2Bqq{S60hApfC9nU00=t{~Fze_FDVfh)>7uUuHa> zKH}4DXl*3Dc7e&=rmcU3n#*VwQ&q4SGTZs%-h_63Ww!JF(T;YOA|f%U+V=aI+Ou9f zw}Q;ULf-G&Djg5P+0}>hs!G zS)XoZed6q2TaukR&!kX0F};f%{|Uo>ZAUrmmwthcFzG!I0tfyYbnz3*RUX~a*8O^} zg^~_CXNYoCPN%o%FePFa4msaXn7{nF@ngy#UcV!!4(#GBgZsqgDBKioC=qUl3o=!! zBI&nVH8a@({Lc%oR5z1pdHu+w|BBxe_~A>F{&!yGp#QmuI8czq%nPmAdZdU(379)Y z=#&W~rmBM^=!E5IDY4CRoZ0hPM`IrPfJXL-@$K0Lk;bAilKvv#QlhrHJ?YK1=anlR z?YR+=eYR%;WkP#u*r{Q?cnP=Co9*G7LnG(@h&#bWJ>(HCHo;+Cys>6qk;KPk|o^Jf4Pnj5_xaFI;)#%XfNY zHd#s-THA?Ym=VzSefUXNB~r;JAhU9iD@XX*wdMg=IZ}(Y>S9-pUhuV6K{g58MDSdB z9d`9|VyAgx{uxD;?{G$AYrhi$5Bm!CXcg;ZmAt?* zPXc|$N5~w&6?>i(s2M`@i6ArsfTjX>#nFA-MU~SSlQwT#VfkKVn0OnEyzc}rvWTk-`x^K)?}d@V?|VED)$q<+o9mT}n8q1jZCEL^iU z4QQvUvaZ(sJ71CP#3!-?6)5cHVpRT?I9g1ben8Qvd z@??Y5#ayv%+&=b4Gnx0-!9HX0z&RaI53nxCSz&Q)wr+HC>5*B)+eFAL@gLm%=nGGC zl~YQ%lgn$&_XdA!&x|l$2TMx)jZ`5;qOF=Y0CfC!bJbaWQ}=uQ9rqK+s3U zd5cR6zS4p>;0jZ^zrA7<0_+Y6zGD6=HgSB>#($~La!k>XL4?K?ctldI z8j}V|IP1XfLATgPFT)>uKGQ^bIn-<@ zOUUucZqzmNsM=a}H{9HYH1rJ5ow-=d{Cut)&9m936*ri5lhul@$EgMMPmAr*soIXV z0J+&5$u9m5My*yYqMI=K<~E`p^N4<)ymir4NWuM4@GmVjYL#0Tu6BV_T5w|_xrgQY@q(SJP=FYDRq`QNiTy1owBNqX^$?*UZ91p z0Z^+R{8C~5mjO4BS7I#KL$Ek}<4nER;3{AH4S+2ft)D4tsfE00C_gf0CB`SN-TjGnlU$h190AM__xQqNX86JrXX$kw z?jLV(Z>lyq4`K{u&cqcvrN&P9NK-kbqfWaZ+%G0JrtWD}*TLR61NYXzxMKZ&;i$A1 zVD4c(8yPSu^=Tyn7X+o27W{te4|+H-v((s#$?FVu6YJX_^1lrf6Ul!pPr@qq%!2ws z#}+hbL0TO`WF|%-+;$=6bqL?SoPFYSSp5r*AN-OQBK<++cjtehRSf1&N@t>^S@=PUG%UUo04wS>kP)5 z>CRsfSRh-l{`QZ+P9R@nsy5{ph`>4zp6{hu>sGJvNvW~dYt(szn^UzA9OmKYO8QJ{ zggelcwvHRs4iuQBhkGnEJTurS8J@!bOra_9e2`2F4yEkj!P8N#i7#OiA1kTy7<=9M ztNnNP*Q)!RHit?DqiCVdpa#+dqn)K?D~b|oFKg9;Pqm5yq_P&vTcz|EJbrN@&oVc- z+>^c6|D+y1A4EPML>>l+CvQjW0ZYGuMP{nzMziRcSlBb&?3D3$))59s1gQ-9i20oaJ^53;{>mWfZR4$Saso?6ZG z6_@)1dp)PQhph?m5NM~E?GlU#H^b(Lu4kS?-K$FUJR0qt*L&yup z39%P{*i#-ZouN3u$cP@TDyVQk2&?a5V9D>zCecu&YHHIKMjxaez?EYtST{hN06rQ_ zbVPx(SVfYEFuz1Af7Z3)dcqjp%ROLKy6FO`EEvYz^-P)ue1#^8iJyW3K}58QJdB-a z9xBp=zQLIUd5mNQ>6=dm`V8E|yb)81(kd`K%)`=56pXrizz3x>npHWoOqKH^?tLx> zG4Ul>6fgg<>RBA8di3#?Me9vq)wZlggqS(u<7+ z`JZbQ#J$MuZ;zR%7V1d|VcLXNX%*BTc{Pv%ndDEy$6g?%3s#Ol!y6g2IK@|R{B2Qh zq|;=56t0Eqx4VCSkCXhm9*m{B!~LEzkmmaiy0`U$ zhe&~Tkjx$Z8@k5wYp+R-J#6zUC-bN@jNDHxNY z9y)-0iqpf;!7usRF9RN@4%RFkyvw13$-WMkK+?cxI(Q_NwKV#Hly7z$s*w)akQMze zAas8naRiQd6jwqkkO5sf17HZ0qh%G_z*0bns_5^4zZqI+DB|8xhk|RXbYqF}(J6!B zfL)rU6)i9hiBijojnCN>co=0t0%w(`uG1?1NflZJ1E3Q9P6`@!04xGnq&`SqJfl%; z3@$IO3{3!n*s&%()xD0H#raz;`(P&92OD7@6zA_?`(Os_gIP2QQ})43whzF;<**Mb zOO3T?5+n9OnlqPd1jpD!!Er;YWA#Ydcf{x*NF~`>s4=wvf7#p`O+3F2Ne!gjp$1Eh zAF+sL_c!c_H^5bOBDnjv#tV(Kjj}?qz)z*dZZaTHpP7;Eq(n<{98IU(LCLwcJAyt=FqO;1i&{SkDHli?NL0Fa+c70fLD!mEM zO>{u?E)#czC@p)w9JH?_IbX@jPpdAS$@&Q8RoY^$+5>X(SDNQD$f;eVF`}0NA3jAD zG3$fn6&VM#IL@ZJl6n=2&O|(T2Fpu)X(84%k7pM3mFD@}>?f)L=sOGL5xQu5v(jiZ z^Xd%XB|Yt)12E>orIkcaA`H<8BG{6qyP`ir=u2@E#Wg}uQ0921XMeQnjOZ|k)x1?i zJwL-qfhp>&uPg;qf)mgIsz{SEW>2u#=H5iD%b`IRX`a=JP}GKKdmvRKjErINVjb65 zjk5<(xEzMm*9m3KR;?>nz0So@3pLLYQ(f$eP6u_w&pUo=tWxWlgRusJ{nr-OGlP?P zJ@fJ@yq@_yw6M9JXg`vBF%dTY7^UzF~6OjG#eTx$m{w$kKw4;`b#Qk9qny3v#sFU!bN9?Ri+ zsf9MtILG6EJ-Hlw@n~u`3!fut8BeowWOT#x@TCQj- zOUpG&qqWKmF%jh{wB%}c45KZy(B6$@VxT<&e1k^hi>DOY9EG+}yoOiu(1=2X7W2r( zBF9Ebj*KtEsZs|+d>CxrZW5y8}6+v@{$iv4Q`s|BWUU8eTxl% z$Xyrs!nqiPI5DPGbVYtz?22KCDP-ha{{Y;0p~nII#jV|Zh}Na(0tyVsbZcEM%5;bO zXS?a>RwVrw97F=jn;a;?(2Vk>c$5WHdqN1kE#P zpFzKNZ(}qA3`q6|;`tQ6P{ygT$7o%KbE~hWR$pVaI-1UT%26ez&S_eg>zimwG?%kg zP&UHfSRcKfY-FCt%6MNZE*YJUY*N0X$$XUS*%9I$N^eB^5=Z(CXttUEQY+mX83LKO z8;4D03GjYI^Duvp3^~e~PK(=2hv2z0{+j{mT5&&W$#Vdly)N5@O}K{^Baa^O<9gvk z+v2cpwXCda52yEEfE?%`s{<&c9nY-^au}id%+Jjbf}tmF%f+L?2;NE{;BqU#J0Q4sgX&J1wq&w;5OM)%o#NGt(bY=_ZGm>32~& znBeVSexs?cJl22PER0I|f)9=y)86A~q*#04LlF_r-~&|QXjB0;iiLGL--+shO?w`q z5+9@n^q@ayQ7g^|V^Bno=5VMEcg# zHxWf0Wj-w7(MF`(_Jz_9=K?6Ic9X1WMnAm$FV+tm%UPbEwaeBwN8;K`(FX~{HwxeO z?Z8*q621#1z9%KVA9vdLmf~7Su?`6ie2WR+)?F>sZ@9$gllUHW;JbtHO;h-q);D^* zz9FgF5su|rXdWgQvqc9yGBALlw6kuR1XB^!}zsj{^naU)DshRwD#m$=-~tKnfG!(t=`w#$QjIg^CxnOUehb`swa{=B zgWJlXqDGVU${_8P0ZXHQ2X|!&goUlfbg9PDT(w0vWAUm8ZK6HTNKdiNl3H5mF0OX5 z3)EGbtBXoOH>#9lRf;8UL%k^l`=Ji)X6Y9(78fK%iy$MUeuMt#fQSW0d=<$EOV2>x zDm`Dq5te_%ROthJss!s`v_UQVhq6hY1!>GNKQ|ZUZcO z8)b!b)?&NK=lPjUzcq@v_@k@4HQ@TsLxPWTVT zMw~+F$|?O^DgO3Y*LI1vh?9bO08&Eict> za#U{WR#QP(^@|Qi$18nFoOctlD6TTAdl&RHk<{crGkugww@Ix5mn2sSU{Tt2qAH-* z7dvXvQP#q$LhOA9aPtw4&m2>v)k*IryLNaEKr)0@y2zr90jwMCqPPc411{nbQ$@dKyW`eHfamcFP( zMCyy*f0FuQ^sD>S7gx&4(L$+NzeIg;9NbOpR@dQ_~^LbP67T9i*%6YM*LqhHW<-Cu;W^Q;qqQLESq zqj4Su$&kh625>Nn{(v;mb}e=gJ7tchsZFcM0f^rkV8x%!h}b90h#B>2D!?RPOYc(VF=f# z@JKXf7$uHHU?c^`AuyH#6A&1un+|V$+-(|r7UJ`A`rJJ3HjRC>_y)WR*K~rw;pNma z_mJ!Ob~U|>Je72@^Ly|TZ!3VjSmJ~aC)J%jm3%nPkqff<*i$JRo=T<0R`OJOh6{SY zCGblgOU5l(*gPQjByy8c?nzoG3@|;7G|lo*>PH?*9f=bf2$tdWQ@VE%lc)(-CAFXB z4F}j?DUf;VtXB9dP17-UxR^uJq9dqr@Fc)S4>=QP_l@QR%oWMW$=KPFyHY9k^?6-~ z-IeV18-D+5pZvok_N_e${3H1$ho*|C0r3ra7)sikr|~4;(1|Qc*O5n8Vd9%I6(+tR zuS?1UzEMZ=n03^dJmwyCD32LPoys%)O{?f|7O_+%`UDu3&<~>I}B3BqpDXZ1GHfw#DSsr-@8X z{Lq{~p2gpDTfyJ|ApYhOz~5IT^7plWlD`X(KY_p1dSV23w2H0kTF`%Q-!Jvw4XmFZ z{lV6!cjS`(LxMw}o<;a(w1n>wiSPI88K1|2uQ%Zq?11Mro#gzprC>-U<(xBYv& zeqZA z(J%cY;G6ja)2~^4xz{ni_7dMEE#dnS7w3tQ`@okmh4IY>T5JKfX$jw_gfDX+_{3z! zcdf+tA1F|4c{bhN8wp>{_bs=#LE<}7;=8IPd?ygTar?kGLE>9_Ew}fumhkSCYg=yb1lb?GCB9o*!dFW8%J+dUQ{wx2EVuXgmhi3k4)}8S zfv-Ho{cA{k%ht5e-id^-p`qpW&XDvgkofLv3Ev5XuWBFo$|b(&HQe4aTEh1!HdIC7 zKJaD9_WncS`+jv(?bWK=(B614ZowTq&|Uu9L~Y8o5a^}G$3AUdy&kz1eh;O+7v?Q3 zEm(ffsnJrvqY9s&Q;$mG>j(UBMeT8z7Z={f;h%&jY>VNPnvDOyN%*~~ zE4{%D@HN6CwQu0CP>np&Nb=Wftc?8tyS&s8QF5;-Etu~=p8SmKu%!tnlcjm9^t#0q zjD8O@-fQgQ4K@76s_A=j)Zd2VK5%Cs^WDc63&VpQ3#jC#k9R0G`A2yTJcYVOH$I0^ z3(}U3`V@^8I2GCG4tIllWS!o7WpQs@54#Yef7CMg$_9=|UFkN`aDlCLe9&AU-z>z6 z-|%6YtGKs_tyKL~Itu3wjL%UFl>zK;WA@NH2}hNxF0xWx$;d{<=#*pl20E5P%h#hk zDW#E4DdHAjK*eyvP}YLa&%1~E%*hMPN!x24^U2`G34B_!7@iP19k<|v9w*_r+=;@o z1h^vSZvGl09^fp|?Ylql^&)S0vb4Agvo467+MtI=z*87LfoG+W!3D==J)EOe7h#e* zSmb+B{Nut!m*abE=V1E;fgA)1DUhkBZqN%hkkX_BG{#0a4d=!>RFT)8ui$%sCwBhW zQS4652*kX-HwFe2-+zPaL~mXHOk#8T3WvxSO#pXnaLfs-!bKywywEcLXDADPhq&8W z6v8X1Ca*Py1f5v*_sDZ;UL)Cl39krfj);QSS zs6DsrD-&XOlvXd<^96k0Phfm5*5^osKAkk?9jtFjJtp{Yb{7 z^1n(I0Qmo~_b%{JROkD6!Zjc|QBk9{x@gqkHPix&pk`%PC%UmwLE;6)qDZ||s!2fw zjqI*wx-O&&6ZQrz3>~T)(FzT{ROA(;>0t5{pw*FO+0|>8FK$WRJN{C}Tt!T_U zaabrRWxoyiSYSK35UV9+hyyz0pyP4c&kUr&mT_YhdM&2jjj* zmD+28zm_va-e6mAJdZgd4l|OII0}Bw(T2?_W!II@fvjwAqkrpQyz) zC2zs-1at^HJi*0~*+w$s4wK0z?d#W)`lN5?7l)nk=(*5;dU&a1Mh6g_evoWlJSe8> z5|Ky1U%^dlkl1>6)-gO=*V*$%=Mo`E;C(Y}~p{2Cqi>P3Cl zD*FvA{W_2M?L9RCu(Jo<2TQ?vx~Z%Hckq{N1F^kL?b|e5u{(txPF!jlUc?tnt1DAb z4-YjCKZx&?$it@LrTRClf6Mf*sedc=Zxw%=hL7P77I*XPo8RKhf6)ruOKya>?Y>Nt z0O{r&3SQ$nBe(?o%5_$Iyp1u;0~QEZ(BfH_kkvQ8X|KniCF8cdcF}sg_DgvUV@Fsu z;qo`ayApQ^^U`8xD4?X_YKNm3FzEn_!3W8KMAy77qW$<2aWM(Tjsr#PxB`aX; z=+NK-dm`@aGx0~Vy4zJO#5WE2<}2!#_ZYR4IsO+2eN$57kyZb5`eiZV=5p(o&Fg^W zuT8()DOB`z>X*YlCBb|Z{c_Zs|Bil{{?ZQUm&c(_gZgFFpl?RMeD9-9^~)_-kK951 z@&?vJcSyfHOe^7=(=U_%kW0Uewz5jjhZw(ow%0`8!{~wBkIZpnfR~l)b?+ z=!zNBvh+*$XM_4>AKcj=KjZ3`R$TF$G5E&a?;Fodna_zfr!C`6Ysze@T&reQdFDZ- zwMW)l6^OlwVW&k!`#rz*CPY9`z5e(K^d|8ECIYd!@r>SVQenMs{|-@VZ8b$^W^@A< zZ(zQ+A@wYbj?Av7Bd+uDGBFHd4FekN>wneOcEN>-))Q|ik7mZ?myg9PpkW_xzwi~@ z!1CUP3hN{L47bi*d!vr1^|q>3k~qGF91Y*^Pq5lC&|!Z5j5j zR{`VcD;px|m`n<|b?>xHw?j=!cH3ZKYc2xHd4x!a5pRv`C!VRWd}}qF7xy4z9s=7i>D3h1nYn-zl?e&an4yP+OQWKMU-js<$uy7j_@r@A(TbV!PlqHAv?m z^v|;wr_8l4M4YvABp&+qxtX5HQJ{Bo<#>}#h+?B#+Vwx+Je#`T!isDkzkHT_^r!%} z^%d~QN%B!Je%UTuwuNJD3F!gr(MC{TbssaWKHg=fvef<#>~aU;6KQ4?^X4lN>)E)q zIA$%Er9`GejU`{M?&VZ(U?0o!oaZ*thwi^Ws-pjLy`5bSrvfe-LG-U^*F+Kan;r5X zz?ou`N~X7VA--ceJ9P=cCqm=NnMX_8pQT7moo;ZuHuqp`3P z?gnh=op*A6(HLH0Bu~e^TVM5eTzG<5qFnF8`96RS0~UVCRwNM` zXSn`?tdoxy>MK&u)Et2x8Of^%alDG$Pv51~LN$SxA6csW=}2{hL~E!&ipgUi`$;@z zYMDM#1ySGfgz}f&)I>g4Z~fsh?w-V3wUfA}-BjHl1L=XGj;rpCzZV-RM*7!b(KmBB z`heZen8c|4c(8F*9bJbYIa<1>RD)?cmxb$RV_Enp0w=}fKB#l=@RI8Jk=h%>cr*)- zFktodvT%p5&*axf$k(spulm|Z{uDjYHE6M{YDjdfp^!C{N)2mRL%4^L+7D9&*~d5y z>8sp|j>VA3cJfe?B-k68W-DzN~Y< ze4NuI=N~ec%Ui?|qV2Yq1#-?_7#`_*5#bhi{uFx)qyYL|fQ4t)n zK5i|6$Ix|{h2mo?@@xw;D+_)ran-fYFYD?X>Y5mK`l^%1CPCxWV!qPY$oUEcq&2cG zYNe{t;g5~oWA%Zc49PK(xrxN8g|xl;8P07mJxj>bbXn2qnPGNCdN3EllSl>z5q~`n z9=r0v`90*bw~%>fCG-UL-^LBI)qd<4#9hE$gv27EwGQb9TI4>-<9T5u9|P;!Z$G^i zohgjfOWcNIW|$%%HurIbnD^)7P4wtVN>6*<42n>>PP86r#pW2(hojugJi#8?ry$-Z zKK9BvV3zVs47;D4(=vUJgv(W{Ii6a@nGICkTBy1$+>dlUd`wh94~q+fhYV5uY(><+ zkz!~h>!ZYmZ|~r!bw9fSB6kYZ;jO9SdAM(=)g*jJ$+VT`H)wPTVot4(s8)X z1?y>~MS+WE$}Ev;tCW)lzH4xr=$>TO(orV{SPC+TG| z$1bsyuJY{z`}if$8Z9dQ<(?2Z)AZjZkXWB2@ZEfj_IRsmUweEroqxoy%V;!qv4uP0?0^Kn)C+)+x zE9l4m2Wi7t^eA}(TX|Wn43xZA$-z}v&GrRgy(&^dh4uEi&P3Eg!w#^XuZ(09!0YiAa-mMCckaO>%IBx*@sa()EJ~tA?Pr6N?blZ`daohUcyb7o z@G!X_fiCp5xt{iNs|PNN*d~6((}v$teIM4pW&9l%vraZ6jW<(s+A+dC`dhLH@MX7d!L|@-_#N2dcYtsp9UdP9Ad(Z{>x1&KyH0OwJBQqsXdMW7aDg#B5|G$4AJ}<`ZE1`LtWJCoQibM);bcKyF2 zu}{q{v6Z}*DFp<|$lAbU&aPjmr3ui3VFEQOH-Q86XzfV^0UDUejm-c*7f@1<2bX&D z8_n-bF0v!?`n|6tuj?qU4|>Ow*O7A~=R#(8DzTBUVMitQeVDFXs3mr!N@Au(-q_bX zA!MsXH((nR?BZ3^Nc4^NL|YB1?}Z`t;5_CzWmyN_mx?}77!;`@y&;>&uzRq@mg@f1C*``43C=TyH_{ECfQ7Z^rqh8_dP)x?*khHZ%Vj z6SHMwUOc~Bq^`h3_8JTE5uf#%xFX)a$!f)Ux7PAR^Qno}vg*M%t;s8c&azq)pXHnT zHi+q(8PTP$yDl&FCz=g&@kiZYI(31ySmU%jCe4?*?I)UhqP#0LG@Hz;S=%x*M}8pp zwBn6=zFb4NX#{p97}a0$%5)+etXl} zyn?(uI2|CR<6~`Dg_9?u{RgvzG%QNy`hYFMSnuuI)SK8qhrD;1Ux0zLPh&U=@~ELT z^s)}8Q;0=B#iAh!zsX2M^G=yn&YVWb-Uo|R%+RG#3%Qz+Oi5d!@52(^V6TK5ik9e7 z*e2&XQHWa&qGSkn3Yn!;prQy%bcB^; zE)!Gg%Z%hg;3~3s{ceedE`UUrNMdb%Br~cDf>6-$zI(98XXkSar`PT6U>j+hvinvc z!Ip3LiQKpsQCHuD+<5MZ_HyHy1xjuVP{Q%-)3d+}4rsG~@lcjDS^IEMntX;kdnNuT zY4RGbC{0e9#C-4~NhXSrtOaafGq~pu6=C{$Ha1<<^l?V{!p5s?fLb8 z+g=#=*X_%jX^(DC-h68>TsRs*kD>>@ZhK*l6J-AXti90s%75Bk`2EctZ2z8QJ; ztB2dmvpXO9QhQeJ z$M3WFYt-BzfBgt|b`*aUf1Qde^4DLl@c1iWFZlYMYm#p!g})x_T)(@C20!6!4KwHw zh*h-jK#yfjzAKiMuy}T4vuu6C`7j8;^#bn2kD}%~@886DpJlF}+jF1CXQ`5nGjNmWY>H_T-^8-7dL*z#f{%GemKsGnT;vs;9dittC=3E0&?tk z5W*_G@;l_Yw|m=r{Q)p5<)2;f2evre0yvbUpaq){)EV;CHXZm_k31+%zAXtS{$)njn!>MB3Z<NlQIAB@m&?PDZ;j$(5}W=a#jFV8$8J1ybIxQ|IXZ65THd>!#3%q#j}G#$IIrXrp; z!{*qkGD$g(0O%Vl%CXB+;2lf0A?qKEcFDX{0UyO{nDdIWe+(!^|R(8X~h;+uRdjp!k4}&r@WmuO)4pW)xBZdH#Fkio(c*hY|a>g9S65wq#;PnLa zZsf&%I&#z74+03tiX5tr(=!tvy9S-CIa<~r-jeqaS2vSlOEPAEB~%8s$S)*Br>QvHwsF0URnUoIqa9UWr+}Tjmb>li zf4e0sUIgpXpoy)tyUp~8i75qeI3hzi(>mkChvu52&GZS08w!~0d6{}z7P2GOvYLu$ z_&w~h2E!D(+iBo;Lw}ir+JA;G zkQjsC{2|vjx0y{`%SOP)hb=b;)@vf8u)A8h%SM)G{x~5S^2d^hj_HOAL^h_nvmm!1D9ryVNDj=nfGycT~gk)meg)Jq~?0;yei(46&#`} zXl_@*Em8rF4wnkfKqII?-nEus+<(IZ{;S;*Gm`Jf#Se_+Yq&_P!`8O2aSJz`Atr7j z4*NFdy=;!{_H#3Txt!ySK@wLOLUFMRH|&J2=|vh$@%*evc&U+`f(s4k#H|9BZWY$6 z4jo@UU6CM}VteX6cnsnKEutzTRnJ@Wlf=P)F>9kU8PCWsE(IG?Gua=}#mSFIEc_Qq zY|M9%FjTh(kX<~q3!vX68*WCbK*SaE1q$#_n?m4^+=H;I-q%{ zqzeiRE-B4dWUkA1pw3)B1gN5>8x&aq11LkxOb%)%wR(b@6ff+MR_tJ;&fODOxM?YQ z#*e7-&cz&2Tnah4NzSBddnt~63#HEA(4Yt3LQ`_BOa3IfZ;;0o@FDgv;x?dT5r3Ut z{08&$Q}p}y@2(HOi5?d+Qam-FrC}TvwpDu@v)W@|u4+%pl`c;fuRt4>ZP+v6orJ^f z>2#AZO0|r~dGVDvM!Z@c&M3BdpSiX83;fzoF>HnB17IsfE5*ZXz*HWntRbjut~|k( zf4mPl!p|Y`N;MA(G{|-}=sw^{iqD*Sab~KVr1LV?0=U_#$cprJ&cYj5hmii;XJ1J| zRMJ2}^jRq`L&teM6oJ5uAIOAI!WPjr4g|NQ`c{ocAEB(ehte`#D&2HbH_RyBpuVlt zrLF3=O5f5OhHuB{TRL2DJ6_)ws@n77WVD%u0#)Xe`Ai_cTid{h*+%jJ_bRrf2>HF&`v5@ak@TNe4Xw`)>d<`H{h7S;7wZzgAueqU@3Csz$ z_JYSg9o5r;ISCsaCef;xKnSzKfNW9pu!jVopsIHApkAYg^@B}k>07~zoBYR<2d?yz zPP!?8Jb5r*f7>cm)i%g&vRLE+IDllOm>9`>JSNVf9>vi3RmT41r|lTKRK_6$5>}n(Pp6E1E;}h*k{M`FYYA=oWVs_MtIssQH!~y? ziw{!L5$P$=s{mO=AqWB>MMk9tvThbg3!MA#tkd51xeSM9?TmuG06{ES3O3}!u0+9( zKZG4S?^M80=(KfVtet7S84(^?t>^iz7pT_xqb2 zWf9*N65oZ8S^pmKefN`gLueKz72>mT32gAEQ{ww4h__RK4x^;n8Guet?{II3&LBW% z__T+V@~Ig5l?Bjz=X>m`&&<(e7CeQS4I~))_u%r@Iq3rH|AlxDLfrEurs5){cFcL>h=6#U9CGGXLUiwH&A{g8i3 zbS2h#o4whVnxarOc6G}2?IHs(0Dhwa_aq4wDJQm3sT)cn+GtJUplT^|_|rOoen9p)i{Sg;-oC}1EWJ)Gt+P~z@v3F&Vs-Ba3W5?vY0bSyxoOT__hGt&T zW%-x&A{g3R$F7D@lV_P(do$=MDS{zcJVuXoy!(!QjQ27fsJ!c^GnY<3U3T(;9D$m_{=h*ESaWI`H6H(XNffGA}Hi;RhJmOuTY zY(ycT(25i~llV9nu5KLNiG+f;HXxzOF2^cH4Yu`N+)*<1Hd5m-bMoCL;xg;#W?4jZ zIv*jVB;Y53-zM9S@^h5CQcuF>2fPdyIM13CD&cp{L_QpS;W0){hSpP!IFnvJ?g_dOwtX$b`6KHTu;{Wy* z?5j~nT9X7gy9_fCRKHJ{+ldBBufNkRlK6}sXB_2>txb*M+i$J88q0=(M5)Izhom?T z$7Cmv#Pn9OM{dYI&6$4EKz`K4Dt{!7)#g%^X{P(Sr#Sz?k9WjgR%Aof$EzAsuSb_< zRik}IRQKp+szdB2=K0Oh4Ne@dXRl}NC_Lx}jw)7t-k!;_nbWo>Y)n`U-I zg|*a;&;m`$x(cwOQhY&t&%zBTt-!u;GWiOLzpzrtw`x(qTt-*|;Fi}U&n>}TKW2&^ zCQEo9p@^H63XpC2ggiVxo-{9qRyiPcGZQV2f|{_^tFjG_KD@1e>~8P3#}Z&c2EaM$NT_GGX8@Q~%%5rw zL4M$;)G{n6S=M5~0Jx-(#5v~oy8JJrjn+*rJ|06pkwZQ~A3di0`2=ba(}NY-4}HOX z@VFvKkz)!w!(?0Wkc+)+(+`VC1HdKaw8}SKD61cCd*DgrAKp|h=cV@+Zi_*h3cD#T zRh<+*iy6_);4|AxE9&2O^Nw9K|Lmxcj?7`|*Y@d8x zkTBr(3Q|QcO%=6BW)FBAX`~nrPC)emjE?5BqcFokdbSS=V$31F-p?IPQbF42e$QjN z4T34}1q>lqc(nNYBp5cYf9$_wJB!FcgdTttW;_j=06~OS<0iEVFGiqlL>Rs+=h`0{ zUae%|1d>8xX&BhIUhc3yQVvg^B#4Hy`|7``WaN~92u}}6z`wfq;HFB9>KGZ7j1j{- zT7tq2*|!nE|CUbh|3eS|&*a2EslsiK_~${~IMQnBejfVU$!I~o5&fs&ej{=3#S1{b zs?EoAEH_Ftg=u|y7O;NP2WoCOnQ6kB;_3TT?qrK~W0{_$P-)^1f{($)R7GL?gh>$h zIO`as(EyMuDu@rgPx34q$xA^A5iE_;OApQWCKMI|mXWIxalz_%Vx&{#nszJ%9`1)J z9f%XTDCM}}w~f?Wn8P72Ml`&|NPd88tR7CuJH?oH>j`T8vNe``rsm-C^xko-!NrH} z+H?`8hJWPLu%UV{tiZ{85rjC@es+kFEJJs&ixtaX$R$Ugd&o$|X;C9;Vs)3N)41t3;@IZzY4YyXG!Ws-rTk)dQGcQ*?ZIy-X zt0;7Zi^35fUVxc1$dfk#K{MNVN;F- z=Ue8%OhIX50Z{PS>$M<_*ZWOuKoiEiQfD`Ox>Z|+gS8}{k2rj2=g z1d4{MXrYij5RW(U7auhNYEX~JJ7FXlhk&Q%1*~qe1gu|)N2qcNM8*w3FhZDcazX%g z5Vf2kB~b@dQ@PjO%8GtABp(4@(W_NoQIAaExW=>VVY}f?B@)@WBIHIzI1u>STBhwp z;i@f0>NE6#3130-n5;g*PFl@gy72}y0SOsniqk7F!wYl{lAsrM>ReGgK8_@h=z8B` z(x!7UR&zc1Bq^#iogPMaB>UX5dv^IplD|_kVNDAUvHl10`(Zs5W-TI9px{L=L_(X@ z`4bUrI>v;O$B@5WbG<7QrlV@IUU!^9UNg{IPUhCjX`$*GpOn|~J(*+03KtOjEwkMI z_%HnxfWTSAtYcI3)cjD*^VlLJe5Ve8S8>CVmUGB(obQceE^(GPWs~gm_Tr*eBPz;T z?EC;T5$;pt$?cTZi9PT>Y-M!_fG3a5bOhxQlyh#c>+AbD5b4QOkba)Czf@NisBez0 z?{ApOW$`b}0ayZ+a>`^qiFgYBzX23?W1eFPs-ge~({aX&t4Nxqe5nNghsbqBb^-PT zn9$HgE?uKks2dcI|L|2jeR3(d`bLDzApsNVqz@a}hXDP!-+Q0pE1IczdA+mFgA=%j{>m&DX1l+pu608M!t8gl5RkR^BUIe+|fa#uXp>h zhyp=+p*n;Ljo1c(xxo7)sfti`p<;TU$aEn1GGwz%Xg&P!{5c)7Dv8Oev2LB2TzqzU z<{`$mF`8#Ce_>>sY@w9KR@mO_74``Wh)CXQa-zQsa@-B#vyIeVefTW`E>IrM5qkFI zE)X_|=S#(VQL4p4ID!dbQz~jupLZC~3_PJ0LB(RH;#@`m1t-W*sp2qMd?aD4fc}Ae z)Q!@HQJTl>ikzqn+r*y(kPkc)TLGeaWf*c%G|PaxMy!=_oT^=sxhg+Cbo_>iJ=0~# zO?Cs0eZ(O_Z`u3JV$wN8>Q>s(I%wT=SCwqU%v9R(As-v5h*(0hc?!BUI_OYDUn`|yxiAfPg{DMG`t6@8C{ml?_7xQM2&0Hg`p2)!k#p~OBG zq?6whGH_db5C8@}lmy0ia|mxl!&jO{@=$;`8os|41Fqf`7dPX=NFjGJzy{bPHsnV_ z2x#~_9xS?qP{Fvn+@+H3mHEEE7+~qTbInXOEDDfDnL9|kbQOYV0sAM|m#l8FJ-Vs17!}?ne6CX9;kGLgd3WQD$dl-Q zp2Ll%cv;D7p@AdNn$Q3#3p@O;7FrNGg5lj8eJEFXixjlxqZ-i2r;npoFreG)J0>HZ znU?GOKuElQYoei)TnVHxp$-|T(NNALp;RAM1fd8O_#>O?&L$v> z^8tA^gYi?CR|5=2i>r)9--ihf1^cw!=a=j>-f#JC)@MUpdCK?kBK;270}LY+M_=_R zwnwb(itqXqBlXa3GzDe@bWM2_WM<}Co7%aI{s=QZ1Qt?%qC2s4e8AFo@r7jHq91<% z{n#q%j^UCK3&{l|lys?g_zUq+GSsKA}Cv?zDK*jlh>W`!;5$e zlyyb%fzB)Zz=tm?Q_P95-rgcpl6Qbe$QsT^gr)FBM`?jwnV3sJS_ohvGDuM(Hjs=| zGU@Fiq-7+R3(Wy4695%pBA)qiPN+28CQu-RckD9FHgs3JZXKBXt*U)7^?GS1y6gT!*csLR=bbAf{}v6$*WdR%)`7 zKliA!4;?y%dG4veuA~XjY4UD#TGl4&eR=miw5jCX!JIgIQ z6R}N8h(vJ81W&^4s+r_1duzR*P>XA7$RmS7E_nzVCcT6-Wt$c_1*0qx%6597SkYU6 z@=t1vhLO2fyw5LMVifL(#Mm(1!wHb=iTofU-V;*Eh6l!b_`Z40vnb+tz3}iiXvm@GWuU!0 zt=pF4S$Rf|bmQCyk_dkmh42DJ)>Y_$^9kaDeEE=551#?;kVWVh;DI9a5xDa0trvdE zbXxC%XnLTyygI1}<_=+{E3YJbGGC#FPd^O!8Dvy+?IpY)y6F$5ZDIK^vLgw!w~t-0m9OgZ(;7X%qu0YKz3H z5>Mpuz;fQYJiz`uh6ieYL`Sgw1&r&xtbl))u)55fsqXwuI<^ z$nLqQjywsXZgWoOGYoc=X+b+;x>sPIH;naBSK_Xn5vgd-t?*2M*Q?Np@=k=STi!cc zzDk3eq_;4Cl`RN6SAk(yf`Ji&0kWRW)(!P+#5 z!IgM`juB-JW*Zo_nq4NZ0_(d_Z7Q?LGmU_Fl`DIo>lFO%%>lpZcxL~IZ6WnvyS{x6 zCy5W94|zvO+gpyq>p00CJ~G$>qGNy9dCn{5f}TNYu?G8zx_lhEfjy0L5o&;iRwgP(s%|lJUbC-6 zKu)=}tlU~vb*}H)janPx)|C%dU?r{}QsUOkH+wye%4V6?=-Kw4uB10`Bx;fT=gU#B z95pt;J8EC>WLH_>frFxv8Cki-a6?_}4kI-gaCH}C6I15q$r{{AT$07IXRMHGaK2|5 z$-~WqkrHN?kw}Uq$CG?`GD2vsQQ4ka0|`{?(FxU zueE&0S|_~*w8&rv706)BtGNRl5)nTe&Sl*S_ueMw2Y82eXyW+sXgja^=mjL;4aQ=# z6$?_+e}Wqv{eom&bM4jFQVEWn>zps&)RKnMW^3jrZPtX=7G%!DYz`w*BRLqgRrfM8 zHOuV{Vb<}MJs0VEU462{_`dzex$*tn&D+EG6a)zEB)%WNymNf-w(uLm_txnDJA6+< z+uOyrJ#i=SeJpCz_|6-w@IC*iuYm7+k+&}wf4`pG9={nYgZ zLm!W)+oO^`;3|9fr=ZTxf>d9Yc>C1Ema^(S5?cx)PZpx4`ShgWM0Cvka0(B6z~i%h zz*tI4;dCLHzE`5S3Xu>9kl-Hh5Y7<9-sEbOM#66x$~M^|qSuXj9Eo#`yL~H}OQNO`|leFu>~KN{Jy@3tMD7 z1ZJCEg~OfFec{?-=uYwxX{iR5)h2qV6I)>_Zp84YOH2301%AW)bz1NzJi5H*X2@y0 zYOTO0SPF#sg#NI1@H%#b6_1W#Trl#&qpvoSXX1j3&P*~M9zB8Y{lrKikreb3+M3b8 znB5sm3RW1&-{T?b#PWtfSwP~C?F?-;y5lgl6MDcVHUDxj;pHa^;A+uT?YeKpv1_T` zGAG<-q&QC_Sm7sE{&?v}vJXI0K6Y8ux`F|J4D`!%zZ*&TlxB|>Pr@LL)D>t1ZlM!# z7T)tP{O+$Kq(qbAqSl;G0OQ|{;yyEt*b*KZ0{?)y8M!beJmEv6O@kj1cJ~R&qyI-i z02|bHu5!ngiv7;@h2F-ZzZ=sz0jT{PsY)G!_^ukl$}Hfy&ZehBAmnoZFY&!H5?#&P*~BC>aU(72KjEot3ti9R z+Apw?@;zLcaGEYBaGLN(-8SG?`B0Hfv06@$=Oc*+T90&q$4@)~;D(7dhQ{!C>;h(| zR2)T?YZdd9#K-wSTW@rfgfj=`9c~MZ8H+VFJ!>Q%l3swTKvEGA03Iz(eFPr}d|}_# z^)1#@#xX8wAy;FuxZye9S_IhTIlq-JaW1sTah>sq1gtb~3|PV2S4D z(_!XjhTk)+yK&2Lf~r2niFKnC@}>?K8<jQ{j z9kx#~eZ?nmI>Vp~BehUZK`H?eOm$y${_Kud8WlOlwH#(ehb%)Leq4A^PxOS#)0kJ} z941hyWhG{MqWH%rq8oR}%beE+{Nq#k5TlVMt<}!e@@-zCB~tr2p!f#rNUR&|(6_F~ zrT4>EgUQ&~MHq3wKae@UcoG&vHqj7Ve-jmr=lHiTe6cGcmz2Z50TpY9KZzX_Ub8!? z8+0plpZpFwBC9cb-~uAyggh+8gCRvam}zVy=I~@46Bo7S<4Q6>G#F8AS3$^3*7B$$ z1At6y%*VoQJ{*ZcM_^EAniM5bi(Ui#8HQ$NVqEq)0Y(bfBH%ZhLl5i1B@pq|Yio4A3WCPSlS)I%JEMKqd*!zUjt%YB%Q<5~SNd0OUlG z9s^#dm=b>=bgMHS^H-r~7$}ou0%~7$9lTw&?sIXooq#1A#j4*2tBz2tn%WFcGrKef zAk0(J>s>t3@(y`nURP{CnX~zHPmA);gh3!~i%a>?9Z%Hy#5o%e0{j#7_kA~41qHeS zX+2`S;cSKv!W%DXj2WXhuU33wL>oO`v3fY~$nYTFJ!~Z|5%F5&e8g(%1zye#Xak;x z@$fXD_x7bnV04hc7=!h+a}hi2!WZMylhf39QMU&cEe?CR?LihQm#ic42C$kY`aYV+ z4kw_rkH)zS-!KMI+X{O196VR5!yc4I0S5|5X$$@{*tGK^@1$SW66G<|fQYlvbMxrN)_|eBZ&V8}@KH7? zu;175QY9no?P``ZwSZ6;%*G|ZDUgz@x9|BCy3S4T}%OpJ~pFRjSyBvNx z(LS#~i`UzGhG?|sIj6z(7RX10P9e6Cxq{COW6DzC93hUnJmei!dNvr}QN@)Vh&9== z!R1RJr6jT`Qj}kF6^B9IgjWa`ZuqcG?F&UFf+tpN)i00vOhIQs9mqc z*lvdEQDK;5C>+a-zIjd>e^h;9eA2?gPN$NS!rg|@#ylOnBgE`Q)K^y<*6evNGcr%VIQhi|_zZQE$%Y8)b|; z`OK{mWQVquq=vf*lL)juT9<}EyCvCkAw-<1{Q$}gD@=wnj4IH2uI{ItryTu>0G7i zobv|E8k|qJ5Mapzlng?trWcO9GE$3JC8m6QR;r(^z_S4GB#GAJ(oYwPFy`|lf=}6L z(tQGhVAxfJ8AApL0O_;y0q*Kajmb+<51Rs=@rs&%gsz%20L%|)X!))@AC~nTImJAB zLDn0*Yjtr>qR8~o%z^Zl+LOKU@qh+)eP%;`L(6miTlp<(6`b67vdBWr+VZevRGN{g5w>d2Y zU6A+!o(1LuCyI--XQ4zq3th;2LWgL*Tm|&1dtC)p$wyIZYw{WCE*uS?K$NMjI_e6p zhGTFg1hYy#njkO3+dz-9v_GQ(UUKDZfPc^JAT2LJL%R{PK5fA&)!}*^o)JDwFoj+g zLa=$l^*Ah1hxA0lpBbrrP!IItQTYOQ>r?4Ul8d0_V{!b!#Y*uM!QpUJmG5wjCheT*8$wE;?j#abF|x3eiMTWW@mmg45x1LIe<0AbBJU zBuY;(3L_Fi@YaQZ1C}6+)B(H@J;z3>v?rkfPty`WlIo7`l+|v9FM)m}^5I;JeZVv0 ztODN5#*OPq*rYrOeB^r)jyhU-63VEdO(Qje-O7&8()4C+N^F8F;S0JF%BVWIvV?o= zKAF)d#8OtUDq=wjx&DMQO_NFlc>FQ-Wy&jv<(%u!IN-Kz0f2`CMsela(>d9c@dzXp z!Lj6d^WvjOMhFx8)R~WJU@t`w|4GL}8Hfqj;#okn32-?|<8tcvQG~%NeTS1pgq#Gq z5#uj^>%YQy>|fE$u-%6=8uv6X;-LU2_eZrGzV2*LUD&9aU=-l8gI}RdBrW|4M?(c3 zC9)pBoT(fw0{=~Iy^6p`9#iLeJWz5VE8fyb4a0C{%6BX;yeZ$?U;yZ=5@&w_M;S=P zpRY0DzH~h}Uz^N_u8xUXwu9xC06rp#4coulV6+H`_nEUwhn?A*D`ph7F>2#I& zLoR|&{|WsI*C4R)`a-0kwc8f?{sq#jB4N&m$OZH;kmfxPLwEE{xEoGibOM*)aq*+N z3?V*+aaLhAPdMC#?eaYk3gzG&1OuP=;RLi!iWNQR`Y*&_%*=3l6pqF_$|Q!SpbLTe z0Rs1GP*wD}%gySAj3wm`ln|M#2#b35$!97r!f)dJZO?GKq&@_TiJiH z@z}?pxGqCpFz#6_6c;DOWyJ{Gg^${cUUaSm@N}IA{U9UwRWLrz6Ez&&ad;nzNHFqj zE;CX*$XKXpU$M~KK!-faLsC;0JXZ2Sx)p`(7GMc_20CMjDwOf{66Ye;0eRrl;}!0A zL3$j;he3KgncsQ*4&tCE;Z;aMZil0#TV)TvD&JLI&Qf7KDu82@%oydInikxU(P1*tIgiGEWJw-Q@Ks0Z%(uMSoAdg;P9# zqCJVX?vP@TRrD!%c9@%&)|gtF{aHW#nKXyIv`!%&AR<;=1;=o?rPZbTaZxMmmu(*q)#I6JNV2SufWBbhewP|ppkOichDIKSHu}OcdJ)rJf5H6_~5X$c@ zaoK}fF-(|1fnbhl`wHLd`?7ew-C{5Yx5ppO<+=O?i0a9iD25@?!^dp(0*6mOxO=u37&oXJ+P@nn~QdC`@M?NrxFVr?ld`v z{XTg6_IstTu-e=27%wI*KyDQzj==WB-w8Sf?tuLs()PQo5IX-&_IqH&0sCE#5yAq3 zYd|~u-9yOs?e~G5+VAi=(S?-her4RZ-^T~+cjkZr1BeA5*}M^N?=QyP@zA?a!2>D3 z2f=_(Y6Cvx8So*chrs2fo!ajq&wi)*zQ2)J1z9Mx!)gQO`-gn4T=H1}@yz!}wfU|f z($0JzL#v(U`+>ah%=huyd|!;GX=T3m@XYrw@Q_lQ>mdG0;Dd69v5Ol)Rs#9Rx8JWk zNZIc|Ciu{^-zRnOvqg8_ey`jy`@PcR47xnFXTNt~)9u^u19#AVSGZK>yC?6U50REb z#DejcrJG+GvY3_>nH=je+Ljt538bg)3Clp_G=K;(k~N&3DATHqhZg(tROxlSF6i6u zgJ2vC)b{&8+V6w1?DsMt55C8M{Vq+??5Ywwi|c@tV@7Hx?Du+_>RQow`(>`@Lsuiw ze!mP4{QiF(_WOA5AEN#KBHWTe`~Ad+ef!-f;dEcI-^Zt3ZfC!DL(hb{;XQ?p#U)tW zv)>g*i0B1>_|>TihpWGd()RZIEvU>b*YyYN_d%}xjG4y&f2}Bjc z*?Rjr1Bl(8{XUEqGcY3k&_b?6Ok&viAi#m`?DtFkg}xV%j3a2j2lWl?)PX_!Jw*Gx zbUXIDw7*^ZUEUDQ{^j<2sj}Z+(Du6mvJmPMwBJXd=Q-^6uEE!}{l30a`(5?ev)>0Q z`+Z=Z!{te_-v^4F;yvH0?03Al$@!OWzmM1Je1F)_wcjtbuh|u#1^SNYwgdJ%&-%I= z``WPHm)m}KdU9`2foNQ-CMzqkdtV&ye2uWUVoSEZyyWy&rrnfuxmzgfVzUe{X_^`@wXqK9*Mtw zEd1?f6A~)A&-1rm=l2Ta;z#%eM#=henWwJ3{$iGO3IudwuOEhbICA(&75__Ll5G&R zdez=D*cXQn;Ia;VYN%(9%AdLM+=R4i8{awqF@jJEpdEsf`}!5Gloak zd%$w1zs5% zdmxJMK>$EGF2$fx-giFqt@pp|{iW8sYrnYmyM*$I|DBDsTC&}W(Hue% z0dn+E!)WRfd|2O^!Ha`Awf`N5*$4DK{ia8_P4n1n z&%Z~1yJxQ-cy6}6KK&0nWv?6PnV`IfTwoz}TQ&<&B9J3|7VzQ@T|517C|ANonA72g zIW>O=1yM;}BgIiAHd8;ukmz-%3{gJ!oHjefZ#5_^dK@&v?_slV{0gnW21cgeX%ei&(9jci(=njk$jc}5}CT8RmJKJ&WmdYJPr6b4EU|+ z6XdO{q8P#>_-pTfhyDJ0)Cm8(*zb=6zsi1J>P*9P#UE-I!Zk9M?*(C?MBagH4@{)I z@BLwt(t#PU-V0H4XVyDRBUkl%9{7;+Ift%ibW5e(?wFN$uy;1I7gBC5L7bDkaX1@x zv7?Rm-N5IOg&>$V$Hpfz@1z_=$F<$Q0&jR<`SiH}kL_7lZpyOVRYRYHcf3z@?Q8ig ztHbwe-@9PXxre@Y&UPVBC~x+m;qKi-%4~AF;gP_ZZUxEnr1nL+M*GLR`9}L9gwoPz z|7mMi9iQP`pY3nQo*J>iWnW|{rcN49G(VbHUJ$`C<8(n3F&nyRpM(#&r?$jBb-V~+ z?nQxJi2aax1vVCr9#7YJfJYXs22j>>b{GbH^d>#G!?)+e9_WSh1 zX&nEP`+de|BoOr5{XSp1-{*nv`?G;>_xpU~`+aWdt>y`1=zjcmzt6Y(eK6nnCinZa zRb=n?x$0N`{Gb6=jhfcdIfB*XjR1sh$6Sx^Lh6K6~g$n)n^#b^g!#{}1}s z|4-km81(-U|Nn{G_5UNY$G84}z269)=Jx*o78>u2zyI3(|ESqB+u=J7M(_Mr`~TN% z`)~69Z|bQx=U-|sa+ICLi#M=Om?9%=RF61qF9a+?Sah)sqF)A4z?l#y+tweN>yx=eP&Ez+J zB7sR1zvW0>GoKguTn9&SJ60@&V=%5nWvpThIz67p!by|?11i~dm5@aTvP?Z6Pt_V1 z`!QolWWY*Zq@sKdD2^c%m@qk9^b0mzz!A{AoOdJO|)dPyT;8bX8ULmMnJywB= zFH2hR{R`c1!3fCo3RwLa^n-nC=une;2!JG|M#|=FTAJDzjOP%hf%2uP$J~*dh!=bD(M5)*z=1oQt?EkBUL)IwQt&9C3Oi zbA5ad`7`7WKoNo)a!QeL^Ad99jz978CNT|f*4AQB|&_JHWfd5y8q`$kfwa0&n+TiB#3vVpMC8HNWc z&dJZqe*qTl-9>mW&Z(RaUFpPq31K{t_+~#JNP+jE2sC$dod05A@xwB zrt^r@UW;MmL6%G+8*FT*t=WM*dEQsHcuRbggHLt#siXXQJMh`VAXS*iWVL^SLm&sy zuT+J)EQ2WO0=&|e$Y<706%(^cU?%;9obc&xDgh;c5W2gDw*Y}hcR%#|;VZPs5IH#Q zvCrUefsri48_wSZp01i6jQ0IXeKma`pSu8dcE_FK9~a-h5>W=hhPuDUx>*s3H%aj3 zRX{wa#!5pF;IQ&2TMx;@uwhc*B*mFaoee~o`@Zx*>x(wGNBVv&5U7lu)b3KFR_5RU zWOQQwMQtw~PYI%xpGp3xKEYT7yA9d$s3qf>IZ7{DYjHA}y#R@p+^m7z)!+X{@iGJ$ zrW?Pi?lojIcCOta6v4Dq>4n8MMriN5C+3G~JXUaV!`LP`gBW|172LypvmT~&2v8S1 zquJ@|88s-^J|uG|4@TwA68srg&+#Mw#qU5Fnn)hvb8kPHmg=#~J!)fkm(se)d)T}p zycr~b44|mxQ=DegfR`7Q;%y!&RlN^@!lPgQNTr=tiL#g!9EE23Oxw(y$`kRBIBalo!C0(JaTBNj@s2JD{YAJyWw`~VO@fSW zbH0l|ZbfISicD5iis#4&u4sa)I#AL1IVw_M63%i`iZr8nc~6m9?4ywk0(+F35HyZ| zJTmbk%otWLfx+1nE95gQZQxQS0?LL6zo!1J z)W0%wXo`*DZDZ`JJbTLi91J)E=az!@%=G*fD6)I>We({hoX?OSU(p3JtQyJh2tfs@ z{^s5Qt8*e?t_>&3QSQU9T`04bu14}8bvF(5<{POdzHi`>&+4g5NEWXAa7OV?TiEH! z*3`>}^)9}x4P)chA3$qqo<3(-i}8%OERD=R3YP<39t74LQ;v54g(Hid zX0!@h##t>xVc?#~$tm0p?=^dsY>vkO?A8N7w~DNI>)_S}fWw4kb`#oh3ITlkNnZUH zFti`$)emrmgKb*&;Gc=i^LQyoYAtISWZ%{YM!Y(WvaPbfzE^JD>4zlcuUd zd_CZt`k$GvUyj`l-_F;yH4(@w{y#Hc|Jj8*K40Jatxo3aTi;~C|L}Z0`VvjQZ*ace z^#X4O_3eE9ziPhTOC}g9%RlGq*Iu=A^YtHf{qLKv&pgkgw)s@*T=p_{X1>0(CrpB! zoUd;%+RfM3KToFm8s_W2R~3Ej^Yt74k!!wQ@bG_ZzP@!2Oz%3**Uv_3nE$Ku^=J3+ z?e2eLzCQLj($4nh>nCQt^Ofi8Ch69nuMfd(_I!OGw4>(hyYfor>s@)Zz4`jvUwnoE z#OU$ieEk!-&6=;zeKl*o{u8A0_PmVhaJrkb-}nLFz>K`-;;i}lBvg(0`b}&BrA|X& zzV4o17a18Dp-(5o9^&rrwe`d@-j!JPQpXaSnOH*%`N)!!AuTH7>59V0NPA2(7Hzpf zIFC*j(`q!W73acRH9tLaetEw)%B@Z3m{!e$<-JzghinBS@zB9^O$h7V%j4F%xb+#2 zBD4=b9i8>h+k1Ew!T|cKlLI$E+y)L0q`%W`d&c^zQqEH)22ZQ(du0r~JtZ zJ{49|n2y8n{P$pB*# z2RY&7#Y}8@^>uJ2PMI6G)>K$nuR{jZk8o_fz5838fitGS`6;1!PI)f`F~pYhlwVXh z7g@_|PQ`<{+J$q?E40KurBKgYvN~?r*)Yu6@+ltym`T00HW|-v#n0@BG4JH?Ff4&mgJ8vHL^;lKOqVhC`h9ewW&{thG>25ou0EHi zKE|yrJTT^oRv~+-$l(;<^+Qhy*>54cw{EiKHuXGiZMMTW!LsGI?t3_A61CydwBliO47sG$do=`lLWhOOb24%VybDfS3`F>Z|e66xgoLH7zG|kA3?@% z*?oiE{I$GWi(#UBqvrw~naVcntkxEEgJ(qotKwkW{C7=DP4-f(O0%BHIAL>KAm3!* zlGV`x_1XO-kR}}7N?tpq6_2LfEi?nd>gntk-4^h-!>eg_MPr%nOFDiwD)8AmI1P&M z$aKFGFM^D>nwcAeZ5-~uY|q2X5DlZ9tvI0xU-|xhtbV%tg=nMWw&T;t2Z_jV;q>i865%{dDH@`Z>l_GK%3N9i@P7)S@j0c-aqynw1XTLp z*N(FiT+#uOHvSonHzk@$6ZnVA4eAPol@!Bec+~1XYD(l`^@;!Rw7|Wz_B5^G1@<40 z-PR_%p5d)U%_rRjQEsh86(A=RKa1lls0QA~*^pdcmj0*9Y^Gx@Wodg$eN!&tKcNDsDA%gS9I!zpNaPc!iL_p$Ay4W$YIkUf5Hhz@@7(=8$DI zy%Bs@aNg*rNx$i?X4fh^eNBkZz)|OoMwT0A;1Pr{)>ZuW0u>fegBybo^eqm;f~o~G7u86nUk10Hs==*xy z`}DZI@qn1WbUbI4++7{`8kVkWwDIsYFw%DjK>wnvtphaPnEuJ zz`d3aR5_4uj8*FCn8%R$6n!CogPFOiKv)_=W%O|rZhURMFWZX#@U_Xd=a1I14P$_8 z8+Qjq_IgjYeT3s%IFcUdxi6nZuqjc~LB2`Hp&0FZhlp7AMX=xhs^3fhJ%Jn$#J+6q zTp*tZiR!JFyZoK4H9n^fNp~^3BJ_$NXzI5zRDzJgr zVlEhT9giVFF@0peG*pJf9ur4PK;Pbwd~KICI`+qSOh%`>6i{qGnwhQG{sr2jV(ayY zAm61=C@TP+ss=rwg<1uG8bV3Gpm^)Xh|n_!nYKhQaxaOAp$F09kBRJ(RvZARzPlHvO=yzSZ(p6UEon zH?4U+eNMv>Jo1UsO6cCif<{mTCm;En?&Cn_w=~+7EY>owK0bCwiHbU?F%z~3aF{j?0S-o=*v*`VBLYI*#Y~b$G*T~ zM9n^C`U$ZZvK9TFx<0}cwnHtthMrDAeF9yr@3$PZt*zx1Pkv$EOA3L3W?I|O2&Si3 z6c;i?3%P5UbGIJQk8N)lhQ)Uu2M`KnV6x%aLwB z@Y&%K|A<=A&k%?JnQ0=UX*xyqF^juQ4B6+gd#j|L{6IbLQpxVBRCdc=_M;zAWUsg3 z_Y#`l>mhVN87@CV5kJpixJ*ZpeVH!z6+|}}F5RHeC$RW({9#*n*=OL&VK!Ra+ELuJ zWDx%?&^ikQA<%+J`5poA3IY=(XsMq9RheC$Uf4}wls*O7I8Q0P=8!s=v8R;a*xB{= z-t2Z_DZs2a!IzJ~l`-#=w#xBPkTok+WkG9gSU-Sgp@u_uYO*6_+ym{~S~?l`aQhAv z*;Da{ZT}KorTlsOFJ1HO(fT7F7|M$4Zja?Rr{j-v8g>2%zKGVO$%pNMxNUg|_Nh1p z01FKlQ}P&L8YfVB3c(oxs93LYrVoqPhmEp$pN4Z8JVL!Wp+G0rzh2BMe5z^kr6Nx4sW%#Rv(1u^XlT^tp7eW z=7P}}P~?2)DB1l1eqftrqY(l^hC*yP7)r7>{cS0x*o`P{TVX8P(6Z3}&af@P^B$3) z>Ks(*$uH-1MEeBvFa2Di5nPd`^g{mD+9xTR;YX_bbu*iTXbRxL8(%zqzZ%eo)k7k+ zQ^E+SX%vN<-_l6AL#C`dpZ$hLR9)VeU4BhMOiG&9AoWyARI?D zFr-|Y%~WFRlKiGmY26}>RKHMfbDU-|N}98iN(4*skZ=OVePw;H^G z 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%0Do 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 ~^FI!gGP!tFOl>D2r6r)e?G*qP(iC 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

Xc}rzbQoEYohXXs?uNPGuehUeLT~ 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

    PM)XEp2-qBa5JHj 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�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�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�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�H*V}-a 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 z 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%0Dh>V1OpdwC)S}|mQ7w(YwtK)i`}$l~ZU!pVV%4d5 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≠WuC*bJ;JHyom<5A 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

    T*|YqG?~FZn0U*b@H-jY||2 zlQ=@?!4hZ2FNSgn`*a&5=cUx>Rxi|7IB9|?GmLMJn-WD4#n?(Cr2wKm~b_>vv zEpF4g&eed}78@nyOtPbtK9`bg@h}wD2i_JNgE=iB0y`GYQfgIO=RR*k0g^3FD2Ze) zW{YRn)wx-qz!n>+#7*Vmm8K)^Bu%o#i{U;3yxrWPZJpZ+cw1~rrA2Wiw)m}Jd-%3j zxMqv5Acz^jhnZZBAf`kEjFbRXObPw7Jru5 zVv|-h+2V4=AX~hM0Pj%@vc(@Fyboeq{9Ulckuzyka4}n4+P=7Vn8L z7*Gn!g3>?O;vd6Ju5c#VQMY5M(kNT}Isu&kyiGDjiy|GfNw;>Wb2o!vi%p?rkphv# zw)i#JuK;h0jo+%6Z?<@kj&*J&{DK5k74a=WwO#65YoMRE#TG?Pk&2$dXY~x~x~HSF z0Vs&3b&-xmv)LMTZWBNxvc(ojT_TxF`n*izItz(Jw)jjm4g%g58>4NJj@ja>?scvu zAQIW)lI8I`)Fo1Fa8V>D+)X61#RJgj3%o5p3*i*dWQ$FQj?i6^d-}D<~~h zD6++_N1gkNlO|hiIt+hl7K&`~x4K~2;&oA68^pHQs0?8#RvOepQOgz&Lt$T#XN!%` z=#^s4*cMMi<7`F6K>NV?S6gg^GPfI6K)LtbA|jV9evlyU0p1oHFPlW$Aq1^w<~1c) zwz#Zkoht#cEj9}4xdyTwr8Mpylw^x{Lt!o8ZLu*J-_cyBpkAEr#T#-h3Xp8EQCX_8 znUdM!i`K4l7k~m=Y-DPdGJ&LN<-Mdyw)i2qcL8rVH(iJKDDbw}luC=@N^Eg;usyW( zC|t9}7ZSu-z=ydC;U^IH`X@H8cl+2DFH=Hfi~Fuy=hg+@7LP$V62!g!L5W`fAlcDu zai`#3;Y{igT&Ndcsu*O8ZzaH+6@zT?s|YWH*cPuAYQa>`gVeQIz4$k{tE8-YahJwA z*BN+QydAe z+jsk$LdzlrB8hErPc*s%Z;OrJs+e!Kcoy89KtY14iujhG=hm-t&jS6tEw(6Xid6Ir z?s;Fh?hQAnbKjs>5KZeM9gAk~jq2Q&qSCCnryM@Fh9FlD6++$ z-A^d8#V@0@M4`wQ|Bdh`XtKqon<@%Lw)kX)B3r!9Ce#@~Y>Q1P`X{A93#BAmydMht zfIM4lnkE0F8QbD>&^Sv`xhiA-t1UJ{nHz%@Q0`55n8;;|A0UXkfw#rR%O=qd4tb_$ zW`uHFwzzats!1TW#YRavlk6xZ_aI8L#XFH=o5!kV?Ui{@|b?#~4ZE->= zQZidSYV$fb5){~CQ)3w}nLyHX+C!vCw)kSWX9I6H+iXEi0C-z$N~J|{CAN6GV0%~! zX|+6Cd@w-_13t_b5f%e)i%o&9DJjrKaikI=TU@p!3W8RH*cxGT;BB!fl{k~^XtsFo z#1@-0qRAF_Q4F%hrx4&2#UNXJBf$;U-r&lkBM5@ww6{TRfG31_5uAjM1V<$86FX+t#^mAlPD4Xj!B{B(W{t z8TO9A+hXIlD(0Ilo)32nC`eFM5#JKD$qsdHAkfd-VvC}tNJY=!GChO3?%C*!00q&s zF4D1R+V5QF+5#exEw)JN63JZB7i4;D{RolB77syVAn>->7;TGm%obm;OPxCp5Q%K@ zvEdG~*G-V7hNB|6@KGX>Exs3xJAk*vrMsdInryM@IA@X_Ws8qfD6+-7qqHmVws;D{ zB+z7wO@~oO&C()UT&hrHi*G~e77*KFqtX{ptTbqllw^zFMd5A5*3?E}e7>uTHDg;` zz8eM<@Dv#5Uv04wSn?Pvpxi5alE`I?2NJ}33QGGw7%!VhXNTzZ%zUi`%NCyr|8zxN zra4VUp%*5Q?I@-59z#jC_!$�^SxIqeUL?T-} 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%0D?XJlL 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%0D)5N6Sn5&d(u1`~v+Be4OUHUXVX#l3U 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Π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

    XvV|JVk37~#%S&kB_N*bMJUPJu9j(QsLALjVW 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≶P`4skaP{&wcvV|Yj)_j{9D3-=L` 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 z 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 z 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ⅈmsqA~eQUx_62?bgI&Lw}d}E%Ledo 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%0DVKS5F?VCH3m)tTjmfXf{ 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
    s`|t;pvH|?_qHJaWzdp(~^x?0GvYEjd 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

    y@c`J1f3%rFF|#k2rjbK^%YM!sd?id{T^ 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

    Pl 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 literal 0 HcmV?d00001 diff --git a/alvr/server/cpp/openvr/lib/openvr_api.lib b/alvr/server/cpp/openvr/lib/openvr_api.lib index 3b95d6b7db1fb57886fafcc9c6e71803bf02b121..e4cc9b92c2b89cdd791aff31bc5c701b869dcf6d 100644 GIT binary patch delta 638 zcmZ{gF=!KE6vzMH-I=@GU2=E1yEd0(P$?9oL&Xf*O)a9}&~^xt2Aj|ZjI?*DO(;%r z&Lq68LP123ZZ?~s;Na4^6ve?9ht3WzQqXsIA})UL``-6G{_p?2_YJFOm!4i5%wMUV zPgYY0Fbin=fPM^^c_6=-k~;wsLXJ%SFvThXG44W&Hv`1j-4tgGB-A-F)-c6AU_E1F zF5ZB`QHrktF$EUKczY@Kgmn|Tu3e=wvqDXAi=IfO(HrSh8q8P!PT;fEK9?Ws+@A?7 z@(d?AAY=~tT(W=#7nt#YF26f=fI2he`~m0VUXBX<2W(X5xW~E)=lENY!8s^Up&`#Q z13q#v;bPrE78Z1PC_q5^ukc@;jJuuferKb$g4)W>DC|9oHkVpqdy}uX+pUeAcCXfH z@A7S_)qAir3e?Afo(Y5AX&QagF4C!F(HBV@Ju za*(a=WT~+8v138vLf7uZ1c@u%8}v*k6bQvQ$v1cI`Olei=Kk~h^y9v#{k7ineJASI ztpI=?Ag~DpV?ZbasBO|>E2E9L=qbQKm0aXiz(HGgQMWkG=qoPK4ZtDBIS$6o zm~#UnWtZ?a;9&3o4zaY0vA}yKI_?r*1{@-s>k#jD30JtjLJtFDlopq2+01}ds#r6H zs%4MP&s5FQm2%az%ef*ZCkv&@Y9q#%$S{;<}CIrl>z>)$am=O&~>43zsRT)_4{T4s3aBL&WF}7mI0Ll?yJIwFk=QPI_ zcpYbbInHs`x_Paz&c6`?@T2BK8@%X13)<0&AasPGAOQ_3Vu&CF12W=>LO`mQ{C|Z9 zLxt(tLOz?pQ8sq5(T-NG+E(#eu53EnX2*Hem*_vj(Y+((+NS=k<$UuZ()>T8PyXY2 zvyR{VXD&AFxa<19zPq8O-RZrEtsQUK_R|+V84-NkhfjmvXt715hdvseLZVZl>-1Jm zs-Al8zTxP#7GG3SR1GDCm!5@6!bg8XL-bDW)cp12{S&({O-X%edKruuN%p*@p0qbP z{gf||uAU4Yn4Aku(MGpr%M*Z?zDhCrB~OTU8dfaPK_8T95u|hKeNTwhCsG%ER&NTK x&T8{Qp;wwEREp}B(CCqFd3A0{$<|H^8xz8yX=7G|>AO+#M7a2cCrrh#@)tlNQ2hV^ From 3d782f43d674896bb0296ecdcece8f00ffadb896 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sun, 20 Aug 2023 21:52:01 +0100 Subject: [PATCH 41/60] assortment of optimizations --- alvr/server/build.rs | 4 +- .../cpp/alvr_server/ClientConnection.cpp | 79 +++++----- .../server/cpp/alvr_server/ClientConnection.h | 6 +- alvr/server/cpp/alvr_server/IDRScheduler.cpp | 9 +- alvr/server/cpp/alvr_server/OvrController.cpp | 44 +++--- alvr/server/cpp/alvr_server/OvrHMD.cpp | 28 ++-- alvr/server/cpp/alvr_server/OvrHMD.h | 2 +- alvr/server/cpp/alvr_server/PoseHistory.cpp | 14 +- alvr/server/cpp/alvr_server/PoseHistory.h | 3 +- alvr/server/cpp/alvr_server/Utils.h | 23 +-- alvr/server/cpp/alvr_server/VSyncThread.cpp | 6 +- alvr/server/cpp/alvr_server/alvr_server.cpp | 22 +-- alvr/server/cpp/alvr_server/bindings.h | 144 ++++++++++-------- .../platform/win32/OvrDirectModeComponent.cpp | 15 +- .../cpp/platform/win32/VideoEncoderNVENC.cpp | 6 +- .../cpp/platform/win32/VideoEncoderSW.cpp | 2 +- .../cpp/platform/win32/VideoEncoderVCE.cpp | 2 +- .../platform/win32/amf/public/common/AMFSTL.h | 7 +- alvr/server/src/connection.rs | 36 +++-- alvr/server/src/lib.rs | 56 +++---- 20 files changed, 268 insertions(+), 240 deletions(-) diff --git a/alvr/server/build.rs b/alvr/server/build.rs index bc8903c335..1c5aa9ab82 100644 --- a/alvr/server/build.rs +++ b/alvr/server/build.rs @@ -110,14 +110,14 @@ fn main() { .cpp(true) .files(source_files_paths) .flag_if_supported("-isystemcpp/openvr/headers") // silences many warnings from openvr headers - .flag_if_supported("-std=c++17") + .flag_if_supported("-std=c++20") .include("cpp/openvr/headers") .include("cpp"); #[cfg(windows)] build .debug(false) // This is because we cannot link to msvcrtd (see below) - .flag("/std:c++17") + .flag("/std:c++20") .flag("/permissive-") .define("NOMINMAX", None) .define("_WINSOCKAPI_", None) diff --git a/alvr/server/cpp/alvr_server/ClientConnection.cpp b/alvr/server/cpp/alvr_server/ClientConnection.cpp index f15afee92d..9a979a1676 100644 --- a/alvr/server/cpp/alvr_server/ClientConnection.cpp +++ b/alvr/server/cpp/alvr_server/ClientConnection.cpp @@ -22,14 +22,14 @@ ClientConnection::ClientConnection() : m_LastStatisticsUpdate(0) { m_Statistics->ResetAll(); } -void ClientConnection::FECSend(uint8_t *buf, int len, uint64_t targetTimestampNs, uint64_t videoFrameIndex) { - int shardPackets = CalculateFECShardPackets(len, m_fecPercentage); +void ClientConnection::FECSend(const uint8_t *buf, uint32_t len, uint64_t targetTimestampNs, uint64_t videoFrameIndex) { + const int shardPackets = CalculateFECShardPackets(len, m_fecPercentage); - int blockSize = shardPackets * ALVR_MAX_VIDEO_BUFFER_SIZE; + const int blockSize = shardPackets * ALVR_MAX_VIDEO_BUFFER_SIZE; - int dataShards = (len + blockSize - 1) / blockSize; - int totalParityShards = CalculateParityShards(dataShards, m_fecPercentage); - int totalShards = dataShards + totalParityShards; + const int dataShards = (len + blockSize - 1) / blockSize; + const int totalParityShards = CalculateParityShards(dataShards, m_fecPercentage); + const int totalShards = dataShards + totalParityShards; assert(totalShards <= DATA_SHARDS_MAX); @@ -40,8 +40,8 @@ void ClientConnection::FECSend(uint8_t *buf, int len, uint64_t targetTimestampNs std::vector shards(totalShards); - for (int i = 0; i < dataShards; i++) { - shards[i] = buf + i * blockSize; + for (int i = 0; i < dataShards; ++i) { + shards[i] = const_cast(buf) + i * blockSize; } if (len % blockSize != 0) { // Padding @@ -49,29 +49,31 @@ void ClientConnection::FECSend(uint8_t *buf, int len, uint64_t targetTimestampNs memset(shards[dataShards - 1], 0, blockSize); memcpy(shards[dataShards - 1], buf + (dataShards - 1) * blockSize, len % blockSize); } - for (int i = 0; i < totalParityShards; i++) { + for (int i = 0; i < totalParityShards; ++i) { shards[dataShards + i] = new uint8_t[blockSize]; } - int ret = reed_solomon_encode(rs, &shards[0], totalShards, blockSize); + const int ret = reed_solomon_encode(rs, &shards[0], totalShards, blockSize); assert(ret == 0); reed_solomon_release(rs); - uint8_t packetBuffer[2000]; + thread_local uint8_t packetBuffer[2000]; VideoFrame *header = (VideoFrame *)packetBuffer; uint8_t *payload = packetBuffer + sizeof(VideoFrame); int dataRemain = len; - header->type = ALVR_PACKET_TYPE_VIDEO_FRAME; - header->trackingFrameIndex = targetTimestampNs; - header->videoFrameIndex = videoFrameIndex; - header->sentTime = GetTimestampUs(); - header->frameByteSize = len; - header->fecIndex = 0; - header->fecPercentage = (uint16_t)m_fecPercentage; - for (int i = 0; i < dataShards; i++) { - for (int j = 0; j < shardPackets; j++) { + *header = { + .type = ALVR_PACKET_TYPE_VIDEO_FRAME, + .trackingFrameIndex = targetTimestampNs, + .videoFrameIndex = videoFrameIndex, + .sentTime = GetSystemTimestampUs(), + .frameByteSize = len, + .fecIndex = 0, + .fecPercentage = (uint16_t)m_fecPercentage, + }; + for (int i = 0; i < dataShards; ++i) { + for (int j = 0; j < shardPackets; ++j) { int copyLength = std::min(ALVR_MAX_VIDEO_BUFFER_SIZE, dataRemain); if (copyLength <= 0) { break; @@ -80,24 +82,24 @@ void ClientConnection::FECSend(uint8_t *buf, int len, uint64_t targetTimestampNs dataRemain -= ALVR_MAX_VIDEO_BUFFER_SIZE; header->packetCounter = videoPacketCounter; - videoPacketCounter++; - VideoSend(*header, (unsigned char *)packetBuffer + sizeof(VideoFrame), copyLength); + ++videoPacketCounter; + VideoSend(header, (unsigned char *)packetBuffer + sizeof(VideoFrame), copyLength); m_Statistics->CountPacket(sizeof(VideoFrame) + copyLength); - header->fecIndex++; + ++header->fecIndex; } } header->fecIndex = dataShards * shardPackets; - for (int i = 0; i < totalParityShards; i++) { - for (int j = 0; j < shardPackets; j++) { + for (int i = 0; i < totalParityShards; ++i) { + for (int j = 0; j < shardPackets; ++j) { int copyLength = ALVR_MAX_VIDEO_BUFFER_SIZE; memcpy(payload, shards[dataShards + i] + j * ALVR_MAX_VIDEO_BUFFER_SIZE, copyLength); header->packetCounter = videoPacketCounter; - videoPacketCounter++; + ++videoPacketCounter; - VideoSend(*header, (unsigned char *)packetBuffer + sizeof(VideoFrame), copyLength); + VideoSend(header, (unsigned char *)packetBuffer + sizeof(VideoFrame), copyLength); m_Statistics->CountPacket(sizeof(VideoFrame) + copyLength); - header->fecIndex++; + ++header->fecIndex; } } @@ -109,7 +111,7 @@ void ClientConnection::FECSend(uint8_t *buf, int len, uint64_t targetTimestampNs } } -void ClientConnection::SendVideo(uint8_t *buf, int len, uint64_t targetTimestampNs) { +void ClientConnection::SendVideo(const uint8_t *buf, uint32_t len, uint64_t targetTimestampNs) { if (Settings::Instance().m_enableFec) { FECSend(buf, len, targetTimestampNs, mVideoFrameIndex); } else { @@ -117,10 +119,10 @@ void ClientConnection::SendVideo(uint8_t *buf, int len, uint64_t targetTimestamp header.packetCounter = this->videoPacketCounter; header.trackingFrameIndex = targetTimestampNs; header.videoFrameIndex = mVideoFrameIndex; - header.sentTime = GetTimestampUs(); + header.sentTime = GetSystemTimestampUs(); header.frameByteSize = len; - VideoSend(header, buf, len); + VideoSend(&header, buf, len); m_Statistics->CountPacket(sizeof(VideoFrame) + len); @@ -130,11 +132,11 @@ void ClientConnection::SendVideo(uint8_t *buf, int len, uint64_t targetTimestamp mVideoFrameIndex++; } -void ClientConnection::ProcessTimeSync(TimeSync data) { +void ClientConnection::ProcessTimeSync(const TimeSync &data) { m_Statistics->CountPacket(sizeof(TrackingInfo)); - TimeSync *timeSync = &data; - uint64_t Current = GetTimestampUs(); + const TimeSync * const timeSync = &data; + const std::uint64_t Current = GetSystemTimestampUs(); if (timeSync->mode == 0) { //timings might be a little incorrect since it is a mix from a previous sent frame and latest frame @@ -148,7 +150,7 @@ void ClientConnection::ProcessTimeSync(TimeSync data) { sendBuf.mode = 1; sendBuf.serverTime = Current; sendBuf.serverTotalLatency = (int)(m_reportedStatistics.averageSendLatency + (timing[0].m_flPreSubmitGpuMs + timing[0].m_flPostSubmitGpuMs + timing[0].m_flTotalRenderGpuMs + timing[0].m_flCompositorRenderGpuMs + timing[0].m_flCompositorRenderCpuMs + timing[0].m_flCompositorIdleCpuMs + timing[0].m_flClientFrameIntervalMs + timing[0].m_flPresentCallCpuMs + timing[0].m_flWaitForPresentCpuMs + timing[0].m_flSubmitFrameMs) * 1000 + m_Statistics->GetEncodeLatencyAverage() + m_reportedStatistics.averageTransportLatency + m_reportedStatistics.averageDecodeLatency + m_reportedStatistics.idleTime); - TimeSyncSend(sendBuf); + TimeSyncSend(&sendBuf); m_Statistics->NetworkTotal(sendBuf.serverTotalLatency); m_Statistics->NetworkSend(m_reportedStatistics.averageTransportLatency); @@ -168,7 +170,7 @@ void ClientConnection::ProcessTimeSync(TimeSync data) { m_reportedStatistics.fps, m_RTT / 2. / 1000.); - uint64_t now = GetTimestampUs(); + const std::uint64_t now = GetSteadyTimeStampUS(); if (now - m_LastStatisticsUpdate > STATISTICS_TIMEOUT_US) { // Text statistics only, some values averaged @@ -252,12 +254,13 @@ float ClientConnection::GetPoseTimeOffset() { void ClientConnection::OnFecFailure() { Debug("Listener::OnFecFailure()\n"); - if (GetTimestampUs() - m_lastFecFailure < CONTINUOUS_FEC_FAILURE) { + const std::uint64_t timestamp = GetSteadyTimeStampUS(); + if (timestamp - m_lastFecFailure < CONTINUOUS_FEC_FAILURE) { if (m_fecPercentage < MAX_FEC_PERCENTAGE) { m_fecPercentage += 5; } } - m_lastFecFailure = GetTimestampUs(); + m_lastFecFailure = timestamp; } std::shared_ptr ClientConnection::GetStatistics() { diff --git a/alvr/server/cpp/alvr_server/ClientConnection.h b/alvr/server/cpp/alvr_server/ClientConnection.h index 63be5e9d05..95e4c81276 100644 --- a/alvr/server/cpp/alvr_server/ClientConnection.h +++ b/alvr/server/cpp/alvr_server/ClientConnection.h @@ -17,9 +17,9 @@ class ClientConnection { ClientConnection(); - void FECSend(uint8_t *buf, int len, uint64_t targetTimestampNs, uint64_t videoFrameIndex); - void SendVideo(uint8_t *buf, int len, uint64_t targetTimestampNs); - void ProcessTimeSync(TimeSync data); + void FECSend(const uint8_t *buf, uint32_t len, uint64_t targetTimestampNs, uint64_t videoFrameIndex); + void SendVideo(const uint8_t *buf, uint32_t len, uint64_t targetTimestampNs); + void ProcessTimeSync(const TimeSync &data); float GetPoseTimeOffset(); void OnFecFailure(); std::shared_ptr GetStatistics(); diff --git a/alvr/server/cpp/alvr_server/IDRScheduler.cpp b/alvr/server/cpp/alvr_server/IDRScheduler.cpp index 9f574e2681..ba977b0d62 100644 --- a/alvr/server/cpp/alvr_server/IDRScheduler.cpp +++ b/alvr/server/cpp/alvr_server/IDRScheduler.cpp @@ -20,9 +20,10 @@ void IDRScheduler::OnPacketLoss() // Waiting next insertion. return; } - if (GetTimestampUs() - m_insertIDRTime > m_minIDRFrameInterval) { + const std::uint64_t timestamp = GetSteadyTimeStampUS(); + if (timestamp - m_insertIDRTime > m_minIDRFrameInterval) { // Insert immediately - m_insertIDRTime = GetTimestampUs(); + m_insertIDRTime = timestamp; m_scheduled = true; } else { @@ -46,7 +47,7 @@ void IDRScheduler::InsertIDR() { std::unique_lock lock(m_mutex); - m_insertIDRTime = GetTimestampUs() - MIN_IDR_FRAME_INTERVAL * 2; + m_insertIDRTime = GetSteadyTimeStampUS() - MIN_IDR_FRAME_INTERVAL * 2; m_scheduled = true; } @@ -54,7 +55,7 @@ bool IDRScheduler::CheckIDRInsertion() { std::unique_lock lock(m_mutex); if (m_scheduled) { - if (m_insertIDRTime <= GetTimestampUs()) { + if (m_insertIDRTime <= GetSteadyTimeStampUS()) { m_scheduled = false; return true; } diff --git a/alvr/server/cpp/alvr_server/OvrController.cpp b/alvr/server/cpp/alvr_server/OvrController.cpp index 69085a2ce0..d13792a968 100644 --- a/alvr/server/cpp/alvr_server/OvrController.cpp +++ b/alvr/server/cpp/alvr_server/OvrController.cpp @@ -934,51 +934,51 @@ bool OvrController::onPoseUpdate(const TrackingInfo::Controller &c) { if (c.isHand) { vr::HmdQuaternion_t rootBoneRot = - HmdQuaternion_Init(c.boneRootOrientation.w, - c.boneRootOrientation.x, - c.boneRootOrientation.y, - c.boneRootOrientation.z); + HmdQuaternion_Init(c.boneRootPose.orientation.w, + c.boneRootPose.orientation.x, + c.boneRootPose.orientation.y, + c.boneRootPose.orientation.z); vr::HmdQuaternion_t boneFixer = this->device_path == LEFT_HAND_PATH ? HmdQuaternion_Init(-0.5, 0.5, 0.5, -0.5) : HmdQuaternion_Init(0.5, 0.5, 0.5, 0.5); m_pose.qRotation = QuatMultiply(&rootBoneRot, &boneFixer); - m_pose.vecPosition[0] = c.boneRootPosition.x; - m_pose.vecPosition[1] = c.boneRootPosition.y; - m_pose.vecPosition[2] = c.boneRootPosition.z; + m_pose.vecPosition[0] = c.boneRootPose.position.x; + m_pose.vecPosition[1] = c.boneRootPose.position.y; + m_pose.vecPosition[2] = c.boneRootPose.position.z; if (this->device_path == LEFT_HAND_PATH) { double bonePosFixer[3] = {0.0, 0.05, -0.05}; vr::HmdVector3d_t posFix = vrmath::quaternionRotateVector(m_pose.qRotation, bonePosFixer); m_pose.vecPosition[0] = - c.boneRootPosition.x + posFix.v[0]; + c.boneRootPose.position.x + posFix.v[0]; m_pose.vecPosition[1] = - c.boneRootPosition.y + posFix.v[1]; + c.boneRootPose.position.y + posFix.v[1]; m_pose.vecPosition[2] = - c.boneRootPosition.z + posFix.v[2]; + c.boneRootPose.position.z + posFix.v[2]; } else { double bonePosFixer[3] = {0.0, 0.05, -0.05}; vr::HmdVector3d_t posFix = vrmath::quaternionRotateVector(m_pose.qRotation, bonePosFixer); m_pose.vecPosition[0] = - c.boneRootPosition.x + posFix.v[0]; + c.boneRootPose.position.x + posFix.v[0]; m_pose.vecPosition[1] = - c.boneRootPosition.y + posFix.v[1]; + c.boneRootPose.position.y + posFix.v[1]; m_pose.vecPosition[2] = - c.boneRootPosition.z + posFix.v[2]; + c.boneRootPose.position.z + posFix.v[2]; } } else { m_pose.qRotation = HmdQuaternion_Init( - c.orientation.w, - c.orientation.x, - c.orientation.y, - c.orientation.z); // controllerRotation; - - m_pose.vecPosition[0] = c.position.x; - m_pose.vecPosition[1] = c.position.y; - m_pose.vecPosition[2] = c.position.z; + c.pose.orientation.w, + c.pose.orientation.x, + c.pose.orientation.y, + c.pose.orientation.z); // controllerRotation; + + m_pose.vecPosition[0] = c.pose.position.x; + m_pose.vecPosition[1] = c.pose.position.y; + m_pose.vecPosition[2] = c.pose.position.z; } // use cutoffs for velocity to stop jitter when there is not a lot of movement @@ -1254,7 +1254,7 @@ bool OvrController::onPoseUpdate(const TrackingInfo::Controller &c) { // Will use one of the existing poses from the implementation below instead for position // data. - // COPY3(c.boneRootPosition, m_boneTransform[HSB_Root].position); + // COPY3(c.boneRootPose.position, m_boneTransform[HSB_Root].position); // COPY3(c.bonePositionsBase[alvrHandBone_WristRoot], m_boneTransform[HSB_Wrist].position); // COPY3(c.bonePositionsBase[alvrHandBone_Thumb0], m_boneTransform[HSB_Thumb0].position); // COPY3(c.bonePositionsBase[alvrHandBone_Thumb1], m_boneTransform[HSB_Thumb1].position); diff --git a/alvr/server/cpp/alvr_server/OvrHMD.cpp b/alvr/server/cpp/alvr_server/OvrHMD.cpp index 320c6bcb08..bbec643e30 100644 --- a/alvr/server/cpp/alvr_server/OvrHMD.cpp +++ b/alvr/server/cpp/alvr_server/OvrHMD.cpp @@ -321,14 +321,14 @@ vr::DriverPose_t OvrHmd::GetPose() { if (m_TrackingInfo.targetTimestampNs > 0) { TrackingInfo &info = m_TrackingInfo; - pose.qRotation = HmdQuaternion_Init(info.HeadPose_Pose_Orientation.w, - info.HeadPose_Pose_Orientation.x, - info.HeadPose_Pose_Orientation.y, - info.HeadPose_Pose_Orientation.z); + pose.qRotation = HmdQuaternion_Init(info.headPose.orientation.w, + info.headPose.orientation.x, + info.headPose.orientation.y, + info.headPose.orientation.z); - pose.vecPosition[0] = info.HeadPose_Pose_Position.x; - pose.vecPosition[1] = info.HeadPose_Pose_Position.y; - pose.vecPosition[2] = info.HeadPose_Pose_Position.z; + pose.vecPosition[0] = info.headPose.position.x; + pose.vecPosition[1] = info.headPose.position.y; + pose.vecPosition[2] = info.headPose.position.z; // set prox sensor vr::VRDriverInput()->UpdateBooleanComponent(m_proximity, info.mounted == 1, 0.0); @@ -348,17 +348,17 @@ vr::DriverPose_t OvrHmd::GetPose() { return pose; } -void OvrHmd::OnPoseUpdated(TrackingInfo info) { +void OvrHmd::OnPoseUpdated(const TrackingInfo& info) { if (this->object_id != vr::k_unTrackedDeviceIndexInvalid) { + + m_TrackingInfo = info; // if 3DOF, zero the positional data! if (Settings::Instance().m_force3DOF) { - info.HeadPose_Pose_Position.x = 0; - info.HeadPose_Pose_Position.y = 0; - info.HeadPose_Pose_Position.z = 0; + m_TrackingInfo.headPose.position.x = 0; + m_TrackingInfo.headPose.position.y = 0; + m_TrackingInfo.headPose.position.z = 0; } - - m_TrackingInfo = info; - + // TODO: Right order? if (!Settings::Instance().m_disableController) { diff --git a/alvr/server/cpp/alvr_server/OvrHMD.h b/alvr/server/cpp/alvr_server/OvrHMD.h index 553864696b..12d3e590fa 100644 --- a/alvr/server/cpp/alvr_server/OvrHMD.h +++ b/alvr/server/cpp/alvr_server/OvrHMD.h @@ -40,7 +40,7 @@ class OvrHmd : public TrackedDevice, virtual void DebugRequest(const char *request, char *response_buffer, uint32_t size) {} virtual vr::DriverPose_t GetPose(); - void OnPoseUpdated(TrackingInfo info); + void OnPoseUpdated(const TrackingInfo& info); void StartStreaming(); diff --git a/alvr/server/cpp/alvr_server/PoseHistory.cpp b/alvr/server/cpp/alvr_server/PoseHistory.cpp index de2ac1b14a..309a9be7ae 100644 --- a/alvr/server/cpp/alvr_server/PoseHistory.cpp +++ b/alvr/server/cpp/alvr_server/PoseHistory.cpp @@ -10,10 +10,10 @@ void PoseHistory::OnPoseUpdated(const TrackingInfo &info) { history.info = info; - HmdMatrix_QuatToMat(info.HeadPose_Pose_Orientation.w, - info.HeadPose_Pose_Orientation.x, - info.HeadPose_Pose_Orientation.y, - info.HeadPose_Pose_Orientation.z, + HmdMatrix_QuatToMat(info.headPose.orientation.w, + info.headPose.orientation.x, + info.headPose.orientation.y, + info.headPose.orientation.z, &history.rotationMatrix); Debug("Rotation Matrix=(%f, %f, %f, %f) (%f, %f, %f, %f) (%f, %f, %f, %f)\n" @@ -21,7 +21,7 @@ void PoseHistory::OnPoseUpdated(const TrackingInfo &info) { , history.rotationMatrix.m[1][0], history.rotationMatrix.m[1][1], history.rotationMatrix.m[1][2], history.rotationMatrix.m[1][3] , history.rotationMatrix.m[2][0], history.rotationMatrix.m[2][1], history.rotationMatrix.m[2][2], history.rotationMatrix.m[2][3]); - std::unique_lock lock(m_mutex); + std::unique_lock lock(m_mutex); if (m_poseBuffer.size() == 0) { m_poseBuffer.push_back(history); } @@ -39,7 +39,7 @@ void PoseHistory::OnPoseUpdated(const TrackingInfo &info) { std::optional PoseHistory::GetBestPoseMatch(const vr::HmdMatrix34_t &pose) const { - std::unique_lock lock(m_mutex); + std::shared_lock lock(m_mutex); float minDiff = 100000; auto minIt = m_poseBuffer.begin(); for (auto it = m_poseBuffer.begin(); it != m_poseBuffer.end(); ++it) { @@ -66,7 +66,7 @@ std::optional PoseHistory::GetBestPoseMatch(c std::optional PoseHistory::GetPoseAt(uint64_t client_timestamp_ns) const { - std::unique_lock lock(m_mutex); + std::shared_lock lock(m_mutex); for (auto it = m_poseBuffer.rbegin(), end = m_poseBuffer.rend() ; it != end ; ++it) { if (it->info.targetTimestampNs == client_timestamp_ns) diff --git a/alvr/server/cpp/alvr_server/PoseHistory.h b/alvr/server/cpp/alvr_server/PoseHistory.h index e321af7e76..ca8c1b0636 100644 --- a/alvr/server/cpp/alvr_server/PoseHistory.h +++ b/alvr/server/cpp/alvr_server/PoseHistory.h @@ -2,6 +2,7 @@ #include #include +#include #include #include #include "ALVR-common/packet_types.h" @@ -21,6 +22,6 @@ class PoseHistory std::optional GetPoseAt(uint64_t client_timestamp_us) const; private: - mutable std::mutex m_mutex; + mutable std::shared_mutex m_mutex{}; std::list m_poseBuffer; }; diff --git a/alvr/server/cpp/alvr_server/Utils.h b/alvr/server/cpp/alvr_server/Utils.h index b6f15f961c..9217c877a0 100644 --- a/alvr/server/cpp/alvr_server/Utils.h +++ b/alvr/server/cpp/alvr_server/Utils.h @@ -31,28 +31,15 @@ const float DEG_TO_RAD = (float)(M_PI / 180.); extern uint64_t gPerformanceCounterFrequency; // Get elapsed time in us from Unix Epoch -inline uint64_t GetTimestampUs() { - auto duration = std::chrono::system_clock::now().time_since_epoch(); +inline uint64_t GetSystemTimestampUs() { + const auto duration = std::chrono::system_clock::now().time_since_epoch(); return std::chrono::duration_cast(duration).count(); } -// Get performance counter in us -inline uint64_t GetCounterUs() { -#ifdef _WIN32 - if (gPerformanceCounterFrequency == 0) { - LARGE_INTEGER freq; - QueryPerformanceFrequency(&freq); - gPerformanceCounterFrequency = freq.QuadPart; - } - - LARGE_INTEGER counter; - QueryPerformanceCounter(&counter); - - return counter.QuadPart * 1000000LLU / gPerformanceCounterFrequency; -#else - auto duration = std::chrono::steady_clock::now().time_since_epoch(); +inline std::uint64_t GetSteadyTimeStampUS() { + static_assert(std::chrono::steady_clock::is_steady); + const auto duration = std::chrono::steady_clock::now().time_since_epoch(); return std::chrono::duration_cast(duration).count(); -#endif } inline std::string DumpMatrix(const float *m) { diff --git a/alvr/server/cpp/alvr_server/VSyncThread.cpp b/alvr/server/cpp/alvr_server/VSyncThread.cpp index da34a12999..d099d74013 100644 --- a/alvr/server/cpp/alvr_server/VSyncThread.cpp +++ b/alvr/server/cpp/alvr_server/VSyncThread.cpp @@ -15,11 +15,11 @@ void VSyncThread::Run() { m_PreviousVsync = 0; while (!m_bExit) { - uint64_t current = GetTimestampUs(); - uint64_t interval = 1000 * 1000 / m_refreshRate; + const std::uint64_t current = GetSteadyTimeStampUS(); + const std::uint64_t interval = 1000 * 1000 / m_refreshRate; if (m_PreviousVsync + interval > current) { - uint64_t sleepTimeMs = (m_PreviousVsync + interval - current) / 1000; + const std::uint64_t sleepTimeMs = (m_PreviousVsync + interval - current) / 1000; if (sleepTimeMs > 0) { Debug("Sleep %llu ms for next VSync.\n", sleepTimeMs); diff --git a/alvr/server/cpp/alvr_server/alvr_server.cpp b/alvr/server/cpp/alvr_server/alvr_server.cpp index c0cc68dafc..4e29c608cb 100644 --- a/alvr/server/cpp/alvr_server/alvr_server.cpp +++ b/alvr/server/cpp/alvr_server/alvr_server.cpp @@ -165,9 +165,9 @@ void (*LogWarn)(const char *stringPtr); void (*LogInfo)(const char *stringPtr); void (*LogDebug)(const char *stringPtr); void (*DriverReadyIdle)(bool setDefaultChaprone); -void (*VideoSend)(VideoFrame header, unsigned char *buf, int len); +void (*VideoSend)(const VideoFrame* header, const uint8_t *buf, uint32_t len); void (*HapticsSend)(unsigned long long path, float duration_s, float frequency, float amplitude); -void (*TimeSyncSend)(TimeSync packet); +void (*TimeSyncSend)(const TimeSync* packet); void (*ShutdownRuntime)(); unsigned long long (*PathStringToHash)(const char *path); @@ -207,23 +207,23 @@ void RequestIDR() { } } -void InputReceive(TrackingInfo data) { +void InputReceive(const TrackingInfo* data) { if (g_driver_provider.hmd && g_driver_provider.hmd->m_Listener) { g_driver_provider.hmd->m_Listener->m_Statistics->CountPacket(sizeof(TrackingInfo)); - uint64_t Current = GetTimestampUs(); + const uint64_t Current = GetSystemTimestampUs(); TimeSync sendBuf = {}; sendBuf.mode = 3; sendBuf.serverTime = Current - g_driver_provider.hmd->m_Listener->m_TimeDiff; - sendBuf.trackingRecvFrameIndex = data.targetTimestampNs; - TimeSyncSend(sendBuf); + sendBuf.trackingRecvFrameIndex = data->targetTimestampNs; + TimeSyncSend(&sendBuf); - g_driver_provider.hmd->OnPoseUpdated(data); + g_driver_provider.hmd->OnPoseUpdated(*data); } } -void TimeSyncReceive(TimeSync data) { +void TimeSyncReceive(const TimeSync *data) { if (g_driver_provider.hmd && g_driver_provider.hmd->m_Listener) { - g_driver_provider.hmd->m_Listener->ProcessTimeSync(data); + g_driver_provider.hmd->m_Listener->ProcessTimeSync(*data); } } void VideoErrorReportReceive() { @@ -240,7 +240,7 @@ void ShutdownSteamvr() { } } -void SetOpenvrProperty(unsigned long long top_level_path, OpenvrProperty prop) { +void SetOpenvrProperty(uint64_t top_level_path, OpenvrProperty prop) { auto device_it = g_driver_provider.tracked_devices.find(top_level_path); if (device_it != g_driver_provider.tracked_devices.end()) { @@ -254,7 +254,7 @@ void SetViewsConfig(const ViewsConfigData *config) { } } -void SetBattery(unsigned long long top_level_path, float gauge_value, bool is_plugged) { +void SetBattery(uint64_t top_level_path, float gauge_value, bool is_plugged) { auto device_it = g_driver_provider.tracked_devices.find(top_level_path); if (device_it != g_driver_provider.tracked_devices.end()) { diff --git a/alvr/server/cpp/alvr_server/bindings.h b/alvr/server/cpp/alvr_server/bindings.h index 67524c218b..15e1b4e95f 100644 --- a/alvr/server/cpp/alvr_server/bindings.h +++ b/alvr/server/cpp/alvr_server/bindings.h @@ -1,114 +1,122 @@ #pragma once -struct EyeFov { +#ifdef __cplusplus +extern "C" {; +#endif + +#include + +typedef struct EyeFov { float left = 49.; float right = 45.; float top = 50.; float bottom = 48.; -}; +} EyeFov; -struct TrackingQuat { +typedef struct TrackingQuat { float x; float y; float z; float w; -}; -struct TrackingVector3 { +} TrackingQuat; +typedef struct TrackingVector3 { float x; float y; float z; -}; -struct TrackingVector2 { +} TrackingVector3; +typedef struct TrackingVector2 { float x; float y; -}; -struct TrackingInfo { - static const unsigned int MAX_CONTROLLERS = 2; - static const unsigned int BONE_COUNT = 19; +} TrackingVector2; + +typedef struct TrackingPosef { + TrackingQuat orientation; + TrackingVector3 position; +} TrackingPosef; + +typedef struct TrackingInfo { + static constexpr const uint32_t MAX_CONTROLLERS = 2; + static constexpr const uint32_t BONE_COUNT = 19; + struct Controller { // Tracking info of hand. A3 - TrackingQuat boneRotations[BONE_COUNT]; - // TrackingQuat boneRotationsBase[alvrHandBone_MaxSkinnable]; + TrackingQuat boneRotations[BONE_COUNT]; TrackingVector3 bonePositionsBase[BONE_COUNT]; - TrackingQuat boneRootOrientation; - TrackingVector3 boneRootPosition; + TrackingPosef boneRootPose; // Tracking info of controller. (float * 19 = 76 bytes) - TrackingQuat orientation; - TrackingVector3 position; + TrackingPosef pose; TrackingVector3 angularVelocity; TrackingVector3 linearVelocity; TrackingVector2 joystickPosition; TrackingVector2 trackpadPosition; - unsigned long long buttons; + uint64_t buttons; float triggerValue; float gripValue; - unsigned int handFingerConfidences; + uint32_t handFingerConfidences; bool enabled; bool isHand; } controller[MAX_CONTROLLERS]; - - TrackingQuat HeadPose_Pose_Orientation; - TrackingVector3 HeadPose_Pose_Position; - - unsigned long long targetTimestampNs; - unsigned char mounted; -}; + + TrackingPosef headPose; + uint64_t targetTimestampNs; + uint8_t mounted; +} TrackingInfo; // Client >----(mode 0)----> Server // Client <----(mode 1)----< Server // Client >----(mode 2)----> Server // Client <----(mode 3)----< Server -struct TimeSync { - unsigned int mode; // 0,1,2,3 - unsigned long long sequence; - unsigned long long serverTime; - unsigned long long clientTime; +typedef struct TimeSync { + uint32_t mode; // 0,1,2,3 + uint64_t sequence; + uint64_t serverTime; + uint64_t clientTime; // Following value are filled by client only when mode=0. - unsigned long long packetsLostTotal; - unsigned long long packetsLostInSecond; - - unsigned int averageTotalLatency; + uint64_t packetsLostTotal; + uint64_t packetsLostInSecond; - unsigned int averageSendLatency; + uint64_t averageDecodeLatency; - unsigned int averageTransportLatency; + uint32_t averageTotalLatency; - unsigned long long averageDecodeLatency; + uint32_t averageSendLatency; - unsigned int idleTime; + uint32_t averageTransportLatency; + + uint32_t idleTime; - unsigned int fecFailure; - unsigned long long fecFailureInSecond; - unsigned long long fecFailureTotal; + uint64_t fecFailureInSecond; + uint64_t fecFailureTotal; + uint32_t fecFailure; float fps; - // Following value are filled by server only when mode=1. - unsigned int serverTotalLatency; - // Following value are filled by server only when mode=3. - unsigned long long trackingRecvFrameIndex; -}; -struct VideoFrame { - unsigned int type; // ALVR_PACKET_TYPE_VIDEO_FRAME - unsigned int packetCounter; - unsigned long long trackingFrameIndex; + uint64_t trackingRecvFrameIndex; + + // Following value are filled by server only when mode=1. + uint32_t serverTotalLatency; +} TimeSync; +typedef struct VideoFrame { + uint32_t type; // ALVR_PACKET_TYPE_VIDEO_FRAME + uint32_t packetCounter; + uint64_t trackingFrameIndex; // FEC decoder needs some value for identify video frame number to detect new frame. // trackingFrameIndex becomes sometimes same value as previous video frame (in case of low // tracking rate). - unsigned long long videoFrameIndex; - unsigned long long sentTime; - unsigned int frameByteSize; - unsigned int fecIndex; - unsigned short fecPercentage; + uint64_t videoFrameIndex; + uint64_t sentTime; + uint32_t frameByteSize; + uint32_t fecIndex; + uint16_t fecPercentage; // char frameBuffer[]; -}; +} VideoFrame; enum OpenvrPropertyType { Bool, Float, @@ -122,15 +130,15 @@ enum OpenvrPropertyType { union OpenvrPropertyValue { bool bool_; float float_; - int int32; - unsigned long long uint64; + int32_t int32; + uint64_t uint64; float vector3[3]; double double_; char string[64]; }; struct OpenvrProperty { - unsigned int key; + uint32_t key; OpenvrPropertyType type; OpenvrPropertyValue value; }; @@ -167,12 +175,12 @@ extern "C" void (*LogWarn)(const char *stringPtr); extern "C" void (*LogInfo)(const char *stringPtr); extern "C" void (*LogDebug)(const char *stringPtr); extern "C" void (*DriverReadyIdle)(bool setDefaultChaprone); -extern "C" void (*VideoSend)(VideoFrame header, unsigned char *buf, int len); +extern "C" void (*VideoSend)(const VideoFrame* header, const uint8_t *buf, uint32_t len); extern "C" void (*HapticsSend)(unsigned long long path, float duration_s, float frequency, float amplitude); -extern "C" void (*TimeSyncSend)(TimeSync packet); +extern "C" void (*TimeSyncSend)(const TimeSync* packet); extern "C" void (*ShutdownRuntime)(); extern "C" unsigned long long (*PathStringToHash)(const char *path); @@ -181,11 +189,15 @@ extern "C" void InitializeStreaming(); extern "C" void DeinitializeStreaming(); extern "C" void RequestIDR(); extern "C" void SetChaperone(float areaWidth, float areaHeight); -extern "C" void InputReceive(TrackingInfo data); -extern "C" void TimeSyncReceive(TimeSync data); +extern "C" void InputReceive(const TrackingInfo* data); +extern "C" void TimeSyncReceive(const TimeSync* data); extern "C" void VideoErrorReportReceive(); extern "C" void ShutdownSteamvr(); -extern "C" void SetOpenvrProperty(unsigned long long topLevelPath, OpenvrProperty prop); +extern "C" void SetOpenvrProperty(uint64_t topLevelPath, OpenvrProperty prop); extern "C" void SetViewsConfig(const ViewsConfigData* config); -extern "C" void SetBattery(unsigned long long topLevelPath, float gauge_value, bool is_plugged); \ No newline at end of file +extern "C" void SetBattery(uint64_t topLevelPath, float gauge_value, bool is_plugged); + +#ifdef __cplusplus +} +#endif diff --git a/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp b/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp index f9fe01774a..0154b24dc8 100644 --- a/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp +++ b/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp @@ -160,10 +160,10 @@ void OvrDirectModeComponent::SubmitLayer(const SubmitLayerPerEye_t(&perEye)[2]) m_targetTimestampNs = pose->info.targetTimestampNs; m_prevFramePoseRotation = m_framePoseRotation; - m_framePoseRotation.x = pose->info.HeadPose_Pose_Orientation.x; - m_framePoseRotation.y = pose->info.HeadPose_Pose_Orientation.y; - m_framePoseRotation.z = pose->info.HeadPose_Pose_Orientation.z; - m_framePoseRotation.w = pose->info.HeadPose_Pose_Orientation.w; + m_framePoseRotation.x = pose->info.headPose.orientation.x; + m_framePoseRotation.y = pose->info.headPose.orientation.y; + m_framePoseRotation.z = pose->info.headPose.orientation.z; + m_framePoseRotation.w = pose->info.headPose.orientation.w; Debug("Frame pose found. m_prevSubmitFrameIndex=%llu m_submitFrameIndex=%llu\n", m_prevTargetTimestampNs, m_targetTimestampNs); } @@ -250,7 +250,7 @@ void OvrDirectModeComponent::Present(vr::SharedTextureHandle_t syncTexture) void OvrDirectModeComponent::CopyTexture(uint32_t layerCount) { - uint64_t presentationTime = GetTimestampUs(); + const std::uint64_t presentationTime = GetSystemTimestampUs(); ID3D11Texture2D *pTexture[MAX_LAYERS][2]; ComPtr Texture[MAX_LAYERS][2]; @@ -291,7 +291,9 @@ void OvrDirectModeComponent::CopyTexture(uint32_t layerCount) { } // This can go away, but is useful to see it as a separate packet on the gpu in traces. +#ifndef NDEBUG m_pD3DRender->GetContext()->Flush(); +#endif if (m_pEncoder) { Debug("Waiting for finish of previous encode.\n"); @@ -309,6 +311,9 @@ void OvrDirectModeComponent::CopyTexture(uint32_t layerCount) { // Copy entire texture to staging so we can read the pixels to send to remote device. m_pEncoder->CopyToStaging(pTexture, bounds, layerCount,false, presentationTime, submitFrameIndex,"", debugText); +// CopyToStaging invokes RenderFrame which already does a pipeline flush. +#ifndef NDEBUG m_pD3DRender->GetContext()->Flush(); +#endif } } diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index dc90b6c9b0..0e586bc7f1 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -69,12 +69,14 @@ void VideoEncoderNVENC::Shutdown() if(m_NvNecoder) m_NvNecoder->EndEncode(vPacket); +#ifndef NDEBUG for (std::vector &packet : vPacket) { if (fpOut) { fpOut.write(reinterpret_cast(packet.data()), packet.size()); } } +#endif if (m_NvNecoder) { m_NvNecoder->DestroyEncoder(); m_NvNecoder.reset(); @@ -117,14 +119,16 @@ void VideoEncoderNVENC::Transmit(ID3D11Texture2D *pTexture, uint64_t presentatio m_NvNecoder->EncodeFrame(vPacket, &picParams); if (m_Listener) { - m_Listener->GetStatistics()->EncodeOutput(GetTimestampUs() - presentationTime); + m_Listener->GetStatistics()->EncodeOutput(GetSystemTimestampUs() - presentationTime); } for (std::vector &packet : vPacket) { +#ifndef NDEBUG if (fpOut) { fpOut.write(reinterpret_cast(packet.data()), packet.size()); } +#endif if (m_Listener) { m_Listener->SendVideo(packet.data(), (int)packet.size(), targetTimestampNs); } diff --git a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp index e5bd82a619..bf130762d9 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp @@ -261,7 +261,7 @@ void VideoEncoderSW::Transmit(ID3D11Texture2D *pTexture, uint64_t presentationTi } // Send statistics to client - m_Listener->GetStatistics()->EncodeOutput(GetTimestampUs() - presentationTime); + m_Listener->GetStatistics()->EncodeOutput(GetSystemTimestampUs() - presentationTime); // Unmap the copied texture and delete it m_d3dRender->GetContext()->Unmap(stagingTex.Get(), 0); diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index d7159559aa..b81a087735 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -463,7 +463,7 @@ void VideoEncoderVCE::Receive(AMFDataPtr data) fpOut.write(p, length); } if (m_Listener) { - m_Listener->SendVideo(reinterpret_cast(p), length, targetTimestampNs); + m_Listener->SendVideo(reinterpret_cast(p), length, targetTimestampNs); } } diff --git a/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h index 85cb20c65d..43256a839e 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h @@ -74,6 +74,7 @@ namespace amf template class amf_allocator : public std::allocator<_Ty> { + using alloc_traits = std::allocator_traits< std::allocator<_Ty> >; public: amf_allocator() : std::allocator<_Ty>() {} @@ -85,13 +86,13 @@ namespace amf { typedef amf_allocator<_Other> other; }; - void deallocate(typename std::allocator<_Ty>::pointer _Ptr, typename std::allocator<_Ty>::size_type) + void deallocate(typename alloc_traits::pointer _Ptr, typename std::allocator<_Ty>::size_type) { amf_free((void*)_Ptr); } - typename std::allocator<_Ty>::pointer allocate(typename std::allocator<_Ty>::size_type _Count) + typename alloc_traits::pointer allocate(typename std::allocator<_Ty>::size_type _Count) { // allocate array of _Count el ements - return static_cast::pointer>((amf_alloc(_Count * sizeof(_Ty)))); + return static_cast((amf_alloc(_Count * sizeof(_Ty)))); } }; diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 23e98f9d68..18b0be6e06 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -1,7 +1,7 @@ use crate::{ CLIENTS_UPDATED_NOTIFIER, ClientListAction, EyeFov, HAPTICS_SENDER, RESTART_NOTIFIER, SESSION_MANAGER, TIME_SYNC_SENDER, TimeSync, TrackingInfo, TrackingInfo_Controller, - TrackingQuat, TrackingVector2, TrackingVector3, VIDEO_SENDER, connection_utils, + TrackingPosef, TrackingQuat, TrackingVector2, TrackingVector3, VIDEO_SENDER, connection_utils, }; use alvr_audio::{AudioDevice, AudioDeviceType}; use alvr_common::{ @@ -897,8 +897,10 @@ async fn connection_pipeline() -> StrResult { let tracking_info = TrackingInfo { targetTimestampNs: input.target_timestamp.as_nanos() as _, - HeadPose_Pose_Orientation: to_tracking_quat(head_motion.orientation), - HeadPose_Pose_Position: to_tracking_vector3(head_motion.position), + headPose: TrackingPosef { + orientation: to_tracking_quat(head_motion.orientation), + position: to_tracking_vector3(head_motion.position), + }, mounted: input.legacy.mounted, controller: [ TrackingInfo_Controller { @@ -913,8 +915,10 @@ async fn connection_pipeline() -> StrResult { ), triggerValue: input.legacy.controllers[0].trigger_value, gripValue: input.legacy.controllers[0].grip_value, - orientation: to_tracking_quat(left_hand_motion.orientation), - position: to_tracking_vector3(left_hand_motion.position), + pose: TrackingPosef { + orientation: to_tracking_quat(left_hand_motion.orientation), + position: to_tracking_vector3(left_hand_motion.position), + }, angularVelocity: to_tracking_vector3( left_hand_motion.angular_velocity.unwrap_or(Vec3::ZERO), ), @@ -947,8 +951,10 @@ async fn connection_pipeline() -> StrResult { array }, - boneRootOrientation: to_tracking_quat(left_hand_motion.orientation), - boneRootPosition: to_tracking_vector3(left_hand_motion.position), + boneRootPose: TrackingPosef { + orientation: to_tracking_quat(left_hand_motion.orientation), + position: to_tracking_vector3(left_hand_motion.position), + }, handFingerConfidences: input.legacy.controllers[0] .hand_finger_confience, }, @@ -964,8 +970,10 @@ async fn connection_pipeline() -> StrResult { ), triggerValue: input.legacy.controllers[1].trigger_value, gripValue: input.legacy.controllers[1].grip_value, - orientation: to_tracking_quat(right_hand_motion.orientation), - position: to_tracking_vector3(right_hand_motion.position), + pose: TrackingPosef { + orientation: to_tracking_quat(right_hand_motion.orientation), + position: to_tracking_vector3(right_hand_motion.position), + }, angularVelocity: to_tracking_vector3( right_hand_motion.angular_velocity.unwrap_or(Vec3::ZERO), ), @@ -998,15 +1006,17 @@ async fn connection_pipeline() -> StrResult { array }, - boneRootOrientation: to_tracking_quat(right_hand_motion.orientation), - boneRootPosition: to_tracking_vector3(right_hand_motion.position), + boneRootPose: TrackingPosef { + orientation: to_tracking_quat(right_hand_motion.orientation), + position: to_tracking_vector3(right_hand_motion.position), + }, handFingerConfidences: input.legacy.controllers[1] .hand_finger_confience, }, ], }; - unsafe { crate::InputReceive(tracking_info) }; + unsafe { crate::InputReceive(&tracking_info) }; } } }; @@ -1074,7 +1084,7 @@ async fn connection_pipeline() -> StrResult { trackingRecvFrameIndex: data.tracking_recv_frame_index, }; - unsafe { crate::TimeSyncReceive(time_sync) }; + unsafe { crate::TimeSyncReceive(&time_sync) }; } Ok(ClientControlPacket::VideoErrorReport) => unsafe { crate::VideoErrorReportReceive() diff --git a/alvr/server/src/lib.rs b/alvr/server/src/lib.rs index 73692d943c..de23e1511c 100644 --- a/alvr/server/src/lib.rs +++ b/alvr/server/src/lib.rs @@ -330,16 +330,18 @@ pub unsafe extern "C" fn HmdDriverFactory( } } - extern "C" fn video_send(header: VideoFrame, buffer_ptr: *mut u8, len: i32) { + extern "C" fn video_send(header: *const VideoFrame, buffer_ptr: *const u8, len: u32) { if let Some(sender) = &*VIDEO_SENDER.lock() { - let header = VideoFrameHeaderPacket { - packet_counter: header.packetCounter, - tracking_frame_index: header.trackingFrameIndex, - video_frame_index: header.videoFrameIndex, - sent_time: header.sentTime, - frame_byte_size: header.frameByteSize, - fec_index: header.fecIndex, - fec_percentage: header.fecPercentage, + let header = unsafe { + VideoFrameHeaderPacket { + packet_counter: (*header).packetCounter, + tracking_frame_index: (*header).trackingFrameIndex, + video_frame_index: (*header).videoFrameIndex, + sent_time: (*header).sentTime, + frame_byte_size: (*header).frameByteSize, + fec_index: (*header).fecIndex, + fec_percentage: (*header).fecPercentage, + } }; let mut vec_buffer = vec![0; len as _]; @@ -366,24 +368,26 @@ pub unsafe extern "C" fn HmdDriverFactory( } } - extern "C" fn time_sync_send(data: TimeSync) { + extern "C" fn time_sync_send(data: *const TimeSync) { if let Some(sender) = &*TIME_SYNC_SENDER.lock() { - let time_sync = TimeSyncPacket { - mode: data.mode, - server_time: data.serverTime, - client_time: data.clientTime, - packets_lost_total: data.packetsLostTotal, - packets_lost_in_second: data.packetsLostInSecond, - average_send_latency: data.averageSendLatency, - average_transport_latency: data.averageTransportLatency, - average_decode_latency: data.averageDecodeLatency, - idle_time: data.idleTime, - fec_failure: data.fecFailure, - fec_failure_in_second: data.fecFailureInSecond, - fec_failure_total: data.fecFailureTotal, - fps: data.fps, - server_total_latency: data.serverTotalLatency, - tracking_recv_frame_index: data.trackingRecvFrameIndex, + let time_sync = unsafe { + TimeSyncPacket { + mode: (*data).mode, + server_time: (*data).serverTime, + client_time: (*data).clientTime, + packets_lost_total: (*data).packetsLostTotal, + packets_lost_in_second: (*data).packetsLostInSecond, + average_send_latency: (*data).averageSendLatency, + average_transport_latency: (*data).averageTransportLatency, + average_decode_latency: (*data).averageDecodeLatency, + idle_time: (*data).idleTime, + fec_failure: (*data).fecFailure, + fec_failure_in_second: (*data).fecFailureInSecond, + fec_failure_total: (*data).fecFailureTotal, + fps: (*data).fps, + server_total_latency: (*data).serverTotalLatency, + tracking_recv_frame_index: (*data).trackingRecvFrameIndex, + } }; sender.send(time_sync).ok(); From f0c666a5b4630446e158643ff4be7f438e5bdd1b Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Wed, 8 Nov 2023 22:22:06 +0000 Subject: [PATCH 42/60] OpenVR SDK 2.0.10 --- alvr/server/cpp/alvr_server/OvrHMD.cpp | 12 ++ alvr/server/cpp/alvr_server/OvrHMD.h | 2 +- alvr/server/cpp/openvr/headers/openvr.h | 122 +++++++++++--- .../server/cpp/openvr/headers/openvr_driver.h | 152 +++++++++++++++--- alvr/server/cpp/openvr/lib/openvr_api.lib | Bin 5500 -> 5500 bytes 5 files changed, 244 insertions(+), 44 deletions(-) diff --git a/alvr/server/cpp/alvr_server/OvrHMD.cpp b/alvr/server/cpp/alvr_server/OvrHMD.cpp index bbec643e30..a8c3211495 100644 --- a/alvr/server/cpp/alvr_server/OvrHMD.cpp +++ b/alvr/server/cpp/alvr_server/OvrHMD.cpp @@ -543,3 +543,15 @@ void OvrHmd::GetProjectionRaw( vr::DistortionCoordinates_t OvrHmd::ComputeDistortion(vr::EVREye, float u, float v) { return {{u, v}, {u, v}, {u, v}}; } + +bool OvrHmd::ComputeInverseDistortion(vr::HmdVector2_t *pResult, vr::EVREye eEye, uint32_t unChannel, float fU, float fV) { + if (pResult == nullptr) { + return false; + } + // Since the original ComputeDistortion is an identity function, + // the inverse is also an identity function, and does not depend + // on the eye or channel. + pResult->v[0] = fU; + pResult->v[1] = fV; + return true; // Operation successful +} diff --git a/alvr/server/cpp/alvr_server/OvrHMD.h b/alvr/server/cpp/alvr_server/OvrHMD.h index 12d3e590fa..e31a080b90 100644 --- a/alvr/server/cpp/alvr_server/OvrHMD.h +++ b/alvr/server/cpp/alvr_server/OvrHMD.h @@ -64,7 +64,7 @@ class OvrHmd : public TrackedDevice, virtual void GetProjectionRaw(vr::EVREye eEye, float *pfLeft, float *pfRight, float *pfTop, float *pfBottom); virtual vr::DistortionCoordinates_t ComputeDistortion(vr::EVREye eEye, float fU, float fV); - + virtual bool ComputeInverseDistortion(vr::HmdVector2_t *pResult, vr::EVREye eEye, uint32_t unChannel, float fU, float fV ) override; std::shared_ptr m_Listener; float m_poseTimeOffset; diff --git a/alvr/server/cpp/openvr/headers/openvr.h b/alvr/server/cpp/openvr/headers/openvr.h index 17d0e98b2d..b7aace5242 100644 --- a/alvr/server/cpp/openvr/headers/openvr.h +++ b/alvr/server/cpp/openvr/headers/openvr.h @@ -15,9 +15,9 @@ namespace vr { - static const uint32_t k_nSteamVRVersionMajor = 1; - static const uint32_t k_nSteamVRVersionMinor = 26; - static const uint32_t k_nSteamVRVersionBuild = 7; + static const uint32_t k_nSteamVRVersionMajor = 2; + static const uint32_t k_nSteamVRVersionMinor = 0; + static const uint32_t k_nSteamVRVersionBuild = 10; } // namespace vr // public_vrtypes.h @@ -133,6 +133,8 @@ enum ETextureType TextureType_Metal = 6, // Handle is a MTLTexture conforming to the MTLSharedTexture protocol. Textures submitted to IVRCompositor::Submit which // are of type MTLTextureType2DArray assume layer 0 is the left eye texture (vr::EVREye::Eye_left), layer 1 is the right // eye texture (vr::EVREye::Eye_Right) + + TextureType_Reserved = 7, }; enum EColorSpace @@ -432,6 +434,7 @@ enum ETrackedDeviceProperty Prop_EstimatedDeviceFirstUseTime_Int32 = 1051, Prop_DevicePowerUsage_Float = 1052, Prop_IgnoreMotionForStandby_Bool = 1053, + Prop_ActualTrackingSystemName_String = 1054, // the literal local driver name in case someone is playing games with prop 1000 // Properties that are unique to TrackedDeviceClass_HMD Prop_ReportsTimeSinceVSync_Bool = 2000, @@ -537,6 +540,8 @@ enum ETrackedDeviceProperty Prop_Hmd_SupportsRoomViewDirect_Bool = 2105, Prop_Hmd_SupportsAppThrottling_Bool = 2106, Prop_Hmd_SupportsGpuBusMonitoring_Bool = 2107, + Prop_DriverDisplaysIPDChanges_Bool = 2108, + Prop_Driver_Reserved_01 = 2109, Prop_DSCVersion_Int32 = 2110, Prop_DSCSliceCount_Int32 = 2111, @@ -697,6 +702,9 @@ enum EVRSubmitFlags // If the texture pointer passed in is an OpenGL Array texture, set this flag Submit_GlArrayTexture = 0x80, + // If the texture is an EGL texture and not an glX/wGL texture (Linux only, currently) + Submit_IsEgl = 0x100, + // Do not use Submit_Reserved2 = 0x08000, Submit_Reserved3 = 0x10000, @@ -768,6 +776,8 @@ enum EVREventType VREvent_PropertyChanged = 111, VREvent_WirelessDisconnect = 112, VREvent_WirelessReconnect = 113, + VREvent_Reserved_01 = 114, + VREvent_Reserved_02 = 115, VREvent_ButtonPress = 200, // data is controller VREvent_ButtonUnpress = 201, // data is controller @@ -793,8 +803,8 @@ enum EVREventType VREvent_OverlayFocusChanged = 307, // data is overlay, global event VREvent_ReloadOverlays = 308, VREvent_ScrollSmooth = 309, // data is scroll - VREvent_LockMousePosition = 310, - VREvent_UnlockMousePosition = 311, + VREvent_LockMousePosition = 310, // data is mouse + VREvent_UnlockMousePosition = 311, // data is mouse VREvent_InputFocusCaptured = 400, // data is process DEPRECATED VREvent_InputFocusReleased = 401, // data is process DEPRECATED @@ -817,8 +827,8 @@ enum EVREventType VREvent_ConsoleOpened = 420, VREvent_ConsoleClosed = 421, - VREvent_OverlayShown = 500, - VREvent_OverlayHidden = 501, + VREvent_OverlayShown = 500, // Indicates that an overlay is now visible to someone and should be rendering normally. Reflects IVROverlay::IsOverlayVisible() becoming true. + VREvent_OverlayHidden = 501, // Indicates that an overlay is no longer visible to someone and doesn't need to render frames. Reflects IVROverlay::IsOverlayVisible() becoming false. VREvent_DashboardActivated = 502, VREvent_DashboardDeactivated = 503, //VREvent_DashboardThumbSelected = 504, // Sent to the overlay manager - data is overlay - No longer sent @@ -858,6 +868,8 @@ enum EVREventType VREvent_OverlayClosed = 534, + VREvent_DashboardThumbChanged = 535, // Sent when a dashboard thumbnail image changes + VREvent_Notification_Shown = 600, VREvent_Notification_Hidden = 601, VREvent_Notification_BeginInteraction = 602, @@ -905,6 +917,7 @@ enum EVREventType VREvent_GpuSpeedSectionSettingChanged = 869, VREvent_WindowsMRSectionSettingChanged = 870, VREvent_OtherSectionSettingChanged = 871, + VREvent_AnyDriverSettingsChanged = 872, VREvent_StatusUpdate = 900, @@ -915,9 +928,11 @@ enum EVREventType VREvent_FirmwareUpdateStarted = 1100, VREvent_FirmwareUpdateFinished = 1101, - VREvent_KeyboardClosed = 1200, + VREvent_KeyboardClosed = 1200, // DEPRECATED: Sent only to the overlay it closed for, or globally if it was closed for a scene app VREvent_KeyboardCharInput = 1201, VREvent_KeyboardDone = 1202, // Sent when DONE button clicked on keyboard + VREvent_KeyboardOpened_Global = 1203, // Sent globally when the keyboard is opened. data.keyboard.overlayHandle is who it was opened for (scene app if k_ulOverlayHandleInvalid) + VREvent_KeyboardClosed_Global = 1204, // Sent globally when the keyboard is closed. data.keyboard.overlayHandle is who it was opened for (scene app if k_ulOverlayHandleInvalid) //VREvent_ApplicationTransitionStarted = 1300, //VREvent_ApplicationTransitionAborted = 1301, @@ -1056,6 +1071,10 @@ struct VREvent_Mouse_t { float x, y; // co-ords are in GL space, bottom left of the texture is 0,0 uint32_t button; // EVRMouseButton enum + + // if from an event triggered by cursor input on an overlay that supports multiple cursors, this is the index of + // which tracked cursor the event is for + uint32_t cursorIndex; }; /** used for simulated mouse wheel scroll */ @@ -1064,6 +1083,10 @@ struct VREvent_Scroll_t float xdelta, ydelta; uint32_t unused; float viewportscale; // For scrolling on an overlay with laser mouse, this is the overlay's vertical size relative to the overlay height. Range: [0,1] + + // if from an event triggered by cursor input on an overlay that supports multiple cursors, this is the index of + // which tracked cursor the event is for + uint32_t cursorIndex; }; /** when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger @@ -1108,9 +1131,13 @@ struct VREvent_Process_t /** Used for a few events about overlays */ struct VREvent_Overlay_t { - uint64_t overlayHandle; + uint64_t overlayHandle; // VROverlayHandle_t uint64_t devicePath; uint64_t memoryBlockId; + + // if from an event triggered by cursor input on an overlay that supports multiple cursors, this is the index of + // which tracked cursor the event is for + uint32_t cursorIndex; }; @@ -1120,11 +1147,12 @@ struct VREvent_Status_t uint32_t statusState; // EVRState enum }; -/** Used for keyboard events **/ +/** Used for keyboard events */ struct VREvent_Keyboard_t { - char cNewInput[8]; // Up to 11 bytes of new input - uint64_t uUserValue; // Possible flags about the new input + char cNewInput[8]; // 7 bytes of utf8 + null + uint64_t uUserValue; // caller specified opaque token + uint64_t overlayHandle; // VROverlayHandle_t }; struct VREvent_Ipd_t @@ -1833,6 +1861,10 @@ enum EVRInitError VRInitError_Compositor_SystemLayerCreateSession = 493, VRInitError_Compositor_CreateInverseDistortUVs = 494, VRInitError_Compositor_CreateBackbufferDepth = 495, + VRInitError_Compositor_CannotDRMLeaseDisplay = 496, + VRInitError_Compositor_CannotConnectToDisplayServer = 497, + VRInitError_Compositor_GnomeNoDRMLeasing = 498, + VRInitError_Compositor_FailedToInitializeEncoder = 499, VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, VRInitError_VendorSpecific_WindowsNotInDevMode = 1001, @@ -1971,6 +2003,9 @@ const uint32_t VRCompositor_ThrottleMask = 0xF00; // Number of frames the compos #define VR_COMPOSITOR_ADDITIONAL_PREDICTED_FRAMES( timing ) ( ( ( timing ).m_nReprojectionFlags & vr::VRCompositor_PredictionMask ) >> 4 ) #define VR_COMPOSITOR_NUMBER_OF_THROTTLED_FRAMES( timing ) ( ( ( timing ).m_nReprojectionFlags & vr::VRCompositor_ThrottleMask ) >> 8 ) +#if defined(__linux__) || defined(__APPLE__) +#pragma pack( push, 4 ) +#endif /** Provides a single frame's timing information to the app */ struct Compositor_FrameTiming { @@ -2014,6 +2049,9 @@ struct Compositor_FrameTiming uint32_t m_nNumVSyncsReadyForUse; uint32_t m_nNumVSyncsToFirstView; }; +#if defined(__linux__) || defined(__APPLE__) +#pragma pack( pop ) +#endif /** Provides compositor benchmark results to the app */ struct Compositor_BenchmarkResults @@ -2842,6 +2880,7 @@ namespace vr static const char * const k_pch_SteamVR_HDCPLegacyCompatibility_Bool = "hdcp14legacyCompatibility"; static const char * const k_pch_SteamVR_DisplayPortTrainingMode_Int = "displayPortTrainingMode"; static const char * const k_pch_SteamVR_UsePrism_Bool = "usePrism"; + static const char * const k_pch_SteamVR_AllowFallbackMirrorWindowLinux_Bool = "allowFallbackMirrorWindowLinux"; //----------------------------------------------------------------------------- // direct mode keys @@ -2991,6 +3030,9 @@ namespace vr static const char * const k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; static const char * const k_pch_Dashboard_StickyDashboard = "stickyDashboard"; static const char * const k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; + static const char * const k_pch_Dashboard_AllowVRGamepadUI_Bool = "allowVRGamepadUI"; + static const char * const k_pch_Dashboard_AllowDesktopBPMWithVRGamepadUI_Bool = "allowDesktopBPMWithVRGamepadUI"; + static const char * const k_pch_Dashboard_SteamMatchesHMDFramerate = "steamMatchesHMDFramerate"; //----------------------------------------------------------------------------- // model skin keys @@ -3041,7 +3083,8 @@ namespace vr // Last known keys for righting recovery static const char * const k_pch_LastKnown_Section = "LastKnown"; static const char* const k_pch_LastKnown_HMDManufacturer_String = "HMDManufacturer"; - static const char* const k_pch_LastKnown_HMDModel_String = "HMDModel"; + static const char *const k_pch_LastKnown_HMDModel_String = "HMDModel"; + static const char* const k_pch_LastKnown_ActualHMDDriver_String = "ActualHMDDriver"; //----------------------------------------------------------------------------- // Dismissed warnings @@ -3842,8 +3885,28 @@ namespace vr // If this is set, the alpha values of the overlay texture will be ignored VROverlayFlags_IgnoreTextureAlpha = 1 << 22, + // If this is set, this overlay will have a control bar drawn underneath of it in the dashboard. + VROverlayFlags_EnableControlBar = 1 << 23, + + // If this is set, the overlay control bar will provide a button to toggle the keyboard. + VROverlayFlags_EnableControlBarKeyboard = 1 << 24, + + // If this is set, the overlay control bar will provide a "close" button which will send a + // VREvent_OverlayClosed event to the overlay when pressed. Applications that use this flag are responsible + // for responding to the event with something that approximates "closing" behavior, such as destroying their + // overlay and/or shutting down their application. + VROverlayFlags_EnableControlBarClose = 1 << 25, + // Do not use VROverlayFlags_Reserved = 1 << 26, + + // If this is set, click stabilization will be applied to the laser interaction so that clicks more reliably + // trigger on the user's intended target + VROverlayFlags_EnableClickStabilization = 1 << 27, + + // If this is set, laser mouse pointer events may be sent for the secondary laser. These events will have + // cursorIndex set to 0 for the primary laser and 1 for the secondary. + VROverlayFlags_MultiCursor = 1 << 28, }; enum VRMessageOverlayResponse @@ -3923,8 +3986,16 @@ namespace vr enum EKeyboardFlags { - KeyboardFlag_Minimal = 1 << 0, // makes the keyboard send key events immediately instead of accumulating a buffer - KeyboardFlag_Modal = 2 << 0, // makes the keyboard take all focus and dismiss when clicking off the panel + /** Makes the keyboard send key events immediately instead of accumulating a buffer */ + KeyboardFlag_Minimal = 1 << 0, + /** Makes the keyboard take all focus and dismiss when clicking off the panel */ + KeyboardFlag_Modal = 1 << 1, + /** Shows arrow keys on the keyboard when in minimal mode. Buffered (non-minimal) mode always has them. In minimal + * mode, when arrow keys are pressed, they send ANSI escape sequences (e.g. "\x1b[D" for left arrow). */ + KeyboardFlag_ShowArrowKeys = 1 << 2, + /** Shows the hide keyboard button instead of a Done button. The Done key sends a VREvent_KeyboardDone when + * clicked. Hide only sends the Closed event. */ + KeyboardFlag_HideDoneKey = 1 << 3, }; /** Defines the project used in an overlay that is using SetOverlayTransformProjection */ @@ -4095,13 +4166,13 @@ namespace vr ETrackingUniverseOrigin eTrackingOrigin, const HmdMatrix34_t* pmatTrackingOriginToOverlayTransform, const VROverlayProjection_t *pProjection, vr::EVREye eEye ) = 0; - /** Shows the VR overlay. For dashboard overlays, only the Dashboard Manager is allowed to call this. */ + /** Shows the VR overlay. Not applicable for Dashboard Overlays. */ virtual EVROverlayError ShowOverlay( VROverlayHandle_t ulOverlayHandle ) = 0; - /** Hides the VR overlay. For dashboard overlays, only the Dashboard Manager is allowed to call this. */ + /** Hides the VR overlay. Not applicable for Dashboard Overlays. */ virtual EVROverlayError HideOverlay( VROverlayHandle_t ulOverlayHandle ) = 0; - /** Returns true if the overlay is visible. */ + /** Returns true if the overlay is currently visible, applicable for all overlay types except Dashboard Thumbnail overlays. VREvent_OverlayShown and VREvent_OverlayHidden reflect changes to this value. */ virtual bool IsOverlayVisible( VROverlayHandle_t ulOverlayHandle ) = 0; /** Get the transform in 3d space associated with a specific 2d point in the overlay's coordinate space (where 0,0 is the lower left). -Z points out of the overlay */ @@ -4351,11 +4422,14 @@ namespace vr namespace vr { -static const char * const k_pch_Controller_Component_GDC2015 = "gdc2015"; // Canonical coordinate system of the gdc 2015 wired controller, provided for backwards compatibility -static const char * const k_pch_Controller_Component_Base = "base"; // For controllers with an unambiguous 'base'. -static const char * const k_pch_Controller_Component_Tip = "tip"; // For controllers with an unambiguous 'tip' (used for 'laser-pointing') -static const char * const k_pch_Controller_Component_HandGrip = "handgrip"; // Neutral, ambidextrous hand-pose when holding controller. On plane between neutrally posed index finger and thumb -static const char * const k_pch_Controller_Component_Status = "status"; // 1:1 aspect ratio status area, with canonical [0,1] uv mapping +static const char * const k_pch_Controller_Component_GDC2015 = "gdc2015"; // Canonical coordinate system of the gdc 2015 wired controller, provided for backwards compatibility +static const char * const k_pch_Controller_Component_Base = "base"; // For controllers with an unambiguous 'base'. +static const char * const k_pch_Controller_Component_Tip = "tip"; // OpenVR: For controllers with an unambiguous 'tip' (used for 'laser-pointing') +static const char * const k_pch_Controller_Component_OpenXR_Aim= "openxr_aim"; // OpenXR: For controllers with an unambiguous 'tip' (used for 'laser-pointing') +static const char * const k_pch_Controller_Component_HandGrip = "handgrip"; // OpenVR: Neutral, ambidextrous hand-pose when holding controller. On plane between neutrally posed index finger and thumb +static const char * const k_pch_Controller_Component_OpenXR_Grip = "openxr_grip"; // OpenXR: Neutral, ambidextrous hand-pose when holding controller. On plane between neutrally posed index finger and thumb +static const char * const k_pch_Controller_Component_OpenXR_HandModel = "openxr_handmodel"; // OpenXR: Pose that can be used to place hand models & visuals that aren't reliant on the physical shape of a controller +static const char * const k_pch_Controller_Component_Status = "status"; // 1:1 aspect ratio status area, with canonical [0,1] uv mapping #pragma pack( push, 8 ) @@ -5197,7 +5271,7 @@ static const uint64_t k_ulInvalidIOBufferHandle = 0; virtual bool HasReaders( vr::IOBufferHandle_t ulBuffer ) = 0; }; - static const char *IVRIOBuffer_Version = "IVRIOBuffer_002"; + static const char * const IVRIOBuffer_Version = "IVRIOBuffer_002"; } // ivrspatialanchors.h diff --git a/alvr/server/cpp/openvr/headers/openvr_driver.h b/alvr/server/cpp/openvr/headers/openvr_driver.h index ee885beb77..671a6ca3b2 100644 --- a/alvr/server/cpp/openvr/headers/openvr_driver.h +++ b/alvr/server/cpp/openvr/headers/openvr_driver.h @@ -15,9 +15,9 @@ namespace vr { - static const uint32_t k_nSteamVRVersionMajor = 1; - static const uint32_t k_nSteamVRVersionMinor = 26; - static const uint32_t k_nSteamVRVersionBuild = 7; + static const uint32_t k_nSteamVRVersionMajor = 2; + static const uint32_t k_nSteamVRVersionMinor = 0; + static const uint32_t k_nSteamVRVersionBuild = 10; } // namespace vr // public_vrtypes.h @@ -133,6 +133,8 @@ enum ETextureType TextureType_Metal = 6, // Handle is a MTLTexture conforming to the MTLSharedTexture protocol. Textures submitted to IVRCompositor::Submit which // are of type MTLTextureType2DArray assume layer 0 is the left eye texture (vr::EVREye::Eye_left), layer 1 is the right // eye texture (vr::EVREye::Eye_Right) + + TextureType_Reserved = 7, }; enum EColorSpace @@ -432,6 +434,7 @@ enum ETrackedDeviceProperty Prop_EstimatedDeviceFirstUseTime_Int32 = 1051, Prop_DevicePowerUsage_Float = 1052, Prop_IgnoreMotionForStandby_Bool = 1053, + Prop_ActualTrackingSystemName_String = 1054, // the literal local driver name in case someone is playing games with prop 1000 // Properties that are unique to TrackedDeviceClass_HMD Prop_ReportsTimeSinceVSync_Bool = 2000, @@ -537,6 +540,8 @@ enum ETrackedDeviceProperty Prop_Hmd_SupportsRoomViewDirect_Bool = 2105, Prop_Hmd_SupportsAppThrottling_Bool = 2106, Prop_Hmd_SupportsGpuBusMonitoring_Bool = 2107, + Prop_DriverDisplaysIPDChanges_Bool = 2108, + Prop_Driver_Reserved_01 = 2109, Prop_DSCVersion_Int32 = 2110, Prop_DSCSliceCount_Int32 = 2111, @@ -697,6 +702,9 @@ enum EVRSubmitFlags // If the texture pointer passed in is an OpenGL Array texture, set this flag Submit_GlArrayTexture = 0x80, + // If the texture is an EGL texture and not an glX/wGL texture (Linux only, currently) + Submit_IsEgl = 0x100, + // Do not use Submit_Reserved2 = 0x08000, Submit_Reserved3 = 0x10000, @@ -768,6 +776,8 @@ enum EVREventType VREvent_PropertyChanged = 111, VREvent_WirelessDisconnect = 112, VREvent_WirelessReconnect = 113, + VREvent_Reserved_01 = 114, + VREvent_Reserved_02 = 115, VREvent_ButtonPress = 200, // data is controller VREvent_ButtonUnpress = 201, // data is controller @@ -793,8 +803,8 @@ enum EVREventType VREvent_OverlayFocusChanged = 307, // data is overlay, global event VREvent_ReloadOverlays = 308, VREvent_ScrollSmooth = 309, // data is scroll - VREvent_LockMousePosition = 310, - VREvent_UnlockMousePosition = 311, + VREvent_LockMousePosition = 310, // data is mouse + VREvent_UnlockMousePosition = 311, // data is mouse VREvent_InputFocusCaptured = 400, // data is process DEPRECATED VREvent_InputFocusReleased = 401, // data is process DEPRECATED @@ -817,8 +827,8 @@ enum EVREventType VREvent_ConsoleOpened = 420, VREvent_ConsoleClosed = 421, - VREvent_OverlayShown = 500, - VREvent_OverlayHidden = 501, + VREvent_OverlayShown = 500, // Indicates that an overlay is now visible to someone and should be rendering normally. Reflects IVROverlay::IsOverlayVisible() becoming true. + VREvent_OverlayHidden = 501, // Indicates that an overlay is no longer visible to someone and doesn't need to render frames. Reflects IVROverlay::IsOverlayVisible() becoming false. VREvent_DashboardActivated = 502, VREvent_DashboardDeactivated = 503, //VREvent_DashboardThumbSelected = 504, // Sent to the overlay manager - data is overlay - No longer sent @@ -858,6 +868,8 @@ enum EVREventType VREvent_OverlayClosed = 534, + VREvent_DashboardThumbChanged = 535, // Sent when a dashboard thumbnail image changes + VREvent_Notification_Shown = 600, VREvent_Notification_Hidden = 601, VREvent_Notification_BeginInteraction = 602, @@ -905,6 +917,7 @@ enum EVREventType VREvent_GpuSpeedSectionSettingChanged = 869, VREvent_WindowsMRSectionSettingChanged = 870, VREvent_OtherSectionSettingChanged = 871, + VREvent_AnyDriverSettingsChanged = 872, VREvent_StatusUpdate = 900, @@ -915,9 +928,11 @@ enum EVREventType VREvent_FirmwareUpdateStarted = 1100, VREvent_FirmwareUpdateFinished = 1101, - VREvent_KeyboardClosed = 1200, + VREvent_KeyboardClosed = 1200, // DEPRECATED: Sent only to the overlay it closed for, or globally if it was closed for a scene app VREvent_KeyboardCharInput = 1201, VREvent_KeyboardDone = 1202, // Sent when DONE button clicked on keyboard + VREvent_KeyboardOpened_Global = 1203, // Sent globally when the keyboard is opened. data.keyboard.overlayHandle is who it was opened for (scene app if k_ulOverlayHandleInvalid) + VREvent_KeyboardClosed_Global = 1204, // Sent globally when the keyboard is closed. data.keyboard.overlayHandle is who it was opened for (scene app if k_ulOverlayHandleInvalid) //VREvent_ApplicationTransitionStarted = 1300, //VREvent_ApplicationTransitionAborted = 1301, @@ -1056,6 +1071,10 @@ struct VREvent_Mouse_t { float x, y; // co-ords are in GL space, bottom left of the texture is 0,0 uint32_t button; // EVRMouseButton enum + + // if from an event triggered by cursor input on an overlay that supports multiple cursors, this is the index of + // which tracked cursor the event is for + uint32_t cursorIndex; }; /** used for simulated mouse wheel scroll */ @@ -1064,6 +1083,10 @@ struct VREvent_Scroll_t float xdelta, ydelta; uint32_t unused; float viewportscale; // For scrolling on an overlay with laser mouse, this is the overlay's vertical size relative to the overlay height. Range: [0,1] + + // if from an event triggered by cursor input on an overlay that supports multiple cursors, this is the index of + // which tracked cursor the event is for + uint32_t cursorIndex; }; /** when in mouse input mode you can receive data from the touchpad, these events are only sent if the users finger @@ -1108,9 +1131,13 @@ struct VREvent_Process_t /** Used for a few events about overlays */ struct VREvent_Overlay_t { - uint64_t overlayHandle; + uint64_t overlayHandle; // VROverlayHandle_t uint64_t devicePath; uint64_t memoryBlockId; + + // if from an event triggered by cursor input on an overlay that supports multiple cursors, this is the index of + // which tracked cursor the event is for + uint32_t cursorIndex; }; @@ -1120,11 +1147,12 @@ struct VREvent_Status_t uint32_t statusState; // EVRState enum }; -/** Used for keyboard events **/ +/** Used for keyboard events */ struct VREvent_Keyboard_t { - char cNewInput[8]; // Up to 11 bytes of new input - uint64_t uUserValue; // Possible flags about the new input + char cNewInput[8]; // 7 bytes of utf8 + null + uint64_t uUserValue; // caller specified opaque token + uint64_t overlayHandle; // VROverlayHandle_t }; struct VREvent_Ipd_t @@ -1833,6 +1861,10 @@ enum EVRInitError VRInitError_Compositor_SystemLayerCreateSession = 493, VRInitError_Compositor_CreateInverseDistortUVs = 494, VRInitError_Compositor_CreateBackbufferDepth = 495, + VRInitError_Compositor_CannotDRMLeaseDisplay = 496, + VRInitError_Compositor_CannotConnectToDisplayServer = 497, + VRInitError_Compositor_GnomeNoDRMLeasing = 498, + VRInitError_Compositor_FailedToInitializeEncoder = 499, VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, VRInitError_VendorSpecific_WindowsNotInDevMode = 1001, @@ -1971,6 +2003,9 @@ const uint32_t VRCompositor_ThrottleMask = 0xF00; // Number of frames the compos #define VR_COMPOSITOR_ADDITIONAL_PREDICTED_FRAMES( timing ) ( ( ( timing ).m_nReprojectionFlags & vr::VRCompositor_PredictionMask ) >> 4 ) #define VR_COMPOSITOR_NUMBER_OF_THROTTLED_FRAMES( timing ) ( ( ( timing ).m_nReprojectionFlags & vr::VRCompositor_ThrottleMask ) >> 8 ) +#if defined(__linux__) || defined(__APPLE__) +#pragma pack( push, 4 ) +#endif /** Provides a single frame's timing information to the app */ struct Compositor_FrameTiming { @@ -2014,6 +2049,9 @@ struct Compositor_FrameTiming uint32_t m_nNumVSyncsReadyForUse; uint32_t m_nNumVSyncsToFirstView; }; +#if defined(__linux__) || defined(__APPLE__) +#pragma pack( pop ) +#endif /** Provides compositor benchmark results to the app */ struct Compositor_BenchmarkResults @@ -2434,6 +2472,7 @@ namespace vr static const char * const k_pch_SteamVR_HDCPLegacyCompatibility_Bool = "hdcp14legacyCompatibility"; static const char * const k_pch_SteamVR_DisplayPortTrainingMode_Int = "displayPortTrainingMode"; static const char * const k_pch_SteamVR_UsePrism_Bool = "usePrism"; + static const char * const k_pch_SteamVR_AllowFallbackMirrorWindowLinux_Bool = "allowFallbackMirrorWindowLinux"; //----------------------------------------------------------------------------- // direct mode keys @@ -2583,6 +2622,9 @@ namespace vr static const char * const k_pch_Dashboard_UseStandaloneSystemLayer = "standaloneSystemLayer"; static const char * const k_pch_Dashboard_StickyDashboard = "stickyDashboard"; static const char * const k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; + static const char * const k_pch_Dashboard_AllowVRGamepadUI_Bool = "allowVRGamepadUI"; + static const char * const k_pch_Dashboard_AllowDesktopBPMWithVRGamepadUI_Bool = "allowDesktopBPMWithVRGamepadUI"; + static const char * const k_pch_Dashboard_SteamMatchesHMDFramerate = "steamMatchesHMDFramerate"; //----------------------------------------------------------------------------- // model skin keys @@ -2633,7 +2675,8 @@ namespace vr // Last known keys for righting recovery static const char * const k_pch_LastKnown_Section = "LastKnown"; static const char* const k_pch_LastKnown_HMDManufacturer_String = "HMDManufacturer"; - static const char* const k_pch_LastKnown_HMDModel_String = "HMDModel"; + static const char *const k_pch_LastKnown_HMDModel_String = "HMDModel"; + static const char* const k_pch_LastKnown_ActualHMDDriver_String = "ActualHMDDriver"; //----------------------------------------------------------------------------- // Dismissed warnings @@ -2816,9 +2859,12 @@ namespace vr * the upper left of that eye's viewport and 1,1 in the lower right of that eye's viewport. */ virtual DistortionCoordinates_t ComputeDistortion( EVREye eEye, float fU, float fV ) = 0; + /** Computes the result of the inverse distortion function for the specified eye, channel, and input UV. + * Operation can fail, returns success/failure, on success result is stored in *pResult */ + virtual bool ComputeInverseDistortion( HmdVector2_t *pResult, EVREye eEye, uint32_t unChannel, float fU, float fV ) = 0; }; - static const char *IVRDisplayComponent_Version = "IVRDisplayComponent_002"; + static const char *IVRDisplayComponent_Version = "IVRDisplayComponent_003"; } @@ -3131,6 +3177,10 @@ class CVRPropertyHelpers public: CVRPropertyHelpers( IVRProperties * pProperties ) : m_pProperties( pProperties ) {} + /** Gets the typed property according to the caller's expected return type. */ + template + T GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ); + /** Returns a scaler property. If the device index is not valid or the property value type does not match, * this function will return false. */ bool GetBoolProperty( PropertyContainerHandle_t ulContainerHandle, ETrackedDeviceProperty prop, ETrackedPropertyError *pError = 0L ); @@ -3147,7 +3197,6 @@ class CVRPropertyHelpers * null. Strings will always fit in buffers of k_unMaxPropertyStringSize characters. */ uint32_t GetProperty( PropertyContainerHandle_t ulContainerHandle, ETrackedDeviceProperty prop, VR_OUT_STRING() void *pvBuffer, uint32_t unBufferSize, PropertyTypeTag_t *punTag, ETrackedPropertyError *pError = 0L ); - /** Returns a string property. If the device index is not valid or the property is not a string type this function will * return 0. Otherwise it returns the length of the number of bytes necessary to hold this string including the trailing * null. Strings will always fit in buffers of k_unMaxPropertyStringSize characters. */ @@ -3200,6 +3249,71 @@ class CVRPropertyHelpers }; +/** Returns a string property as a std::string. If the device index is not valid or the property is not a string type this function will +* return an empty string. */ +template <> +inline std::string CVRPropertyHelpers::GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ) +{ + return GetStringProperty( ulContainer, prop, peError ); +} + + +template <> +inline bool CVRPropertyHelpers::GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ) +{ + return GetBoolProperty( ulContainer, prop, peError ); +} + + +template <> +inline float CVRPropertyHelpers::GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ) +{ + return GetFloatProperty( ulContainer, prop, peError ); +} + + +template <> +inline int32_t CVRPropertyHelpers::GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ) +{ + return GetInt32Property( ulContainer, prop, peError ); +} + + +template <> +inline uint64_t CVRPropertyHelpers::GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ) +{ + return GetUint64Property( ulContainer, prop, peError ); +} + + +template <> +inline HmdVector2_t CVRPropertyHelpers::GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ) +{ + return GetVec2Property( ulContainer, prop, peError ); +} + + +template <> +inline HmdVector3_t CVRPropertyHelpers::GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ) +{ + return GetVec3Property( ulContainer, prop, peError ); +} + + +template <> +inline HmdVector4_t CVRPropertyHelpers::GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ) +{ + return GetVec4Property( ulContainer, prop, peError ); +} + + +template <> +inline double CVRPropertyHelpers::GetTypedProperty( vr::PropertyContainerHandle_t ulContainer, vr::ETrackedDeviceProperty prop, vr::ETrackedPropertyError *peError ) +{ + return GetDoubleProperty( ulContainer, prop, peError ); +} + + inline uint32_t CVRPropertyHelpers::GetProperty( PropertyContainerHandle_t ulContainerHandle, ETrackedDeviceProperty prop, VR_OUT_STRING() void *pvBuffer, uint32_t unBufferSize, PropertyTypeTag_t *punTag, ETrackedPropertyError *pError ) { PropertyRead_t batch; @@ -3369,19 +3483,19 @@ inline uint64_t CVRPropertyHelpers::GetUint64Property( PropertyContainerHandle_t inline HmdVector2_t CVRPropertyHelpers::GetVec2Property( PropertyContainerHandle_t ulContainerHandle, ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) { - HmdVector2_t defaultval = { 0 }; + HmdVector2_t defaultval = { { 0, 0 } }; return GetPropertyHelper( ulContainerHandle, prop, pError, defaultval, k_unHmdVector2PropertyTag ); } inline HmdVector3_t CVRPropertyHelpers::GetVec3Property( PropertyContainerHandle_t ulContainerHandle, ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) { - HmdVector3_t defaultval = { 0 }; + HmdVector3_t defaultval = { { 0, 0, 0 } }; return GetPropertyHelper( ulContainerHandle, prop, pError, defaultval, k_unHmdVector3PropertyTag ); } inline HmdVector4_t CVRPropertyHelpers::GetVec4Property( PropertyContainerHandle_t ulContainerHandle, ETrackedDeviceProperty prop, ETrackedPropertyError *pError ) { - HmdVector4_t defaultval = { 0 }; + HmdVector4_t defaultval = { { 0, 0, 0, 0 } }; return GetPropertyHelper( ulContainerHandle, prop, pError, defaultval, k_unHmdVector4PropertyTag ); } @@ -3854,7 +3968,7 @@ static const uint64_t k_ulInvalidIOBufferHandle = 0; virtual bool HasReaders( vr::IOBufferHandle_t ulBuffer ) = 0; }; - static const char *IVRIOBuffer_Version = "IVRIOBuffer_002"; + static const char * const IVRIOBuffer_Version = "IVRIOBuffer_002"; } // ivrdrivermanager.h diff --git a/alvr/server/cpp/openvr/lib/openvr_api.lib b/alvr/server/cpp/openvr/lib/openvr_api.lib index e4cc9b92c2b89cdd791aff31bc5c701b869dcf6d..76523aceca8101109014dbb8d17e1ac9b09042e2 100644 GIT binary patch delta 100 zcmeyP^+#($8Xw;#1_lu3%>&_$C0vZ6VL<_jB^kvG@$s3t1@TbcS0|N;2Z35wqC0vZ+KADB3nJHmG4Ds=qxdrhs?&MlV@yWdGlADh* m-eqFT<7Hsj#5Z{biyb=~11kdy1N-E+EQ&~M+090*UIG9Oc^gvz From 7a26f1e99d5213b8c91934379c5c91b4cd62118a Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Tue, 19 Dec 2023 17:54:03 +0000 Subject: [PATCH 43/60] output .pdbs in win build dir --- alvr/filesystem/src/lib.rs | 9 +++++++++ alvr/xtask/src/main.rs | 19 ++++++++++++++++++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/alvr/filesystem/src/lib.rs b/alvr/filesystem/src/lib.rs index a15932ab42..f66d0775a6 100644 --- a/alvr/filesystem/src/lib.rs +++ b/alvr/filesystem/src/lib.rs @@ -209,6 +209,10 @@ impl Layout { self.executables_dir.join(exe) } + pub fn launcher_pdb(&self) -> PathBuf { + self.executables_dir.join("alvr_launcher.pdb") + } + pub fn resources_dir(&self) -> PathBuf { self.openvr_driver_root_dir.join("resources") } @@ -267,6 +271,11 @@ impl Layout { .join(format!("driver_alvr_server.{ext}")) } + pub fn openvr_driver_pdb(&self) -> PathBuf { + self.openvr_driver_lib_dir() + .join(format!("driver_alvr_server.pdb")) + } + // path to the manifest file for openVR pub fn openvr_driver_manifest(&self) -> PathBuf { self.openvr_driver_root_dir.join("driver.vrdrivermanifest") diff --git a/alvr/xtask/src/main.rs b/alvr/xtask/src/main.rs index 4fc93ea507..6de2179d6e 100644 --- a/alvr/xtask/src/main.rs +++ b/alvr/xtask/src/main.rs @@ -76,6 +76,12 @@ pub fn remove_build_dir() { fs::remove_dir_all(&build_dir).ok(); } +fn copy_if_windows, Q: AsRef>(from: P, to: Q) { + if cfg!(windows) { + fs::copy(from, to).unwrap(); + } +} + pub fn build_server( is_release: bool, experiments: bool, @@ -182,7 +188,10 @@ pub fn build_server( .into_iter() .filter_map(|maybe_entry| maybe_entry.ok()) .map(|entry| entry.into_path()) - .filter(|path| path.file_name().unwrap().to_string_lossy().contains(".dll")) + .filter(|path| { + path.file_name().unwrap().to_string_lossy().contains(".dll") + || path.file_name().unwrap().to_string_lossy().contains(".pdb") + }) { fs::copy(dll.clone(), bin_dir.join(dll.file_name().unwrap())).unwrap(); } @@ -215,6 +224,10 @@ pub fn build_server( layout.openvr_driver_lib(), ) .unwrap(); + copy_if_windows( + artifacts_dir.join("alvr_server.pdb"), + layout.openvr_driver_pdb(), + ); command::run_in( &afs::workspace_dir().join("alvr/launcher"), @@ -229,6 +242,10 @@ pub fn build_server( layout.launcher_exe(), ) .unwrap(); + copy_if_windows( + artifacts_dir.join("alvr_launcher.pdb"), + layout.launcher_pdb(), + ); if experiments { let dir_content = dirx::get_dir_content2( From 68d6b9108c37d1ee80749d09f98656822132e113 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Tue, 19 Dec 2023 17:58:07 +0000 Subject: [PATCH 44/60] small optimizations * Disable spamming stderr messages in release builds * Replace redundant x^2 fns with x*x expressions. --- alvr/server/cpp/ALVR-common/reedsolomon/rs.c | 52 +++++++++---------- alvr/server/cpp/ALVR-common/reedsolomon/rs.h | 2 +- .../cpp/alvr_server/ClientConnection.cpp | 7 +-- alvr/server/cpp/alvr_server/PoseHistory.cpp | 3 +- alvr/server/cpp/alvr_server/VSyncThread.cpp | 8 +-- .../platform/win32/OvrDirectModeComponent.cpp | 5 -- alvr/server/cpp/platform/win32/VideoEncoder.h | 1 + 7 files changed, 38 insertions(+), 40 deletions(-) diff --git a/alvr/server/cpp/ALVR-common/reedsolomon/rs.c b/alvr/server/cpp/ALVR-common/reedsolomon/rs.c index ad1f7c56fc..28b5e4c446 100644 --- a/alvr/server/cpp/ALVR-common/reedsolomon/rs.c +++ b/alvr/server/cpp/ALVR-common/reedsolomon/rs.c @@ -320,9 +320,17 @@ static int invert_mat(gf *src, int k) { } for (col = k-1 ; col >= 0 ; col-- ) { if (indxr[col] <0 || indxr[col] >= k) +#ifdef NDEBUG + continue; +#else fprintf(stderr, "AARGH, indxr[col] %d\n", indxr[col]); +#endif else if (indxc[col] <0 || indxc[col] >= k) +#ifdef NDEBUG + continue; +#else fprintf(stderr, "AARGH, indxc[col] %d\n", indxc[col]); +#endif else if (indxr[col] != indxc[col] ) { for (row = 0 ; row < k ; row++ ) @@ -375,16 +383,14 @@ void reed_solomon_init(void) { init_mul_table(); } -reed_solomon* reed_solomon_new(int data_shards, int parity_shards) { +int reed_solomon_new(int data_shards, int parity_shards, reed_solomon* rs) { gf* vm = NULL; gf* top = NULL; int err = 0; - reed_solomon* rs = NULL; do { - rs = (reed_solomon *)malloc(sizeof(reed_solomon)); if (NULL == rs) - return NULL; + return -1; rs->data_shards = data_shards; rs->parity_shards = parity_shards; @@ -440,39 +446,33 @@ reed_solomon* reed_solomon_new(int data_shards, int parity_shards) { free(top); vm = NULL; top = NULL; - return rs; + return 0; } while(0); - fprintf(stderr, "err=%d\n", err); + if (err != 0) { + fprintf(stderr, "err=%d\n", err); + } + if (NULL != vm) free(vm); - if (NULL != top) free(top); - if (NULL != rs) { - if (NULL != rs->m) - free(rs->m); - - if (NULL != rs->parity) - free(rs->parity); - - free(rs); - } - - return NULL; + reed_solomon_release(rs); + return -1; } void reed_solomon_release(reed_solomon* rs) { - if (NULL != rs) { - if (NULL != rs->m) - free(rs->m); - - if (NULL != rs->parity) - free(rs->parity); - - free(rs); + if (NULL == rs) + return ; + if (NULL != rs->m) { + free(rs->m); + rs->m = NULL; + } + if (NULL != rs->parity) { + free(rs->parity); + rs->parity = NULL; } } diff --git a/alvr/server/cpp/ALVR-common/reedsolomon/rs.h b/alvr/server/cpp/ALVR-common/reedsolomon/rs.h index afb0b92fca..72f9f467c8 100644 --- a/alvr/server/cpp/ALVR-common/reedsolomon/rs.h +++ b/alvr/server/cpp/ALVR-common/reedsolomon/rs.h @@ -21,7 +21,7 @@ extern "C" { * */ void reed_solomon_init(void); - reed_solomon* reed_solomon_new(int data_shards, int parity_shards); + int reed_solomon_new(int data_shards, int parity_shards, reed_solomon* rs_out); void reed_solomon_release(reed_solomon* rs); /** diff --git a/alvr/server/cpp/alvr_server/ClientConnection.cpp b/alvr/server/cpp/alvr_server/ClientConnection.cpp index 9a979a1676..6f91237c46 100644 --- a/alvr/server/cpp/alvr_server/ClientConnection.cpp +++ b/alvr/server/cpp/alvr_server/ClientConnection.cpp @@ -36,7 +36,8 @@ void ClientConnection::FECSend(const uint8_t *buf, uint32_t len, uint64_t target Debug("reed_solomon_new. dataShards=%d totalParityShards=%d totalShards=%d blockSize=%d shardPackets=%d\n" , dataShards, totalParityShards, totalShards, blockSize, shardPackets); - reed_solomon *rs = reed_solomon_new(dataShards, totalParityShards); + reed_solomon rs = {}; + reed_solomon_new(dataShards, totalParityShards, &rs); std::vector shards(totalShards); @@ -53,10 +54,10 @@ void ClientConnection::FECSend(const uint8_t *buf, uint32_t len, uint64_t target shards[dataShards + i] = new uint8_t[blockSize]; } - const int ret = reed_solomon_encode(rs, &shards[0], totalShards, blockSize); + const int ret = reed_solomon_encode(&rs, &shards[0], totalShards, blockSize); assert(ret == 0); - reed_solomon_release(rs); + reed_solomon_release(&rs); thread_local uint8_t packetBuffer[2000]; VideoFrame *header = (VideoFrame *)packetBuffer; diff --git a/alvr/server/cpp/alvr_server/PoseHistory.cpp b/alvr/server/cpp/alvr_server/PoseHistory.cpp index 309a9be7ae..a525f0316c 100644 --- a/alvr/server/cpp/alvr_server/PoseHistory.cpp +++ b/alvr/server/cpp/alvr_server/PoseHistory.cpp @@ -49,7 +49,8 @@ std::optional PoseHistory::GetBestPoseMatch(c // And bottom side and right side of matrix should not be compared, because pPose does not contain that part of matrix. for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { - distance += pow(it->rotationMatrix.m[j][i] - pose.m[j][i], 2); + const float x = it->rotationMatrix.m[j][i] - pose.m[j][i]; + distance += (x * x); } } //LogDriver("diff %f %llu", distance, it->info.FrameIndex); diff --git a/alvr/server/cpp/alvr_server/VSyncThread.cpp b/alvr/server/cpp/alvr_server/VSyncThread.cpp index d099d74013..2c258b4dbf 100644 --- a/alvr/server/cpp/alvr_server/VSyncThread.cpp +++ b/alvr/server/cpp/alvr_server/VSyncThread.cpp @@ -19,11 +19,11 @@ void VSyncThread::Run() { const std::uint64_t interval = 1000 * 1000 / m_refreshRate; if (m_PreviousVsync + interval > current) { - const std::uint64_t sleepTimeMs = (m_PreviousVsync + interval - current) / 1000; + const std::uint64_t sleepTimeUs = (m_PreviousVsync + interval - current); - if (sleepTimeMs > 0) { - Debug("Sleep %llu ms for next VSync.\n", sleepTimeMs); - std::this_thread::sleep_for(std::chrono::milliseconds(sleepTimeMs)); + if (sleepTimeUs > 0) { + Debug("Sleep %llu us for next VSync.\n", sleepTimeUs); + std::this_thread::sleep_for(std::chrono::microseconds(sleepTimeUs)); } m_PreviousVsync += interval; diff --git a/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp b/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp index 0154b24dc8..d1e1601b80 100644 --- a/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp +++ b/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp @@ -181,11 +181,6 @@ void OvrDirectModeComponent::SubmitLayer(const SubmitLayerPerEye_t(&perEye)[2]) Warn("Too many layers submitted!\n"); } - if (Settings::Instance().m_DriverTestMode & 8) { - // Crash test - *(char*)0 = 1; - } - //CopyTexture(); } diff --git a/alvr/server/cpp/platform/win32/VideoEncoder.h b/alvr/server/cpp/platform/win32/VideoEncoder.h index 96faf71fc1..d4a2a7c146 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoder.h +++ b/alvr/server/cpp/platform/win32/VideoEncoder.h @@ -8,6 +8,7 @@ class VideoEncoder { public: + virtual ~VideoEncoder(){} virtual void Initialize() = 0; virtual void Shutdown() = 0; From e5058b6a899d3fdd5ebc280a3ab0409a8e41c43a Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Tue, 19 Dec 2023 18:03:34 +0000 Subject: [PATCH 45/60] Reuse frame buffer allocations for nvenc Re-use frame buffers and stop creating temp buffer re-creation for nvenc encoder backend --- alvr/server/cpp/platform/win32/NvEncoder.cpp | 13 +++++++------ alvr/server/cpp/platform/win32/NvEncoder.h | 4 ++-- .../cpp/platform/win32/VideoEncoderNVENC.cpp | 17 ++++++++--------- .../cpp/platform/win32/VideoEncoderNVENC.h | 2 ++ 4 files changed, 19 insertions(+), 17 deletions(-) diff --git a/alvr/server/cpp/platform/win32/NvEncoder.cpp b/alvr/server/cpp/platform/win32/NvEncoder.cpp index c385a83c77..d1a21c5da5 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.cpp +++ b/alvr/server/cpp/platform/win32/NvEncoder.cpp @@ -489,9 +489,8 @@ void NvEncoder::MapResources(uint32_t bfrIdx) } } -void NvEncoder::EncodeFrame(std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams) +std::size_t NvEncoder::EncodeFrame(std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams) { - vPacket.clear(); if (!IsHWEncoderInitialized()) { NVENC_THROW_ERROR("Encoder device not found", NV_ENC_ERR_NO_ENCODE_DEVICE); @@ -506,12 +505,13 @@ void NvEncoder::EncodeFrame(std::vector> &vPacket, NV_ENC_P if (nvStatus == NV_ENC_SUCCESS || nvStatus == NV_ENC_ERR_NEED_MORE_INPUT) { m_iToSend++; - GetEncodedPacket(m_vBitstreamOutputBuffer, vPacket, true); + return GetEncodedPacket(m_vBitstreamOutputBuffer, vPacket, true); } else { NVENC_THROW_ERROR("nvEncEncodePicture API failed", nvStatus); } + return 0; } void NvEncoder::RunMotionEstimation(std::vector &mvData) @@ -602,9 +602,9 @@ void NvEncoder::EndEncode(std::vector> &vPacket) GetEncodedPacket(m_vBitstreamOutputBuffer, vPacket, false); } -void NvEncoder::GetEncodedPacket(std::vector &vOutputBuffer, std::vector> &vPacket, bool bOutputDelay) +std::size_t NvEncoder::GetEncodedPacket(std::vector &vOutputBuffer, std::vector> &vPacket, bool bOutputDelay) { - unsigned i = 0; + std::size_t i = 0; int iEnd = bOutputDelay ? m_iToSend - m_nOutputDelay : m_iToSend; for (; m_iGot < iEnd; m_iGot++) { @@ -620,7 +620,7 @@ void NvEncoder::GetEncodedPacket(std::vector &vOutputBuffer, vPacket.push_back(std::vector()); } vPacket[i].clear(); - + if ((m_initializeParams.encodeGUID == NV_ENC_CODEC_AV1_GUID) && (m_bUseIVFContainer)) { if (m_bWriteIVFFileHeader) @@ -649,6 +649,7 @@ void NvEncoder::GetEncodedPacket(std::vector &vOutputBuffer, m_vMappedRefBuffers[m_iGot % m_nEncoderBuffer] = nullptr; } } + return i; } bool NvEncoder::Reconfigure(const NV_ENC_RECONFIGURE_PARAMS *pReconfigureParams) diff --git a/alvr/server/cpp/platform/win32/NvEncoder.h b/alvr/server/cpp/platform/win32/NvEncoder.h index ebe1bed336..c3e3a5d1ee 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.h +++ b/alvr/server/cpp/platform/win32/NvEncoder.h @@ -140,7 +140,7 @@ class NvEncoder * data, which has been copied to an input buffer obtained from the * GetNextInputFrame() function. */ - virtual void EncodeFrame(std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams = nullptr); + virtual std::size_t EncodeFrame(std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams = nullptr); /** * @brief This function to flush the encoder queue. @@ -380,7 +380,7 @@ class NvEncoder * This is called by DoEncode() function. If there is buffering enabled, * this may return without any output data. */ - void GetEncodedPacket(std::vector &vOutputBuffer, std::vector> &vPacket, bool bOutputDelay); + std::size_t GetEncodedPacket(std::vector &vOutputBuffer, std::vector> &vPacket, bool bOutputDelay); /** * @brief This is a private function which is used to initialize the bitstream buffers. diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index 0e586bc7f1..38355c5029 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -65,15 +65,15 @@ void VideoEncoderNVENC::Initialize() void VideoEncoderNVENC::Shutdown() { - std::vector> vPacket; + m_vPacket.clear(); if(m_NvNecoder) - m_NvNecoder->EndEncode(vPacket); + m_NvNecoder->EndEncode(m_vPacket); #ifndef NDEBUG - for (std::vector &packet : vPacket) + for (const auto &packet : m_vPacket) { if (fpOut) { - fpOut.write(reinterpret_cast(packet.data()), packet.size()); + fpOut.write(reinterpret_cast(packet.data()), packet.size()); } } #endif @@ -104,8 +104,6 @@ void VideoEncoderNVENC::Transmit(ID3D11Texture2D *pTexture, uint64_t presentatio } } - std::vector> vPacket; - const NvEncInputFrame* encoderInputFrame = m_NvNecoder->GetNextInputFrame(); ID3D11Texture2D *pInputTexture = reinterpret_cast(encoderInputFrame->inputPtr); @@ -116,17 +114,18 @@ void VideoEncoderNVENC::Transmit(ID3D11Texture2D *pTexture, uint64_t presentatio Debug("Inserting IDR frame.\n"); picParams.encodePicFlags = NV_ENC_PIC_FLAG_FORCEIDR; } - m_NvNecoder->EncodeFrame(vPacket, &picParams); + const std::size_t packetCount = m_NvNecoder->EncodeFrame(m_vPacket, &picParams); if (m_Listener) { m_Listener->GetStatistics()->EncodeOutput(GetSystemTimestampUs() - presentationTime); } - for (std::vector &packet : vPacket) + for (std::size_t packetIndex = 0; packetIndex < packetCount; ++packetIndex) { + const auto& packet = m_vPacket[packetIndex]; #ifndef NDEBUG if (fpOut) { - fpOut.write(reinterpret_cast(packet.data()), packet.size()); + fpOut.write(reinterpret_cast(packet.data()), packet.size()); } #endif if (m_Listener) { diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h index fe7bb54991..9cf745f412 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h @@ -34,6 +34,8 @@ class VideoEncoderNVENC : public VideoEncoder std::shared_ptr m_pD3DRender; std::shared_ptr m_Listener; + + std::vector> m_vPacket{}; int m_codec; int m_refreshRate; From ed2a391b77b950a296a4eb67075381ba12fc6d69 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Tue, 19 Dec 2023 18:19:50 +0000 Subject: [PATCH 46/60] Reduce redundant copies/allocs for frame packet sends * Add support for pre-allocating send buffers * Reduce some redundant copies/allocations for sending new frame packets. --- alvr/server/src/connection.rs | 9 ++--- alvr/server/src/lib.rs | 18 ++++++---- alvr/sockets/src/stream_socket/mod.rs | 48 ++++++++++++++++----------- 3 files changed, 44 insertions(+), 31 deletions(-) diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 18b0be6e06..0c971e2d55 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -798,10 +798,11 @@ async fn connection_pipeline() -> StrResult { let (data_sender, mut data_receiver) = tmpsc::unbounded_channel(); *VIDEO_SENDER.lock() = Some(data_sender); - while let Some((header, data)) = data_receiver.recv().await { - let mut buffer = socket_sender.new_buffer(&header, data.len())?; - buffer.get_mut().extend(data); - socket_sender.send_buffer(buffer).await.ok(); + while let Some(video_frame_packet_buffer) = data_receiver.recv().await { + socket_sender + .send_buffer(video_frame_packet_buffer) + .await + .ok(); } Ok(()) diff --git a/alvr/server/src/lib.rs b/alvr/server/src/lib.rs index de23e1511c..33349f8e8f 100644 --- a/alvr/server/src/lib.rs +++ b/alvr/server/src/lib.rs @@ -42,6 +42,8 @@ use tokio::{ sync::{Notify, broadcast, mpsc}, }; +type VideoFramePacket = alvr_sockets::SenderBuffer; + lazy_static! { // Since ALVR_DIR is needed to initialize logging, if error then just panic static ref FILESYSTEM_LAYOUT: Layout = @@ -51,7 +53,7 @@ lazy_static! { static ref RUNTIME: Mutex> = Mutex::new(Runtime::new().ok()); static ref MAYBE_WINDOW: Mutex>> = Mutex::new(None); - static ref VIDEO_SENDER: Mutex)>>> = + static ref VIDEO_SENDER: Mutex>> = Mutex::new(None); static ref HAPTICS_SENDER: Mutex>> = Mutex::new(None); @@ -344,14 +346,16 @@ pub unsafe extern "C" fn HmdDriverFactory( } }; - let mut vec_buffer = vec![0; len as _]; + let mut video_frame_packet_buffer = + alvr_sockets::new_sender_buffer(alvr_sockets::VIDEO, &header, len as _) + .unwrap(); - // use copy_nonoverlapping (aka memcpy) to avoid freeing memory allocated by C++ - unsafe { - ptr::copy_nonoverlapping(buffer_ptr, vec_buffer.as_mut_ptr(), len as _); - } + let data_slice = unsafe { std::slice::from_raw_parts(buffer_ptr, len as _) }; + video_frame_packet_buffer + .get_mut() + .extend_from_slice(data_slice); - sender.send((header, vec_buffer)).ok(); + sender.send(video_frame_packet_buffer).ok(); } } diff --git a/alvr/sockets/src/stream_socket/mod.rs b/alvr/sockets/src/stream_socket/mod.rs index c4b697ebdc..7e99f074a4 100644 --- a/alvr/sockets/src/stream_socket/mod.rs +++ b/alvr/sockets/src/stream_socket/mod.rs @@ -172,32 +172,40 @@ impl StreamSender { } } +pub fn new_sender_buffer( + stream_id: StreamId, + header: &T, + preferred_max_buffer_size: usize, +) -> StrResult> { + let header_size = trace_err!(bincode::serialized_size(header))?; + // the first two bytes are for the stream ID + let offset = 2 + 4 + header_size as usize; + + let mut buffer = BytesMut::with_capacity(offset + preferred_max_buffer_size); + + buffer.put_u16(stream_id); + + // make space for the packet index + buffer.put_u32(0); + + let mut buffer_writer = buffer.writer(); + trace_err!(bincode::serialize_into(&mut buffer_writer, header))?; + let buffer = buffer_writer.into_inner(); + + Ok(SenderBuffer { + inner: buffer, + offset, + _phantom: PhantomData, + }) +} + impl StreamSender { pub fn new_buffer( &self, header: &T, preferred_max_buffer_size: usize, ) -> StrResult> { - let header_size = trace_err!(bincode::serialized_size(header))?; - // the first two bytes are for the stream ID - let offset = 2 + 4 + header_size as usize; - - let mut buffer = BytesMut::with_capacity(offset + preferred_max_buffer_size); - - buffer.put_u16(self.stream_id); - - // make space for the packet index - buffer.put_u32(0); - - let mut buffer_writer = buffer.writer(); - trace_err!(bincode::serialize_into(&mut buffer_writer, header))?; - let buffer = buffer_writer.into_inner(); - - Ok(SenderBuffer { - inner: buffer, - offset, - _phantom: PhantomData, - }) + new_sender_buffer(self.stream_id, &header, preferred_max_buffer_size) } pub async fn send(&mut self, packet: &T) -> StrResult { From d65fc1ab6e1753973776c53a1798e998074c1505 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sun, 11 Feb 2024 15:51:34 +0000 Subject: [PATCH 47/60] Changes resolution rounding + default settings tweaks * Changes how resolutions are converted into multiples of 32 to prefer the nearest upper sizes instead of lower sizes * Changes default / wizard settings for resolutions, fov-encoding, and bitrate * extra compile flags for win32 builds such as /fp:contract on vs2022 which allows fma optimizations even for /fp:precise --- alvr/dashboard/js/app/customSettings.js | 2 +- alvr/dashboard/js/app/setupWizard.js | 10 +++++----- alvr/server/build.rs | 5 +++++ alvr/server/cpp/alvr_server/PoseHistory.cpp | 10 +++++++--- alvr/server/src/connection.rs | 2 +- alvr/session/src/settings.rs | 16 ++++++++-------- 6 files changed, 27 insertions(+), 18 deletions(-) diff --git a/alvr/dashboard/js/app/customSettings.js b/alvr/dashboard/js/app/customSettings.js index 15dc828d06..67618cc507 100644 --- a/alvr/dashboard/js/app/customSettings.js +++ b/alvr/dashboard/js/app/customSettings.js @@ -31,7 +31,7 @@ define([ ) { return function (alvrSettings) { const self = this; - const video_scales = [25, 50, 66, 75, 100, 125, 150, 200]; + const video_scales = [25, 50, 66, 75, 100, 125, 140, 150, 200]; self.setCustomSettings = function () { try { diff --git a/alvr/dashboard/js/app/setupWizard.js b/alvr/dashboard/js/app/setupWizard.js index e832bd8a97..5adc0744ec 100644 --- a/alvr/dashboard/js/app/setupWizard.js +++ b/alvr/dashboard/js/app/setupWizard.js @@ -185,8 +185,8 @@ define([ switch (target.attr("value")) { case "compatibility": - renderResolutionScale.val(1); - targetResolutionScale.val(1); + renderResolutionScale.val(1.25); + targetResolutionScale.val(1.25); bitrateTarget.val(60); enableFfrTarget.prop("checked", true); adaptiveBitrate.prop("checked", true); @@ -204,9 +204,9 @@ define([ alvrSettings.storeParam(h264CodecTarget); break; case "visual_quality": - renderResolutionScale.val(1); - targetResolutionScale.val(1); - bitrateTarget.val(200); + renderResolutionScale.val(1.4); + targetResolutionScale.val(1.4); + bitrateTarget.val(150); adaptiveBitrate.prop("checked", false); enableFfrTarget.prop("checked", true); preferredFps.val(90); diff --git a/alvr/server/build.rs b/alvr/server/build.rs index 1c5aa9ab82..e701656715 100644 --- a/alvr/server/build.rs +++ b/alvr/server/build.rs @@ -108,6 +108,7 @@ fn main() { let mut build = cc::Build::new(); build .cpp(true) + .std("c++20") .files(source_files_paths) .flag_if_supported("-isystemcpp/openvr/headers") // silences many warnings from openvr headers .flag_if_supported("-std=c++20") @@ -119,6 +120,10 @@ fn main() { .debug(false) // This is because we cannot link to msvcrtd (see below) .flag("/std:c++20") .flag("/permissive-") + .flag_if_supported("/Oi") + .flag_if_supported("/Ob2") + .flag_if_supported("/fp:contract") + //.flag_if_supported("/GL") .define("NOMINMAX", None) .define("_WINSOCKAPI_", None) .define("_MBCS", None) diff --git a/alvr/server/cpp/alvr_server/PoseHistory.cpp b/alvr/server/cpp/alvr_server/PoseHistory.cpp index a525f0316c..fd93d1005c 100644 --- a/alvr/server/cpp/alvr_server/PoseHistory.cpp +++ b/alvr/server/cpp/alvr_server/PoseHistory.cpp @@ -1,9 +1,13 @@ #include "PoseHistory.h" #include "Utils.h" #include "Logger.h" +#include #include #include +#undef max +#undef min + void PoseHistory::OnPoseUpdated(const TrackingInfo &info) { // Put pose history buffer TrackingHistoryFrame history; @@ -40,7 +44,7 @@ void PoseHistory::OnPoseUpdated(const TrackingInfo &info) { std::optional PoseHistory::GetBestPoseMatch(const vr::HmdMatrix34_t &pose) const { std::shared_lock lock(m_mutex); - float minDiff = 100000; + float minDiff = std::numeric_limits::max(); auto minIt = m_poseBuffer.begin(); for (auto it = m_poseBuffer.begin(); it != m_poseBuffer.end(); ++it) { float distance = 0; @@ -62,7 +66,7 @@ std::optional PoseHistory::GetBestPoseMatch(c if (minIt != m_poseBuffer.end()) { return *minIt; } - return {}; + return std::nullopt; } std::optional PoseHistory::GetPoseAt(uint64_t client_timestamp_ns) const @@ -73,5 +77,5 @@ std::optional PoseHistory::GetPoseAt(uint64_t if (it->info.targetTimestampNs == client_timestamp_ns) return *it; } - return {}; + return std::nullopt; } diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 0c971e2d55..801ad65f88 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -41,7 +41,7 @@ const NETWORK_KEEPALIVE_INTERVAL: Duration = Duration::from_secs(1); const CLEANUP_PAUSE: Duration = Duration::from_millis(500); fn align32(value: f32) -> u32 { - ((value / 32.).floor() * 32.) as u32 + ((value / 32.).ceil() * 32.) as u32 } fn mbits_to_bytes(value: u64) -> u32 { diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index 7f42690dba..e3af9d67c9 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -656,7 +656,7 @@ pub fn session_settings_default() -> SettingsDefault { adapter_index: 0, render_resolution: FrameSizeDefault { variant: FrameSizeDefaultVariant::Scale, - Scale: 1.0, + Scale: 1.4, Absolute: FrameSizeAbsoluteDefault { width: 3664, height: 1920, @@ -664,7 +664,7 @@ pub fn session_settings_default() -> SettingsDefault { }, recommended_target_resolution: FrameSizeDefault { variant: FrameSizeDefaultVariant::Scale, - Scale: 1.0, + Scale: 1.4, Absolute: FrameSizeAbsoluteDefault { width: 3664, height: 1920, @@ -684,7 +684,7 @@ pub fn session_settings_default() -> SettingsDefault { }, use_10bit_encoder: true, sw_thread_count: 0, - encode_bitrate_mbs: 200, + encode_bitrate_mbs: 150, adaptive_bitrate: SwitchDefault { enabled: false, content: AdaptiveBitrateDescDefault { @@ -764,12 +764,12 @@ pub fn session_settings_default() -> SettingsDefault { foveated_rendering: SwitchDefault { enabled: !cfg!(target_os = "linux"), content: FoveatedRenderingDescDefault { - center_size_x: 0.4, - center_size_y: 0.35, + center_size_x: 0.6, + center_size_y: 0.7, center_shift_x: 0.4, - center_shift_y: 0.1, - edge_ratio_x: 4., - edge_ratio_y: 5., + center_shift_y: -0.25, + edge_ratio_x: 7., + edge_ratio_y: 10., }, }, color_correction: SwitchDefault { From c9686698b1b0f1fc078d988a367654759de0db2d Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sun, 11 Feb 2024 16:14:06 +0000 Subject: [PATCH 48/60] OpenVR SDK 2.2.3 --- alvr/server/cpp/openvr/headers/openvr.h | 74 +++++++++++++++---- .../server/cpp/openvr/headers/openvr_driver.h | 54 ++++++++++++-- 2 files changed, 105 insertions(+), 23 deletions(-) diff --git a/alvr/server/cpp/openvr/headers/openvr.h b/alvr/server/cpp/openvr/headers/openvr.h index b7aace5242..a37db148df 100644 --- a/alvr/server/cpp/openvr/headers/openvr.h +++ b/alvr/server/cpp/openvr/headers/openvr.h @@ -16,8 +16,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 2; - static const uint32_t k_nSteamVRVersionMinor = 0; - static const uint32_t k_nSteamVRVersionBuild = 10; + static const uint32_t k_nSteamVRVersionMinor = 2; + static const uint32_t k_nSteamVRVersionBuild = 3; } // namespace vr // public_vrtypes.h @@ -531,6 +531,7 @@ enum ETrackedDeviceProperty Prop_Hmd_SupportsHDR10_Bool = 2093, Prop_Hmd_EnableParallelRenderCameras_Bool = 2094, Prop_DriverProvidedChaperoneJson_String = 2095, // higher priority than Prop_DriverProvidedChaperonePath_String + Prop_ForceSystemLayerUseAppPoses_Bool = 2096, Prop_IpdUIRangeMinMeters_Float = 2100, Prop_IpdUIRangeMaxMeters_Float = 2101, @@ -547,6 +548,10 @@ enum ETrackedDeviceProperty Prop_DSCSliceCount_Int32 = 2111, Prop_DSCBPPx16_Int32 = 2112, + Prop_Hmd_MaxDistortedTextureWidth_Int32 = 2113, + Prop_Hmd_MaxDistortedTextureHeight_Int32 = 2114, + Prop_Hmd_AllowSupersampleFiltering_Bool = 2115, + // Driver requested mura correction properties Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, @@ -558,10 +563,16 @@ enum ETrackedDeviceProperty Prop_DriverRequestedMuraFeather_OuterTop_Int32 = 2207, Prop_DriverRequestedMuraFeather_OuterBottom_Int32 = 2208, - Prop_Audio_DefaultPlaybackDeviceId_String = 2300, - Prop_Audio_DefaultRecordingDeviceId_String = 2301, - Prop_Audio_DefaultPlaybackDeviceVolume_Float = 2302, - Prop_Audio_SupportsDualSpeakerAndJackOutput_Bool = 2303, + Prop_Audio_DefaultPlaybackDeviceId_String = 2300, + Prop_Audio_DefaultRecordingDeviceId_String = 2301, + Prop_Audio_DefaultPlaybackDeviceVolume_Float = 2302, + Prop_Audio_SupportsDualSpeakerAndJackOutput_Bool = 2303, + Prop_Audio_DriverManagesPlaybackVolumeControl_Bool = 2304, + Prop_Audio_DriverPlaybackVolume_Float = 2305, + Prop_Audio_DriverPlaybackMute_Bool = 2306, + Prop_Audio_DriverManagesRecordingVolumeControl_Bool = 2307, + Prop_Audio_DriverRecordingVolume_Float = 2308, + Prop_Audio_DriverRecordingMute_Bool = 2309, // Properties that are unique to TrackedDeviceClass_Controller Prop_AttachedDeviceId_String = 3000, @@ -610,7 +621,8 @@ enum ETrackedDeviceProperty Prop_HasCameraComponent_Bool = 6004, Prop_HasDriverDirectModeComponent_Bool = 6005, Prop_HasVirtualDisplayComponent_Bool = 6006, - Prop_HasSpatialAnchorsSupport_Bool = 6007, + Prop_HasSpatialAnchorsSupport_Bool = 6007, + Prop_SupportsXrTextureSets_Bool = 6008, // Properties that are set internally based on other information provided by drivers Prop_ControllerType_String = 7000, @@ -870,6 +882,9 @@ enum EVREventType VREvent_DashboardThumbChanged = 535, // Sent when a dashboard thumbnail image changes + VREvent_DesktopMightBeVisible = 536, // Sent when any known desktop related overlay is visible + VREvent_DesktopMightBeHidden = 537, // Sent when all known desktop related overlays are hidden + VREvent_Notification_Shown = 600, VREvent_Notification_Hidden = 601, VREvent_Notification_BeginInteraction = 602, @@ -990,6 +1005,11 @@ enum EVREventType VREvent_Monitor_ShowHeadsetView = 2000, // data is process VREvent_Monitor_HideHeadsetView = 2001, // data is process + VREvent_Audio_SetSpeakersVolume = 2100, + VREvent_Audio_SetSpeakersMute = 2101, + VREvent_Audio_SetMicrophoneVolume = 2102, + VREvent_Audio_SetMicrophoneMute = 2103, + // Vendors are free to expose private events in this reserved region VREvent_VendorSpecific_Reserved_Start = 10000, VREvent_VendorSpecific_Reserved_End = 19999, @@ -1302,6 +1322,16 @@ struct VREvent_HDCPError_t EHDCPError eCode; }; +struct VREvent_AudioVolumeControl_t +{ + float fVolumeLevel; +}; + +struct VREvent_AudioMuteControl_t +{ + bool bMute; +}; + typedef union { VREvent_Reserved_t reserved; @@ -1333,7 +1363,9 @@ typedef union VREvent_ShowUI_t showUi; VREvent_ShowDevTools_t showDevTools; VREvent_HDCPError_t hdcpError; - /** NOTE!!! If you change this you MUST manually update openvr_interop.cs.py */ + VREvent_AudioVolumeControl_t audioVolumeControl; + VREvent_AudioMuteControl_t audioMuteControl; + /** NOTE!!! If you change this you MUST manually update openvr_interop.cs.py and openvr_api_flat.h.py */ } VREvent_Data_t; @@ -1865,6 +1897,7 @@ enum EVRInitError VRInitError_Compositor_CannotConnectToDisplayServer = 497, VRInitError_Compositor_GnomeNoDRMLeasing = 498, VRInitError_Compositor_FailedToInitializeEncoder = 499, + VRInitError_Compositor_CreateBlurTexture = 500, VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, VRInitError_VendorSpecific_WindowsNotInDevMode = 1001, @@ -2882,6 +2915,11 @@ namespace vr static const char * const k_pch_SteamVR_UsePrism_Bool = "usePrism"; static const char * const k_pch_SteamVR_AllowFallbackMirrorWindowLinux_Bool = "allowFallbackMirrorWindowLinux"; + //----------------------------------------------------------------------------- + // openxr keys + static const char * const k_pch_OpenXR_Section = "openxr"; + static const char * const k_pch_OpenXR_MetaUnityPluginCompatibility_Int32 = "metaUnityPluginCompatibility"; + //----------------------------------------------------------------------------- // direct mode keys static const char * const k_pch_DirectMode_Section = "direct_mode"; @@ -3145,12 +3183,16 @@ class IVRChaperone * Tracking space center (0,0,0) is the center of the Play Area. **/ virtual bool GetPlayAreaSize( float *pSizeX, float *pSizeZ ) = 0; - /** Returns the 4 corner positions of the Play Area (formerly named Soft Bounds). - * Corners are in counter-clockwise order. - * Standing center (0,0,0) is the center of the Play Area. - * It's a rectangle. - * 2 sides are parallel to the X axis and 2 sides are parallel to the Z axis. - * Height of every corner is 0Y (on the floor). **/ + /** Returns a quad describing the Play Area (formerly named Soft Bounds). + * The corners form a rectangle. + * Corners are in counter-clockwise order, starting at the front-right. + * The positions are given relative to the standing origin. + * The center of the rectangle is the center of the user's calibrated play space, not necessarily the standing + * origin. + * The Play Area's forward direction goes from its center through the mid-point of a line drawn between the + * first and second corner. + * The quad lies on the XZ plane (height = 0y), with 2 sides parallel to the X-axis and two sides parallel + * to the Z-axis of the user's calibrated Play Area. **/ virtual bool GetPlayAreaRect( HmdQuad_t *rect ) = 0; /** Reload Chaperone data from the .vrchap file on disk. */ @@ -3452,6 +3494,8 @@ class IVRCompositor * - AlreadySubmitted (app has submitted two left textures or two right textures in a single frame - i.e. before calling WaitGetPoses again) */ virtual EVRCompositorError Submit( EVREye eEye, const Texture_t *pTexture, const VRTextureBounds_t* pBounds = 0, EVRSubmitFlags nSubmitFlags = Submit_Default ) = 0; + virtual EVRCompositorError SubmitWithArrayIndex( EVREye eEye, const Texture_t *pTexture, uint32_t unTextureArrayIndex, + const VRTextureBounds_t *pBounds = 0, EVRSubmitFlags nSubmitFlags = Submit_Default ) = 0; /** Clears the frame that was sent with the last call to Submit. This will cause the * compositor to show the grid until Submit is called again. */ @@ -3631,7 +3675,7 @@ class IVRCompositor virtual EVRCompositorError GetPosesForFrame( uint32_t unPosePredictionID, VR_ARRAY_COUNT( unPoseArrayCount ) TrackedDevicePose_t* pPoseArray, uint32_t unPoseArrayCount ) = 0; }; -static const char * const IVRCompositor_Version = "IVRCompositor_027"; +static const char * const IVRCompositor_Version = "IVRCompositor_028"; } // namespace vr diff --git a/alvr/server/cpp/openvr/headers/openvr_driver.h b/alvr/server/cpp/openvr/headers/openvr_driver.h index 671a6ca3b2..c473831e02 100644 --- a/alvr/server/cpp/openvr/headers/openvr_driver.h +++ b/alvr/server/cpp/openvr/headers/openvr_driver.h @@ -16,8 +16,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 2; - static const uint32_t k_nSteamVRVersionMinor = 0; - static const uint32_t k_nSteamVRVersionBuild = 10; + static const uint32_t k_nSteamVRVersionMinor = 2; + static const uint32_t k_nSteamVRVersionBuild = 3; } // namespace vr // public_vrtypes.h @@ -531,6 +531,7 @@ enum ETrackedDeviceProperty Prop_Hmd_SupportsHDR10_Bool = 2093, Prop_Hmd_EnableParallelRenderCameras_Bool = 2094, Prop_DriverProvidedChaperoneJson_String = 2095, // higher priority than Prop_DriverProvidedChaperonePath_String + Prop_ForceSystemLayerUseAppPoses_Bool = 2096, Prop_IpdUIRangeMinMeters_Float = 2100, Prop_IpdUIRangeMaxMeters_Float = 2101, @@ -547,6 +548,10 @@ enum ETrackedDeviceProperty Prop_DSCSliceCount_Int32 = 2111, Prop_DSCBPPx16_Int32 = 2112, + Prop_Hmd_MaxDistortedTextureWidth_Int32 = 2113, + Prop_Hmd_MaxDistortedTextureHeight_Int32 = 2114, + Prop_Hmd_AllowSupersampleFiltering_Bool = 2115, + // Driver requested mura correction properties Prop_DriverRequestedMuraCorrectionMode_Int32 = 2200, Prop_DriverRequestedMuraFeather_InnerLeft_Int32 = 2201, @@ -558,10 +563,16 @@ enum ETrackedDeviceProperty Prop_DriverRequestedMuraFeather_OuterTop_Int32 = 2207, Prop_DriverRequestedMuraFeather_OuterBottom_Int32 = 2208, - Prop_Audio_DefaultPlaybackDeviceId_String = 2300, - Prop_Audio_DefaultRecordingDeviceId_String = 2301, - Prop_Audio_DefaultPlaybackDeviceVolume_Float = 2302, - Prop_Audio_SupportsDualSpeakerAndJackOutput_Bool = 2303, + Prop_Audio_DefaultPlaybackDeviceId_String = 2300, + Prop_Audio_DefaultRecordingDeviceId_String = 2301, + Prop_Audio_DefaultPlaybackDeviceVolume_Float = 2302, + Prop_Audio_SupportsDualSpeakerAndJackOutput_Bool = 2303, + Prop_Audio_DriverManagesPlaybackVolumeControl_Bool = 2304, + Prop_Audio_DriverPlaybackVolume_Float = 2305, + Prop_Audio_DriverPlaybackMute_Bool = 2306, + Prop_Audio_DriverManagesRecordingVolumeControl_Bool = 2307, + Prop_Audio_DriverRecordingVolume_Float = 2308, + Prop_Audio_DriverRecordingMute_Bool = 2309, // Properties that are unique to TrackedDeviceClass_Controller Prop_AttachedDeviceId_String = 3000, @@ -610,7 +621,8 @@ enum ETrackedDeviceProperty Prop_HasCameraComponent_Bool = 6004, Prop_HasDriverDirectModeComponent_Bool = 6005, Prop_HasVirtualDisplayComponent_Bool = 6006, - Prop_HasSpatialAnchorsSupport_Bool = 6007, + Prop_HasSpatialAnchorsSupport_Bool = 6007, + Prop_SupportsXrTextureSets_Bool = 6008, // Properties that are set internally based on other information provided by drivers Prop_ControllerType_String = 7000, @@ -870,6 +882,9 @@ enum EVREventType VREvent_DashboardThumbChanged = 535, // Sent when a dashboard thumbnail image changes + VREvent_DesktopMightBeVisible = 536, // Sent when any known desktop related overlay is visible + VREvent_DesktopMightBeHidden = 537, // Sent when all known desktop related overlays are hidden + VREvent_Notification_Shown = 600, VREvent_Notification_Hidden = 601, VREvent_Notification_BeginInteraction = 602, @@ -990,6 +1005,11 @@ enum EVREventType VREvent_Monitor_ShowHeadsetView = 2000, // data is process VREvent_Monitor_HideHeadsetView = 2001, // data is process + VREvent_Audio_SetSpeakersVolume = 2100, + VREvent_Audio_SetSpeakersMute = 2101, + VREvent_Audio_SetMicrophoneVolume = 2102, + VREvent_Audio_SetMicrophoneMute = 2103, + // Vendors are free to expose private events in this reserved region VREvent_VendorSpecific_Reserved_Start = 10000, VREvent_VendorSpecific_Reserved_End = 19999, @@ -1302,6 +1322,16 @@ struct VREvent_HDCPError_t EHDCPError eCode; }; +struct VREvent_AudioVolumeControl_t +{ + float fVolumeLevel; +}; + +struct VREvent_AudioMuteControl_t +{ + bool bMute; +}; + typedef union { VREvent_Reserved_t reserved; @@ -1333,7 +1363,9 @@ typedef union VREvent_ShowUI_t showUi; VREvent_ShowDevTools_t showDevTools; VREvent_HDCPError_t hdcpError; - /** NOTE!!! If you change this you MUST manually update openvr_interop.cs.py */ + VREvent_AudioVolumeControl_t audioVolumeControl; + VREvent_AudioMuteControl_t audioMuteControl; + /** NOTE!!! If you change this you MUST manually update openvr_interop.cs.py and openvr_api_flat.h.py */ } VREvent_Data_t; @@ -1865,6 +1897,7 @@ enum EVRInitError VRInitError_Compositor_CannotConnectToDisplayServer = 497, VRInitError_Compositor_GnomeNoDRMLeasing = 498, VRInitError_Compositor_FailedToInitializeEncoder = 499, + VRInitError_Compositor_CreateBlurTexture = 500, VRInitError_VendorSpecific_UnableToConnectToOculusRuntime = 1000, VRInitError_VendorSpecific_WindowsNotInDevMode = 1001, @@ -2474,6 +2507,11 @@ namespace vr static const char * const k_pch_SteamVR_UsePrism_Bool = "usePrism"; static const char * const k_pch_SteamVR_AllowFallbackMirrorWindowLinux_Bool = "allowFallbackMirrorWindowLinux"; + //----------------------------------------------------------------------------- + // openxr keys + static const char * const k_pch_OpenXR_Section = "openxr"; + static const char * const k_pch_OpenXR_MetaUnityPluginCompatibility_Int32 = "metaUnityPluginCompatibility"; + //----------------------------------------------------------------------------- // direct mode keys static const char * const k_pch_DirectMode_Section = "direct_mode"; From 660b62df3f1594d6024d82ec8e64992019fae992 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sat, 24 Feb 2024 15:58:10 +0000 Subject: [PATCH 49/60] input update opt --- alvr/server/src/connection.rs | 96 ++++++++++++++--------------------- 1 file changed, 39 insertions(+), 57 deletions(-) diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 801ad65f88..411b079ffb 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -846,7 +846,7 @@ async fn connection_pipeline() -> StrResult { }; #[inline(always)] - fn to_tracking_quat(quat: Quat) -> TrackingQuat { + fn to_tracking_quat(quat: &Quat) -> TrackingQuat { TrackingQuat { x: quat.x, y: quat.y, @@ -856,12 +856,12 @@ async fn connection_pipeline() -> StrResult { } #[inline(always)] - fn to_tracking_vector2(vec: Vec2) -> TrackingVector2 { + fn to_tracking_vector2(vec: &Vec2) -> TrackingVector2 { TrackingVector2 { x: vec.x, y: vec.y } } #[inline(always)] - fn to_tracking_vector3(vec: Vec3) -> TrackingVector3 { + fn to_tracking_vector3(vec: &Vec3) -> TrackingVector3 { TrackingVector3 { x: vec.x, y: vec.y, @@ -899,8 +899,8 @@ async fn connection_pipeline() -> StrResult { let tracking_info = TrackingInfo { targetTimestampNs: input.target_timestamp.as_nanos() as _, headPose: TrackingPosef { - orientation: to_tracking_quat(head_motion.orientation), - position: to_tracking_vector3(head_motion.position), + orientation: to_tracking_quat(&head_motion.orientation), + position: to_tracking_vector3(&head_motion.position), }, mounted: input.legacy.mounted, controller: [ @@ -909,52 +909,43 @@ async fn connection_pipeline() -> StrResult { isHand: input.legacy.controllers[0].is_hand, buttons: input.legacy.controllers[0].buttons, joystickPosition: to_tracking_vector2( - input.legacy.controllers[0].joystick_position, + &input.legacy.controllers[0].joystick_position, ), trackpadPosition: to_tracking_vector2( - input.legacy.controllers[0].trackpad_position, + &input.legacy.controllers[0].trackpad_position, ), triggerValue: input.legacy.controllers[0].trigger_value, gripValue: input.legacy.controllers[0].grip_value, pose: TrackingPosef { - orientation: to_tracking_quat(left_hand_motion.orientation), - position: to_tracking_vector3(left_hand_motion.position), + orientation: to_tracking_quat(&left_hand_motion.orientation), + position: to_tracking_vector3(&left_hand_motion.position), }, angularVelocity: to_tracking_vector3( - left_hand_motion.angular_velocity.unwrap_or(Vec3::ZERO), + &left_hand_motion.angular_velocity.unwrap_or(Vec3::ZERO), ), linearVelocity: to_tracking_vector3( - left_hand_motion.linear_velocity.unwrap_or(Vec3::ZERO), + &left_hand_motion.linear_velocity.unwrap_or(Vec3::ZERO), ), boneRotations: { - let vec = input.legacy.controllers[0] - .bone_rotations - .iter() - .cloned() - .map(to_tracking_quat) - .collect::>(); - + let bone_rotations = &input.legacy.controllers[0].bone_rotations; let mut array = [TrackingQuat::default(); 19]; - array.copy_from_slice(&vec); - + for i in 0..array.len() { + array[i] = to_tracking_quat(&bone_rotations[i]); + } array }, bonePositionsBase: { - let vec = input.legacy.controllers[0] - .bone_positions_base - .iter() - .cloned() - .map(to_tracking_vector3) - .collect::>(); - + let bone_positions = + &input.legacy.controllers[0].bone_positions_base; let mut array = [TrackingVector3::default(); 19]; - array.copy_from_slice(&vec); - + for i in 0..array.len() { + array[i] = to_tracking_vector3(&bone_positions[i]); + } array }, boneRootPose: TrackingPosef { - orientation: to_tracking_quat(left_hand_motion.orientation), - position: to_tracking_vector3(left_hand_motion.position), + orientation: to_tracking_quat(&left_hand_motion.orientation), + position: to_tracking_vector3(&left_hand_motion.position), }, handFingerConfidences: input.legacy.controllers[0] .hand_finger_confience, @@ -964,52 +955,43 @@ async fn connection_pipeline() -> StrResult { isHand: input.legacy.controllers[1].is_hand, buttons: input.legacy.controllers[1].buttons, joystickPosition: to_tracking_vector2( - input.legacy.controllers[1].joystick_position, + &input.legacy.controllers[1].joystick_position, ), trackpadPosition: to_tracking_vector2( - input.legacy.controllers[1].trackpad_position, + &input.legacy.controllers[1].trackpad_position, ), triggerValue: input.legacy.controllers[1].trigger_value, gripValue: input.legacy.controllers[1].grip_value, pose: TrackingPosef { - orientation: to_tracking_quat(right_hand_motion.orientation), - position: to_tracking_vector3(right_hand_motion.position), + orientation: to_tracking_quat(&right_hand_motion.orientation), + position: to_tracking_vector3(&right_hand_motion.position), }, angularVelocity: to_tracking_vector3( - right_hand_motion.angular_velocity.unwrap_or(Vec3::ZERO), + &right_hand_motion.angular_velocity.unwrap_or(Vec3::ZERO), ), linearVelocity: to_tracking_vector3( - right_hand_motion.linear_velocity.unwrap_or(Vec3::ZERO), + &right_hand_motion.linear_velocity.unwrap_or(Vec3::ZERO), ), boneRotations: { - let vec = input.legacy.controllers[1] - .bone_rotations - .iter() - .cloned() - .map(to_tracking_quat) - .collect::>(); - + let bone_rotations = &input.legacy.controllers[1].bone_rotations; let mut array = [TrackingQuat::default(); 19]; - array.copy_from_slice(&vec); - + for i in 0..array.len() { + array[i] = to_tracking_quat(&bone_rotations[i]); + } array }, bonePositionsBase: { - let vec = input.legacy.controllers[1] - .bone_positions_base - .iter() - .cloned() - .map(to_tracking_vector3) - .collect::>(); - + let bone_positions = + &input.legacy.controllers[1].bone_positions_base; let mut array = [TrackingVector3::default(); 19]; - array.copy_from_slice(&vec); - + for i in 0..array.len() { + array[i] = to_tracking_vector3(&bone_positions[i]); + } array }, boneRootPose: TrackingPosef { - orientation: to_tracking_quat(right_hand_motion.orientation), - position: to_tracking_vector3(right_hand_motion.position), + orientation: to_tracking_quat(&right_hand_motion.orientation), + position: to_tracking_vector3(&right_hand_motion.position), }, handFingerConfidences: input.legacy.controllers[1] .hand_finger_confience, From 1edd5e4ed6c65de1f32c3cfe18d2318933d7d6e1 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sat, 23 Mar 2024 17:17:35 +0000 Subject: [PATCH 50/60] fix build with missing pdbs files. --- alvr/xtask/src/main.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/alvr/xtask/src/main.rs b/alvr/xtask/src/main.rs index 6de2179d6e..e8c03197f5 100644 --- a/alvr/xtask/src/main.rs +++ b/alvr/xtask/src/main.rs @@ -224,10 +224,10 @@ pub fn build_server( layout.openvr_driver_lib(), ) .unwrap(); - copy_if_windows( - artifacts_dir.join("alvr_server.pdb"), - layout.openvr_driver_pdb(), - ); + // copy_if_windows( + // artifacts_dir.join("alvr_server.pdb"), + // layout.openvr_driver_pdb(), + // ); command::run_in( &afs::workspace_dir().join("alvr/launcher"), @@ -242,10 +242,10 @@ pub fn build_server( layout.launcher_exe(), ) .unwrap(); - copy_if_windows( - artifacts_dir.join("alvr_launcher.pdb"), - layout.launcher_pdb(), - ); + // copy_if_windows( + // artifacts_dir.join("alvr_launcher.pdb"), + // layout.launcher_pdb(), + // ); if experiments { let dir_content = dirx::get_dir_content2( From dd097963a0682c0f38e58f3b60cd3af788c70274 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sat, 6 Apr 2024 10:11:42 +0100 Subject: [PATCH 51/60] OpenVR SDK 2.5.1 --- alvr/server/cpp/bin/windows/openvr_api.dll | Bin 819664 -> 839488 bytes .../server/cpp/bin/windows/vcruntime140_1.dll | Bin 36728 -> 49776 bytes alvr/server/cpp/openvr/headers/openvr.h | 36 ++++--- .../server/cpp/openvr/headers/openvr_driver.h | 91 ++++++++++++++++-- 4 files changed, 104 insertions(+), 23 deletions(-) diff --git a/alvr/server/cpp/bin/windows/openvr_api.dll b/alvr/server/cpp/bin/windows/openvr_api.dll index e0113cd3897e49f9bf11fe7c005e5d1e09ea7a66..5c70fd194ab4560f0b0a60b5318f08bf474fcfcc 100644 GIT binary patch delta 345674 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

    OtM?K(NZtcy1u)lx+2UVz<1=y3YFxmb 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

    ggf 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 UPvZ{q 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 diff --git a/alvr/server/cpp/bin/windows/vcruntime140_1.dll b/alvr/server/cpp/bin/windows/vcruntime140_1.dll index 70dcc8633efbfe1bb9f587ec2a4910d7dae4dc32..7e2611997ad00f2acd82688d7999abbbd791ef9d 100644 GIT binary patch literal 49776 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 delta 18570 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

    cg@uxxJ@-cfV^18`_;7M%Mhr zHqZFZQnTUoLmN(k<<;b&@ymTG{to?a;mE#!3ezT)&W<6)2St`}E{u{VMTUx}`U-pm zo`NBs0v|HG0$2Q}46o!Ixxfh3YQbQrSa3-sut1b6%Sd3L%Yj{u&DPW5Ae*L5m|@7q zbcz@ZEap$QIj?3)ceiHvSS#k`UH-UBnPT~HUQ`z2*okX*q6^ylE@yeW*!zvyMD;(< zY96bI>g>O5iT#FO9~^3!X<$F_;GunUJvWc=atZzA0i!kj{UgbwN%gzJjT1IJFj#A( zzxJQZm)5_8&X_x;Pg9?!)^%Q;XRr8W3ThfhkC>PHF-k~Y`F`E651ub9*V(ja?#dY@ zyLP5Df0%py&27V1tE&Y9-Ie66%<(GmkVfO96Q52R(|^#+u*k{3i0=G;=F%CKvkRG+ zd4Attl+WDI#JBqt?d;N`+8NwSC-W0@m%R&L^IKv>-NC6hruxk*ZJ+mfPHpOgjb_$= zo}F~^MMZXruU+{)8L{#7Pl6)dIk0vnYSxWGl78Vpv|KPI={0{HId(tW-bWx90^7BZ zaIn96&G>6bKSYw%yA`DI2A*P$ zQyX%d+iTUvE?BVqH!0w z8+3=yP`sU9r}IPD;+L)ApEDo*cxK67{AJ{_%V4ojHQX9I&hmg^FsT?CI|5!@#uwmST0>t4KdB``7E{kFFe#?G4~szxAG9 zn0jNE;`dn(8_&NxvjEEq7liR$f-k(#+4jTAi35%v_{_SO{gdx#x6d(qy}ulIv_g1f z+SDI!#)_W4I=^muMVV^mG{x;dM;li5zaRMAcJ!R&jo&%XZrHG8bMQZkML*1}$lpHu z(!C8I96klKegEe4HiI9QY(2KgZVxM@_~7pa>sw4d9HZ>=EUOUiLTrQUV*W5 zH_!Q5cR5$t=Wx;vv$H?8nT-0e;Lp}`J6c~ZD(<=$G)Mn#f_$wDC#k(A(lP7Ut9#hp zCq8;x$)WF4N99x9JMmxM-^p2=G%IV~uEMiB^mhjyd4BqAThacUa}I9~mNFa*KK4}( zj1K&5a(k0;%(?|jbAvdK6>B}8m3Iie%m=)!^Nx0Ne&4ivOuPHReYPvsdJV?J2TYvG6 zpzd?aVB!{T(@n+XvsgJay%rzVc;K z^XekzSwRugPaRHmSO4E`uw>^EGs_d1o1%Z%v#y!Uv0kub`){I#&?%Ei)1#}>*=&r- z#vWWKjTN}qaKCQv0lsh)oAi}|HeJLJ$OS{`NTg(<0gK@?NH9=fKr4W&eSsdj-)9XP8>!iuCQ3|L{r?3#)rmVcj?=D$#d1B+ukil2>wpXU8MlIeGvRb8E9+Hdu zxvm)0(75#Mjfk5q9WUE+PWj~LamF`Cw0C}YX!WBnbH^R&KH%iCCarqS_N2P2LTMT9 zrN3_Gy!9`B*)FPdb6C?fCVwX9W6+iL;g0JbpSyX1(P5LiD5kZw57%e?nm5?wVP!r= zI>r!hkaj;1+}?r4m*XPdnp%^P^f~oGo{QSz*Y`WN;@B1b8%9j?ous!`tMdY!Mw3%c zIP%E9;v2URu90O^O=m9jlp8M}dnbF(-oy8PaBeQ#bHr^sx#2{aqL+4o3ya5jHa*d| zV8@xq+t!#4UVEhP@x}WO_y)|wT!`h0TMVc4URxbRYMAAfm8*hVh7Wi*-0xTdk=`mE zUhspjl}xy`VMujl>eYWjTu+JWpJZ*va#bM@{|2*(0B?k9KP1Tk5-5yzTJE#~V8?o$t)-J7!R9=*GWan0whwcTV^# zXnoctn;6lLxUh(KLW9J0rEcS27itV5EI_1zmKdrl&Yc%#q$7pt}u-bdu ztgX*BJg=>4hvR?#>xa>G=d*`l)xPepHW|!lP;YD4{{jn2 BBHaK0 diff --git a/alvr/server/cpp/openvr/headers/openvr.h b/alvr/server/cpp/openvr/headers/openvr.h index a37db148df..336094b0ce 100644 --- a/alvr/server/cpp/openvr/headers/openvr.h +++ b/alvr/server/cpp/openvr/headers/openvr.h @@ -16,8 +16,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 2; - static const uint32_t k_nSteamVRVersionMinor = 2; - static const uint32_t k_nSteamVRVersionBuild = 3; + static const uint32_t k_nSteamVRVersionMinor = 5; + static const uint32_t k_nSteamVRVersionBuild = 1; } // namespace vr // public_vrtypes.h @@ -885,6 +885,11 @@ enum EVREventType VREvent_DesktopMightBeVisible = 536, // Sent when any known desktop related overlay is visible VREvent_DesktopMightBeHidden = 537, // Sent when all known desktop related overlays are hidden + VREvent_MutualSteamCapabilitiesChanged = 538, // Sent when the set of capabilities common between both Steam and SteamVR have changed. + + VREvent_OverlayCreated = 539, // An OpenVR overlay of any sort was created. Data is overlay. + VREvent_OverlayDestroyed = 540, // An OpenVR overlay of any sort was destroyed. Data is overlay. + VREvent_Notification_Shown = 600, VREvent_Notification_Hidden = 601, VREvent_Notification_BeginInteraction = 602, @@ -1647,6 +1652,7 @@ enum EVRNotificationError VRNotificationError_NotificationQueueFull = 101, VRNotificationError_InvalidOverlayHandle = 102, VRNotificationError_SystemWithUserValueAlreadyExists = 103, + VRNotificationError_ServiceUnavailable = 104, }; @@ -2014,22 +2020,22 @@ static const uint32_t k_unScreenshotHandleInvalid = 0; /** Compositor frame timing reprojection flags. */ const uint32_t VRCompositor_ReprojectionReason_Cpu = 0x01; const uint32_t VRCompositor_ReprojectionReason_Gpu = 0x02; -const uint32_t VRCompositor_ReprojectionAsync = 0x04; // This flag indicates the async reprojection mode is active, +const uint32_t VRCompositor_ReprojectionAsync = 0x04; // This flag indicates the async reprojection mode is active, // but does not indicate if reprojection actually happened or not. // Use the ReprojectionReason flags above to check if reprojection // was actually applied (i.e. scene texture was reused). // NumFramePresents > 1 also indicates the scene texture was reused, // and also the number of times that it was presented in total. -const uint32_t VRCompositor_ReprojectionMotion = 0x08; // This flag indicates whether or not motion smoothing was triggered for this frame +const uint32_t VRCompositor_ReprojectionMotion = 0x08; // This flag indicates whether or not motion smoothing was triggered for this frame -const uint32_t VRCompositor_PredictionMask = 0xF0; // The runtime may predict more than one frame (up to four) ahead if - // it detects the application is taking too long to render. These two +const uint32_t VRCompositor_PredictionMask = 0xF0; // The runtime may predict more than one frame ahead if + // it detects the application is taking too long to render. These // bits will contain the count of additional frames (normally zero). // Use the VR_COMPOSITOR_ADDITIONAL_PREDICTED_FRAMES macro to read from // the latest frame timing entry. -const uint32_t VRCompositor_ThrottleMask = 0xF00; // Number of frames the compositor is throttling the application. +const uint32_t VRCompositor_ThrottleMask = 0xF00; // Number of frames the compositor is throttling the application. // Use the VR_COMPOSITOR_NUMBER_OF_THROTTLED_FRAMES macro to read from // the latest frame timing entry. @@ -2081,6 +2087,8 @@ struct Compositor_FrameTiming uint32_t m_nNumVSyncsReadyForUse; uint32_t m_nNumVSyncsToFirstView; + + float m_flTransferLatencyMs; }; #if defined(__linux__) || defined(__APPLE__) #pragma pack( pop ) @@ -2728,6 +2736,7 @@ namespace vr VRSettingsError_ReadFailed = 3, VRSettingsError_JsonParseFailed = 4, VRSettingsError_UnsetSettingHasNoDefault = 5, // This will be returned if the setting does not appear in the appropriate default file and has not been set + VRSettingsError_AccessDenied = 6, }; // The maximum length of a settings key @@ -2869,6 +2878,7 @@ namespace vr static const char * const k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; static const char * const k_pch_SteamVR_WorldScale_Float = "worldScale"; static const char * const k_pch_SteamVR_FovScale_Int32 = "fovScale"; + static const char * const k_pch_SteamVR_FovScaleLetterboxed_Bool = "fovScaleLetterboxed"; static const char * const k_pch_SteamVR_DisableAsyncReprojection_Bool = "disableAsync"; static const char * const k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; static const char * const k_pch_SteamVR_DefaultMirrorView_Int32 = "mirrorView"; @@ -3069,7 +3079,7 @@ namespace vr static const char * const k_pch_Dashboard_StickyDashboard = "stickyDashboard"; static const char * const k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; static const char * const k_pch_Dashboard_AllowVRGamepadUI_Bool = "allowVRGamepadUI"; - static const char * const k_pch_Dashboard_AllowDesktopBPMWithVRGamepadUI_Bool = "allowDesktopBPMWithVRGamepadUI"; + static const char * const k_pch_Dashboard_AllowVRGamepadUIViaGamescope_Bool = "allowVRGamepadUIViaGamescope"; static const char * const k_pch_Dashboard_SteamMatchesHMDFramerate = "steamMatchesHMDFramerate"; //----------------------------------------------------------------------------- @@ -3184,13 +3194,13 @@ class IVRChaperone virtual bool GetPlayAreaSize( float *pSizeX, float *pSizeZ ) = 0; /** Returns a quad describing the Play Area (formerly named Soft Bounds). - * The corners form a rectangle. + * The corners form a rectangle. * Corners are in counter-clockwise order, starting at the front-right. * The positions are given relative to the standing origin. * The center of the rectangle is the center of the user's calibrated play space, not necessarily the standing - * origin. + * origin. * The Play Area's forward direction goes from its center through the mid-point of a line drawn between the - * first and second corner. + * first and second corner. * The quad lies on the XZ plane (height = 0y), with 2 sides parallel to the X-axis and two sides parallel * to the Z-axis of the user's calibrated Play Area. **/ virtual bool GetPlayAreaRect( HmdQuad_t *rect ) = 0; @@ -4338,7 +4348,7 @@ namespace vr /** Shows the dashboard. */ virtual void ShowDashboard( const char *pchOverlayToShow ) = 0; - /** Returns the tracked device that has the laser pointer in the dashboard */ + /** Returns the tracked device index that has the laser pointer in the dashboard, or the last one that was used. */ virtual vr::TrackedDeviceIndex_t GetPrimaryDashboardDevice() = 0; // --------------------------------------------- @@ -5229,7 +5239,7 @@ namespace vr virtual EVRInputError GetOriginTrackedDeviceInfo( VRInputValueHandle_t origin, InputOriginInfo_t *pOriginInfo, uint32_t unOriginInfoSize ) = 0; /** Retrieves useful information about the bindings for an action */ - virtual EVRInputError GetActionBindingInfo( VRActionHandle_t action, InputBindingInfo_t *pOriginInfo, uint32_t unBindingInfoSize, uint32_t unBindingInfoCount, uint32_t *punReturnedBindingInfoCount ) = 0; + virtual EVRInputError GetActionBindingInfo( VRActionHandle_t action, VR_ARRAY_COUNT( unBindingInfoCount ) InputBindingInfo_t *pOriginInfo, uint32_t unBindingInfoSize, uint32_t unBindingInfoCount, uint32_t *punReturnedBindingInfoCount ) = 0; /** Shows the current binding for the action in-headset */ virtual EVRInputError ShowActionOrigins( VRActionSetHandle_t actionSetHandle, VRActionHandle_t ulActionHandle ) = 0; diff --git a/alvr/server/cpp/openvr/headers/openvr_driver.h b/alvr/server/cpp/openvr/headers/openvr_driver.h index c473831e02..257ac6ccb2 100644 --- a/alvr/server/cpp/openvr/headers/openvr_driver.h +++ b/alvr/server/cpp/openvr/headers/openvr_driver.h @@ -16,8 +16,8 @@ namespace vr { static const uint32_t k_nSteamVRVersionMajor = 2; - static const uint32_t k_nSteamVRVersionMinor = 2; - static const uint32_t k_nSteamVRVersionBuild = 3; + static const uint32_t k_nSteamVRVersionMinor = 5; + static const uint32_t k_nSteamVRVersionBuild = 1; } // namespace vr // public_vrtypes.h @@ -885,6 +885,11 @@ enum EVREventType VREvent_DesktopMightBeVisible = 536, // Sent when any known desktop related overlay is visible VREvent_DesktopMightBeHidden = 537, // Sent when all known desktop related overlays are hidden + VREvent_MutualSteamCapabilitiesChanged = 538, // Sent when the set of capabilities common between both Steam and SteamVR have changed. + + VREvent_OverlayCreated = 539, // An OpenVR overlay of any sort was created. Data is overlay. + VREvent_OverlayDestroyed = 540, // An OpenVR overlay of any sort was destroyed. Data is overlay. + VREvent_Notification_Shown = 600, VREvent_Notification_Hidden = 601, VREvent_Notification_BeginInteraction = 602, @@ -1647,6 +1652,7 @@ enum EVRNotificationError VRNotificationError_NotificationQueueFull = 101, VRNotificationError_InvalidOverlayHandle = 102, VRNotificationError_SystemWithUserValueAlreadyExists = 103, + VRNotificationError_ServiceUnavailable = 104, }; @@ -2014,22 +2020,22 @@ static const uint32_t k_unScreenshotHandleInvalid = 0; /** Compositor frame timing reprojection flags. */ const uint32_t VRCompositor_ReprojectionReason_Cpu = 0x01; const uint32_t VRCompositor_ReprojectionReason_Gpu = 0x02; -const uint32_t VRCompositor_ReprojectionAsync = 0x04; // This flag indicates the async reprojection mode is active, +const uint32_t VRCompositor_ReprojectionAsync = 0x04; // This flag indicates the async reprojection mode is active, // but does not indicate if reprojection actually happened or not. // Use the ReprojectionReason flags above to check if reprojection // was actually applied (i.e. scene texture was reused). // NumFramePresents > 1 also indicates the scene texture was reused, // and also the number of times that it was presented in total. -const uint32_t VRCompositor_ReprojectionMotion = 0x08; // This flag indicates whether or not motion smoothing was triggered for this frame +const uint32_t VRCompositor_ReprojectionMotion = 0x08; // This flag indicates whether or not motion smoothing was triggered for this frame -const uint32_t VRCompositor_PredictionMask = 0xF0; // The runtime may predict more than one frame (up to four) ahead if - // it detects the application is taking too long to render. These two +const uint32_t VRCompositor_PredictionMask = 0xF0; // The runtime may predict more than one frame ahead if + // it detects the application is taking too long to render. These // bits will contain the count of additional frames (normally zero). // Use the VR_COMPOSITOR_ADDITIONAL_PREDICTED_FRAMES macro to read from // the latest frame timing entry. -const uint32_t VRCompositor_ThrottleMask = 0xF00; // Number of frames the compositor is throttling the application. +const uint32_t VRCompositor_ThrottleMask = 0xF00; // Number of frames the compositor is throttling the application. // Use the VR_COMPOSITOR_NUMBER_OF_THROTTLED_FRAMES macro to read from // the latest frame timing entry. @@ -2081,6 +2087,8 @@ struct Compositor_FrameTiming uint32_t m_nNumVSyncsReadyForUse; uint32_t m_nNumVSyncsToFirstView; + + float m_flTransferLatencyMs; }; #if defined(__linux__) || defined(__APPLE__) #pragma pack( pop ) @@ -2320,6 +2328,7 @@ namespace vr VRSettingsError_ReadFailed = 3, VRSettingsError_JsonParseFailed = 4, VRSettingsError_UnsetSettingHasNoDefault = 5, // This will be returned if the setting does not appear in the appropriate default file and has not been set + VRSettingsError_AccessDenied = 6, }; // The maximum length of a settings key @@ -2461,6 +2470,7 @@ namespace vr static const char * const k_pch_SteamVR_AdditionalFramesToPredict_Int32 = "additionalFramesToPredict"; static const char * const k_pch_SteamVR_WorldScale_Float = "worldScale"; static const char * const k_pch_SteamVR_FovScale_Int32 = "fovScale"; + static const char * const k_pch_SteamVR_FovScaleLetterboxed_Bool = "fovScaleLetterboxed"; static const char * const k_pch_SteamVR_DisableAsyncReprojection_Bool = "disableAsync"; static const char * const k_pch_SteamVR_ForceFadeOnBadTracking_Bool = "forceFadeOnBadTracking"; static const char * const k_pch_SteamVR_DefaultMirrorView_Int32 = "mirrorView"; @@ -2661,7 +2671,7 @@ namespace vr static const char * const k_pch_Dashboard_StickyDashboard = "stickyDashboard"; static const char * const k_pch_Dashboard_AllowSteamOverlays_Bool = "allowSteamOverlays"; static const char * const k_pch_Dashboard_AllowVRGamepadUI_Bool = "allowVRGamepadUI"; - static const char * const k_pch_Dashboard_AllowDesktopBPMWithVRGamepadUI_Bool = "allowDesktopBPMWithVRGamepadUI"; + static const char * const k_pch_Dashboard_AllowVRGamepadUIViaGamescope_Bool = "allowVRGamepadUIViaGamescope"; static const char * const k_pch_Dashboard_SteamMatchesHMDFramerate = "steamMatchesHMDFramerate"; //----------------------------------------------------------------------------- @@ -2969,6 +2979,9 @@ namespace vr // Hmd pose used to render this layer. vr::HmdMatrix34_t mHmdPose; + + // Time in seconds from now that mHmdPose was predicted to. + float flHmdPosePredictionTimeInSecondsFromNow; }; virtual void SubmitLayer( const SubmitLayerPerEye_t( &perEye )[ 2 ] ) {} @@ -2985,10 +2998,15 @@ namespace vr virtual void PostPresent( const Throttling_t *pThrottling ) {} /** Called to get additional frame timing stats from driver. Check m_nSize for versioning (new members will be added to end only). */ - virtual void GetFrameTiming( DriverDirectMode_FrameTiming *pFrameTiming ) {} + virtual void GetFrameTiming( DriverDirectMode_FrameTiming *pFrameTiming ) + { + /** VRCompositor_ReprojectionMotion_XXX flags get passed in, and since these overlap with VRCompositor_ThrottleMask, they need + * to be cleared out if this function isn't implemented; otherwise, those settings will get interpreted as throttling. */ + pFrameTiming->m_nReprojectionFlags = 0; + } }; - static const char *IVRDriverDirectModeComponent_Version = "IVRDriverDirectModeComponent_008"; + static const char *IVRDriverDirectModeComponent_Version = "IVRDriverDirectModeComponent_009"; } @@ -4126,6 +4144,44 @@ namespace vr } // namespace vr +// ivripcresourcemanagerclient.h + +namespace vr +{ + +// ----------------------------------------------------------------------------- +// Purpose: Interact with the IPCResourceManager +// ----------------------------------------------------------------------------- +class IVRIPCResourceManagerClient +{ +public: + /** Create a new tracked Vulkan Image + * + * nImageFormat: in VkFormat + */ + virtual bool NewSharedVulkanImage( uint32_t nImageFormat, uint32_t nWidth, uint32_t nHeight, bool bRenderable, bool bMappable, bool bComputeAccess, uint32_t unMipLevels, uint32_t unArrayLayerCount, vr::SharedTextureHandle_t *pSharedHandle ) = 0; + + /** Create a new tracked Vulkan Buffer */ + virtual bool NewSharedVulkanBuffer( size_t nSize, uint32_t nUsageFlags, vr::SharedTextureHandle_t *pSharedHandle ) = 0; + + /** Create a new tracked Vulkan Semaphore */ + virtual bool NewSharedVulkanSemaphore( vr::SharedTextureHandle_t *pSharedHandle ) = 0; + + /** Grab a reference to hSharedHandle, and optionally generate a new IPC handle if pNewIpcHandle is not nullptr */ + virtual bool RefResource( vr::SharedTextureHandle_t hSharedHandle, uint64_t *pNewIpcHandle ) = 0; + + /** Drop a reference to hSharedHandle */ + virtual bool UnrefResource( vr::SharedTextureHandle_t hSharedHandle ) = 0; + +protected: + /** Non-deletable */ + virtual ~IVRIPCResourceManagerClient() {}; +}; + +static const char *IVRIPCResourceManagerClient_Version = "IVRIPCResourceManagerClient_001"; + +} + namespace vr @@ -4144,6 +4200,7 @@ namespace vr IVRDriverManager_Version, IVRResources_Version, IVRCompositorPluginProvider_Version, + IVRIPCResourceManagerClient_Version, nullptr }; @@ -4292,6 +4349,16 @@ namespace vr return m_pVRDriverSpatialAnchors; } + IVRIPCResourceManagerClient *VRIPCResourceManager() + { + if ( m_pVRIPCResourceManager == nullptr ) + { + EVRInitError eError; + m_pVRIPCResourceManager = ( IVRIPCResourceManagerClient * )VRDriverContext()->GetGenericInterface( IVRIPCResourceManagerClient_Version, &eError ); + } + return m_pVRIPCResourceManager; + } + private: CVRPropertyHelpers m_propertyHelpers; CVRHiddenAreaHelpers m_hiddenAreaHelpers; @@ -4307,6 +4374,7 @@ namespace vr IVRDriverInput *m_pVRDriverInput; IVRIOBuffer *m_pVRIOBuffer; IVRDriverSpatialAnchors *m_pVRDriverSpatialAnchors; + IVRIPCResourceManagerClient *m_pVRIPCResourceManager; }; inline COpenVRDriverContext &OpenVRInternal_ModuleServerDriverContext() @@ -4329,6 +4397,7 @@ namespace vr inline IVRDriverInput *VR_CALLTYPE VRDriverInput() { return OpenVRInternal_ModuleServerDriverContext().VRDriverInput(); } inline IVRIOBuffer *VR_CALLTYPE VRIOBuffer() { return OpenVRInternal_ModuleServerDriverContext().VRIOBuffer(); } inline IVRDriverSpatialAnchors *VR_CALLTYPE VRDriverSpatialAnchors() { return OpenVRInternal_ModuleServerDriverContext().VRDriverSpatialAnchors(); } + inline IVRIPCResourceManagerClient *VR_CALLTYPE VRIPCResourceManager() { return OpenVRInternal_ModuleServerDriverContext().VRIPCResourceManager(); } inline void COpenVRDriverContext::Clear() { @@ -4343,11 +4412,13 @@ namespace vr m_pVRDriverInput = nullptr; m_pVRIOBuffer = nullptr; m_pVRDriverSpatialAnchors = nullptr; + m_pVRIPCResourceManager = nullptr; } inline EVRInitError COpenVRDriverContext::InitServer() { Clear(); + // VRIPCResourceManager initialized async. if ( !VRServerDriverHost() || !VRSettings() || !VRProperties() From 0ef772be1130e4dfcc4c919e458b03dda0fae72a Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Mon, 13 May 2024 20:49:27 +0100 Subject: [PATCH 52/60] re-enable pdb for driver --- alvr/xtask/src/main.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/alvr/xtask/src/main.rs b/alvr/xtask/src/main.rs index e8c03197f5..6de2179d6e 100644 --- a/alvr/xtask/src/main.rs +++ b/alvr/xtask/src/main.rs @@ -224,10 +224,10 @@ pub fn build_server( layout.openvr_driver_lib(), ) .unwrap(); - // copy_if_windows( - // artifacts_dir.join("alvr_server.pdb"), - // layout.openvr_driver_pdb(), - // ); + copy_if_windows( + artifacts_dir.join("alvr_server.pdb"), + layout.openvr_driver_pdb(), + ); command::run_in( &afs::workspace_dir().join("alvr/launcher"), @@ -242,10 +242,10 @@ pub fn build_server( layout.launcher_exe(), ) .unwrap(); - // copy_if_windows( - // artifacts_dir.join("alvr_launcher.pdb"), - // layout.launcher_pdb(), - // ); + copy_if_windows( + artifacts_dir.join("alvr_launcher.pdb"), + layout.launcher_pdb(), + ); if experiments { let dir_content = dirx::get_dir_content2( From 8fd59d5d3aaba3c002b81715a14001d45a1a3278 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sun, 9 Jun 2024 11:52:59 +0100 Subject: [PATCH 53/60] nvenc sdk v12.2.72 --- alvr/server/cpp/alvr_server/nvEncodeAPI.h | 214 ++++++++++++------ alvr/server/cpp/platform/win32/NvCodecUtils.h | 4 +- alvr/server/cpp/platform/win32/NvEncoder.cpp | 41 ++-- alvr/server/cpp/platform/win32/NvEncoder.h | 2 +- .../cpp/platform/win32/NvEncoderD3D11.cpp | 2 +- .../cpp/platform/win32/NvEncoderD3D11.h | 2 +- .../cpp/platform/win32/VideoEncoderNVENC.cpp | 4 +- 7 files changed, 172 insertions(+), 97 deletions(-) diff --git a/alvr/server/cpp/alvr_server/nvEncodeAPI.h b/alvr/server/cpp/alvr_server/nvEncodeAPI.h index fd6ab5a8d5..2cdf7d0f29 100644 --- a/alvr/server/cpp/alvr_server/nvEncodeAPI.h +++ b/alvr/server/cpp/alvr_server/nvEncodeAPI.h @@ -1,7 +1,7 @@ /* * This copyright notice applies to this header file only: * - * Copyright (c) 2010-2023 NVIDIA Corporation + * Copyright (c) 2010-2024 NVIDIA Corporation * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation @@ -30,7 +30,7 @@ * NVIDIA GPUs - beginning with the Kepler generation - contain a hardware-based encoder * (referred to as NVENC) which provides fully-accelerated hardware-based video encoding. * NvEncodeAPI provides the interface for NVIDIA video encoder (NVENC). - * \date 2011-2022 + * \date 2011-2024 * This file contains the interface constants, structure definitions and function prototypes. */ @@ -112,7 +112,7 @@ typedef void* NV_ENC_REGISTERED_PTR; /**< A Resource that has been regist typedef void* NV_ENC_CUSTREAM_PTR; /**< Pointer to CUstream*/ #define NVENCAPI_MAJOR_VERSION 12 -#define NVENCAPI_MINOR_VERSION 1 +#define NVENCAPI_MINOR_VERSION 2 #define NVENCAPI_VERSION (NVENCAPI_MAJOR_VERSION | (NVENCAPI_MINOR_VERSION << 24)) @@ -206,6 +206,7 @@ static const GUID NV_ENC_AV1_PROFILE_MAIN_GUID = // ========================================================================================= // * Preset GUIDS supported by the NvEncodeAPI interface. // ========================================================================================= + // Performance degrades and quality improves as we move from P1 to P7. Presets P3 to P7 for H264 and Presets P2 to P7 for HEVC have B frames enabled by default // for HIGH_QUALITY and LOSSLESS tuning info, and will not work with Weighted Prediction enabled. In case Weighted Prediction is required, disable B frames by // setting frameIntervalP = 1 @@ -272,9 +273,6 @@ typedef enum _NV_ENC_MULTI_PASS NV_ENC_TWO_PASS_FULL_RESOLUTION = 0x2, /**< Two Pass encoding is enabled where first Pass is full resolution */ } NV_ENC_MULTI_PASS; -/** - * Restore Encoder state - */ typedef enum _NV_ENC_STATE_RESTORE_TYPE { NV_ENC_STATE_RESTORE_FULL = 0x01, /**< Restore full encoder state */ @@ -315,6 +313,7 @@ typedef enum _NV_ENC_QP_MAP_MODE NV_ENC_QP_MAP = 0x3, /**< Currently This is not supported. Value in NV_ENC_PIC_PARAMS::qpDeltaMap will be treated as QP value. */ } NV_ENC_QP_MAP_MODE; + /** * Input picture structure */ @@ -352,6 +351,7 @@ typedef enum _NV_ENC_PIC_TYPE NV_ENC_PIC_TYPE_SKIPPED = 0x05, /**< Picture is skipped */ NV_ENC_PIC_TYPE_INTRA_REFRESH = 0x06, /**< First picture in intra refresh cycle */ NV_ENC_PIC_TYPE_NONREF_P = 0x07, /**< Non reference P picture */ + NV_ENC_PIC_TYPE_SWITCH = 0x08, /**< Switch frame (AV1 only) */ NV_ENC_PIC_TYPE_UNKNOWN = 0xFF /**< Picture type unknown */ } NV_ENC_PIC_TYPE; @@ -406,11 +406,6 @@ typedef enum _NV_ENC_BUFFER_FORMAT the encoded bit stream or H.264 ME only mode output. */ } NV_ENC_BUFFER_FORMAT; -#define NV_ENC_BUFFER_FORMAT_NV12_PL NV_ENC_BUFFER_FORMAT_NV12 -#define NV_ENC_BUFFER_FORMAT_YV12_PL NV_ENC_BUFFER_FORMAT_YV12 -#define NV_ENC_BUFFER_FORMAT_IYUV_PL NV_ENC_BUFFER_FORMAT_IYUV -#define NV_ENC_BUFFER_FORMAT_YUV444_PL NV_ENC_BUFFER_FORMAT_YUV444 - /** * Encoding levels */ @@ -673,12 +668,12 @@ typedef enum _NVENCSTATUS */ typedef enum _NV_ENC_PIC_FLAGS { - NV_ENC_PIC_FLAG_FORCEINTRA = 0x1, /**< Encode the current picture as an Intra picture */ - NV_ENC_PIC_FLAG_FORCEIDR = 0x2, /**< Encode the current picture as an IDR picture. - This flag is only valid when Picture type decision is taken by the Encoder - [_NV_ENC_INITIALIZE_PARAMS::enablePTD == 1]. */ - NV_ENC_PIC_FLAG_OUTPUT_SPSPPS = 0x4, /**< Write the sequence and picture header in encoded bitstream of the current picture */ - NV_ENC_PIC_FLAG_EOS = 0x8, /**< Indicates end of the input stream */ + NV_ENC_PIC_FLAG_FORCEINTRA = 0x1, /**< Encode the current picture as an Intra picture */ + NV_ENC_PIC_FLAG_FORCEIDR = 0x2, /**< Encode the current picture as an IDR picture. + This flag is only valid when Picture type decision is taken by the Encoder + [_NV_ENC_INITIALIZE_PARAMS::enablePTD == 1]. */ + NV_ENC_PIC_FLAG_OUTPUT_SPSPPS = 0x4, /**< Write the sequence and picture header in encoded bitstream of the current picture */ + NV_ENC_PIC_FLAG_EOS = 0x8, /**< Indicates end of the input stream */ NV_ENC_PIC_FLAG_DISABLE_ENC_STATE_ADVANCE = 0x10, /**< Do not advance encoder state during encode */ NV_ENC_PIC_FLAG_OUTPUT_RECON_FRAME = 0x20, /**< Write reconstructed frame */ } NV_ENC_PIC_FLAGS; @@ -810,6 +805,14 @@ typedef enum _NV_ENC_NUM_REF_FRAMES NV_ENC_NUM_REF_FRAMES_7 = 0x7 /**< Number of reference frames equal to 7 */ } NV_ENC_NUM_REF_FRAMES; +/** +* Enum for Temporal filtering level. +*/ +typedef enum _NV_ENC_TEMPORAL_FILTER_LEVEL +{ + NV_ENC_TEMPORAL_FILTER_LEVEL_0 = 0, + NV_ENC_TEMPORAL_FILTER_LEVEL_4 = 4, +}NV_ENC_TEMPORAL_FILTER_LEVEL; /** * Encoder capabilities enumeration. */ @@ -1182,6 +1185,22 @@ typedef enum _NV_ENC_CAPS */ NV_ENC_CAPS_OUTPUT_ROW_STATS, + + /** + * Indicates temporal filtering support. + */ + NV_ENC_CAPS_SUPPORT_TEMPORAL_FILTER, + + /** + * Maximum Lookahead level supported (See ::NV_ENC_LOOKAHEAD_LEVEL for details). + */ + NV_ENC_CAPS_SUPPORT_LOOKAHEAD_LEVEL, + + /** + * Indicates UnidirectionalB support. + */ + NV_ENC_CAPS_SUPPORT_UNIDIRECTIONAL_B, + /** * Reserved - Not to be used by clients. */ @@ -1284,6 +1303,29 @@ typedef enum _NV_ENC_VUI_MATRIX_COEFFS NV_ENC_VUI_MATRIX_COEFFS_SMPTE2085 = 11, }NV_ENC_VUI_MATRIX_COEFFS; + +/** +* Enum for Lookahead level. +*/ +typedef enum _NV_ENC_LOOKAHEAD_LEVEL +{ + NV_ENC_LOOKAHEAD_LEVEL_0 = 0, + NV_ENC_LOOKAHEAD_LEVEL_1 = 1, + NV_ENC_LOOKAHEAD_LEVEL_2 = 2, + NV_ENC_LOOKAHEAD_LEVEL_3 = 3, + NV_ENC_LOOKAHEAD_LEVEL_AUTOSELECT = 15, +}NV_ENC_LOOKAHEAD_LEVEL; + +/** +* Enum for Bit Depth +*/ +typedef enum _NV_ENC_BIT_DEPTH +{ + NV_ENC_BIT_DEPTH_INVALID = 0, /**< Invalid Bit Depth */ + NV_ENC_BIT_DEPTH_8 = 8, /**< Bit Depth 8 */ + NV_ENC_BIT_DEPTH_10 = 10, /**< Bit Depth 10 */ +}NV_ENC_BIT_DEPTH; + /** * Input struct for querying Encoding capabilities. */ @@ -1306,6 +1348,7 @@ typedef struct _NV_ENC_RESTORE_ENCODER_STATE_PARAMS uint32_t version; /**< [in]: Struct version. */ uint32_t bufferIdx; /**< [in]: State buffer index to which the encoder state will be restored */ NV_ENC_STATE_RESTORE_TYPE state; /**< [in]: State type to restore */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ NV_ENC_OUTPUT_PTR outputBitstream; /**< [in]: Specifies the output buffer pointer, for AV1 encode only. Application must call NvEncRestoreEncoderState() API with _NV_ENC_RESTORE_ENCODER_STATE_PARAMS::outputBitstream and _NV_ENC_RESTORE_ENCODER_STATE_PARAMS::completionEvent as input when an earlier call to this API returned "NV_ENC_ERR_NEED_MORE_OUTPUT", for AV1 encode. */ @@ -1315,7 +1358,7 @@ typedef struct _NV_ENC_RESTORE_ENCODER_STATE_PARAMS } NV_ENC_RESTORE_ENCODER_STATE_PARAMS; /** NV_ENC_RESTORE_ENCODER_STATE_PARAMS struct version. */ -#define NV_ENC_RESTORE_ENCODER_STATE_PARAMS_VER NVENCAPI_STRUCT_VERSION(1) +#define NV_ENC_RESTORE_ENCODER_STATE_PARAMS_VER NVENCAPI_STRUCT_VERSION(2) /** * Encoded frame information parameters for every block. @@ -1366,14 +1409,15 @@ typedef struct _NV_ENC_ENCODE_OUT_PARAMS typedef struct _NV_ENC_LOOKAHEAD_PIC_PARAMS { uint32_t version; /**< [in]: Struct version. */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ NV_ENC_INPUT_PTR inputBuffer; /**< [in]: Specifies the input buffer pointer. Client must use a pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs.*/ NV_ENC_PIC_TYPE pictureType; /**< [in]: Specifies input picture type. Client required to be set explicitly by the client if the client has not set NV_ENC_INITALIZE_PARAMS::enablePTD to 1 while calling NvInitializeEncoder. */ - uint32_t reserved[64]; /**< [in]: Reserved and must be set to 0 */ - void* reserved1[64]; /**< [in]: Reserved and must be set to NULL */ + uint32_t reserved1[63]; /**< [in]: Reserved and must be set to 0 */ + void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_LOOKAHEAD_PIC_PARAMS; /** NV_ENC_LOOKAHEAD_PIC_PARAMS struct version. */ -#define NV_ENC_LOOKAHEAD_PIC_PARAMS_VER NVENCAPI_STRUCT_VERSION(1) +#define NV_ENC_LOOKAHEAD_PIC_PARAMS_VER NVENCAPI_STRUCT_VERSION(2) /** * Creation parameters for input buffer. @@ -1388,12 +1432,12 @@ typedef struct _NV_ENC_CREATE_INPUT_BUFFER uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ NV_ENC_INPUT_PTR inputBuffer; /**< [out]: Pointer to input buffer */ void* pSysMemBuffer; /**< [in]: Pointer to existing system memory buffer */ - uint32_t reserved1[57]; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved1[58]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[63]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CREATE_INPUT_BUFFER; /** NV_ENC_CREATE_INPUT_BUFFER struct version. */ -#define NV_ENC_CREATE_INPUT_BUFFER_VER NVENCAPI_STRUCT_VERSION(1) +#define NV_ENC_CREATE_INPUT_BUFFER_VER NVENCAPI_STRUCT_VERSION(2) /** * Creation parameters for output bitstream buffer. @@ -1454,13 +1498,14 @@ typedef struct _NV_ENC_HEVC_MV_DATA typedef struct _NV_ENC_CREATE_MV_BUFFER { uint32_t version; /**< [in]: Struct version. Must be set to NV_ENC_CREATE_MV_BUFFER_VER */ + uint32_t reserved; /**< [in]: Reserved and should be set to 0 */ NV_ENC_OUTPUT_PTR mvBuffer; /**< [out]: Pointer to the output motion vector buffer */ - uint32_t reserved1[255]; /**< [in]: Reserved and should be set to 0 */ + uint32_t reserved1[254]; /**< [in]: Reserved and should be set to 0 */ void* reserved2[63]; /**< [in]: Reserved and should be set to NULL */ } NV_ENC_CREATE_MV_BUFFER; /** NV_ENC_CREATE_MV_BUFFER struct version*/ -#define NV_ENC_CREATE_MV_BUFFER_VER NVENCAPI_STRUCT_VERSION(1) +#define NV_ENC_CREATE_MV_BUFFER_VER NVENCAPI_STRUCT_VERSION(2) /** * QP value for frames @@ -1542,7 +1587,8 @@ typedef struct _NV_ENC_QP int8_t cbQPIndexOffset; /**< [in]: Specifies the value of 'chroma_qp_index_offset' in H264 / 'pps_cb_qp_offset' in HEVC / 'deltaQ_u_ac' in AV1.*/ int8_t crQPIndexOffset; /**< [in]: Specifies the value of 'second_chroma_qp_index_offset' in H264 / 'pps_cr_qp_offset' in HEVC / 'deltaQ_v_ac' in AV1 (for future use only - deltaQ_v_ac is currently always internally set to same value as deltaQ_u_ac). */ uint16_t reserved2; - uint32_t reserved[4]; + NV_ENC_LOOKAHEAD_LEVEL lookaheadLevel; /**< [in]: Specifies the lookahead level. Higher level may improve quality at the expense of performance. */ + uint32_t reserved[3]; } NV_ENC_RC_PARAMS; /** macro for constructing the version field of ::_NV_ENC_RC_PARAMS */ @@ -1574,6 +1620,9 @@ typedef struct _NV_ENC_TIME_CODE { NV_ENC_DISPLAY_PIC_STRUCT displayPicStruct; /**< [in] Display picStruct */ NV_ENC_CLOCK_TIMESTAMP_SET clockTimestamp[MAX_NUM_CLOCK_TS]; /**< [in] Clock Timestamp set */ + uint32_t skipClockTimestampInsertion; /**< [in] 0 : Inserts Clock Timestamp if NV_ENC_CONFIG_H264::enableTimeCode (H264) or + NV_ENC_CONFIG_HEVC::outputTimeCodeSEI (HEVC) is specified + 1 : Skips insertion of Clock Timestamp for current frame */ } NV_ENC_TIME_CODE; @@ -1758,8 +1807,9 @@ typedef struct _NV_ENC_CONFIG_H264 Check support for numRefL0 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ NV_ENC_NUM_REF_FRAMES numRefL1; /**< [in]: Specifies max number of reference frames in reference picture list L1, that can be used by hardware for prediction of a frame. Check support for numRefL1 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ - - uint32_t reserved1[267]; /**< [in]: Reserved and must be set to 0 */ + NV_ENC_BIT_DEPTH outputBitDepth; /**< [in]: Specifies pixel bit depth of encoded video. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit, NV_ENC_BIT_DEPTH_10 for 10 bit. */ + NV_ENC_BIT_DEPTH inputBitDepth; /**< [in]: Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input. */ + uint32_t reserved1[265]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CONFIG_H264; @@ -1789,7 +1839,7 @@ typedef struct _NV_ENC_CONFIG_HEVC uint32_t repeatSPSPPS :1; /**< [in]: Set 1 to output VPS,SPS and PPS for every IDR frame.*/ uint32_t enableIntraRefresh :1; /**< [in]: Set 1 to enable gradual decoder refresh or intra refresh. If the GOP structure uses B frames this will be ignored */ uint32_t chromaFormatIDC :2; /**< [in]: Specifies the chroma format. Should be set to 1 for yuv420 input, 3 for yuv444 input.*/ - uint32_t pixelBitDepthMinus8 :3; /**< [in]: Specifies pixel bit depth minus 8. Should be set to 0 for 8 bit input, 2 for 10 bit input.*/ + uint32_t reserved3 :3; /**< [in]: Reserved and must be set to 0.*/ uint32_t enableFillerDataInsertion :1; /**< [in]: Set to 1 to enable insertion of filler data in the bitstream. This flag will take effect only when CBR rate control mode is in use and both NV_ENC_INITIALIZE_PARAMS::frameRateNum and @@ -1841,7 +1891,20 @@ typedef struct _NV_ENC_CONFIG_HEVC Check support for numRefL0 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ NV_ENC_NUM_REF_FRAMES numRefL1; /**< [in]: Specifies max number of reference frames in reference picture list L1, that can be used by hardware for prediction of a frame. Check support for numRefL1 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ - uint32_t reserved1[214]; /**< [in]: Reserved and must be set to 0.*/ + NV_ENC_TEMPORAL_FILTER_LEVEL tfLevel; /**< [in]: Specifies the strength of the temporal filtering. + Temporal filter feature is supported only if frameIntervalP >= 5. + Temporal filter feature is not supported with ZeroReorderDelay/enableStereoMVC/AlphaLayerEncoding. + Temporal filter is recommended for natural contents. */ + uint32_t disableDeblockingFilterIDC; /**< [in]: Specifies the deblocking filter mode. Permissible value range: [0,2]. This flag corresponds + to the flag pps_deblocking_filter_disabled_flag specified in section 7.4.3.3 of H.265 specification, + which specifies whether the operation of the deblocking filter shall be disabled across some + block edges of the slice and specifies for which edges the filtering is disabled. See section + 7.4.3.3 of H.265 specification for more details.*/ + NV_ENC_BIT_DEPTH outputBitDepth; /**< [in]: Specifies pixel bit depth of encoded video. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit, NV_ENC_BIT_DEPTH_10 for 10 bit. + SW will do the bitdepth conversion internally from inputBitDepth -> outputBitDepth if bit depths differ + Support for 8 bit input to 10 bit encode conversion only*/ + NV_ENC_BIT_DEPTH inputBitDepth; /**< [in]: Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input.*/ + uint32_t reserved1[210]; /**< [in]: Reserved and must be set to 0.*/ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CONFIG_HEVC; @@ -1906,10 +1969,7 @@ typedef struct _NV_ENC_CONFIG_AV1 uint32_t enableBitstreamPadding : 1; /**< [in]: Set 1 to enable bitstream padding. */ uint32_t enableCustomTileConfig : 1; /**< [in]: Set 1 to enable custom tile configuration: numTileColumns and numTileRows must have non zero values and tileWidths and tileHeights must point to a valid address */ uint32_t enableFilmGrainParams : 1; /**< [in]: Set 1 to enable custom film grain parameters: filmGrainParams must point to a valid address */ - uint32_t inputPixelBitDepthMinus8 : 3; /**< [in]: Specifies pixel bit depth minus 8 of video input. Should be set to 0 for 8 bit input, 2 for 10 bit input.*/ - uint32_t pixelBitDepthMinus8 : 3; /**< [in]: Specifies pixel bit depth minus 8 of encoded video. Should be set to 0 for 8 bit, 2 for 10 bit. - HW will do the bitdepth conversion internally from inputPixelBitDepthMinus8 -> pixelBitDepthMinus8 if bit dpeths differ - Support for 8 bit input to 10 bit encode conversion only */ + uint32_t reserved4 : 6; /**< [in]: Reserved and must be set to 0.*/ uint32_t reserved : 14; /**< [in]: Reserved bitfields.*/ uint32_t idrPeriod; /**< [in]: Specifies the IDR/Key frame interval. If not set, this is made equal to gopLength in NV_ENC_CONFIG.Low latency application client can set IDR interval to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */ uint32_t intraRefreshPeriod; /**< [in]: Specifies the interval between successive intra refresh if enableIntrarefresh is set. Requires enableIntraRefresh to be set. @@ -1926,9 +1986,10 @@ typedef struct _NV_ENC_CONFIG_AV1 it will be rounded down to the next power of 2 value. If numTileRows == 0, the picture will be coded with the smallest number of horizontal tiles as allowed by standard. When enableCustomTileConfig == 1, numTileRows must be > 0 and <= NV_MAX_TILE_ROWS_AV1 and tileHeights must point to a valid array of numTileRows entries. Entry i specifies the height in 64x64 CTU unit of tile row i. The sum of all the entries should be equal to the picture hieght in 64x64 CTU units. */ + uint32_t reserved2; /**< [in]: Reserved and must be set to 0.*/ uint32_t *tileWidths; /**< [in]: If enableCustomTileConfig == 1, tileWidths[i] specifies the width of tile column i in 64x64 CTU unit, with 0 <= i <= numTileColumns -1. */ uint32_t *tileHeights; /**< [in]: If enableCustomTileConfig == 1, tileHeights[i] specifies the height of tile row i in 64x64 CTU unit, with 0 <= i <= numTileRows -1. */ - uint32_t maxTemporalLayersMinus1; /**< [in]: Specifies the max temporal layer used for hierarchical coding. */ + uint32_t maxTemporalLayersMinus1; /**< [in]: Specifies the max temporal layer used for hierarchical coding. Cannot be reconfigured and must be specified during encoder creation if temporal layer is considered. */ NV_ENC_VUI_COLOR_PRIMARIES colorPrimaries; /**< [in]: as defined in section of ISO/IEC 23091-4/ITU-T H.273 */ NV_ENC_VUI_TRANSFER_CHARACTERISTIC transferCharacteristics; /**< [in]: as defined in section of ISO/IEC 23091-4/ITU-T H.273 */ NV_ENC_VUI_MATRIX_COEFFS matrixCoefficients; /**< [in]: as defined in section of ISO/IEC 23091-4/ITU-T H.273 */ @@ -1940,8 +2001,12 @@ typedef struct _NV_ENC_CONFIG_AV1 NV_ENC_FILM_GRAIN_PARAMS_AV1 *filmGrainParams; /**< [in]: If enableFilmGrainParams == 1, filmGrainParams must point to a valid NV_ENC_FILM_GRAIN_PARAMS_AV1 structure */ NV_ENC_NUM_REF_FRAMES numFwdRefs; /**< [in]: Specifies max number of forward reference frame used for prediction of a frame. It must be in range 1-4 (Last, Last2, last3 and Golden). It's a suggestive value not necessarily be honored always. */ NV_ENC_NUM_REF_FRAMES numBwdRefs; /**< [in]: Specifies max number of L1 list reference frame used for prediction of a frame. It must be in range 1-3 (Backward, Altref2, Altref). It's a suggestive value not necessarily be honored always. */ - uint32_t reserved1[235]; /**< [in]: Reserved and must be set to 0.*/ - void* reserved2[62]; /**< [in]: Reserved and must be set to NULL */ + NV_ENC_BIT_DEPTH outputBitDepth; /**< [in]: Specifies pixel bit depth of encoded video. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit, NV_ENC_BIT_DEPTH_10 for 10 bit. + HW will do the bitdepth conversion internally from inputBitDepth -> outputBitDepth if bit depths differ + Support for 8 bit input to 10 bit encode conversion only */ + NV_ENC_BIT_DEPTH inputBitDepth; /**< [in]: Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input. */ + uint32_t reserved1[233]; /**< [in]: Reserved and must be set to 0.*/ + void* reserved3[62]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CONFIG_AV1; /** @@ -2011,7 +2076,7 @@ typedef struct _NV_ENC_CONFIG } NV_ENC_CONFIG; /** macro for constructing the version field of ::_NV_ENC_CONFIG */ -#define NV_ENC_CONFIG_VER (NVENCAPI_STRUCT_VERSION(8) | ( 1<<31 )) +#define NV_ENC_CONFIG_VER (NVENCAPI_STRUCT_VERSION(9) | ( 1<<31 )) /** * Tuning information of NVENC encoding (TuningInfo is not applicable to H264 and HEVC MEOnly mode). @@ -2023,6 +2088,7 @@ typedef enum NV_ENC_TUNING_INFO NV_ENC_TUNING_INFO_LOW_LATENCY = 2, /**< Tune presets for low latency streaming.*/ NV_ENC_TUNING_INFO_ULTRA_LOW_LATENCY = 3, /**< Tune presets for ultra low latency streaming.*/ NV_ENC_TUNING_INFO_LOSSLESS = 4, /**< Tune presets for lossless encoding.*/ + NV_ENC_TUNING_INFO_ULTRA_HIGH_QUALITY = 5, /**< Tune presets for latency tolerant encoding for higher quality. Only supported for HEVC on Turing+ architectures */ NV_ENC_TUNING_INFO_COUNT /**< Count number of tuningInfos. Invalid value. */ }NV_ENC_TUNING_INFO; @@ -2074,8 +2140,11 @@ typedef struct _NV_ENC_INITIALIZE_PARAMS uint32_t enableReconFrameOutput :1; /**< [in]: Set this to 1 to enable reconstructed frame output. */ uint32_t enableOutputStats :1; /**< [in]: Set this to 1 to enable encoded frame output stats. Client must allocate buffer of size equal to number of blocks multiplied by the size of NV_ENC_OUTPUT_STATS_BLOCK struct in system memory and assign to NV_ENC_LOCK_BITSTREAM::encodedOutputStatsPtr to receive the encoded frame output stats.*/ - uint32_t reservedBitFields :20; /**< [in]: Reserved bitfields and must be set to 0 */ + uint32_t enableUniDirectionalB :1; /**< [in]: Set this to 1 to enable uni directional B-frame(both reference will be from past). It will give better compression + efficiency for LowLatency/UltraLowLatency use case. Value of parameter is ignored when regular B frames are used. */ + uint32_t reservedBitFields :19; /**< [in]: Reserved bitfields and must be set to 0 */ uint32_t privDataSize; /**< [in]: Reserved private data buffer size and must be set to 0 */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ void* privData; /**< [in]: Reserved private data buffer and must be set to NULL */ NV_ENC_CONFIG* encodeConfig; /**< [in]: Specifies the advanced codec specific structure. If client has sent a valid codec config structure, it will override parameters set by the NV_ENC_INITIALIZE_PARAMS::presetGUID parameter. If set to NULL the NvEncodeAPI interface will use the NV_ENC_INITIALIZE_PARAMS::presetGUID to set the codec specific parameters. Client can also optionally query the NvEncodeAPI interface to get codec specific parameters for a presetGUID using ::NvEncGetEncodePresetConfigEx() API. It can then modify (if required) some of the codec config parameters and send down a custom config structure as part of ::_NV_ENC_INITIALIZE_PARAMS. @@ -2095,12 +2164,12 @@ typedef struct _NV_ENC_INITIALIZE_PARAMS if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_BLOCK or number of rows multiplied by the size of NV_ENC_OUTPUT_STATS_ROW struct if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_ROW in system memory and assign to NV_ENC_LOCK_BITSTREAM::encodedOutputStatsPtr to receive the encoded frame output stats. */ - uint32_t reserved [285]; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved1 [284]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_INITIALIZE_PARAMS; /** macro for constructing the version field of ::_NV_ENC_INITIALIZE_PARAMS */ -#define NV_ENC_INITIALIZE_PARAMS_VER (NVENCAPI_STRUCT_VERSION(6) | ( 1<<31 )) +#define NV_ENC_INITIALIZE_PARAMS_VER (NVENCAPI_STRUCT_VERSION(7) | ( 1<<31 )) /** @@ -2110,6 +2179,7 @@ typedef struct _NV_ENC_INITIALIZE_PARAMS typedef struct _NV_ENC_RECONFIGURE_PARAMS { uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_RECONFIGURE_PARAMS_VER. */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ NV_ENC_INITIALIZE_PARAMS reInitEncodeParams; /**< [in]: Encoder session re-initialization parameters. If reInitEncodeParams.encodeConfig is NULL and reInitEncodeParams.presetGUID is the same as the preset @@ -2129,12 +2199,13 @@ typedef struct _NV_ENC_RECONFIGURE_PARAMS If NV_ENC_INITIALIZE_PARAMS::enablePTD is set to 1, encoder will force the frame type to IDR */ uint32_t forceIDR :1; /**< [in]: Encode the current picture as an IDR picture. This flag is only valid when Picture type decision is taken by the Encoder [_NV_ENC_INITIALIZE_PARAMS::enablePTD == 1]. */ - uint32_t reserved :30; + uint32_t reserved1 :30; + uint32_t reserved2; /**< [in]: Reserved and must be set to 0 */ }NV_ENC_RECONFIGURE_PARAMS; /** macro for constructing the version field of ::_NV_ENC_RECONFIGURE_PARAMS */ -#define NV_ENC_RECONFIGURE_PARAMS_VER (NVENCAPI_STRUCT_VERSION(1) | ( 1<<31 )) +#define NV_ENC_RECONFIGURE_PARAMS_VER (NVENCAPI_STRUCT_VERSION(2) | ( 1<<31 )) /** * \struct _NV_ENC_PRESET_CONFIG @@ -2143,13 +2214,14 @@ typedef struct _NV_ENC_RECONFIGURE_PARAMS typedef struct _NV_ENC_PRESET_CONFIG { uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_PRESET_CONFIG_VER. */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ NV_ENC_CONFIG presetCfg; /**< [out]: preset config returned by the Nvidia Video Encoder interface. */ - uint32_t reserved1[255]; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved1[256]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ }NV_ENC_PRESET_CONFIG; /** macro for constructing the version field of ::_NV_ENC_PRESET_CONFIG */ -#define NV_ENC_PRESET_CONFIG_VER (NVENCAPI_STRUCT_VERSION(4) | ( 1<<31 )) +#define NV_ENC_PRESET_CONFIG_VER (NVENCAPI_STRUCT_VERSION(5) | ( 1<<31 )) /** @@ -2235,7 +2307,7 @@ typedef struct _NV_ENC_PIC_PARAMS_H264 The number of entries in this array should be equal to forceIntraSliceCount */ NV_ENC_PIC_PARAMS_H264_EXT h264ExtPicParams; /**< [in]: Specifies the H264 extension config parameters using this config. */ NV_ENC_TIME_CODE timeCode; /**< [in]: Specifies the clock timestamp sets used in picture timing SEI. Applicable only when NV_ENC_CONFIG_H264::enableTimeCode is set to 1. */ - uint32_t reserved [203]; /**< [in]: Reserved and must be set to 0. */ + uint32_t reserved [202]; /**< [in]: Reserved and must be set to 0. */ void* reserved2[61]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_PIC_PARAMS_H264; @@ -2258,6 +2330,7 @@ typedef struct _NV_ENC_PIC_PARAMS_HEVC uint32_t ltrMarkFrame :1; /**< [in]: Set to 1 if client wants to mark this frame as LTR */ uint32_t ltrUseFrames :1; /**< [in]: Set to 1 if client allows encoding this frame using the LTR frames specified in ltrFrameBitmap */ uint32_t reservedBitFields :28; /**< [in]: Reserved bit fields and must be set to 0 */ + uint32_t reserved1; /**< [in]: Reserved and must be set to 0. */ uint8_t* sliceTypeData; /**< [in]: Array which specifies the slice type used to force intra slice for a particular slice. Currently supported only for NV_ENC_CONFIG_H264::sliceMode == 3. Client should allocate array of size sliceModeData where sliceModeData is specified in field of ::_NV_ENC_CONFIG_H264 Array element with index n corresponds to nth slice. To force a particular slice to intra client should set corresponding array element to NV_ENC_SLICE_TYPE_I @@ -2279,8 +2352,8 @@ typedef struct _NV_ENC_PIC_PARAMS_HEVC uint32_t reserved; /**< [in]: Reserved and must be set to 0. */ NV_ENC_SEI_PAYLOAD* seiPayloadArray; /**< [in]: Array of SEI payloads which will be inserted for this frame. */ NV_ENC_TIME_CODE timeCode; /**< [in]: Specifies the clock timestamp sets used in time code SEI. Applicable only when NV_ENC_CONFIG_HEVC::enableTimeCodeSEI is set to 1. */ - uint32_t reserved2 [237]; /**< [in]: Reserved and must be set to 0. */ - void* reserved3[61]; /**< [in]: Reserved and must be set to NULL. */ + uint32_t reserved2[236]; /**< [in]: Reserved and must be set to 0. */ + void* reserved3[61]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_PIC_PARAMS_HEVC; #define NV_ENC_AV1_OBU_PAYLOAD NV_ENC_SEI_PAYLOAD @@ -2322,13 +2395,14 @@ typedef struct _NV_ENC_PIC_PARAMS_AV1 it will be rounded down to the next power of 2 value. If numTileRows == 0, the picture will be coded with the smallest number of horizontal tiles as allowed by standard. When enableCustomTileConfig == 1, numTileRows must be > 0 and <= NV_MAX_TILE_ROWS_AV1 and tileHeights must point to a valid array of numTileRows entries. Entry i specifies the height in 64x64 CTU unit of tile row i. The sum of all the entries should be equal to the picture hieght in 64x64 CTU units. */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0. */ uint32_t *tileWidths; /**< [in]: If enableCustomTileConfig == 1, tileWidths[i] specifies the width of tile column i in 64x64 CTU unit, with 0 <= i <= numTileColumns -1. */ uint32_t *tileHeights; /**< [in]: If enableCustomTileConfig == 1, tileHeights[i] specifies the height of tile row i in 64x64 CTU unit, with 0 <= i <= numTileRows -1. */ uint32_t obuPayloadArrayCnt; /**< [in]: Specifies the number of elements allocated in obuPayloadArray array. */ - uint32_t reserved; /**< [in]: Reserved and must be set to 0. */ + uint32_t reserved1; /**< [in]: Reserved and must be set to 0. */ NV_ENC_AV1_OBU_PAYLOAD* obuPayloadArray; /**< [in]: Array of OBU payloads which will be inserted for this frame. */ NV_ENC_FILM_GRAIN_PARAMS_AV1 *filmGrainParams; /**< [in]: If filmGrainParamsUpdate == 1, filmGrainParams must point to a valid NV_ENC_FILM_GRAIN_PARAMS_AV1 structure */ - uint32_t reserved2[247]; /**< [in]: Reserved and must be set to 0. */ + uint32_t reserved2[246]; /**< [in]: Reserved and must be set to 0. */ void* reserved3[61]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_PIC_PARAMS_AV1; @@ -2355,7 +2429,8 @@ typedef struct _NV_ENC_PIC_PARAMS uint32_t inputHeight; /**< [in]: Specifies the input frame height */ uint32_t inputPitch; /**< [in]: Specifies the input buffer pitch. If pitch value is not known, set this to inputWidth. */ uint32_t encodePicFlags; /**< [in]: Specifies bit-wise OR of encode picture flags. See ::NV_ENC_PIC_FLAGS enum. */ - uint32_t frameIdx; /**< [in]: Specifies the frame index associated with the input frame [optional]. */ + uint32_t frameIdx; /**< [in]: Specifies the frame index associated with the input frame. It is necessary to pass this as monotonically increasing starting 0 when lookaheadLevel, UHQ Tuning Info + or encoding same frames multiple times without advancing encoder state feature are enabled */ uint64_t inputTimeStamp; /**< [in]: Specifies opaque data which is associated with the encoded frame, but not actually encoded in the output bitstream. This opaque data can be used later to uniquely refer to the corresponding encoded frame. For example, it can be used for identifying the frame to be invalidated in the reference picture buffer, if lost at the client. */ @@ -2379,8 +2454,8 @@ typedef struct _NV_ENC_PIC_PARAMS NVENC_EXTERNAL_ME_HINT *meExternalHints; /**< [in]: For H264 and Hevc, Specifies the pointer to ME external hints for the current frame. The size of ME hint buffer should be equal to number of macroblocks * the total number of candidates per macroblock. The total number of candidates per MB per direction = 1*meHintCountsPerBlock[Lx].numCandsPerBlk16x16 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk16x8 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk8x8 + 4*meHintCountsPerBlock[Lx].numCandsPerBlk8x8. For frames using bidirectional ME , the total number of candidates for single macroblock is sum of total number of candidates per MB for each direction (L0 and L1) */ - uint32_t reserved1[6]; /**< [in]: Reserved and must be set to 0 */ - void* reserved2[2]; /**< [in]: Reserved and must be set to NULL */ + uint32_t reserved2[7]; /**< [in]: Reserved and must be set to 0 */ + void* reserved5[2]; /**< [in]: Reserved and must be set to NULL */ int8_t *qpDeltaMap; /**< [in]: Specifies the pointer to signed byte array containing value per MB for H264, per CTB for HEVC and per SB for AV1 in raster scan order for the current picture, which will be interpreted depending on NV_ENC_RC_PARAMS::qpMapMode. If NV_ENC_RC_PARAMS::qpMapMode is NV_ENC_QP_MAP_DELTA, qpDeltaMap specifies QP modifier per MB for H264, per CTB for HEVC and per SB for AV1. This QP modifier will be applied on top of the QP chosen by rate control. If NV_ENC_RC_PARAMS::qpMapMode is NV_ENC_QP_MAP_EMPHASIS, qpDeltaMap specifies Emphasis Level Map per MB for H264. This level value along with QP chosen by rate control is used to @@ -2391,6 +2466,7 @@ typedef struct _NV_ENC_PIC_PARAMS uint32_t reservedBitFields; /**< [in]: Reserved bitfields and must be set to 0 */ uint16_t meHintRefPicDist[2]; /**< [in]: Specifies temporal distance for reference picture (NVENC_EXTERNAL_ME_HINT::refidx = 0) used during external ME with NV_ENC_INITALIZE_PARAMS::enablePTD = 1 . meHintRefPicDist[0] is for L0 hints and meHintRefPicDist[1] is for L1 hints. If not set, will internally infer distance of 1. Ignored for NV_ENC_INITALIZE_PARAMS::enablePTD = 0 */ + uint32_t reserved4; /**< [in]: Reserved and must be set to 0 */ NV_ENC_INPUT_PTR alphaBuffer; /**< [in]: Specifies the input alpha buffer pointer. Client must use a pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs. Applicable only when encoding hevc with alpha layer is enabled. */ NVENC_EXTERNAL_ME_SB_HINT *meExternalSbHints; /**< [in]: For AV1,Specifies the pointer to ME external SB hints for the current frame. The size of ME hint buffer should be equal to meSbHintsCount. */ @@ -2406,11 +2482,11 @@ typedef struct _NV_ENC_PIC_PARAMS Reconstructed output will be in NV_ENC_BUFFER_FORMAT_NV12 format when chromaFormatIDC is set to 1. chromaFormatIDC = 3 is not supported. */ uint32_t reserved3[284]; /**< [in]: Reserved and must be set to 0 */ - void* reserved4[57]; /**< [in]: Reserved and must be set to NULL */ + void* reserved6[57]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_PIC_PARAMS; /** Macro for constructing the version field of ::_NV_ENC_PIC_PARAMS */ -#define NV_ENC_PIC_PARAMS_VER (NVENCAPI_STRUCT_VERSION(6) | ( 1<<31 )) +#define NV_ENC_PIC_PARAMS_VER (NVENCAPI_STRUCT_VERSION(7) | ( 1<<31 )) /** @@ -2423,6 +2499,7 @@ typedef struct _NV_ENC_MEONLY_PARAMS uint32_t version; /**< [in]: Struct version. Must be set to NV_ENC_MEONLY_PARAMS_VER.*/ uint32_t inputWidth; /**< [in]: Specifies the input frame width */ uint32_t inputHeight; /**< [in]: Specifies the input frame height */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ NV_ENC_INPUT_PTR inputBuffer; /**< [in]: Specifies the input buffer pointer. Client must use a pointer obtained from NvEncCreateInputBuffer() or NvEncMapInputResource() APIs. */ NV_ENC_INPUT_PTR referenceFrame; /**< [in]: Specifies the reference frame pointer */ NV_ENC_OUTPUT_PTR mvBuffer; /**< [in]: Specifies the output buffer pointer. @@ -2431,6 +2508,7 @@ typedef struct _NV_ENC_MEONLY_PARAMS If NV_ENC_INITIALIZE_PARAMS::enableOutputInVidmem is set to 1, client should allocate buffer in video memory for storing the motion vector data. The size of this buffer must be equal to total number of macroblocks multiplied by size of NV_ENC_H264_MV_DATA struct. Client should use a pointer obtained from ::NvEncMapInputResource() API, when mapping this output buffer and assign it to NV_ENC_MEONLY_PARAMS::mvBuffer. All CUDA operations on this buffer must use the default stream. */ + uint32_t reserved2; /**< [in]: Reserved and must be set to 0 */ NV_ENC_BUFFER_FORMAT bufferFmt; /**< [in]: Specifies the input buffer format. */ void* completionEvent; /**< [in]: Specifies an event to be signaled on completion of motion estimation of this Frame [only if operating in Asynchronous mode]. @@ -2443,12 +2521,12 @@ typedef struct _NV_ENC_MEONLY_PARAMS NVENC_EXTERNAL_ME_HINT *meExternalHints; /**< [in]: Specifies the pointer to ME external hints for the current frame. The size of ME hint buffer should be equal to number of macroblocks * the total number of candidates per macroblock. The total number of candidates per MB per direction = 1*meHintCountsPerBlock[Lx].numCandsPerBlk16x16 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk16x8 + 2*meHintCountsPerBlock[Lx].numCandsPerBlk8x8 + 4*meHintCountsPerBlock[Lx].numCandsPerBlk8x8. For frames using bidirectional ME , the total number of candidates for single macroblock is sum of total number of candidates per MB for each direction (L0 and L1) */ - uint32_t reserved1[243]; /**< [in]: Reserved and must be set to 0 */ - void* reserved2[59]; /**< [in]: Reserved and must be set to NULL */ + uint32_t reserved1[241]; /**< [in]: Reserved and must be set to 0 */ + void* reserved3[59]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_MEONLY_PARAMS; /** NV_ENC_MEONLY_PARAMS struct version*/ -#define NV_ENC_MEONLY_PARAMS_VER NVENCAPI_STRUCT_VERSION(3) +#define NV_ENC_MEONLY_PARAMS_VER NVENCAPI_STRUCT_VERSION(4) /** @@ -2488,15 +2566,15 @@ typedef struct _NV_ENC_LOCK_BITSTREAM int32_t averageMVY; /**< [out]: Average Motion Vector in y direction for the encoded frame. Supported only if _NV_ENC_LOCK_BITSTREAM::getRCStats set to 1. */ uint32_t alphaLayerSizeInBytes; /**< [out]: Number of bytes generated for the alpha layer in the encoded output. Applicable only when HEVC with alpha encoding is enabled. */ uint32_t outputStatsPtrSize; /**< [in]: Size of the buffer pointed by NV_ENC_LOCK_BITSTREAM::outputStatsPtr. */ + uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ void* outputStatsPtr; /**< [in, out]: Buffer which receives the encoded frame output stats, if NV_ENC_INITIALIZE_PARAMS::enableOutputStats is set to 1. */ uint32_t frameIdxDisplay; /**< [out]: Frame index in display order */ - uint32_t reserved1[220]; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved1[219]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[63]; /**< [in]: Reserved and must be set to NULL */ uint32_t reservedInternal[8]; /**< [in]: Reserved and must be set to 0 */ } NV_ENC_LOCK_BITSTREAM; -#define NV_ENC_LOCK_BITSTREAM_VER (NVENCAPI_STRUCT_VERSION(1) | ( 1<<31 )) - +#define NV_ENC_LOCK_BITSTREAM_VER (NVENCAPI_STRUCT_VERSION(2) | ( 1<<31 )) /** * \struct _NV_ENC_LOCK_INPUT_BUFFER @@ -2644,12 +2722,12 @@ typedef struct _NV_ENC_REGISTER_RESOURCE to NV_ENC_OUTPUT_RECON and D3D11 interface is used. When chroma components are interleaved, 'chromaOffset[0]' will contain chroma offset. chromaOffset[1] is reserved for future use. */ - uint32_t reserved1[245]; /**< [in]: Reserved and must be set to 0. */ + uint32_t reserved1[246]; /**< [in]: Reserved and must be set to 0. */ void* reserved2[61]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_REGISTER_RESOURCE; /** Macro for constructing the version field of ::_NV_ENC_REGISTER_RESOURCE */ -#define NV_ENC_REGISTER_RESOURCE_VER NVENCAPI_STRUCT_VERSION(4) +#define NV_ENC_REGISTER_RESOURCE_VER NVENCAPI_STRUCT_VERSION(5) /** * \struct _NV_ENC_STAT @@ -2659,7 +2737,7 @@ typedef struct _NV_ENC_STAT { uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_STAT_VER. */ uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ - NV_ENC_OUTPUT_PTR outputBitStream; /**< [out]: Specifies the pointer to output bitstream. */ + NV_ENC_OUTPUT_PTR outputBitStream; /**< [in]: Specifies the pointer to output bitstream. */ uint32_t bitStreamSize; /**< [out]: Size of generated bitstream in bytes. */ uint32_t picType; /**< [out]: Picture type of encoded picture. See ::NV_ENC_PIC_TYPE. */ uint32_t lastValidByteOffset; /**< [out]: Offset of last valid bytes of completed bitstream */ @@ -2673,12 +2751,12 @@ typedef struct _NV_ENC_STAT uint32_t interMBCount; /**< [out]: For H264, Number of Inter MBs in the encoded frame, includes skip MBs. For HEVC, Number of Inter CTBs in the encoded frame. */ int32_t averageMVX; /**< [out]: Average Motion Vector in X direction for the encoded frame. */ int32_t averageMVY; /**< [out]: Average Motion Vector in y direction for the encoded frame. */ - uint32_t reserved1[226]; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved1[227]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_STAT; /** Macro for constructing the version field of ::_NV_ENC_STAT */ -#define NV_ENC_STAT_VER NVENCAPI_STRUCT_VERSION(1) +#define NV_ENC_STAT_VER NVENCAPI_STRUCT_VERSION(2) /** @@ -2710,12 +2788,12 @@ typedef struct _NV_ENC_EVENT_PARAMS uint32_t version; /**< [in]: Struct version. Must be set to ::NV_ENC_EVENT_PARAMS_VER. */ uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ void* completionEvent; /**< [in]: Handle to event to be registered/unregistered with the NvEncodeAPI interface. */ - uint32_t reserved1[253]; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved1[254]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_EVENT_PARAMS; /** Macro for constructing the version field of ::_NV_ENC_EVENT_PARAMS */ -#define NV_ENC_EVENT_PARAMS_VER NVENCAPI_STRUCT_VERSION(1) +#define NV_ENC_EVENT_PARAMS_VER NVENCAPI_STRUCT_VERSION(2) /** * Encoder Session Creation parameters diff --git a/alvr/server/cpp/platform/win32/NvCodecUtils.h b/alvr/server/cpp/platform/win32/NvCodecUtils.h index cfc87e0e3f..145c7ef331 100644 --- a/alvr/server/cpp/platform/win32/NvCodecUtils.h +++ b/alvr/server/cpp/platform/win32/NvCodecUtils.h @@ -1,7 +1,7 @@ /* * This copyright notice applies to this header file only: * - * Copyright (c) 2010-2023 NVIDIA Corporation + * Copyright (c) 2010-2024 NVIDIA Corporation * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation @@ -403,7 +403,7 @@ class ConcurrentQueue { public: - ConcurrentQueue() {} + ConcurrentQueue() : maxSize(0) {} ConcurrentQueue(size_t size) : maxSize(size) {} ConcurrentQueue(const ConcurrentQueue&) = delete; ConcurrentQueue& operator=(const ConcurrentQueue&) = delete; diff --git a/alvr/server/cpp/platform/win32/NvEncoder.cpp b/alvr/server/cpp/platform/win32/NvEncoder.cpp index d1a21c5da5..216f4db53e 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.cpp +++ b/alvr/server/cpp/platform/win32/NvEncoder.cpp @@ -1,7 +1,7 @@ /* * This copyright notice applies to this header file only: * - * Copyright (c) 2010-2023 NVIDIA Corporation + * Copyright (c) 2010-2024 NVIDIA Corporation * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation @@ -179,22 +179,17 @@ void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeP } #endif - NV_ENC_PRESET_CONFIG presetConfig = { NV_ENC_PRESET_CONFIG_VER, { NV_ENC_CONFIG_VER } }; - m_nvenc.nvEncGetEncodePresetConfig(m_hEncoder, codecGuid, presetGuid, &presetConfig); + pIntializeParams->tuningInfo = tuningInfo; + pIntializeParams->encodeConfig->rcParams.rateControlMode = NV_ENC_PARAMS_RC_CONSTQP; + + //There are changes in the structure layout, therefore users are recommended to be careful while moving their application to the new header. + //Following initialization has changed for the same reason. + NV_ENC_PRESET_CONFIG presetConfig = { NV_ENC_PRESET_CONFIG_VER, 0, { NV_ENC_CONFIG_VER } }; + m_nvenc.nvEncGetEncodePresetConfigEx(m_hEncoder, codecGuid, presetGuid, tuningInfo, &presetConfig); memcpy(pIntializeParams->encodeConfig, &presetConfig.presetCfg, sizeof(NV_ENC_CONFIG)); - pIntializeParams->encodeConfig->frameIntervalP = 1; - pIntializeParams->encodeConfig->gopLength = NVENC_INFINITE_GOPLENGTH; - pIntializeParams->encodeConfig->rcParams.rateControlMode = NV_ENC_PARAMS_RC_CONSTQP; - if (!m_bMotionEstimationOnly) - { - pIntializeParams->tuningInfo = tuningInfo; - NV_ENC_PRESET_CONFIG presetConfig = { NV_ENC_PRESET_CONFIG_VER, { NV_ENC_CONFIG_VER } }; - m_nvenc.nvEncGetEncodePresetConfigEx(m_hEncoder, codecGuid, presetGuid, tuningInfo, &presetConfig); - memcpy(pIntializeParams->encodeConfig, &presetConfig.presetCfg, sizeof(NV_ENC_CONFIG)); - } - else + if(m_bMotionEstimationOnly) { m_encodeConfig.version = NV_ENC_CONFIG_VER; m_encodeConfig.rcParams.rateControlMode = NV_ENC_PARAMS_RC_CONSTQP; @@ -211,8 +206,8 @@ void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeP } else if (pIntializeParams->encodeGUID == NV_ENC_CODEC_HEVC_GUID) { - pIntializeParams->encodeConfig->encodeCodecConfig.hevcConfig.pixelBitDepthMinus8 = - (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT ) ? 2 : 0; + pIntializeParams->encodeConfig->encodeCodecConfig.hevcConfig.inputBitDepth = pIntializeParams->encodeConfig->encodeCodecConfig.hevcConfig.outputBitDepth = + (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT ) ? NV_ENC_BIT_DEPTH_10 : NV_ENC_BIT_DEPTH_8; if (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) { pIntializeParams->encodeConfig->encodeCodecConfig.hevcConfig.chromaFormatIDC = 3; @@ -221,8 +216,7 @@ void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeP } else if (pIntializeParams->encodeGUID == NV_ENC_CODEC_AV1_GUID) { - pIntializeParams->encodeConfig->encodeCodecConfig.av1Config.pixelBitDepthMinus8 = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT) ? 2 : 0; - pIntializeParams->encodeConfig->encodeCodecConfig.av1Config.inputPixelBitDepthMinus8 = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT) ? 2 : 0; + pIntializeParams->encodeConfig->encodeCodecConfig.av1Config.inputBitDepth = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT) ? NV_ENC_BIT_DEPTH_10 : NV_ENC_BIT_DEPTH_8; pIntializeParams->encodeConfig->encodeCodecConfig.av1Config.chromaFormatIDC = 1; pIntializeParams->encodeConfig->encodeCodecConfig.av1Config.idrPeriod = pIntializeParams->encodeConfig->gopLength; if (m_bOutputInVideoMemory) @@ -290,7 +284,7 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) if (pEncoderParams->encodeGUID == NV_ENC_CODEC_HEVC_GUID) { bool yuv10BitFormat = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) ? true : false; - if (yuv10BitFormat && pEncoderParams->encodeConfig->encodeCodecConfig.hevcConfig.pixelBitDepthMinus8 != 2) + if (yuv10BitFormat && pEncoderParams->encodeConfig->encodeCodecConfig.hevcConfig.inputBitDepth != NV_ENC_BIT_DEPTH_10) { NVENC_THROW_ERROR("Invalid PixelBitdepth", NV_ENC_ERR_INVALID_PARAM); } @@ -305,7 +299,7 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) if (pEncoderParams->encodeGUID == NV_ENC_CODEC_AV1_GUID) { bool yuv10BitFormat = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT) ? true : false; - if (yuv10BitFormat && pEncoderParams->encodeConfig->encodeCodecConfig.av1Config.pixelBitDepthMinus8 != 2) + if (yuv10BitFormat && pEncoderParams->encodeConfig->encodeCodecConfig.av1Config.inputBitDepth != NV_ENC_BIT_DEPTH_10) { NVENC_THROW_ERROR("Invalid PixelBitdepth", NV_ENC_ERR_INVALID_PARAM); } @@ -331,7 +325,9 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) } else { - NV_ENC_PRESET_CONFIG presetConfig = { NV_ENC_PRESET_CONFIG_VER, { NV_ENC_CONFIG_VER } }; + //There are changes in the structure layout, therefore users are recommended to be careful while moving their application to the new header. + //Following initialization has changed for the same reason. + NV_ENC_PRESET_CONFIG presetConfig = { NV_ENC_PRESET_CONFIG_VER, 0, { NV_ENC_CONFIG_VER } }; if (!m_bMotionEstimationOnly) { m_nvenc.nvEncGetEncodePresetConfigEx(m_hEncoder, pEncoderParams->encodeGUID, pEncoderParams->presetGUID, pEncoderParams->tuningInfo, &presetConfig); @@ -574,6 +570,7 @@ NVENCSTATUS NvEncoder::DoEncode(NV_ENC_INPUT_PTR inputBuffer, NV_ENC_OUTPUT_PTR picParams.bufferFmt = GetPixelFormat(); picParams.inputWidth = GetEncodeWidth(); picParams.inputHeight = GetEncodeHeight(); + picParams.frameIdx = m_iToSend; picParams.outputBitstream = outputBuffer; picParams.completionEvent = GetCompletionEvent(m_iToSend % m_nEncoderBuffer); NVENCSTATUS nvStatus = m_nvenc.nvEncEncodePicture(m_hEncoder, &picParams); @@ -620,7 +617,7 @@ std::size_t NvEncoder::GetEncodedPacket(std::vector &vOutputB vPacket.push_back(std::vector()); } vPacket[i].clear(); - + if ((m_initializeParams.encodeGUID == NV_ENC_CODEC_AV1_GUID) && (m_bUseIVFContainer)) { if (m_bWriteIVFFileHeader) diff --git a/alvr/server/cpp/platform/win32/NvEncoder.h b/alvr/server/cpp/platform/win32/NvEncoder.h index c3e3a5d1ee..b688dabc1d 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.h +++ b/alvr/server/cpp/platform/win32/NvEncoder.h @@ -1,7 +1,7 @@ /* * This copyright notice applies to this header file only: * - * Copyright (c) 2010-2023 NVIDIA Corporation + * Copyright (c) 2010-2024 NVIDIA Corporation * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation diff --git a/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp b/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp index 3c23f87608..64e78cc4b1 100644 --- a/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp +++ b/alvr/server/cpp/platform/win32/NvEncoderD3D11.cpp @@ -1,7 +1,7 @@ /* * This copyright notice applies to this header file only: * - * Copyright (c) 2010-2023 NVIDIA Corporation + * Copyright (c) 2010-2024 NVIDIA Corporation * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation diff --git a/alvr/server/cpp/platform/win32/NvEncoderD3D11.h b/alvr/server/cpp/platform/win32/NvEncoderD3D11.h index c605469c85..1eab46633e 100644 --- a/alvr/server/cpp/platform/win32/NvEncoderD3D11.h +++ b/alvr/server/cpp/platform/win32/NvEncoderD3D11.h @@ -1,7 +1,7 @@ /* * This copyright notice applies to this header file only: * - * Copyright (c) 2010-2023 NVIDIA Corporation + * Copyright (c) 2010-2024 NVIDIA Corporation * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index 38355c5029..9254d236e3 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -109,7 +109,7 @@ void VideoEncoderNVENC::Transmit(ID3D11Texture2D *pTexture, uint64_t presentatio ID3D11Texture2D *pInputTexture = reinterpret_cast(encoderInputFrame->inputPtr); m_pD3DRender->GetContext()->CopyResource(pInputTexture, pTexture); - NV_ENC_PIC_PARAMS picParams = {}; + NV_ENC_PIC_PARAMS picParams = {NV_ENC_PIC_PARAMS_VER}; if (insertIDR) { Debug("Inserting IDR frame.\n"); picParams.encodePicFlags = NV_ENC_PIC_FLAG_FORCEIDR; @@ -220,7 +220,7 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar config.idrPeriod = gopLength; if (Settings::Instance().m_use10bitEncoder) { - encodeConfig.encodeCodecConfig.hevcConfig.pixelBitDepthMinus8 = 2; + encodeConfig.encodeCodecConfig.hevcConfig.inputBitDepth = encodeConfig.encodeCodecConfig.hevcConfig.outputBitDepth = NV_ENC_BIT_DEPTH_10; } if (Settings::Instance().m_fillerData) { From 69e7add4f2913098b72176b2eca65017a25dc891 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sun, 9 Jun 2024 12:40:57 +0100 Subject: [PATCH 54/60] amf sdk v1.4.33 --- .../win32/amf/public/common/AMFFactory.cpp | 2 + .../win32/amf/public/common/AMFSTL.cpp | 26 ++++++ .../platform/win32/amf/public/common/AMFSTL.h | 57 ++++++++++-- .../win32/amf/public/common/CPUCaps.h | 3 +- .../platform/win32/amf/public/common/Thread.h | 12 +-- .../win32/amf/public/common/TraceAdapter.h | 40 ++++++++- .../public/common/Windows/ThreadWindows.cpp | 54 +++++++++++- .../public/include/components/ColorSpace.h | 2 + .../win32/amf/public/include/components/FRC.h | 88 +++++++++++++++++++ .../include/components/VideoEncoderAV1.h | 16 ++-- .../include/components/VideoEncoderHEVC.h | 8 +- .../include/components/VideoEncoderVCE.h | 8 +- .../win32/amf/public/include/core/Buffer.h | 16 ++-- .../win32/amf/public/include/core/D3D12AMF.h | 2 + .../win32/amf/public/include/core/Platform.h | 44 +++++----- .../win32/amf/public/include/core/Result.h | 3 + .../win32/amf/public/include/core/Surface.h | 19 ++-- .../win32/amf/public/include/core/Version.h | 2 +- .../win32/amf/public/include/core/VulkanAMF.h | 8 ++ 19 files changed, 339 insertions(+), 71 deletions(-) create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/components/FRC.h diff --git a/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp b/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp index 8077c273f3..74ca38a96f 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp @@ -70,6 +70,8 @@ AMFFactoryHelper::~AMFFactoryHelper() //------------------------------------------------------------------------------------------------- AMF_RESULT AMFFactoryHelper::Init(const wchar_t* dllName) { + dllName; + #ifndef AMF_CORE_STATIC if (m_hDLLHandle != NULL) { diff --git a/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp index bf49a3f152..2684d1b576 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp @@ -46,6 +46,10 @@ #include #endif +#if !defined(__APPLE__) && !defined(_WIN32) +#include +#endif + #pragma warning(disable: 4996) #if defined(__linux) || defined(__APPLE__) @@ -684,6 +688,28 @@ void AMF_STD_CALL amf_free(void* ptr) free(ptr); } //---------------------------------------------------------------------------------------- +void* AMF_STD_CALL amf_aligned_alloc(size_t count, size_t alignment) +{ +#if defined(_WIN32) + return _aligned_malloc(count, alignment); +#elif defined (__APPLE__) + void* p = nullptr; + posix_memalign(&p, alignment, count); + return p; +#elif defined(__linux) + return memalign(alignment, count); +#endif +} +//---------------------------------------------------------------------------------------- +void AMF_STD_CALL amf_aligned_free(void* ptr) +{ +#if defined(_WIN32) + return _aligned_free(ptr); +#else + return free(ptr); +#endif +} +//---------------------------------------------------------------------------------------- #if defined (__ANDROID__) template static bool isOneOf(CHAR_T p_ch, const CHAR_T* p_set) diff --git a/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h index 43256a839e..cf6f72d307 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.h @@ -33,6 +33,7 @@ #ifndef AMF_AMFSTL_h #define AMF_AMFSTL_h + #pragma once #if defined(__GNUC__) @@ -41,6 +42,7 @@ #pragma GCC diagnostic ignored "-Weffc++" #include //default stl allocator #else + #include //default stl allocator #endif @@ -62,19 +64,23 @@ extern "C" // allocator void* AMF_STD_CALL amf_alloc(amf_size count); void AMF_STD_CALL amf_free(void* ptr); + void* AMF_STD_CALL amf_aligned_alloc(size_t count, size_t alignment); + void AMF_STD_CALL amf_aligned_free(void* ptr); #if defined(__cplusplus) } #endif namespace amf { +#pragma warning(push) + +#pragma warning(disable: 4996) // was declared deprecated //------------------------------------------------------------------------------------------------- // STL allocator redefined - will allocate all memory in "C" runtime of Common.DLL //------------------------------------------------------------------------------------------------- template class amf_allocator : public std::allocator<_Ty> { - using alloc_traits = std::allocator_traits< std::allocator<_Ty> >; public: amf_allocator() : std::allocator<_Ty>() {} @@ -86,13 +92,14 @@ namespace amf { typedef amf_allocator<_Other> other; }; - void deallocate(typename alloc_traits::pointer _Ptr, typename std::allocator<_Ty>::size_type) + void deallocate(_Ty* const _Ptr, const size_t _Count) { + _Count; amf_free((void*)_Ptr); } - typename alloc_traits::pointer allocate(typename std::allocator<_Ty>::size_type _Count) + _Ty* allocate(const size_t _Count, const void* = static_cast(0)) { // allocate array of _Count el ements - return static_cast((amf_alloc(_Count * sizeof(_Ty)))); + return static_cast<_Ty*>(amf_alloc(_Count * sizeof(_Ty))); } }; @@ -199,7 +206,7 @@ namespace amf protected: size_t _size_limit; }; - +#pragma warning(pop) //--------------------------------------------------------------- #if defined(__GNUC__) //disable gcc warinings on STL code @@ -263,6 +270,46 @@ namespace amf typedef std::basic_string, amf::amf_allocator > amf_string; typedef std::basic_string, amf::amf_allocator > amf_wstring; +template +std::size_t amf_string_hash(TAmfString const& s) noexcept +{ +#if defined(_WIN64) || defined(__x86_64__) + constexpr size_t fnvOffsetBasis = 14695981039346656037ULL; + constexpr size_t fnvPrime = 1099511628211ULL; +#else // defined(_WIN64) || defined(__x86_64__) + constexpr size_t fnvOffsetBasis = 2166136261U; + constexpr size_t fnvPrime = 16777619U; +#endif // defined(_WIN64) || defined(__x86_64__) + + const unsigned char* const pStr = reinterpret_cast(s.c_str()); + const size_t count = s.size() * sizeof(typename TAmfString::value_type); + size_t value = fnvOffsetBasis; + for (size_t i = 0; i < count; ++i) + { + value ^= static_cast(pStr[i]); + value *= fnvPrime; + } + return value; +} + +template<> +struct std::hash +{ + std::size_t operator()(amf_wstring const& s) const noexcept + { + return amf_string_hash(s); + } +}; + +template<> +struct std::hash +{ + std::size_t operator()(amf_string const& s) const noexcept + { + return amf_string_hash(s); + } +}; + namespace amf { //------------------------------------------------------------------------------------------------- diff --git a/alvr/server/cpp/platform/win32/amf/public/common/CPUCaps.h b/alvr/server/cpp/platform/win32/amf/public/common/CPUCaps.h index 9669eb94a0..a8ac7e20f8 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/CPUCaps.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/CPUCaps.h @@ -40,7 +40,6 @@ #if defined(_WIN32) #include #else -#include #include #endif @@ -96,6 +95,8 @@ class InstructionSet static bool AVX512ER(void) { return CPU_Rep.f_7_EBX_[27]; } static bool AVX512CD(void) { return CPU_Rep.f_7_EBX_[28]; } static bool SHA(void) { return CPU_Rep.f_7_EBX_[29]; } + static bool AVX512BW(void) { return CPU_Rep.f_7_EBX_[30]; } + static bool AVX512VL(void) { return CPU_Rep.f_7_EBX_[31]; } static bool PREFETCHWT1(void) { return CPU_Rep.f_7_ECX_[0]; } diff --git a/alvr/server/cpp/platform/win32/amf/public/common/Thread.h b/alvr/server/cpp/platform/win32/amf/public/common/Thread.h index ab5cac156b..861e28d8e6 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/Thread.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/Thread.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -111,7 +111,7 @@ extern "C" #endif // cpu -#ifdef _WIN32 +#if defined(_WIN32) || (__linux__) amf_int32 AMF_STD_CALL amf_get_cpu_cores(); #endif @@ -310,6 +310,7 @@ namespace amf class AMFThreadObj; class AMFThread { + friend class AMFThreadObj; public: AMFThread(); virtual ~AMFThread(); @@ -320,6 +321,7 @@ namespace amf virtual bool StopRequested(); virtual bool IsRunning() const; + protected: // this is executed in the thread and overloaded by implementor virtual void Run() = 0; virtual bool Init() diff --git a/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h b/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h index a39ecc45be..35721fa3d4 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h @@ -64,8 +64,10 @@ #endif //----------------------------------- - - +#if defined(_DEBUG) && defined(__linux) +#include +#include +#endif namespace amf { @@ -297,7 +299,7 @@ static const wchar_t* AMF_FACILITY = NULL; } //{ } #elif defined(__linux) // #define AMFDebugBreak ((void)0) -#define AMFDebugBreak {if(amf::AMFAssertsEnabled()) {assert(0);} \ +#define AMFDebugBreak {if(amf::AMFAssertsEnabled() && ptrace(PTRACE_TRACEME, 0, 1, 0) < 0) {raise(SIGTRAP);} \ }//{ } #elif defined(__APPLE__) #define AMFDebugBreak {if(amf::AMFAssertsEnabled()) {assert(0);} \ @@ -500,6 +502,26 @@ inline bool AMFHResultSucceded(HRESULT result) { return SUCCEEDED(result); } */ inline amf_wstring AMFFormatHResult(HRESULT result) { return amf::amf_string_format(L"COM failed, HR = %0X:", result); } +/** +******************************************************************************* +* AMFVkResultSucceeded +* +* @brief +* Checks if VkResult succeeded +******************************************************************************* +*/ +inline bool AMFVkResultSucceeded(int result) { return result == 0; } + +/** +******************************************************************************* +* AMFFormatVkResult +* +* @brief +* Formats VkResult into descriptive string +******************************************************************************* +*/ +inline amf_wstring AMFFormatVkResult(int result) { return amf::amf_string_format(L"Vulkan failed, VkResult = %d:", result); } + /** ******************************************************************************* * AMF_CALL @@ -584,6 +606,18 @@ inline amf_wstring AMFFormatHResult(HRESULT result) { return amf::amf_string_fo */ #define ASSERT_RETURN_IF_HR_FAILED(exp, reterr, /*optional format, args,*/...) AMF_BASE_RETURN(exp, HRESULT, amf::AMFHResultSucceded, amf::AMFFormatHResult, AMF_TRACE_ERROR, AMF_FACILITY, reterr, L###exp, ##__VA_ARGS__) +/** +******************************************************************************* +* ASSERT_RETURN_IF_VK_FAILED +* +* @brief +* Checks VkResult if succeeded, otherwise trace error, debug break and return specified error to upper level +* +* Could be used: A) with just expression B) with optinal descriptive message C) message + args for printf +******************************************************************************* +*/ +#define ASSERT_RETURN_IF_VK_FAILED(exp, reterr, /*optional format, args,*/...) AMF_BASE_RETURN(exp, int, amf::AMFVkResultSucceeded, amf::AMFFormatVkResult, AMF_TRACE_ERROR, AMF_FACILITY, reterr, L###exp, ##__VA_ARGS__) + /** ******************************************************************************* diff --git a/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp b/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp index a4f4af027d..94c9da9f76 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/Windows/ThreadWindows.cpp @@ -64,6 +64,10 @@ amf_handle AMF_CDECL_CALL amf_create_critical_section() //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_delete_critical_section(amf_handle cs) { + if(cs == NULL) + { + return false; + } ::DeleteCriticalSection((CRITICAL_SECTION*)cs); delete (CRITICAL_SECTION*)cs; return true; // in Win32 - no errors @@ -71,12 +75,20 @@ bool AMF_CDECL_CALL amf_delete_critical_section(amf_handle cs) //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_enter_critical_section(amf_handle cs) { + if(cs == NULL) + { + return false; + } ::EnterCriticalSection((CRITICAL_SECTION*)cs); return true; // in Win32 - no errors } //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_wait_critical_section(amf_handle cs, amf_ulong ulTimeout) { + if(cs == NULL) + { + return false; + } while (true) { const BOOL success = ::TryEnterCriticalSection((CRITICAL_SECTION*)cs); @@ -98,6 +110,10 @@ bool AMF_CDECL_CALL amf_wait_critical_section(amf_handle cs, amf_ulong ulTimeout //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_leave_critical_section(amf_handle cs) { + if(cs == NULL) + { + return false; + } ::LeaveCriticalSection((CRITICAL_SECTION*)cs); return true; // in Win32 - no errors } @@ -118,21 +134,37 @@ amf_handle AMF_CDECL_CALL amf_create_event(bool bInitiallyOwned, bool bManualRes //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_delete_event(amf_handle hevent) { + if(hevent == NULL) + { + return false; + } return ::CloseHandle(hevent) != FALSE; } //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_set_event(amf_handle hevent) { + if(hevent == NULL) + { + return false; + } return ::SetEvent(hevent) != FALSE; } //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_reset_event(amf_handle hevent) { + if(hevent == NULL) + { + return false; + } return ::ResetEvent(hevent) != FALSE; } //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_wait_for_event(amf_handle hevent, amf_ulong ulTimeout) { + if(hevent == NULL) + { + return false; + } #if defined(METRO_APP) return ::WaitForSingleObjectEx(hevent, ulTimeout, FALSE) == WAIT_OBJECT_0; @@ -144,6 +176,10 @@ bool AMF_CDECL_CALL amf_wait_for_event(amf_handle hevent, amf_ulong ulTimeout) //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_wait_for_event_timeout(amf_handle hevent, amf_ulong ulTimeout) { + if(hevent == NULL) + { + return false; + } DWORD ret; #if defined(METRO_APP) ret = ::WaitForSingleObjectEx(hevent, ulTimeout, FALSE); @@ -172,11 +208,19 @@ amf_handle AMF_CDECL_CALL amf_open_mutex(const wchar_t* pName) //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_delete_mutex(amf_handle hmutex) { + if(hmutex == NULL) + { + return false; + } return ::CloseHandle(hmutex) != FALSE; } //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_wait_for_mutex(amf_handle hmutex, amf_ulong ulTimeout) { + if(hmutex == NULL) + { + return false; + } #if defined(METRO_APP) return ::WaitForSingleObjectEx(hmutex, ulTimeout, FALSE) == WAIT_OBJECT_0; @@ -188,12 +232,16 @@ bool AMF_CDECL_CALL amf_wait_for_mutex(amf_handle hmutex, amf_ulong ulTimeout) //---------------------------------------------------------------------------------------- bool AMF_CDECL_CALL amf_release_mutex(amf_handle hmutex) { + if(hmutex == NULL) + { + return false; + } return ::ReleaseMutex(hmutex) != FALSE; } //---------------------------------------------------------------------------------------- amf_handle AMF_CDECL_CALL amf_create_semaphore(amf_long iInitCount, amf_long iMaxCount, const wchar_t* pName) { - if(iMaxCount == NULL) + if(iMaxCount == NULL || iInitCount > iMaxCount) { return NULL; } @@ -210,7 +258,7 @@ bool AMF_CDECL_CALL amf_delete_semaphore(amf_handle hsemaphore) { if(hsemaphore == NULL) { - return true; + return false; } return ::CloseHandle(hsemaphore) != FALSE; } @@ -234,7 +282,7 @@ bool AMF_CDECL_CALL amf_release_semaphore(amf_handle hsemaphore, amf_long iCount { if(hsemaphore == NULL) { - return true; + return false; } return ::ReleaseSemaphore(hsemaphore, iCount, iOldCount) != FALSE; } diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h b/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h index fa6c752d40..8d6afdaeb3 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h @@ -37,6 +37,8 @@ #define AMF_ColorSpace_h #pragma once +#include "../core/Platform.h" + // YUV <--> RGB conversion matrix with range typedef enum AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM { diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/FRC.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FRC.h new file mode 100644 index 0000000000..af1f5bf7b8 --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/FRC.h @@ -0,0 +1,88 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// Copyright (c) 2021 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// + +#ifndef AMFFRC_h +#define AMFFRC_h + +#pragma once + +#define AMFFRC L"AMFFRC" + +// Select rendering API for FRC +enum AMF_FRC_ENGINE +{ + FRC_ENGINE_OFF = 0, + FRC_ENGINE_DX12 = 1, + FRC_ENGINE_OPENCL = 2, +}; + +// Select present mode for FRC +enum AMF_FRC_MODE_TYPE +{ + FRC_OFF = 0, + FRC_ON, + FRC_ONLY_INTERPOLATED, + FRC_x2_PRESENT, + TOTAL_FRC_MODES +}; + +enum AMF_FRC_SNAPSHOT_MODE_TYPE { + FRC_SNAPSHOT_OFF = 0, + FRC_SNAPSHOT_LOAD, + FRC_SNAPSHOT_STORE, + FRC_SNAPSHOT_REGRESSION_TEST, + FRC_SNAPSHOT_STORE_NO_PADDING, + TOTAL_FRC_SNAPSHOT_MODES +}; + +enum AMF_FRC_PROFILE { + FRC_PROFILE_LOW = 0, + FRC_PROFILE_HIGH = 1, + FRC_PROFILE_SUPER = 2, + TOTAL_FRC_PROFILES +}; + +enum AMF_FRC_MV_SEARCH_MODE { + FRC_MV_SEARCH_NATIVE = 0, + FRC_MV_SEARCH_PERFORMANCE = 1, + TOTAL_FRC_MV_SEARCH_MODES +}; + +#define AMF_FRC_ENGINE_TYPE L"FRCEngineType" // AMF_MEMORY_TYPE (DX12, OPENCL, default : DX12)" - determines how the object is initialized and what kernels to use +#define AMF_FRC_OUTPUT_SIZE L"FRCSOutputSize" // AMFSize - output scaling width/hieight +#define AMF_FRC_MODE L"FRCMode" // FRC mode (0-off, 1-on (call at x2 source FPS), 2-only interpolated, 3-x2 Present) +#define AMF_FRC_ENABLE_FALLBACK L"FRCEnableFallback" // FRC enable fallback mode +#define AMF_FRC_INDICATOR L"FRCIndicator" // bool (default : false) +#define AMF_FRC_PROFILE L"FRCProfile" // FRC profile +#define AMF_FRC_MV_SEARCH_MODE L"FRCMVSEARCHMODE" // FRC MV search mode + +#endif //#ifndef AMFFRC_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h index c1082f18bb..bcf7d4ca7f 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h @@ -235,6 +235,8 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM // Miscellaneous #define AMF_VIDEO_ENCODER_AV1_EXTRA_DATA L"Av1ExtraData" // AMFInterface* - > AMFBuffer*; buffer to retrieve coded sequence header +#define AMF_VIDEO_ENCODER_AV1_ENABLE_SMART_ACCESS_VIDEO L"Av1EnableEncoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature +#define AMF_VIDEO_ENCODER_AV1_INPUT_QUEUE_SIZE L"Av1InputQueueSize" // amf_int64; default 16; Set amf input queue size // Tile Output #define AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE L"AV1OutputMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE_ENUM); default = AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE_FRAME - defines encoder output mode @@ -257,13 +259,13 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_AV1_PEAK_BITRATE L"Av1PeakBitrate" // amf_int64; default = depends on USAGE; Peak bit rate in bits #define AMF_VIDEO_ENCODER_AV1_MAX_COMPRESSED_FRAME_SIZE L"Av1MaxCompressedFrameSize" // amf_int64; default = 0; Max compressed frame Size in bits. 0 - no limit -#define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTRA L"Av1MinQIndex_Intra" // amf_int64; default = depends on USAGE; Min QIndex for intra frames; range = 0-255 -#define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTRA L"Av1MaxQIndex_Intra" // amf_int64; default = depends on USAGE; Max QIndex for intra frames; range = 0-255 -#define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTER L"Av1MinQIndex_Inter" // amf_int64; default = depends on USAGE; Min QIndex for inter frames; range = 0-255 -#define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTER L"Av1MaxQIndex_Inter" // amf_int64; default = depends on USAGE; Max QIndex for inter frames; range = 0-255 +#define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTRA L"Av1MinQIndex_Intra" // amf_int64; default = depends on USAGE; Min QIndex for intra frames; range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTRA L"Av1MaxQIndex_Intra" // amf_int64; default = depends on USAGE; Max QIndex for intra frames; range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTER L"Av1MinQIndex_Inter" // amf_int64; default = depends on USAGE; Min QIndex for inter frames; range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTER L"Av1MaxQIndex_Inter" // amf_int64; default = depends on USAGE; Max QIndex for inter frames; range = 1-255 -#define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTRA L"Av1QIndex_Intra" // amf_int64; default = depends on USAGE; intra-frame QIndex; range = 0-255 -#define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTER L"Av1QIndex_Inter" // amf_int64; default = depends on USAGE; inter-frame QIndex; range = 0-255 +#define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTRA L"Av1QIndex_Intra" // amf_int64; default = depends on USAGE; intra-frame QIndex; range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTER L"Av1QIndex_Inter" // amf_int64; default = depends on USAGE; inter-frame QIndex; range = 1-255 #define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_SKIP_FRAME L"Av1RateControlSkipFrameEnable" // bool; default = depends on USAGE; If true, rate control may code skip frame when needed; if false, rate control will not code skip frame. @@ -354,8 +356,6 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_AV1_CAP_MAX_NUM_LTR_FRAMES L"Av1CapMaxNumLTRFrames" // amf_int64; default = N/A; The cap of maximum number of LTR frames. This value is calculated based on current value of AMF_VIDEO_ENCODER_AV1_MAX_NUM_TEMPORAL_LAYERS. #define AMF_VIDEO_ENCODER_AV1_CAP_SUPPORT_TILE_OUTPUT L"AV1SupportTileOutput" // amf_bool; if tile output is supported -#define AMF_VIDEO_ENCODER_AV1_ENABLE_SMART_ACCESS_VIDEO L"Av1EnableEncoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature - #define AMF_VIDEO_ENCODER_AV1_CAP_SUPPORT_SMART_ACCESS_VIDEO L"Av1EncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video #endif //#ifndef AMF_VideoEncoderAV1_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h index 22b8f78fb6..9549ec3399 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h @@ -242,6 +242,9 @@ enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_ENUM // misc #define AMF_VIDEO_ENCODER_HEVC_QUERY_TIMEOUT L"HevcQueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. +#define AMF_VIDEO_ENCODER_HEVC_MEMORY_TYPE L"HevcEncoderMemoryType" // amf_int64(AMF_MEMORY_TYPE) , default is AMF_MEMORY_UNKNOWN, Values : AMF_MEMORY_DX11, AMF_MEMORY_DX9, AMF_MEMORY_UNKNOWN (auto) +#define AMF_VIDEO_ENCODER_HEVC_ENABLE_SMART_ACCESS_VIDEO L"HevcEnableEncoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature +#define AMF_VIDEO_ENCODER_HEVC_INPUT_QUEUE_SIZE L"HevcInputQueueSize" // amf_int64; default 16; Set amf input queue size // Per-submission properties - can be set on input surface interface #define AMF_VIDEO_ENCODER_HEVC_END_OF_SEQUENCE L"HevcEndOfSequence" // bool; default = false; generate end of sequence @@ -319,11 +322,6 @@ enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_CAPS_HEVC_QUERY_TIMEOUT_SUPPORT L"HevcQueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call (Deprecated, please use AMF_VIDEO_ENCODER_HEVC_CAP_QUERY_TIMEOUT_SUPPORT instead) #define AMF_VIDEO_ENCODER_HEVC_CAP_SUPPORT_SLICE_OUTPUT L"HevcSupportSliceOutput" // amf_bool - if slice output is supported -// properties set on AMFComponent to control component creation -#define AMF_VIDEO_ENCODER_HEVC_MEMORY_TYPE L"HevcEncoderMemoryType" // amf_int64(AMF_MEMORY_TYPE) , default is AMF_MEMORY_UNKNOWN, Values : AMF_MEMORY_DX11, AMF_MEMORY_DX9, AMF_MEMORY_UNKNOWN (auto) - -#define AMF_VIDEO_ENCODER_HEVC_ENABLE_SMART_ACCESS_VIDEO L"HevcEnableEncoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature - #define AMF_VIDEO_ENCODER_HEVC_CAP_SUPPORT_SMART_ACCESS_VIDEO L"HevcEncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video #endif //#ifndef AMF_VideoEncoderHEVC_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h index ffe8e7fa3b..ce6a27c338 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h @@ -276,6 +276,9 @@ enum AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE L"PicTransferMode" // amf_int64(AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_ENUM); default = AMF_VIDEO_ENCODER_PICTURE_TRANSFER_MODE_OFF - whether to exchange reference/reconstructed pic between encoder and application // misc #define AMF_VIDEO_ENCODER_QUERY_TIMEOUT L"QueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. +#define AMF_VIDEO_ENCODER_MEMORY_TYPE L"EncoderMemoryType" // amf_int64(AMF_MEMORY_TYPE) , default is AMF_MEMORY_UNKNOWN, Values : AMF_MEMORY_DX11, AMF_MEMORY_DX9, AMF_MEMORY_VULKAN or AMF_MEMORY_UNKNOWN (auto) +#define AMF_VIDEO_ENCODER_ENABLE_SMART_ACCESS_VIDEO L"EnableEncoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature +#define AMF_VIDEO_ENCODER_INPUT_QUEUE_SIZE L"InputQueueSize" // amf_int64; default 16; Set amf input queue size // Per-submission properties - can be set on input surface interface #define AMF_VIDEO_ENCODER_END_OF_SEQUENCE L"EndOfSequence" // bool; default = false; generate end of sequence @@ -367,11 +370,6 @@ enum AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_CAP_SUPPORT_SLICE_OUTPUT L"SupportSliceOutput" // amf_bool - if slice output is supported -// properties set on AMFComponent to control component creation -#define AMF_VIDEO_ENCODER_MEMORY_TYPE L"EncoderMemoryType" // amf_int64(AMF_MEMORY_TYPE) , default is AMF_MEMORY_UNKNOWN, Values : AMF_MEMORY_DX11, AMF_MEMORY_DX9, AMF_MEMORY_VULKAN or AMF_MEMORY_UNKNOWN (auto) - -#define AMF_VIDEO_ENCODER_ENABLE_SMART_ACCESS_VIDEO L"EnableEncoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature - #define AMF_VIDEO_ENCODER_CAP_SUPPORT_SMART_ACCESS_VIDEO L"EncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video #endif //#ifndef AMF_VideoEncoderVCE_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h index 15c2907813..51ead101be 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -51,14 +51,16 @@ namespace amf // bit mask //---------------------------------------------------------------------------------------------- typedef enum AMF_BUFFER_USAGE_BITS - { // D3D11 D3D12 Vulkan - AMF_BUFFER_USAGE_DEFAULT = 0x80000000, // D3D11_USAGE_STAGING, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT + { // D3D11 D3D12 Vulkan + AMF_BUFFER_USAGE_DEFAULT = 0x80000000, // D3D11_USAGE_STAGING, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT AMF_BUFFER_USAGE_NONE = 0x00000000, // 0 , D3D12_RESOURCE_FLAG_NONE, 0 - AMF_BUFFER_USAGE_CONSTANT = 0x00000001, // D3D11_BIND_CONSTANT_BUFFER, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT + AMF_BUFFER_USAGE_CONSTANT = 0x00000001, // D3D11_BIND_CONSTANT_BUFFER, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT AMF_BUFFER_USAGE_SHADER_RESOURCE = 0x00000002, // D3D11_BIND_SHADER_RESOURCE, D3D12_RESOURCE_FLAG_ALLOW_RENDER_TARGET, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT AMF_BUFFER_USAGE_UNORDERED_ACCESS = 0x00000004, // D3D11_BIND_UNORDERED_ACCESS, D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, VK_BUFFER_USAGE_UNIFORM_BUFFER_BIT | VK_BUFFER_USAGE_STORAGE_BUFFER_BIT AMF_BUFFER_USAGE_TRANSFER_SRC = 0x00000008, // VK_BUFFER_USAGE_TRANSFER_SRC_BIT AMF_BUFFER_USAGE_TRANSFER_DST = 0x00000010, // VK_BUFFER_USAGE_TRANSFER_DST_BIT + AMF_BUFFER_USAGE_NOSYNC = 0x00000020, // no fence (AMFFenceGUID) created no semaphore (AMFVulkanSync::hSemaphore) created + AMF_BUFFER_USAGE_DECODER_SRC = 0x00000040, // VK_BUFFER_USAGE_VIDEO_DECODE_SRC_BIT_KHR } AMF_BUFFER_USAGE_BITS; typedef amf_flags AMF_BUFFER_USAGE; //---------------------------------------------------------------------------------------------- diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h b/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h index 37956b4c5f..782859778f 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h @@ -35,6 +35,8 @@ #pragma once #include "Platform.h" #if defined(_WIN32)||(defined(__linux) && defined(AMF_WSL)) + +#define AMFDX12_NUMBER_OF_DESCRYPTOR_HEAPS L"NumberOfDescryptorHeaps" // amf_int64, default is 4, to be set on AMFContext // syncronization properties set via SetPrivateData() AMF_WEAK GUID AMFResourceStateGUID = { 0x452da9bf, 0x4ad7, 0x47a5, { 0xa6, 0x9b, 0x96, 0xd3, 0x23, 0x76, 0xf2, 0xf3 } }; // Current resource state value (D3D12_RESOURCE_STATES ), sizeof(UINT), set on ID3D12Resource AMF_WEAK GUID AMFFenceGUID = { 0x910a7928, 0x57bd, 0x4b04, { 0x91, 0xa3, 0xe7, 0xb8, 0x04, 0x12, 0xcd, 0xa5 } }; // IUnknown (ID3D12Fence), set on ID3D12Resource syncronization fence for this resource diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h index 3ead3aed4e..3f997fef71 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -47,16 +47,20 @@ #define AMF_CORE_LINK __declspec(dllimport) #endif #endif -#elif defined(__linux) +#elif defined(__linux) #if defined(AMF_CORE_EXPORTS) #define AMF_CORE_LINK __attribute__((visibility("default"))) #else #define AMF_CORE_LINK #endif -#else +#else #define AMF_CORE_LINK #endif // #ifdef _WIN32 +#if defined(_DEBUG) && !defined(DEBUG) // prevents other headers to #define DEBUG without assigned value what causes failure in PAL build +#define DEBUG 1 +#endif + #define AMF_MACRO_STRING2(x) #x #define AMF_MACRO_STRING(x) AMF_MACRO_STRING2(x) @@ -121,7 +125,7 @@ typedef signed int HRESULT; #define AMF_INLINE __inline__ #define AMF_FORCEINLINE __inline__ #endif - #define AMF_NO_VTABLE + #define AMF_NO_VTABLE #if !defined(AMFPRId64) #define AMFPRId64 "lld" @@ -138,7 +142,7 @@ typedef signed int HRESULT; #if defined(_WIN32) -#define AMF_WEAK __declspec( selectany ) +#define AMF_WEAK __declspec( selectany ) #elif defined (__GNUC__) || defined (__GCC__) || defined(__clang__)//GCC or CLANG #define AMF_WEAK __attribute__((weak)) #endif @@ -169,14 +173,14 @@ typedef void amf_void; typedef bool amf_bool; #else typedef amf_uint8 amf_bool; -#define true 1 -#define false 0 +#define true 1 +#define false 0 #endif -typedef long amf_long; -typedef int amf_int; -typedef unsigned long amf_ulong; -typedef unsigned int amf_uint; +typedef long amf_long; +typedef int amf_int; +typedef unsigned long amf_ulong; +typedef unsigned int amf_uint; typedef amf_int64 amf_pts; // in 100 nanosecs @@ -209,7 +213,7 @@ typedef struct AMFRect #if defined(__cplusplus) bool operator==(const AMFRect& other) const { - return left == other.left && top == other.top && right == other.right && bottom == other.bottom; + return left == other.left && top == other.top && right == other.right && bottom == other.bottom; } AMF_INLINE bool operator!=(const AMFRect& other) const { return !operator==(other); } amf_int32 Width() const { return right - left; } @@ -230,7 +234,7 @@ typedef struct AMFSize #if defined(__cplusplus) bool operator==(const AMFSize& other) const { - return width == other.width && height == other.height; + return width == other.width && height == other.height; } AMF_INLINE bool operator!=(const AMFSize& other) const { return !operator==(other); } #endif @@ -249,7 +253,7 @@ typedef struct AMFPoint #if defined(__cplusplus) bool operator==(const AMFPoint& other) const { - return x == other.x && y == other.y; + return x == other.x && y == other.y; } AMF_INLINE bool operator!=(const AMFPoint& other) const { return !operator==(other); } #endif @@ -348,7 +352,7 @@ typedef struct AMFRate #if defined(__cplusplus) bool operator==(const AMFRate& other) const { - return num == other.num && den == other.den; + return num == other.num && den == other.den; } AMF_INLINE bool operator!=(const AMFRate& other) const { return !operator==(other); } #endif @@ -367,7 +371,7 @@ typedef struct AMFRatio #if defined(__cplusplus) bool operator==(const AMFRatio& other) const { - return num == other.num && den == other.den; + return num == other.num && den == other.den; } AMF_INLINE bool operator!=(const AMFRatio& other) const { return !operator==(other); } #endif @@ -402,7 +406,7 @@ typedef struct AMFColor #if defined(__cplusplus) bool operator==(const AMFColor& other) const { - return r == other.r && g == other.g && b == other.b && a == other.a; + return r == other.r && g == other.g && b == other.b && a == other.a; } AMF_INLINE bool operator!=(const AMFColor& other) const { return !operator==(other); } #endif diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Result.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Result.h index cf84bed730..350b72f65b 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Result.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Result.h @@ -122,6 +122,9 @@ typedef enum AMF_RESULT AMF_TAN_UNSUPPORTED_VERSION , // Not supported version requested, solely for TANCreateContext(). AMF_NEED_MORE_INPUT ,//returned by AMFComponent::SubmitInput did not produce a buffer because more input submissions are required. + + // device vulkan + AMF_VULKAN_FAILED , } AMF_RESULT; #endif //#ifndef AMF_Result_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h index 3013af040c..0f1b1db671 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -62,10 +62,10 @@ namespace amf AMF_SURFACE_P010, ///< 10 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 10 bit per component (16 allocated, upper 10 bits are used) AMF_SURFACE_RGBA_F16, ///< 11 - packed 4:4:4 - 16 bit per component float AMF_SURFACE_UYVY, ///< 12 - packed 4:2:2 the similar to YUY2 but Y and UV swapped: Byte 0=8-bit Cb; Byte 1=8-bit Y'0; Byte 2=8-bit Cr Byte 3=8-bit Y'1; (used the same DX/CL/Vulkan storage as YUY2) - AMF_SURFACE_R10G10B10A2, ///< 13 - packed 4:4:4 to 4 bytes, 10 bit per RGB component, 2 bits per A + AMF_SURFACE_R10G10B10A2, ///< 13 - packed 4:4:4 to 4 bytes, 10 bit per RGB component, 2 bits per A AMF_SURFACE_Y210, ///< 14 - packed 4:2:2 - Word 0=10-bit Y'0; Word 1=10-bit Cb; Word 2=10-bit Y'1; Word 3=10-bit Cr AMF_SURFACE_AYUV, ///< 15 - packed 4:4:4 - 8 bit per component YUVA - AMF_SURFACE_Y410, ///< 16 - packed 4:4:4 - 10 bit per YUV component, 2 bits per A, AVYU + AMF_SURFACE_Y410, ///< 16 - packed 4:4:4 - 10 bit per YUV component, 2 bits per A, AVYU AMF_SURFACE_Y416, ///< 16 - packed 4:4:4 - 16 bit per component 4 bytes, AVYU AMF_SURFACE_GRAY32, ///< 17 - single component - 32 bit AMF_SURFACE_P012, ///< 18 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 12 bit per component (16 allocated, upper 12 bits are used) @@ -79,7 +79,7 @@ namespace amf // bit mask //---------------------------------------------------------------------------------------------- typedef enum AMF_SURFACE_USAGE_BITS - { // D3D11 D3D12 Vulkan + { // D3D11 D3D12 Vulkan AMF_SURFACE_USAGE_DEFAULT = 0x80000000, // will apply default D3D12_RESOURCE_FLAG_NONE VK_IMAGE_USAGE_TRANSFER_SRC_BIT| VK_IMAGE_USAGE_TRANSFER_DST_BIT | VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT AMF_SURFACE_USAGE_NONE = 0x00000000, // 0, D3D12_RESOURCE_FLAG_NONE, 0 AMF_SURFACE_USAGE_SHADER_RESOURCE = 0x00000001, // D3D11_BIND_SHADER_RESOURCE, D3D12_RESOURCE_FLAG_NONE VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT @@ -87,7 +87,10 @@ namespace amf AMF_SURFACE_USAGE_UNORDERED_ACCESS = 0x00000004, // D3D11_BIND_UNORDERED_ACCESS, D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, VK_IMAGE_USAGE_SAMPLED_BIT | VK_IMAGE_USAGE_STORAGE_BIT | VK_IMAGE_USAGE_INPUT_ATTACHMENT_BIT AMF_SURFACE_USAGE_TRANSFER_SRC = 0x00000008, // D3D12_RESOURCE_FLAG_NONE VK_IMAGE_USAGE_TRANSFER_SRC_BIT AMF_SURFACE_USAGE_TRANSFER_DST = 0x00000010, // D3D12_RESOURCE_FLAG_NONE VK_IMAGE_USAGE_TRANSFER_DST_BIT - AMF_SURFACE_USAGE_LINEAR = 0x00000020 + AMF_SURFACE_USAGE_LINEAR = 0x00000020, // + AMF_SURFACE_USAGE_NOSYNC = 0x00000040, // no fence (AMFFenceGUID) created no semaphore (AMFVulkanSync::hSemaphore) created + AMF_SURFACE_USAGE_DECODER_DST = 0x00000080, // VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR + AMF_SURFACE_USAGE_DECODER_DPB = 0x00000100, // VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR } AMF_SURFACE_USAGE_BITS; typedef amf_flags AMF_SURFACE_USAGE; //---------------------------------------------------------------------------------------------- diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h index 6bec015513..61fef43e90 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h @@ -51,7 +51,7 @@ #define AMF_VERSION_MAJOR 1 #define AMF_VERSION_MINOR 4 -#define AMF_VERSION_RELEASE 30 +#define AMF_VERSION_RELEASE 33 #define AMF_VERSION_BUILD_NUM 0 #define AMF_FULL_VERSION AMF_MAKE_FULL_VERSION(AMF_VERSION_MAJOR, AMF_VERSION_MINOR, AMF_VERSION_RELEASE, AMF_VERSION_BUILD_NUM) diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h b/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h index e402bb12a7..5813ae8ac9 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h @@ -90,6 +90,14 @@ namespace amf AMFVulkanSync Sync; // To sync on GPU } AMFVulkanSurface; + typedef struct AMFVulkanSurface1 + { + amf_size cbSizeof; // sizeof(AMFVulkanSurface) + void* pNext; // reserved for extensions + // surface properties + amf_uint32 eTiling; // VkImageTiling + } AMFVulkanSurface1; + typedef struct AMFVulkanView { amf_size cbSizeof; // sizeof(AMFVulkanView) From 5601929791b9b88a81187a1e6f77101f4589f6b7 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Mon, 26 Aug 2024 15:47:34 +0100 Subject: [PATCH 55/60] fix zero sample count --- alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp b/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp index d1e1601b80..2642fbb2c6 100644 --- a/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp +++ b/alvr/server/cpp/platform/win32/OvrDirectModeComponent.cpp @@ -27,7 +27,8 @@ void OvrDirectModeComponent::CreateSwapTextureSet(uint32_t unPid, const SwapText } SharedTextureDesc.ArraySize = 1; SharedTextureDesc.MipLevels = 1; - SharedTextureDesc.SampleDesc.Count = pSwapTextureSetDesc->nSampleCount; + SharedTextureDesc.SampleDesc.Count + = pSwapTextureSetDesc->nSampleCount == 0 ? 1 : pSwapTextureSetDesc->nSampleCount; SharedTextureDesc.SampleDesc.Quality = 0; SharedTextureDesc.Usage = D3D11_USAGE_DEFAULT; SharedTextureDesc.Format = format; From 3858602721b11947415d2cffaaffc66e130017ec Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Thu, 6 Feb 2025 23:45:28 +0000 Subject: [PATCH 56/60] workaround-fix jittery system overlays during low framerates --- alvr/server/cpp/alvr_server/OvrHMD.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/alvr/server/cpp/alvr_server/OvrHMD.cpp b/alvr/server/cpp/alvr_server/OvrHMD.cpp index a8c3211495..9ead9f0274 100644 --- a/alvr/server/cpp/alvr_server/OvrHMD.cpp +++ b/alvr/server/cpp/alvr_server/OvrHMD.cpp @@ -186,6 +186,13 @@ vr::EVRInitError OvrHmd::Activate(vr::TrackedDeviceIndex_t unObjectId) { this->prop_container, vr::Prop_DriverDirectModeSendsVsyncEvents_Bool, true); #endif + // workaround-fix to jittery system overlays during low frame-rates, + // only workaround as the driver compositor doesn't do warping or + // handle overlay type layers properly. + // this setting will become on by default in SteamVR 2.9.6 + vr::VRProperties()->SetBoolProperty( + this->prop_container, vr::Prop_ForceSystemLayerUseAppPoses_Bool, true); + // Set battery as true vr::VRProperties()->SetBoolProperty( this->prop_container, vr::Prop_DeviceProvidesBatteryStatus_Bool, true); From 60a8e22b90f8d008f328e25157b30f1f32ce128a Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Sun, 9 Mar 2025 22:47:39 +0000 Subject: [PATCH 57/60] Adds support for color quantization scheme option --- alvr/dashboard/js/app/nls/settings.js | 3 ++ alvr/server/cpp/alvr_server/Settings.cpp | 1 + alvr/server/cpp/alvr_server/Settings.h | 7 ++++ .../cpp/platform/win32/VideoEncoderNVENC.cpp | 17 +++++++++ .../cpp/platform/win32/VideoEncoderSW.cpp | 1 + .../cpp/platform/win32/VideoEncoderVCE.cpp | 37 +++++++++++++++++++ alvr/server/src/connection.rs | 1 + alvr/session/src/lib.rs | 1 + alvr/session/src/settings.rs | 13 +++++++ 9 files changed, 81 insertions(+) diff --git a/alvr/dashboard/js/app/nls/settings.js b/alvr/dashboard/js/app/nls/settings.js index d10f8ede40..3fac9100cc 100644 --- a/alvr/dashboard/js/app/nls/settings.js +++ b/alvr/dashboard/js/app/nls/settings.js @@ -68,6 +68,9 @@ define({ "HEVC is preferred to achieve better visual quality on lower bitrates. AMD video cards work best with HEVC.", "_root_video_codec_H264-choice-.name": "h264", "_root_video_codec_HEVC-choice-.name": "HEVC (h265)", + "_root_video_colorRange-choice-.name": "Color Range", + "_root_video_colorRange-choice-.description": + "Controls how colors are processed when converting between different color systems. Full Range uses all available colors for richer, more detailed images, while Limited Range adjusts the colors to match common video standards.", "_root_video_clientRequestRealtimeDecoder.name": "Request realtime decoder priority (client)", // adv "_root_video_use10bitEncoder.name": diff --git a/alvr/server/cpp/alvr_server/Settings.cpp b/alvr/server/cpp/alvr_server/Settings.cpp index 55e4f155bb..cb9b254345 100644 --- a/alvr/server/cpp/alvr_server/Settings.cpp +++ b/alvr/server/cpp/alvr_server/Settings.cpp @@ -85,6 +85,7 @@ void Settings::Load() m_nAdapterIndex = (int32_t)config.get("adapter_index").get(); m_codec = (int32_t)config.get("codec").get(); + m_colorRange = static_cast(config.get("color_range").get()); m_rateControlMode = (uint32_t)config.get("rate_control_mode").get(); m_fillerData = config.get("filler_data").get(); m_entropyCoding = (uint32_t)config.get("entropy_coding").get(); diff --git a/alvr/server/cpp/alvr_server/Settings.h b/alvr/server/cpp/alvr_server/Settings.h index da7e1ac8cb..b9d892cea3 100644 --- a/alvr/server/cpp/alvr_server/Settings.h +++ b/alvr/server/cpp/alvr_server/Settings.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include "ALVR-common/packet_types.h" @@ -62,6 +63,12 @@ class Settings float m_sharpening; int m_codec; + enum class ColorRange : std::uint32_t { + Full = 0, + Limited = 1, + }; + ColorRange m_colorRange { ColorRange::Full }; + bool IsColorRangeItuFull() const { return m_colorRange == ColorRange::Full; } uint64_t mEncodeBitrateMBs; bool m_enableAdaptiveBitrate; uint64_t m_adaptiveBitrateMaximum; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index 9254d236e3..36f6cbc038 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -157,6 +157,7 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar initializeParams.encodeHeight = initializeParams.darHeight = renderHeight; initializeParams.frameRateNum = refreshRate; initializeParams.frameRateDen = 1; + initializeParams.splitEncodeMode = NV_ENC_SPLIT_AUTO_MODE; if (Settings::Instance().m_nvencRefreshRate != -1) { initializeParams.frameRateNum = Settings::Instance().m_nvencRefreshRate; @@ -176,6 +177,18 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar gopLength = Settings::Instance().m_nvencGopLength; } + const auto setVUIParameters = [](auto& vuiParams) { + const uint32_t colorRangeFull = Settings::Instance().IsColorRangeItuFull(); + Info("ColorRange-Full: %u", colorRangeFull); + vuiParams.videoSignalTypePresentFlag = 1; + vuiParams.videoFormat = NV_ENC_VUI_VIDEO_FORMAT_UNSPECIFIED; + vuiParams.videoFullRangeFlag = colorRangeFull; + vuiParams.colourDescriptionPresentFlag = 1; + vuiParams.colourPrimaries = NV_ENC_VUI_COLOR_PRIMARIES_BT709; + vuiParams.transferCharacteristics = NV_ENC_VUI_TRANSFER_CHARACTERISTIC_SRGB; + vuiParams.colourMatrix = NV_ENC_VUI_MATRIX_COEFFS_BT709; + }; + if (m_codec == ALVR_CODEC_H264) { auto &config = encodeConfig.encodeCodecConfig.h264Config; config.repeatSPSPPS = 1; @@ -203,6 +216,8 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar if (Settings::Instance().m_fillerData) { config.enableFillerDataInsertion = Settings::Instance().m_rateControlMode == ALVR_CBR; } + + setVUIParameters(config.h264VUIParameters); } else { auto &config = encodeConfig.encodeCodecConfig.hevcConfig; @@ -226,6 +241,8 @@ void VideoEncoderNVENC::FillEncodeConfig(NV_ENC_INITIALIZE_PARAMS &initializePar if (Settings::Instance().m_fillerData) { config.enableFillerDataInsertion = Settings::Instance().m_rateControlMode == ALVR_CBR; } + + setVUIParameters(config.hevcVUIParameters); } // Disable automatic IDR insertion by NVENC. We need to manually insert IDR when packet is dropped diff --git a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp index bf130762d9..8cf8697285 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderSW.cpp @@ -81,6 +81,7 @@ void VideoEncoderSW::Initialize() { m_codecContext->sample_aspect_ratio = AVRational{1, 1}; m_codecContext->pix_fmt = Settings::Instance().m_use10bitEncoder ? AV_PIX_FMT_YUV420P10LE : AV_PIX_FMT_YUV420P; m_codecContext->max_b_frames = 0; + m_codecContext->color_range = Settings::Instance().IsColorRangeItuFull() ? AVCOL_RANGE_JPEG : AVCOL_RANGE_MPEG; m_codecContext->gop_size = 0; m_codecContext->bit_rate = Settings::Instance().mEncodeBitrateMBs * 1'000'000L; m_codecContext->rc_buffer_size = m_codecContext->bit_rate / Settings::Instance().m_refreshRate * 1.1; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp index b81a087735..2ca83cd912 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderVCE.cpp @@ -222,6 +222,22 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( if (m_hasQueryTimeout) { amfEncoder->SetProperty(AMF_VIDEO_ENCODER_QUERY_TIMEOUT, 1000); // 1s timeout } + + amfEncoder->SetProperty(AMF_VIDEO_ENCODER_FULL_RANGE_COLOR, Settings::Instance().IsColorRangeItuFull()); + + amfEncoder->SetProperty( + AMF_VIDEO_ENCODER_OUTPUT_COLOR_PROFILE, + Settings::Instance().IsColorRangeItuFull() + ? AMF_VIDEO_CONVERTER_COLOR_PROFILE_FULL_709 + : AMF_VIDEO_CONVERTER_COLOR_PROFILE_709 + ); + amfEncoder->SetProperty( + AMF_VIDEO_ENCODER_OUTPUT_TRANSFER_CHARACTERISTIC, + AMF_COLOR_TRANSFER_CHARACTERISTIC_IEC61966_2_1 + ); + amfEncoder->SetProperty( + AMF_VIDEO_ENCODER_OUTPUT_COLOR_PRIMARIES, AMF_COLOR_PRIMARIES_BT709 + ); } else { @@ -285,6 +301,27 @@ amf::AMFComponentPtr VideoEncoderVCE::MakeEncoder( if (m_hasQueryTimeout) { amfEncoder->SetProperty(AMF_VIDEO_ENCODER_HEVC_QUERY_TIMEOUT, 1000); // 1s timeout } + + amfEncoder->SetProperty( + AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE, + Settings::Instance().IsColorRangeItuFull() + ? AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE_FULL + : AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE_STUDIO + ); + + amfEncoder->SetProperty( + AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PROFILE, + Settings::Instance().IsColorRangeItuFull() + ? AMF_VIDEO_CONVERTER_COLOR_PROFILE_FULL_709 + : AMF_VIDEO_CONVERTER_COLOR_PROFILE_709 + ); + amfEncoder->SetProperty( + AMF_VIDEO_ENCODER_HEVC_OUTPUT_TRANSFER_CHARACTERISTIC, + AMF_COLOR_TRANSFER_CHARACTERISTIC_IEC61966_2_1 + ); + amfEncoder->SetProperty( + AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PRIMARIES, AMF_COLOR_PRIMARIES_BT709 + ); } Debug("Configured %s.\n", pCodec); diff --git a/alvr/server/src/connection.rs b/alvr/server/src/connection.rs index 411b079ffb..210b5627c5 100644 --- a/alvr/server/src/connection.rs +++ b/alvr/server/src/connection.rs @@ -251,6 +251,7 @@ async fn client_handshake( aggressive_keyframe_resend: settings.connection.aggressive_keyframe_resend, adapter_index: settings.video.adapter_index, codec: matches!(settings.video.codec, CodecType::HEVC) as _, + color_range: settings.video.color_range as u32, rate_control_mode: settings.video.rate_control_mode as u32, filler_data: settings.video.filler_data, entropy_coding: settings.video.entropy_coding as u32, diff --git a/alvr/session/src/lib.rs b/alvr/session/src/lib.rs index 6bd47b1dc0..fb5ecd5cfa 100644 --- a/alvr/session/src/lib.rs +++ b/alvr/session/src/lib.rs @@ -60,6 +60,7 @@ pub struct OpenvrConfig { pub aggressive_keyframe_resend: bool, pub adapter_index: u32, pub codec: u32, + pub color_range: u32, pub refresh_rate: u32, pub use_10bit_encoder: bool, pub enable_vbaq: bool, diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index e3af9d67c9..22e1448f4e 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -216,6 +216,14 @@ pub struct ColorCorrectionDesc { pub sharpening: f32, } +#[repr(u32)] +#[derive(SettingsSchema, Serialize, Deserialize, Clone)] +#[serde(tag = "type", content = "content")] +pub enum ColorRange { + Full = 0, + Limited = 1, +} + // Note: This enum cannot be converted to camelCase due to a inconsistency between generation and // validation: "hevc" vs "hEVC". // This is caused by serde and settings-schema using different libraries for casing conversion @@ -254,6 +262,8 @@ pub struct VideoDesc { pub codec: CodecType, + pub color_range: ColorRange, + #[schema(advanced)] pub rate_control_mode: RateControlMode, @@ -674,6 +684,9 @@ pub fn session_settings_default() -> SettingsDefault { codec: CodecTypeDefault { variant: CodecTypeDefaultVariant::HEVC, }, + color_range: ColorRangeDefault { + variant: ColorRangeDefaultVariant::Full, + }, rate_control_mode: RateControlModeDefault { variant: RateControlModeDefaultVariant::CBR, }, From a149370cfaa78a62b4fb6342e93cb8b4470fb98c Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Thu, 23 Oct 2025 20:35:07 +0100 Subject: [PATCH 58/60] make microphone on by default --- alvr/session/src/settings.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alvr/session/src/settings.rs b/alvr/session/src/settings.rs index 22e1448f4e..f1a1ef5807 100644 --- a/alvr/session/src/settings.rs +++ b/alvr/session/src/settings.rs @@ -816,7 +816,7 @@ pub fn session_settings_default() -> SettingsDefault { }, }, microphone: SwitchDefault { - enabled: false, + enabled: true, content: MicrophoneDescDefault { input_device_id: AudioDeviceIdDefault { variant: AudioDeviceIdDefaultVariant::Default, From 6f3d9e767dcdf93a4034d559e3842608767787ae Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Wed, 29 Oct 2025 23:24:40 +0000 Subject: [PATCH 59/60] nvenc sdk 13.0.19 --- alvr/server/cpp/alvr_server/nvEncodeAPI.h | 254 ++++++++++++++---- alvr/server/cpp/platform/win32/NvCodecUtils.h | 102 +++++-- alvr/server/cpp/platform/win32/NvEncoder.cpp | 141 ++++++++-- alvr/server/cpp/platform/win32/NvEncoder.h | 39 ++- .../cpp/platform/win32/VideoEncoderNVENC.cpp | 4 +- .../cpp/platform/win32/VideoEncoderNVENC.h | 2 +- 6 files changed, 431 insertions(+), 111 deletions(-) diff --git a/alvr/server/cpp/alvr_server/nvEncodeAPI.h b/alvr/server/cpp/alvr_server/nvEncodeAPI.h index 2cdf7d0f29..ac0abd57ff 100644 --- a/alvr/server/cpp/alvr_server/nvEncodeAPI.h +++ b/alvr/server/cpp/alvr_server/nvEncodeAPI.h @@ -111,8 +111,8 @@ typedef void* NV_ENC_OUTPUT_PTR; /**< NVENCODE API output buffer*/ typedef void* NV_ENC_REGISTERED_PTR; /**< A Resource that has been registered with NVENCODE API*/ typedef void* NV_ENC_CUSTREAM_PTR; /**< Pointer to CUstream*/ -#define NVENCAPI_MAJOR_VERSION 12 -#define NVENCAPI_MINOR_VERSION 2 +#define NVENCAPI_MAJOR_VERSION 13 +#define NVENCAPI_MINOR_VERSION 0 #define NVENCAPI_VERSION (NVENCAPI_MAJOR_VERSION | (NVENCAPI_MINOR_VERSION << 24)) @@ -170,6 +170,14 @@ static const GUID NV_ENC_H264_PROFILE_MAIN_GUID = static const GUID NV_ENC_H264_PROFILE_HIGH_GUID = { 0xe7cbc309, 0x4f7a, 0x4b89, { 0xaf, 0x2a, 0xd5, 0x37, 0xc9, 0x2b, 0xe3, 0x10 } }; +// {8F0C337E-186C-48E9-A69D-7A8334089758} +static const GUID NV_ENC_H264_PROFILE_HIGH_10_GUID = +{ 0x8f0c337e, 0x186c, 0x48e9, { 0xa6, 0x9d, 0x7a, 0x83, 0x34, 0x08, 0x97, 0x58} }; + +// {FF3242E9-613C-4295-A1E8-2A7FE94D8133} +static const GUID NV_ENC_H264_PROFILE_HIGH_422_GUID = +{ 0xff3242e9, 0x613c, 0x4295, { 0xa1, 0xe8, 0x2a, 0x7f, 0xe9, 0x4d, 0x81, 0x33 } }; + // {7AC663CB-A598-4960-B844-339B261A7D52} static const GUID NV_ENC_H264_PROFILE_HIGH_444_GUID = { 0x7ac663cb, 0xa598, 0x4960, { 0xb8, 0x44, 0x33, 0x9b, 0x26, 0x1a, 0x7d, 0x52 } }; @@ -194,7 +202,7 @@ static const GUID NV_ENC_HEVC_PROFILE_MAIN_GUID = static const GUID NV_ENC_HEVC_PROFILE_MAIN10_GUID = { 0xfa4d2b6c, 0x3a5b, 0x411a, { 0x80, 0x18, 0x0a, 0x3f, 0x5e, 0x3c, 0x9b, 0xe5 } }; -// For HEVC Main 444 8 bit and HEVC Main 444 10 bit profiles only +// For HEVC Main 422/444 8 bit and HEVC Main 422/444 10 bit profiles only // {51ec32b5-1b4c-453c-9cbd-b616bd621341} static const GUID NV_ENC_HEVC_PROFILE_FREXT_GUID = { 0x51ec32b5, 0x1b4c, 0x453c, { 0x9c, 0xbd, 0xb6, 0x16, 0xbd, 0x62, 0x13, 0x41 } }; @@ -283,9 +291,9 @@ typedef enum _NV_ENC_STATE_RESTORE_TYPE typedef enum _NV_ENC_OUTPUT_STATS_LEVEL { NV_ENC_OUTPUT_STATS_NONE = 0, /** No output stats */ - NV_ENC_OUTPUT_STATS_BLOCK_LEVEL = 1, /** Output stats for every block. + NV_ENC_OUTPUT_STATS_BLOCK_LEVEL = 1, /** Output stats for every block. Block represents a CTB for HEVC, macroblock for H.264, super block for AV1 */ - NV_ENC_OUTPUT_STATS_ROW_LEVEL = 2, /** Output stats for every row. + NV_ENC_OUTPUT_STATS_ROW_LEVEL = 2, /** Output stats for every row. Row represents a CTB row for HEVC, macroblock row for H.264, super block row for AV1 */ } NV_ENC_OUTPUT_STATS_LEVEL; @@ -404,6 +412,8 @@ typedef enum _NV_ENC_BUFFER_FORMAT This format should be used only when registering the resource as output buffer, which will be used to write the encoded bit stream or H.264 ME only mode output. */ + NV_ENC_BUFFER_FORMAT_NV16 = 0x40000001, /**< Semi-Planar YUV 422 [Y plane followed by interleaved UV plane] */ + NV_ENC_BUFFER_FORMAT_P210 = 0x40000002, /**< Semi-Planar 10-bit YUV 422 [Y plane followed by interleaved UV plane] */ } NV_ENC_BUFFER_FORMAT; /** @@ -650,13 +660,13 @@ typedef enum _NVENCSTATUS * that has not been successfully mapped. */ NV_ENC_ERR_RESOURCE_NOT_MAPPED, - + /** * This indicates encode driver requires more output buffers to write an output * bitstream. If this error is returned from ::NvEncRestoreEncoderState() API, this * is not a fatal error. If the client is encoding with B frames then, * ::NvEncRestoreEncoderState() API might be requiring the extra output buffer for accomodating overlay frame output in a separate buffer, for AV1 codec. - * In this case, client must call NvEncRestoreEncoderState() API again with NV_ENC_RESTORE_ENCODER_STATE_PARAMS::outputBitstream as input along with + * In this case, client must call NvEncRestoreEncoderState() API again with NV_ENC_RESTORE_ENCODER_STATE_PARAMS::outputBitstream as input along with * the parameters in the previous call. When operating in asynchronous mode of encoding, client must also specify NV_ENC_RESTORE_ENCODER_STATE_PARAMS::completionEvent. */ NV_ENC_ERR_NEED_MORE_OUTPUT, @@ -669,13 +679,13 @@ typedef enum _NVENCSTATUS typedef enum _NV_ENC_PIC_FLAGS { NV_ENC_PIC_FLAG_FORCEINTRA = 0x1, /**< Encode the current picture as an Intra picture */ - NV_ENC_PIC_FLAG_FORCEIDR = 0x2, /**< Encode the current picture as an IDR picture. + NV_ENC_PIC_FLAG_FORCEIDR = 0x2, /**< Encode the current picture as an IDR picture. This flag is only valid when Picture type decision is taken by the Encoder [_NV_ENC_INITIALIZE_PARAMS::enablePTD == 1]. */ NV_ENC_PIC_FLAG_OUTPUT_SPSPPS = 0x4, /**< Write the sequence and picture header in encoded bitstream of the current picture */ - NV_ENC_PIC_FLAG_EOS = 0x8, /**< Indicates end of the input stream */ - NV_ENC_PIC_FLAG_DISABLE_ENC_STATE_ADVANCE = 0x10, /**< Do not advance encoder state during encode */ - NV_ENC_PIC_FLAG_OUTPUT_RECON_FRAME = 0x20, /**< Write reconstructed frame */ + NV_ENC_PIC_FLAG_EOS = 0x8, /**< Indicates end of the input stream */ + NV_ENC_PIC_FLAG_DISABLE_ENC_STATE_ADVANCE = 0x10, /**< Do not advance encoder state during encode */ + NV_ENC_PIC_FLAG_OUTPUT_RECON_FRAME = 0x20, /**< Write reconstructed frame */ } NV_ENC_PIC_FLAGS; /** @@ -1201,7 +1211,21 @@ typedef enum _NV_ENC_CAPS */ NV_ENC_CAPS_SUPPORT_UNIDIRECTIONAL_B, - /** + /** + * Indicates HW support for MVHEVC encoding. + * \n 0 : MVHEVC encoding not supported. + * \n 1 : MVHEVC encoding supported. + */ + NV_ENC_CAPS_SUPPORT_MVHEVC_ENCODE, + + /** + * Indicates HW support for YUV422 mode encoding. + * \n 0 : YUV422 mode encoding not supported. + * \n 1 : YUV422 mode encoding supported. + */ + NV_ENC_CAPS_SUPPORT_YUV422_ENCODE, + + /** * Reserved - Not to be used by clients. */ NV_ENC_CAPS_EXPOSED_COUNT @@ -1349,8 +1373,8 @@ typedef struct _NV_ENC_RESTORE_ENCODER_STATE_PARAMS uint32_t bufferIdx; /**< [in]: State buffer index to which the encoder state will be restored */ NV_ENC_STATE_RESTORE_TYPE state; /**< [in]: State type to restore */ uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ - NV_ENC_OUTPUT_PTR outputBitstream; /**< [in]: Specifies the output buffer pointer, for AV1 encode only. - Application must call NvEncRestoreEncoderState() API with _NV_ENC_RESTORE_ENCODER_STATE_PARAMS::outputBitstream and + NV_ENC_OUTPUT_PTR outputBitstream; /**< [in]: Specifies the output buffer pointer, for AV1 encode only. + Application must call NvEncRestoreEncoderState() API with _NV_ENC_RESTORE_ENCODER_STATE_PARAMS::outputBitstream and _NV_ENC_RESTORE_ENCODER_STATE_PARAMS::completionEvent as input when an earlier call to this API returned "NV_ENC_ERR_NEED_MORE_OUTPUT", for AV1 encode. */ void* completionEvent; /**< [in]: Specifies the completion event when asynchronous mode of encoding is enabled. Used for AV1 encode only. */ uint32_t reserved1[64]; /**< [in]: Reserved and must be set to 0 */ @@ -1369,7 +1393,8 @@ typedef struct _NV_ENC_OUTPUT_STATS_BLOCK uint8_t QP; /**< [out]: QP of the block */ uint8_t reserved[3]; /**< [in]: Reserved and must be set to 0 */ uint32_t bitcount; /**< [out]: Bitcount of the block */ - uint32_t reserved1[13]; /**< [in]: Reserved and must be set to 0 */ + uint32_t satdCost; /**< [out]: SATD cost of the residual error */ + uint32_t reserved1[12]; /**< [in]: Reserved and must be set to 0 */ } NV_ENC_OUTPUT_STATS_BLOCK; /** NV_ENC_OUTPUT_STATS_BLOCK struct version. */ @@ -1384,7 +1409,8 @@ typedef struct _NV_ENC_OUTPUT_STATS_ROW uint8_t QP; /**< [out]: QP of the row */ uint8_t reserved[3]; /**< [in]: Reserved and must be set to 0 */ uint32_t bitcount; /**< [out]: Bitcount of the row */ - uint32_t reserved1[13]; /**< [in]: Reserved and must be set to 0 */ + uint32_t satdCost; /**< [out]: SATD cost of the residual error */ + uint32_t reserved1[12]; /**< [in]: Reserved and must be set to 0 */ } NV_ENC_OUTPUT_STATS_ROW; /** NV_ENC_OUTPUT_STATS_ROW struct version. */ @@ -1412,7 +1438,7 @@ typedef struct _NV_ENC_LOOKAHEAD_PIC_PARAMS uint32_t reserved; /**< [in]: Reserved and must be set to 0 */ NV_ENC_INPUT_PTR inputBuffer; /**< [in]: Specifies the input buffer pointer. Client must use a pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs.*/ NV_ENC_PIC_TYPE pictureType; /**< [in]: Specifies input picture type. Client required to be set explicitly by the client if the client has not set NV_ENC_INITALIZE_PARAMS::enablePTD to 1 while calling NvInitializeEncoder. */ - uint32_t reserved1[63]; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved1[63]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_LOOKAHEAD_PIC_PARAMS; @@ -1517,6 +1543,8 @@ typedef struct _NV_ENC_QP uint32_t qpIntra; /**< [in]: Specifies QP value for Intra Frame. Even though this field is uint32_t for legacy reasons, the client should treat this as a signed parameter(int32_t) for cases in which negative QP values are to be specified. */ } NV_ENC_QP; +#define MAX_NUM_VIEWS_MINUS_1 7 + /** * Rate Control Configuration Parameters */ @@ -1543,7 +1571,7 @@ typedef struct _NV_ENC_QP uint32_t strictGOPTarget :1; /**< [in]: Set this to 1 to minimize GOP-to-GOP rate fluctuations */ uint32_t aqStrength :4; /**< [in]: When AQ (Spatial) is enabled (i.e. NV_ENC_RC_PARAMS::enableAQ is set), this field is used to specify AQ strength. AQ strength scale is from 1 (low) - 15 (aggressive). If not set, strength is auto selected by driver. */ - uint32_t enableExtLookahead :1; /**< [in]: Set this to 1 to enable lookahead externally. + uint32_t enableExtLookahead :1; /**< [in]: Set this to 1 to enable lookahead externally. Application must call NvEncLookahead() for NV_ENC_RC_PARAMS::lookaheadDepth number of frames, before calling NvEncEncodePicture() for the first frame */ uint32_t reservedBitFields :15; /**< [in]: Reserved bitfields and must be set to 0 */ @@ -1555,7 +1583,7 @@ typedef struct _NV_ENC_QP Applicable only for constant QP mode (NV_ENC_RC_PARAMS::rateControlMode = NV_ENC_PARAMS_RC_CONSTQP). */ uint8_t temporalLayerQP[8]; /**< [in]: Specifies the temporal layer QPs used for rate control. Temporal layer index is used as the array index. Applicable only for constant QP mode (NV_ENC_RC_PARAMS::rateControlMode = NV_ENC_PARAMS_RC_CONSTQP). */ - uint8_t targetQuality; /**< [in]: Target CQ (Constant Quality) level for VBR mode (range 0-51 with 0-automatic) */ + uint8_t targetQuality; /**< [in]: Target CQ (Constant Quality) level for VBR mode (range 0-51 for H264/HEVC, 0-63 for AV1 with 0-automatic) */ uint8_t targetQualityLSB; /**< [in]: Fractional part of target quality (as 8.8 fixed point format) */ uint16_t lookaheadDepth; /**< [in]: Maximum depth of lookahead with range 0-(31 - number of B frames). lookaheadDepth is only used if enableLookahead=1.*/ @@ -1588,7 +1616,10 @@ typedef struct _NV_ENC_QP int8_t crQPIndexOffset; /**< [in]: Specifies the value of 'second_chroma_qp_index_offset' in H264 / 'pps_cr_qp_offset' in HEVC / 'deltaQ_v_ac' in AV1 (for future use only - deltaQ_v_ac is currently always internally set to same value as deltaQ_u_ac). */ uint16_t reserved2; NV_ENC_LOOKAHEAD_LEVEL lookaheadLevel; /**< [in]: Specifies the lookahead level. Higher level may improve quality at the expense of performance. */ - uint32_t reserved[3]; + uint8_t viewBitrateRatios[MAX_NUM_VIEWS_MINUS_1]; /**< [in]: Specifies the bit rate ratio for each view of MV-HEVC except the base view. + The base view bit rate ratio = 100 - (sum of bit rate ratio of all other views). */ + uint8_t reserved3; + uint32_t reserved1; } NV_ENC_RC_PARAMS; /** macro for constructing the version field of ::_NV_ENC_RC_PARAMS */ @@ -1620,11 +1651,67 @@ typedef struct _NV_ENC_TIME_CODE { NV_ENC_DISPLAY_PIC_STRUCT displayPicStruct; /**< [in] Display picStruct */ NV_ENC_CLOCK_TIMESTAMP_SET clockTimestamp[MAX_NUM_CLOCK_TS]; /**< [in] Clock Timestamp set */ - uint32_t skipClockTimestampInsertion; /**< [in] 0 : Inserts Clock Timestamp if NV_ENC_CONFIG_H264::enableTimeCode (H264) or - NV_ENC_CONFIG_HEVC::outputTimeCodeSEI (HEVC) is specified + uint32_t skipClockTimestampInsertion; /**< [in] 0 : Inserts Clock Timestamp if NV_ENC_CONFIG_H264::enableTimeCode (H264) or + NV_ENC_CONFIG_HEVC::outputTimeCodeSEI (HEVC) is specified 1 : Skips insertion of Clock Timestamp for current frame */ } NV_ENC_TIME_CODE; +#define MULTIVIEW_MAX_NUM_REF_DISPLAY 32 + +/** + * G.14.2.3 3D reference displays information SEI message syntax elements + */ +typedef struct _HEVC_3D_REFERENCE_DISPLAY_INFO +{ + uint32_t refViewingDistanceFlag : 1; /**< [in] Specifies the presence of reference viewing distance.*/ + uint32_t threeDimensionalReferenceDisplaysExtensionFlag : 1; /**< [in] Should be set to 0 for this version of specs. Saved for future use.*/ + uint32_t reserved : 30; /**< [in] Reserved and must be set to 0 */ + int32_t precRefDisplayWidth; /**< [in] Specifies the exponent of the maximum allowable truncation error for refDisplayWidth[i]. Range 0-31, inclusive.*/ + int32_t precRefViewingDist; /**< [in] Specifies the exponent of the maximum allowable truncation error for refViewingDist[i]. Range 0-31, inclusive.*/ + int32_t numRefDisplaysMinus1; /**< [in] Plus 1 specifies the number of reference displays that are signalled in this SEI message. Range 0-31, inclusive.*/ + int32_t leftViewId[MULTIVIEW_MAX_NUM_REF_DISPLAY]; /**< [in] Indicates the ViewId of the left view of a stereo pair corresponding to the i-th reference display.*/ + int32_t rightViewId[MULTIVIEW_MAX_NUM_REF_DISPLAY]; /**< [in] Indicates the ViewId of the right view of a stereo-pair corresponding to the i-th reference display.*/ + int32_t exponentRefDisplayWidth[MULTIVIEW_MAX_NUM_REF_DISPLAY]; /**< [in] Specifies the exponent part of the reference display width of the i-th reference display.*/ + int32_t mantissaRefDisplayWidth[MULTIVIEW_MAX_NUM_REF_DISPLAY]; /**< [in] Specifies the mantissa part of the reference display width of the i-th reference display.*/ + int32_t exponentRefViewingDistance[MULTIVIEW_MAX_NUM_REF_DISPLAY]; /**< [in] Specifies the exponent part of the reference viewing distance of the i-th reference display.*/ + int32_t mantissaRefViewingDistance[MULTIVIEW_MAX_NUM_REF_DISPLAY]; /**< [in] Specifies the mantissa part of the reference viewing distance of the i-th reference display.*/ + int32_t numSampleShiftPlus512[MULTIVIEW_MAX_NUM_REF_DISPLAY]; /**< [in] Indicates the recommended additional horizontal shift for a stereo pair corresponding to the i-th reference baseline and the i-th reference display.*/ + uint8_t additionalShiftPresentFlag[MULTIVIEW_MAX_NUM_REF_DISPLAY]; /**< [in] Equal to 1 indicates that the information about additional horizontal shift of the left and right views for the i-th reference display is present in this SEI message.*/ + uint32_t reserved2[4]; /**< [in] Reserved and must be set to 0 */ +} HEVC_3D_REFERENCE_DISPLAY_INFO; + +/** + * Struct for storing x and y chroma points + */ +typedef struct _CHROMA_POINTS { + uint16_t x; + uint16_t y; +} CHROMA_POINTS; + +/** + * Struct for storing mastering-display information + * Refer to the AV1 spec 6.7.4 Metadata high dynamic range mastering display color volume semantics OR + * HEVC spec D.2.28 Mastering display colour volume SEI message syntax + */ +typedef struct _MASTERING_DISPLAY_INFO { + CHROMA_POINTS g; + CHROMA_POINTS b; + CHROMA_POINTS r; + CHROMA_POINTS whitePoint; + uint32_t maxLuma; + uint32_t minLuma; +} MASTERING_DISPLAY_INFO; + +/* +* Refer to Av1 spec 6.7.3 Metadata high dynamic range content light level semantics OR +* HEVC spec D.2.35 Content light level information SEI message syntax +*/ +typedef struct _CONTENT_LIGHT_LEVEL +{ + uint16_t maxContentLightLevel; + uint16_t maxPicAverageLightLevel; +} CONTENT_LIGHT_LEVEL; + /** * \struct _NV_ENC_CONFIG_H264_VUI_PARAMETERS @@ -1700,9 +1787,9 @@ typedef struct _NVENC_EXTERNAL_ME_SB_HINT int16_t last_of_cu : 1; /**< [in]: Set to 1 for the last MV current CU */ int16_t last_of_sb : 1; /**< [in]: Set to 1 for the last MV of current SB */ int16_t reserved0 : 1; /**< [in]: Reserved and must be set to 0 */ - int16_t mvx : 14; /**< [in]: Specifies the x component of integer pixel MV (relative to current MB) S12.2. */ + int16_t mvx : 14; /**< [in]: Specifies the x component of integer pixel MV (relative to current MB) S12.2. Permissible value range: [-4092,4092]. */ int16_t cu_size : 2; /**< [in]: Specifies the CU size: 0: 8x8, 1: 16x16, 2:32x32, 3:64x64 */ - int16_t mvy : 12; /**< [in]: Specifies the y component of integer pixel MV (relative to current MB) S10.2 .*/ + int16_t mvy : 12; /**< [in]: Specifies the y component of integer pixel MV (relative to current MB) S10.2. Permissible value range: [-2044,2044]. */ int16_t y8 : 3; /**< [in]: Specifies the current partition's top left y position in 8 pixel unit */ int16_t reserved1 : 1; /**< [in]: Reserved and must be set to 0 */ } NVENC_EXTERNAL_ME_SB_HINT; @@ -1809,7 +1896,11 @@ typedef struct _NV_ENC_CONFIG_H264 Check support for numRefL1 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ NV_ENC_BIT_DEPTH outputBitDepth; /**< [in]: Specifies pixel bit depth of encoded video. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit, NV_ENC_BIT_DEPTH_10 for 10 bit. */ NV_ENC_BIT_DEPTH inputBitDepth; /**< [in]: Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input. */ - uint32_t reserved1[265]; /**< [in]: Reserved and must be set to 0 */ + NV_ENC_TEMPORAL_FILTER_LEVEL tfLevel; /**< [in]: Specifies the strength of temporal filtering. Check support for temporal filter using ::NV_ENC_CAPS_SUPPORT_TEMPORAL_FILTER caps. + Temporal filter feature is supported only if frameIntervalP >= 5. + If ZeroReorderDelay or enableStereoMVC is enabled, the temporal filter feature is not supported. + Temporal filter is recommended for natural contents. */ + uint32_t reserved1[264]; /**< [in]: Reserved and must be set to 0 */ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CONFIG_H264; @@ -1857,7 +1948,15 @@ typedef struct _NV_ENC_CONFIG_HEVC This flag will be ignored if the value returned for ::NV_ENC_CAPS_SINGLE_SLICE_INTRA_REFRESH caps is false. */ uint32_t outputRecoveryPointSEI :1; /**< [in]: Set to 1 to enable writing of recovery point SEI message */ uint32_t outputTimeCodeSEI :1; /**< [in]: Set 1 to write SEI time code syntax in the bitstream. Note that this flag will be ignored for D3D12 interface.*/ - uint32_t reserved :12; /**< [in]: Reserved bitfields.*/ + uint32_t enableTemporalSVC :1; /**< [in]: Set to 1 to enable SVC temporal */ + uint32_t enableMVHEVC :1; /**< [in]: Set to 1 to enable stereo MVHEVC. This feature currently supports only 2 views. + This feature is disabled for LTR, Alpha Layer Encoding, UniDirectionalB, + PyramidalME, Lookahead, Temporal Filter, Split encoding, 2 pass encoding and for NV_ENC_TUNING_INFO other than + NV_ENC_TUNING_INFO_HIGH_QUALITY. */ + uint32_t outputHevc3DReferenceDisplayInfo :1; /**< [in]: Set to 1 to write 3D reference displays information SEI message for MVHEVC */ + uint32_t outputMaxCll :1; /**< [in]: Set to 1 to write Content Light Level information SEI message for HEVC */ + uint32_t outputMasteringDisplay :1; /**< [in]: Set to 1 to write Mastering displays information SEI message for HEVC */ + uint32_t reserved :7; /**< [in]: Reserved bitfields.*/ uint32_t idrPeriod; /**< [in]: Specifies the IDR interval. If not set, this is made equal to gopLength in NV_ENC_CONFIG. Low latency application client can set IDR interval to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */ uint32_t intraRefreshPeriod; /**< [in]: Specifies the interval between successive intra refresh if enableIntrarefresh is set. Requires enableIntraRefresh to be set. Will be disabled if NV_ENC_CONFIG::gopLength is not set to NVENC_INFINITE_GOPLENGTH. */ @@ -1891,7 +1990,7 @@ typedef struct _NV_ENC_CONFIG_HEVC Check support for numRefL0 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ NV_ENC_NUM_REF_FRAMES numRefL1; /**< [in]: Specifies max number of reference frames in reference picture list L1, that can be used by hardware for prediction of a frame. Check support for numRefL1 using ::NV_ENC_CAPS_SUPPORT_MULTIPLE_REF_FRAMES caps. */ - NV_ENC_TEMPORAL_FILTER_LEVEL tfLevel; /**< [in]: Specifies the strength of the temporal filtering. + NV_ENC_TEMPORAL_FILTER_LEVEL tfLevel; /**< [in]: Specifies the strength of the temporal filtering. Check support for temporal filtering using ::NV_ENC_CAPS_SUPPORT_TEMPORAL_FILTER caps. Temporal filter feature is supported only if frameIntervalP >= 5. Temporal filter feature is not supported with ZeroReorderDelay/enableStereoMVC/AlphaLayerEncoding. Temporal filter is recommended for natural contents. */ @@ -1904,7 +2003,9 @@ typedef struct _NV_ENC_CONFIG_HEVC SW will do the bitdepth conversion internally from inputBitDepth -> outputBitDepth if bit depths differ Support for 8 bit input to 10 bit encode conversion only*/ NV_ENC_BIT_DEPTH inputBitDepth; /**< [in]: Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input.*/ - uint32_t reserved1[210]; /**< [in]: Reserved and must be set to 0.*/ + uint32_t numTemporalLayers; /**< [in]: Specifies the number of temporal layers to be used for hierarchical coding.*/ + uint32_t numViews; /**< [in]: Specifies number of views for MVHEVC */ + uint32_t reserved1[208]; /**< [in]: Reserved and must be set to 0.*/ void* reserved2[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CONFIG_HEVC; @@ -1969,7 +2070,14 @@ typedef struct _NV_ENC_CONFIG_AV1 uint32_t enableBitstreamPadding : 1; /**< [in]: Set 1 to enable bitstream padding. */ uint32_t enableCustomTileConfig : 1; /**< [in]: Set 1 to enable custom tile configuration: numTileColumns and numTileRows must have non zero values and tileWidths and tileHeights must point to a valid address */ uint32_t enableFilmGrainParams : 1; /**< [in]: Set 1 to enable custom film grain parameters: filmGrainParams must point to a valid address */ - uint32_t reserved4 : 6; /**< [in]: Reserved and must be set to 0.*/ + uint32_t enableLTR : 1; /**< [in]: Set to 1 to enable LTR (Long Term Reference) frame support. LTR can be used in "LTR Per Picture" mode. + In this mode, client can control whether the current picture should be marked as LTR. + use ltrMarkFrame = 1 for the picture to be marked as LTR. + Note that LTRs are not supported if encoding session is configured with B-frames */ + uint32_t enableTemporalSVC : 1; /**< [in]: Set to 1 to enable SVC temporal */ + uint32_t outputMaxCll : 1; /**< [in]: Set to 1 to write Content Light Level metadata for Av1 */ + uint32_t outputMasteringDisplay : 1; /**< [in]: Set to 1 to write Mastering displays metadata for Av1 */ + uint32_t reserved4 : 2; /**< [in]: Reserved and must be set to 0.*/ uint32_t reserved : 14; /**< [in]: Reserved bitfields.*/ uint32_t idrPeriod; /**< [in]: Specifies the IDR/Key frame interval. If not set, this is made equal to gopLength in NV_ENC_CONFIG.Low latency application client can set IDR interval to NVENC_INFINITE_GOPLENGTH so that IDR frames are not inserted automatically. */ uint32_t intraRefreshPeriod; /**< [in]: Specifies the interval between successive intra refresh if enableIntrarefresh is set. Requires enableIntraRefresh to be set. @@ -1986,7 +2094,7 @@ typedef struct _NV_ENC_CONFIG_AV1 it will be rounded down to the next power of 2 value. If numTileRows == 0, the picture will be coded with the smallest number of horizontal tiles as allowed by standard. When enableCustomTileConfig == 1, numTileRows must be > 0 and <= NV_MAX_TILE_ROWS_AV1 and tileHeights must point to a valid array of numTileRows entries. Entry i specifies the height in 64x64 CTU unit of tile row i. The sum of all the entries should be equal to the picture hieght in 64x64 CTU units. */ - uint32_t reserved2; /**< [in]: Reserved and must be set to 0.*/ + uint32_t reserved2; /**< [in]: Reserved and must be set to 0.*/ uint32_t *tileWidths; /**< [in]: If enableCustomTileConfig == 1, tileWidths[i] specifies the width of tile column i in 64x64 CTU unit, with 0 <= i <= numTileColumns -1. */ uint32_t *tileHeights; /**< [in]: If enableCustomTileConfig == 1, tileHeights[i] specifies the height of tile row i in 64x64 CTU unit, with 0 <= i <= numTileRows -1. */ uint32_t maxTemporalLayersMinus1; /**< [in]: Specifies the max temporal layer used for hierarchical coding. Cannot be reconfigured and must be specified during encoder creation if temporal layer is considered. */ @@ -2005,7 +2113,16 @@ typedef struct _NV_ENC_CONFIG_AV1 HW will do the bitdepth conversion internally from inputBitDepth -> outputBitDepth if bit depths differ Support for 8 bit input to 10 bit encode conversion only */ NV_ENC_BIT_DEPTH inputBitDepth; /**< [in]: Specifies pixel bit depth of video input. Should be set to NV_ENC_BIT_DEPTH_8 for 8 bit input, NV_ENC_BIT_DEPTH_10 for 10 bit input. */ - uint32_t reserved1[233]; /**< [in]: Reserved and must be set to 0.*/ + uint32_t ltrNumFrames; /**< [in]: In "LTR Per Picture" mode (ltrMarkFrame = 1), ltrNumFrames specifies maximum number of LTR frames in DPB. + These ltrNumFrames acts as a guidance to the encoder and are not necessarily honored. To achieve a right balance between the encoding + quality and keeping LTR frames in the DPB queue, the encoder can internally limit the number of LTR frames. + The number of LTR frames actually used depends upon the encoding preset being used; Faster encoding presets will use fewer LTR frames.*/ + uint32_t numTemporalLayers; /**< [in]: Specifies the number of temporal layers to be used for hierarchical coding.*/ + NV_ENC_TEMPORAL_FILTER_LEVEL tfLevel; /**< [in]: Specifies the strength of temporal filtering. Check support for temporal filter using ::NV_ENC_CAPS_SUPPORT_TEMPORAL_FILTER caps. + Temporal filter feature is supported only if frameIntervalP >= 5. + If ZeroReorderDelay or enableStereoMVC is enabled, the temporal filter feature is not supported. + Temporal filter is recommended for natural contents. */ + uint32_t reserved1[230]; /**< [in]: Reserved and must be set to 0.*/ void* reserved3[62]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CONFIG_AV1; @@ -2035,7 +2152,7 @@ typedef struct _NV_ENC_CONFIG_H264_MEONLY */ typedef struct _NV_ENC_CONFIG_HEVC_MEONLY { - uint32_t reserved [256]; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved [256]; /**< [in]: Reserved and must be set to 0 */ void* reserved1[64]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_CONFIG_HEVC_MEONLY; @@ -2088,7 +2205,7 @@ typedef enum NV_ENC_TUNING_INFO NV_ENC_TUNING_INFO_LOW_LATENCY = 2, /**< Tune presets for low latency streaming.*/ NV_ENC_TUNING_INFO_ULTRA_LOW_LATENCY = 3, /**< Tune presets for ultra low latency streaming.*/ NV_ENC_TUNING_INFO_LOSSLESS = 4, /**< Tune presets for lossless encoding.*/ - NV_ENC_TUNING_INFO_ULTRA_HIGH_QUALITY = 5, /**< Tune presets for latency tolerant encoding for higher quality. Only supported for HEVC on Turing+ architectures */ + NV_ENC_TUNING_INFO_ULTRA_HIGH_QUALITY = 5, /**< Tune presets for latency tolerant encoding for higher quality. Only supported for HEVC and AV1 on Turing+ architectures */ NV_ENC_TUNING_INFO_COUNT /**< Count number of tuningInfos. Invalid value. */ }NV_ENC_TUNING_INFO; @@ -2097,10 +2214,11 @@ typedef enum NV_ENC_TUNING_INFO */ typedef enum _NV_ENC_SPLIT_ENCODE_MODE { - NV_ENC_SPLIT_AUTO_MODE = 0, /**< Default value, split frame forced mode disabled, split frame auto mode enabled */ - NV_ENC_SPLIT_AUTO_FORCED_MODE = 1, /**< Split frame forced mode enabled with number of strips automatically selected by driver to best fit configuration */ + NV_ENC_SPLIT_AUTO_MODE = 0, /**< Default value, implicit mode. Split frame will not always be enabled, even if NVENC number > 1. It will be decided by the driver based on preset, tuning information and video resolution. */ + NV_ENC_SPLIT_AUTO_FORCED_MODE = 1, /**< Split frame forced mode enabled with number of strips automatically selected by driver to best fit configuration. If NVENC number > 1, split frame will be forced. */ NV_ENC_SPLIT_TWO_FORCED_MODE = 2, /**< Forced 2-strip split frame encoding (if NVENC number > 1, 1-strip encode otherwise) */ NV_ENC_SPLIT_THREE_FORCED_MODE = 3, /**< Forced 3-strip split frame encoding (if NVENC number > 2, NVENC number of strips otherwise) */ + NV_ENC_SPLIT_FOUR_FORCED_MODE = 4, /**< Forced 4-strip split frame encoding (if NVENC number > 3, NVENC number of strips otherwise) */ NV_ENC_SPLIT_DISABLE_MODE = 15, /**< Both split frame auto mode and forced mode are disabled */ } NV_ENC_SPLIT_ENCODE_MODE; @@ -2135,7 +2253,8 @@ typedef struct _NV_ENC_INITIALIZE_PARAMS Not supported if any of the following features: weighted prediction, alpha layer encoding, subframe mode, output into video memory buffer, picture timing/buffering period SEI message insertion with DX12 interface are enabled in case of HEVC. - For AV1, split encoding is not supported when output into video memory buffer is enabled. */ + For AV1, split encoding is not supported when output into video memory buffer is enabled. + For valid values see ::NV_ENC_SPLIT_ENCODE_MODE enum.*/ uint32_t enableOutputInVidmem :1; /**< [in]: Set this to 1 to enable output of NVENC in video memory buffer created by application. This feature is not supported for HEVC ME only mode. */ uint32_t enableReconFrameOutput :1; /**< [in]: Set this to 1 to enable reconstructed frame output. */ uint32_t enableOutputStats :1; /**< [in]: Set this to 1 to enable encoded frame output stats. Client must allocate buffer of size equal to number of blocks multiplied by the size of @@ -2161,7 +2280,7 @@ typedef struct _NV_ENC_INITIALIZE_PARAMS uint32_t numStateBuffers; /**< [in]: Number of state buffers to allocate to save encoder state. Set this to value greater than zero to enable encoding without advancing the encoder state. */ NV_ENC_OUTPUT_STATS_LEVEL outputStatsLevel; /**< [in]: Specifies the level for encoded frame output stats, when NV_ENC_INITIALIZE_PARAMS::enableOutputStats is set to 1. Client should allocate buffer of size equal to number of blocks multiplied by the size of NV_ENC_OUTPUT_STATS_BLOCK struct - if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_BLOCK or number of rows multiplied by the size of + if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_BLOCK or number of rows multiplied by the size of NV_ENC_OUTPUT_STATS_ROW struct if NV_ENC_INITIALIZE_PARAMS::outputStatsLevel is set to NV_ENC_OUTPUT_STATS_ROW in system memory and assign to NV_ENC_LOCK_BITSTREAM::encodedOutputStatsPtr to receive the encoded frame output stats. */ uint32_t reserved1 [284]; /**< [in]: Reserved and must be set to 0 */ @@ -2235,7 +2354,7 @@ typedef struct _NV_ENC_PIC_PARAMS_MVC uint32_t temporalID; /**< [in]: Specifies the temporal ID associated with the current input view. */ uint32_t priorityID; /**< [in]: Specifies the priority ID associated with the current input view. Reserved and ignored by the NvEncodeAPI interface. */ uint32_t reserved1[12]; /**< [in]: Reserved and must be set to 0. */ - void* reserved2[8]; /**< [in]: Reserved and must be set to NULL. */ + void* reserved2[8]; /**< [in]: Reserved and must be set to NULL. */ }NV_ENC_PIC_PARAMS_MVC; /** macro for constructing the version field of ::_NV_ENC_PIC_PARAMS_MVC */ @@ -2329,7 +2448,8 @@ typedef struct _NV_ENC_PIC_PARAMS_HEVC When forceIntraRefreshWithFrameCnt is set it will have priority over sliceMode setting */ uint32_t ltrMarkFrame :1; /**< [in]: Set to 1 if client wants to mark this frame as LTR */ uint32_t ltrUseFrames :1; /**< [in]: Set to 1 if client allows encoding this frame using the LTR frames specified in ltrFrameBitmap */ - uint32_t reservedBitFields :28; /**< [in]: Reserved bit fields and must be set to 0 */ + uint32_t temporalConfigUpdate :1; /**< [in]: Set to 1 if client wants to change the number of temporal layers in temporal SVC encoding */ + uint32_t reservedBitFields :27; /**< [in]: Reserved bit fields and must be set to 0 */ uint32_t reserved1; /**< [in]: Reserved and must be set to 0. */ uint8_t* sliceTypeData; /**< [in]: Array which specifies the slice type used to force intra slice for a particular slice. Currently supported only for NV_ENC_CONFIG_H264::sliceMode == 3. Client should allocate array of size sliceModeData where sliceModeData is specified in field of ::_NV_ENC_CONFIG_H264 @@ -2352,8 +2472,14 @@ typedef struct _NV_ENC_PIC_PARAMS_HEVC uint32_t reserved; /**< [in]: Reserved and must be set to 0. */ NV_ENC_SEI_PAYLOAD* seiPayloadArray; /**< [in]: Array of SEI payloads which will be inserted for this frame. */ NV_ENC_TIME_CODE timeCode; /**< [in]: Specifies the clock timestamp sets used in time code SEI. Applicable only when NV_ENC_CONFIG_HEVC::enableTimeCodeSEI is set to 1. */ - uint32_t reserved2[236]; /**< [in]: Reserved and must be set to 0. */ - void* reserved3[61]; /**< [in]: Reserved and must be set to NULL. */ + uint32_t numTemporalLayers; /**< [in]: Specifies the number of temporal layers to be used for hierarchical coding. The set only takes place when temporalConfigUpdate == 1.*/ + uint32_t viewId; /**< [in]: Specifies the view id of the picture */ + HEVC_3D_REFERENCE_DISPLAY_INFO *p3DReferenceDisplayInfo; /**< [in]: Specifies the 3D reference displays information SEI message. + Applicable only when NV_ENC_CONFIG_HEVC::outputHevc3DReferenceDisplayInfo is set to 1. */ + CONTENT_LIGHT_LEVEL *pMaxCll; /**< [in]: Specifies the Content light level information SEI syntax*/ + MASTERING_DISPLAY_INFO *pMasteringDisplay; /**< [in]: Specifies the Mastering display colour volume SEI syntax*/ + uint32_t reserved2[234]; /**< [in]: Reserved and must be set to 0. */ + void* reserved3[58]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_PIC_PARAMS_HEVC; #define NV_ENC_AV1_OBU_PAYLOAD NV_ENC_SEI_PAYLOAD @@ -2384,7 +2510,10 @@ typedef struct _NV_ENC_PIC_PARAMS_AV1 When forceIntraRefreshWithFrameCnt is set it will have priority over tileConfigUpdate setting */ uint32_t enableCustomTileConfig : 1; /**< [in]: Set 1 to enable custom tile configuration: numTileColumns and numTileRows must have non zero values and tileWidths and tileHeights must point to a valid address */ uint32_t filmGrainParamsUpdate : 1; /**< [in]: Set to 1 if client wants to update previous film grain parameters: filmGrainParams must point to a valid address and encoder must have been configured with film grain enabled */ - uint32_t reservedBitFields : 22; /**< [in]: Reserved bitfields and must be set to 0 */ + uint32_t ltrMarkFrame : 1; /**< [in]: Set to 1 if client wants to mark this frame as LTR */ + uint32_t ltrUseFrames : 1; /**< [in]: Set to 1 if client allows encoding this frame using the LTR frames specified in ltrFrameBitmap */ + uint32_t temporalConfigUpdate : 1; /**< [in]: Set to 1 if client wants to change the number of temporal layers in temporal SVC encoding */ + uint32_t reservedBitFields : 19; /**< [in]: Reserved bitfields and must be set to 0 */ uint32_t numTileColumns; /**< [in]: This parameter in conjunction with the flag enableCustomTileConfig and the array tileWidths[] specifies the way in which the picture is divided into tile columns. When enableCustomTileConfig == 0, the picture will be uniformly divided into numTileColumns tile columns. If numTileColumns is not a power of 2, it will be rounded down to the next power of 2 value. If numTileColumns == 0, the picture will be coded with the smallest number of vertical tiles as allowed by standard. @@ -2402,8 +2531,14 @@ typedef struct _NV_ENC_PIC_PARAMS_AV1 uint32_t reserved1; /**< [in]: Reserved and must be set to 0. */ NV_ENC_AV1_OBU_PAYLOAD* obuPayloadArray; /**< [in]: Array of OBU payloads which will be inserted for this frame. */ NV_ENC_FILM_GRAIN_PARAMS_AV1 *filmGrainParams; /**< [in]: If filmGrainParamsUpdate == 1, filmGrainParams must point to a valid NV_ENC_FILM_GRAIN_PARAMS_AV1 structure */ - uint32_t reserved2[246]; /**< [in]: Reserved and must be set to 0. */ - void* reserved3[61]; /**< [in]: Reserved and must be set to NULL. */ + uint32_t ltrMarkFrameIdx; /**< [in]: Specifies the long term reference frame index to use for marking this frame as LTR.*/ + uint32_t ltrUseFrameBitmap; /**< [in]: Specifies the associated bitmap of LTR frame indices to use when encoding this frame. */ + uint32_t numTemporalLayers; /**< [in]: Specifies the number of temporal layers to be used for hierarchical coding. The set only takes place when temporalConfigUpdate == 1.*/ + uint32_t reserved4; /**< [in]: Reserved and must be set to 0. */ + CONTENT_LIGHT_LEVEL *pMaxCll; /**< [in]: Specifies the Content light level metadata syntax*/ + MASTERING_DISPLAY_INFO *pMasteringDisplay; /**< [in]: Specifies the Mastering display colour volume metadata syntax*/ + uint32_t reserved2[242]; /**< [in]: Reserved and must be set to 0. */ + void* reserved3[59]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_PIC_PARAMS_AV1; /** @@ -2466,22 +2601,22 @@ typedef struct _NV_ENC_PIC_PARAMS uint32_t reservedBitFields; /**< [in]: Reserved bitfields and must be set to 0 */ uint16_t meHintRefPicDist[2]; /**< [in]: Specifies temporal distance for reference picture (NVENC_EXTERNAL_ME_HINT::refidx = 0) used during external ME with NV_ENC_INITALIZE_PARAMS::enablePTD = 1 . meHintRefPicDist[0] is for L0 hints and meHintRefPicDist[1] is for L1 hints. If not set, will internally infer distance of 1. Ignored for NV_ENC_INITALIZE_PARAMS::enablePTD = 0 */ - uint32_t reserved4; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved4; /**< [in]: Reserved and must be set to 0 */ NV_ENC_INPUT_PTR alphaBuffer; /**< [in]: Specifies the input alpha buffer pointer. Client must use a pointer obtained from ::NvEncCreateInputBuffer() or ::NvEncMapInputResource() APIs. Applicable only when encoding hevc with alpha layer is enabled. */ NVENC_EXTERNAL_ME_SB_HINT *meExternalSbHints; /**< [in]: For AV1,Specifies the pointer to ME external SB hints for the current frame. The size of ME hint buffer should be equal to meSbHintsCount. */ uint32_t meSbHintsCount; /**< [in]: For AV1, specifies the total number of external ME SB hint candidates for the frame NV_ENC_PIC_PARAMS::meSbHintsCount must never exceed the total number of SBs in frame * the max number of candidates per SB provided during encoder initialization. The max number of candidates per SB is maxMeHintCountsPerBlock[0].numCandsPerSb + maxMeHintCountsPerBlock[1].numCandsPerSb */ - uint32_t stateBufferIdx; /**< [in]: Specifies the buffer index in which the encoder state will be saved for current frame encode. It must be in the + uint32_t stateBufferIdx; /**< [in]: Specifies the buffer index in which the encoder state will be saved for current frame encode. It must be in the range 0 to NV_ENC_INITIALIZE_PARAMS::numStateBuffers - 1. */ NV_ENC_OUTPUT_PTR outputReconBuffer; /**< [in]: Specifies the reconstructed frame buffer pointer to output reconstructed frame, if enabled by setting NV_ENC_INITIALIZE_PARAMS::enableReconFrameOutput. Client must allocate buffers for writing the reconstructed frames and register them with the Nvidia Video Encoder Interface with NV_ENC_REGISTER_RESOURCE::bufferUsage - set to NV_ENC_OUTPUT_RECON. + set to NV_ENC_OUTPUT_RECON. Client must use the pointer obtained from ::NvEncMapInputResource() API and assign it to NV_ENC_PIC_PARAMS::outputReconBuffer. Reconstructed output will be in NV_ENC_BUFFER_FORMAT_NV12 format when chromaFormatIDC is set to 1. chromaFormatIDC = 3 is not supported. */ - uint32_t reserved3[284]; /**< [in]: Reserved and must be set to 0 */ + uint32_t reserved3[284]; /**< [in]: Reserved and must be set to 0 */ void* reserved6[57]; /**< [in]: Reserved and must be set to NULL */ } NV_ENC_PIC_PARAMS; @@ -2718,11 +2853,14 @@ typedef struct _NV_ENC_REGISTER_RESOURCE before starting GPU operation, if NV_ENC_FENCE_POINT_D3D12::bWait is set. The fence NV_ENC_FENCE_POINT_D3D12::pFence and NV_ENC_FENCE_POINT_D3D12::signalValue will be used to do GPU signal when GPU operation finishes, if NV_ENC_FENCE_POINT_D3D12::bSignal is set. */ - uint32_t chromaOffset[2]; /**< [out]: Chroma offset for the reconstructed output buffer when NV_ENC_BUFFER_USAGE::bufferUsage is set - to NV_ENC_OUTPUT_RECON and D3D11 interface is used. - When chroma components are interleaved, 'chromaOffset[0]' will contain chroma offset. + uint32_t chromaOffset[2]; /**< [out]: Chroma offset for the reconstructed output buffer when NV_ENC_BUFFER_USAGE::bufferUsage is set + to NV_ENC_OUTPUT_RECON and D3D11 interface is used. + When chroma components are interleaved, 'chromaOffset[0]' will contain chroma offset. chromaOffset[1] is reserved for future use. */ - uint32_t reserved1[246]; /**< [in]: Reserved and must be set to 0. */ + uint32_t chromaOffsetIn[2]; /**< [in]: Chroma offset for input buffer when NV_ENC_BUFFER_USAGE::bufferUsage is set to NV_ENC_INPUT_IMAGE + and NVCUVID interface is used. This is required only when luma and chroma allocations are not continuous, + and the planes are padded. */ + uint32_t reserved1[244]; /**< [in]: Reserved and must be set to 0. */ void* reserved2[61]; /**< [in]: Reserved and must be set to NULL. */ } NV_ENC_REGISTER_RESOURCE; @@ -3723,9 +3861,9 @@ NVENCSTATUS NVENCAPI NvEncUnlockBitstream (void* encoder, * \brief Restore state of encoder * * This function is used to restore the state of encoder with state saved internally in - * state buffer corresponding to index equal to 'NV_ENC_RESTORE_ENCODER_STATE_PARAMS::bfrIndex'. + * state buffer corresponding to index equal to 'NV_ENC_RESTORE_ENCODER_STATE_PARAMS::bfrIndex'. * Client can specify the state type to be updated by specifying appropriate value in - * 'NV_ENC_RESTORE_ENCODER_STATE_PARAMS::state'. The client must call this + * 'NV_ENC_RESTORE_ENCODER_STATE_PARAMS::state'. The client must call this * function after all previous encodes have finished. * * \param [in] encoder @@ -4365,7 +4503,7 @@ const char * NVENCAPI NvEncGetLastErrorString (void* encoder); /** * \brief Submit an input picture for lookahead. * - * This function can be used by clients to submit input frame for lookahead. Client could call this function + * This function can be used by clients to submit input frame for lookahead. Client could call this function * NV_ENC_INITIALIZE_PARAMS::lookaheadDepth plus one number of frames, before calling NvEncEncodePicture() for the first frame. * * \param [in] encoder @@ -4375,7 +4513,7 @@ const char * NVENCAPI NvEncGetLastErrorString (void* encoder); * * \return * ::NV_ENC_SUCCESS \n - * ::NV_ENC_NEED_MORE_INPUT \n should we return this error is lookahead queue is not full? + * ::NV_ENC_NEED_MORE_INPUT \n should we return this error is lookahead queue is not full? * ::NV_ENC_ERR_INVALID_PTR \n * ::NV_ENC_ERR_ENCODER_NOT_INITIALIZED \n * ::NV_ENC_ERR_GENERIC \n @@ -4452,8 +4590,8 @@ typedef struct _NV_ENCODE_API_FUNCTION_LIST uint32_t reserved; /**< [in]: Reserved and should be set to 0. */ PNVENCOPENENCODESESSION nvEncOpenEncodeSession; /**< [out]: Client should access ::NvEncOpenEncodeSession() API through this pointer. */ PNVENCGETENCODEGUIDCOUNT nvEncGetEncodeGUIDCount; /**< [out]: Client should access ::NvEncGetEncodeGUIDCount() API through this pointer. */ - PNVENCGETENCODEPRESETCOUNT nvEncGetEncodeProfileGUIDCount; /**< [out]: Client should access ::NvEncGetEncodeProfileGUIDCount() API through this pointer.*/ - PNVENCGETENCODEPRESETGUIDS nvEncGetEncodeProfileGUIDs; /**< [out]: Client should access ::NvEncGetEncodeProfileGUIDs() API through this pointer. */ + PNVENCGETENCODEPROFILEGUIDCOUNT nvEncGetEncodeProfileGUIDCount; /**< [out]: Client should access ::NvEncGetEncodeProfileGUIDCount() API through this pointer.*/ + PNVENCGETENCODEPROFILEGUIDS nvEncGetEncodeProfileGUIDs; /**< [out]: Client should access ::NvEncGetEncodeProfileGUIDs() API through this pointer. */ PNVENCGETENCODEGUIDS nvEncGetEncodeGUIDs; /**< [out]: Client should access ::NvEncGetEncodeGUIDs() API through this pointer. */ PNVENCGETINPUTFORMATCOUNT nvEncGetInputFormatCount; /**< [out]: Client should access ::NvEncGetInputFormatCount() API through this pointer. */ PNVENCGETINPUTFORMATS nvEncGetInputFormats; /**< [out]: Client should access ::NvEncGetInputFormats() API through this pointer. */ diff --git a/alvr/server/cpp/platform/win32/NvCodecUtils.h b/alvr/server/cpp/platform/win32/NvCodecUtils.h index 145c7ef331..43c409e526 100644 --- a/alvr/server/cpp/platform/win32/NvCodecUtils.h +++ b/alvr/server/cpp/platform/win32/NvCodecUtils.h @@ -139,10 +139,38 @@ inline bool check(int e, int iLine, const char *szFile) { } #define ck(call) check(call, __LINE__, __FILE__) +#define CudaCheckError() \ + do { \ + cudaError err_ = cudaGetLastError(); \ + if (err_ != cudaSuccess) { \ + printf("CudaCheckError() failed at: %s:%d\n", __FILE__, __LINE__); \ + printf("code: %d ; description: %s\n", err_, cudaGetErrorString(err_)); \ + exit(1); \ + } \ + \ + err_ = cudaDeviceSynchronize(); \ + if (cudaSuccess != err_) { \ + printf("CudaCheckError() failed after sync at: %s:%d;\n", __FILE__, \ + __LINE__); \ + printf("code: %d; description: %s\n", err_, cudaGetErrorString(err_)); \ + exit(1); \ + } \ + } while (0) #define MAKE_FOURCC( ch0, ch1, ch2, ch3 ) \ ( (uint32_t)(uint8_t)(ch0) | ( (uint32_t)(uint8_t)(ch1) << 8 ) | \ ( (uint32_t)(uint8_t)(ch2) << 16 ) | ( (uint32_t)(uint8_t)(ch3) << 24 ) ) + +// sleep for milli-seconds +inline void NvSleep(unsigned int mSec) +{ +#if defined WIN32 || defined _WIN32 + Sleep(mSec); +#else + usleep(mSec * 1000); +#endif +} + /** * @brief Wrapper class around std::thread */ @@ -254,14 +282,21 @@ class BufferedFileReader { uint64_t nSize = 0; }; +#ifdef __NVCUVID_H__ /** * @brief Template class to facilitate color space conversion */ template class YuvConverter { public: - YuvConverter(int nWidth, int nHeight) : nWidth(nWidth), nHeight(nHeight) { - pQuad = new T[((nWidth + 1) / 2) * ((nHeight + 1) / 2)]; + YuvConverter(int nWidth, int nHeight, uint8_t nChromaFormat) : + nWidth(nWidth), nHeight(nHeight), nChromaFormat(nChromaFormat) + { + if (nChromaFormat == cudaVideoChromaFormat_420) { + pQuad = new T[((nWidth + 1) / 2) * ((nHeight + 1) / 2)]; + } else { + pQuad = new T[((nWidth + 1) / 2) * nHeight]; + } } ~YuvConverter() { delete[] pQuad; @@ -299,7 +334,7 @@ class YuvConverter { // sizes of source surface plane int nSizePlaneY = nPitch * nHeight; - int nSizePlaneU = ((nPitch + 1) / 2) * ((nHeight + 1) / 2); + int nSizePlaneU = (nChromaFormat == cudaVideoChromaFormat_420) ? (((nPitch + 1) / 2) * ((nHeight + 1) / 2)) : (((nPitch + 1) / 2) * nHeight); int nSizePlaneV = nSizePlaneU; T *puv = pFrame + nSizePlaneY, @@ -307,7 +342,8 @@ class YuvConverter { *pv = puv + nSizePlaneU; // split chroma from interleave to planar - for (int y = 0; y < (nHeight + 1) / 2; y++) { + int nChromaHeight = (nChromaFormat == cudaVideoChromaFormat_420) ? (nHeight + 1) / 2 : nHeight; + for (int y = 0; y < nChromaHeight; y++) { for (int x = 0; x < (nWidth + 1) / 2; x++) { pu[y * ((nPitch + 1) / 2) + x] = puv[y * nPitch + x * 2]; pQuad[y * ((nWidth + 1) / 2) + x] = puv[y * nPitch + x * 2 + 1]; @@ -316,7 +352,7 @@ class YuvConverter { if (nPitch == nWidth) { memcpy(pv, pQuad, nSizePlaneV * sizeof(T)); } else { - for (int i = 0; i < (nHeight + 1) / 2; i++) { + for (int i = 0; i < nChromaHeight; i++) { memcpy(pv + ((nPitch + 1) / 2) * i, pQuad + ((nWidth + 1) / 2) * i, ((nWidth + 1) / 2) * sizeof(T)); } } @@ -324,8 +360,9 @@ class YuvConverter { private: T *pQuad; - int nWidth, nHeight; + int nWidth, nHeight, nChromaFormat; }; +#endif /** * @brief Class for writing IVF format header for AV1 codec @@ -506,36 +543,63 @@ inline void ValidateResolution(int nWidth, int nHeight) { } template -void Nv12ToColor32(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); +void Nv12ToColor32(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); +template +void Nv12ToColor24(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); +template +void Nv12ToColor64(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); + +template +void P016ToColor32(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); +template +void P016ToColor24(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); +template +void P016ToColor64(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); + +template +void Nv16ToColor32(uint8_t *dpNv16, int nNv16Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); +template +void Nv16ToColor24(uint8_t *dpNv16, int nNv16Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); template -void Nv12ToColor64(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); +void Nv16ToColor64(uint8_t *dpNv16, int nNv16Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); template -void P016ToColor32(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); +void P216ToColor32(uint8_t *dpP216, int nP216Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); template -void P016ToColor64(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); +void P216ToColor64(uint8_t *dpP216, int nP216Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); +template +void P216ToColor24(uint8_t *dpP216, int nP216Pitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); template -void YUV444ToColor32(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); +void YUV444ToColor32(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); +template +void YUV444ToColor24(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); template -void YUV444ToColor64(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0); +void YUV444ToColor64(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); template -void YUV444P16ToColor32(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); +void YUV444P16ToColor32(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); +template +void YUV444P16ToColor24(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); template -void YUV444P16ToColor64(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4); +void YUV444P16ToColor64(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgra, int nBgraPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); + +template +void Nv12ToColorPlanar(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); +template +void P016ToColorPlanar(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); template -void Nv12ToColorPlanar(uint8_t *dpNv12, int nNv12Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 0); +void Nv16ToColorPlanar(uint8_t *dpNv16, int nNv16Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); template -void P016ToColorPlanar(uint8_t *dpP016, int nP016Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 4); +void P216ToColorPlanar(uint8_t *dpP216, int nP216Pitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); template -void YUV444ToColorPlanar(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 0); +void YUV444ToColorPlanar(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 0, bool video_full_range = 0); template -void YUV444P16ToColorPlanar(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 4); +void YUV444P16ToColorPlanar(uint8_t *dpYUV444, int nPitch, uint8_t *dpBgrp, int nBgrpPitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); -void Bgra64ToP016(uint8_t *dpBgra, int nBgraPitch, uint8_t *dpP016, int nP016Pitch, int nWidth, int nHeight, int iMatrix = 4); +void Bgra64ToP016(uint8_t *dpBgra, int nBgraPitch, uint8_t *dpP016, int nP016Pitch, int nWidth, int nHeight, int iMatrix = 4, bool video_full_range = 0); void ConvertUInt8ToUInt16(uint8_t *dpUInt8, uint16_t *dpUInt16, int nSrcPitch, int nDestPitch, int nWidth, int nHeight); void ConvertUInt16ToUInt8(uint16_t *dpUInt16, uint8_t *dpUInt8, int nSrcPitch, int nDestPitch, int nWidth, int nHeight); diff --git a/alvr/server/cpp/platform/win32/NvEncoder.cpp b/alvr/server/cpp/platform/win32/NvEncoder.cpp index 216f4db53e..a3e9b6a0b6 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.cpp +++ b/alvr/server/cpp/platform/win32/NvEncoder.cpp @@ -202,6 +202,10 @@ void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeP { pIntializeParams->encodeConfig->encodeCodecConfig.h264Config.chromaFormatIDC = 3; } + else if (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_NV16 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_P210) + { + pIntializeParams->encodeConfig->encodeCodecConfig.h264Config.chromaFormatIDC = 2; + } pIntializeParams->encodeConfig->encodeCodecConfig.h264Config.idrPeriod = pIntializeParams->encodeConfig->gopLength; } else if (pIntializeParams->encodeGUID == NV_ENC_CODEC_HEVC_GUID) @@ -212,6 +216,10 @@ void NvEncoder::CreateDefaultEncoderParams(NV_ENC_INITIALIZE_PARAMS* pIntializeP { pIntializeParams->encodeConfig->encodeCodecConfig.hevcConfig.chromaFormatIDC = 3; } + else if (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_NV16 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_P210) + { + pIntializeParams->encodeConfig->encodeCodecConfig.hevcConfig.chromaFormatIDC = 2; + } pIntializeParams->encodeConfig->encodeCodecConfig.hevcConfig.idrPeriod = pIntializeParams->encodeConfig->gopLength; } else if (pIntializeParams->encodeGUID == NV_ENC_CODEC_AV1_GUID) @@ -255,14 +263,6 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) NVENC_THROW_ERROR("Invalid codec guid", NV_ENC_ERR_INVALID_PARAM); } - if (pEncoderParams->encodeGUID == NV_ENC_CODEC_H264_GUID) - { - if (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) - { - NVENC_THROW_ERROR("10-bit format isn't supported by H264 encoder", NV_ENC_ERR_INVALID_PARAM); - } - } - if (pEncoderParams->encodeGUID == NV_ENC_CODEC_AV1_GUID) { if (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) @@ -274,6 +274,18 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) // set other necessary params if not set yet if (pEncoderParams->encodeGUID == NV_ENC_CODEC_H264_GUID) { + bool yuv10BitFormat = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_P210 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) ? true : false; + if (yuv10BitFormat && pEncoderParams->encodeConfig->encodeCodecConfig.h264Config.inputBitDepth != NV_ENC_BIT_DEPTH_10) + { + NVENC_THROW_ERROR("Invalid PixelBitdepth", NV_ENC_ERR_INVALID_PARAM); + } + + if ((m_eBufferFormat == NV_ENC_BUFFER_FORMAT_NV16 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_P210) && + (pEncoderParams->encodeConfig->encodeCodecConfig.h264Config.chromaFormatIDC != 2)) + { + NVENC_THROW_ERROR("Invalid ChromaFormatIDC", NV_ENC_ERR_INVALID_PARAM); + } + if ((m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444) && (pEncoderParams->encodeConfig->encodeCodecConfig.h264Config.chromaFormatIDC != 3)) { @@ -283,12 +295,18 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) if (pEncoderParams->encodeGUID == NV_ENC_CODEC_HEVC_GUID) { - bool yuv10BitFormat = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) ? true : false; + bool yuv10BitFormat = (m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV420_10BIT || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_P210 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) ? true : false; if (yuv10BitFormat && pEncoderParams->encodeConfig->encodeCodecConfig.hevcConfig.inputBitDepth != NV_ENC_BIT_DEPTH_10) { NVENC_THROW_ERROR("Invalid PixelBitdepth", NV_ENC_ERR_INVALID_PARAM); } + if ((m_eBufferFormat == NV_ENC_BUFFER_FORMAT_NV16 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_P210) && + (pEncoderParams->encodeConfig->encodeCodecConfig.hevcConfig.chromaFormatIDC != 2)) + { + NVENC_THROW_ERROR("Invalid ChromaFormatIDC", NV_ENC_ERR_INVALID_PARAM); + } + if ((m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444 || m_eBufferFormat == NV_ENC_BUFFER_FORMAT_YUV444_10BIT) && (pEncoderParams->encodeConfig->encodeCodecConfig.hevcConfig.chromaFormatIDC != 3)) { @@ -361,6 +379,17 @@ void NvEncoder::CreateEncoder(const NV_ENC_INITIALIZE_PARAMS* pEncoderParams) m_nMaxEncodeHeight = m_initializeParams.maxEncodeHeight; m_nEncoderBuffer = m_encodeConfig.frameIntervalP + m_encodeConfig.rcParams.lookaheadDepth + m_nExtraOutputDelay; + + if (pEncoderParams->encodeGUID == NV_ENC_CODEC_HEVC_GUID) + { + m_enableStereoMVHEVC = m_initializeParams.encodeConfig->encodeCodecConfig.hevcConfig.enableMVHEVC; + if (m_enableStereoMVHEVC) + { + m_nEncoderBuffer = m_nEncoderBuffer * 2; + m_outputHevc3DReferenceDisplayInfo = m_initializeParams.encodeConfig->encodeCodecConfig.hevcConfig.outputHevc3DReferenceDisplayInfo; + } + } + m_nOutputDelay = m_nEncoderBuffer - 1; if (!m_bOutputInVideoMemory) @@ -463,6 +492,12 @@ const NvEncInputFrame* NvEncoder::GetNextInputFrame() return &m_vInputFrames[i]; } +const NvEncInputFrame* NvEncoder::GetNextInputFrame(uint32_t frameIdx) // for external lookahead API in Iterative Encoder sample (AppEncQual) +{ + int i = frameIdx % m_nEncoderBuffer; + return &m_vInputFrames[i]; +} + const NvEncInputFrame* NvEncoder::GetNextReferenceFrame() { int i = m_iToSend % m_nEncoderBuffer; @@ -485,7 +520,7 @@ void NvEncoder::MapResources(uint32_t bfrIdx) } } -std::size_t NvEncoder::EncodeFrame(std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams) +std::size_t NvEncoder::EncodeFrame(std::vector &vPacket, NV_ENC_PIC_PARAMS *pPicParams) { if (!IsHWEncoderInitialized()) { @@ -527,13 +562,13 @@ void NvEncoder::RunMotionEstimation(std::vector &mvData) if (nvStatus == NV_ENC_SUCCESS) { m_iToSend++; - std::vector> vPacket; + std::vector vPacket; GetEncodedPacket(m_vMVDataOutputBuffer, vPacket, true); if (vPacket.size() != 1) { NVENC_THROW_ERROR("GetEncodedPacket() doesn't return one (and only one) MVData", NV_ENC_ERR_GENERIC); } - mvData = vPacket[0]; + mvData = vPacket[0].frame; } else { @@ -564,8 +599,11 @@ NVENCSTATUS NvEncoder::DoEncode(NV_ENC_INPUT_PTR inputBuffer, NV_ENC_OUTPUT_PTR { picParams = *pPicParams; } + + HEVC_3D_REFERENCE_DISPLAY_INFO *p3dReferenceDisplayInfo = NULL; picParams.version = NV_ENC_PIC_PARAMS_VER; picParams.pictureStruct = NV_ENC_PIC_STRUCT_FRAME; + picParams.inputTimeStamp = m_nInputTimeStamp++; picParams.inputBuffer = inputBuffer; picParams.bufferFmt = GetPixelFormat(); picParams.inputWidth = GetEncodeWidth(); @@ -573,8 +611,48 @@ NVENCSTATUS NvEncoder::DoEncode(NV_ENC_INPUT_PTR inputBuffer, NV_ENC_OUTPUT_PTR picParams.frameIdx = m_iToSend; picParams.outputBitstream = outputBuffer; picParams.completionEvent = GetCompletionEvent(m_iToSend % m_nEncoderBuffer); + + if (m_enableStereoMVHEVC) + { + picParams.codecPicParams.hevcPicParams.viewId = m_viewId; + m_viewId = m_viewId ^ 1; + if (m_outputHevc3DReferenceDisplayInfo == 1) + { + + // Example code to insert HEVC_3D_REFERENCE_DISPLAY_INFO + // One 3D Reference Displays Information SEI message NAL unit (per G.14.2.3), with + // nuh_layer_id equal to 0, and with the following values: + // - To indicate the display width value is unspecified by using 0, use: + // - prec_ref_display_width = 31 + // - exponent_ref_display_width = 0 + // - mantissa_ref_display_width = 0 + // - ref_viewing_distance_flag = 0 + // - prec_ref_viewing_dist syntax element skipped + // - num_ref_displays_minusl = 0 + // - left_view_id[ 0 ] is set to reference the texture layer used for the viewer_s left + // eye using values in vps_extension (per F.7.3.2.1.1) + // - right_view_id[ 0 ] is set to reference the texture layer used for the viewer_s + // right eye using values in vps_extension (per F.7.3.2.1.1) + // - additional_shift_present_flag[ 0 ] = 0 + // - exponent_ref_viewing_distancel 0 ], mantissa_ref_viewing_distance[ 0 ], + // num_sample_shift_plus512[ 0 ] syntax elements are skipped + p3dReferenceDisplayInfo = new HEVC_3D_REFERENCE_DISPLAY_INFO; + memset(p3dReferenceDisplayInfo, 0, sizeof(HEVC_3D_REFERENCE_DISPLAY_INFO)); + p3dReferenceDisplayInfo->precRefDisplayWidth = 31; + p3dReferenceDisplayInfo->leftViewId[0] = 0; + p3dReferenceDisplayInfo->rightViewId[0] = 1; + picParams.codecPicParams.hevcPicParams.p3DReferenceDisplayInfo = p3dReferenceDisplayInfo; + } + } + NVENCSTATUS nvStatus = m_nvenc.nvEncEncodePicture(m_hEncoder, &picParams); + if (p3dReferenceDisplayInfo) + { + delete p3dReferenceDisplayInfo; + p3dReferenceDisplayInfo = NULL; + } + return nvStatus; } @@ -586,7 +664,7 @@ void NvEncoder::SendEOS() NVENC_API_CALL(m_nvenc.nvEncEncodePicture(m_hEncoder, &picParams)); } -void NvEncoder::EndEncode(std::vector> &vPacket) +void NvEncoder::EndEncode(std::vector &vPacket) { vPacket.clear(); if (!IsHWEncoderInitialized()) @@ -599,7 +677,7 @@ void NvEncoder::EndEncode(std::vector> &vPacket) GetEncodedPacket(m_vBitstreamOutputBuffer, vPacket, false); } -std::size_t NvEncoder::GetEncodedPacket(std::vector &vOutputBuffer, std::vector> &vPacket, bool bOutputDelay) +std::size_t NvEncoder::GetEncodedPacket(std::vector &vOutputBuffer, std::vector &vPacket, bool bOutputDelay) { std::size_t i = 0; int iEnd = bOutputDelay ? m_iToSend - m_nOutputDelay : m_iToSend; @@ -614,22 +692,24 @@ std::size_t NvEncoder::GetEncodedPacket(std::vector &vOutputB uint8_t *pData = (uint8_t *)lockBitstreamData.bitstreamBufferPtr; if (vPacket.size() < i + 1) { - vPacket.push_back(std::vector()); + NvEncOutputFrame nvEncOutputFrame; + vPacket.push_back(nvEncOutputFrame); } - vPacket[i].clear(); + vPacket[i].frame.clear(); if ((m_initializeParams.encodeGUID == NV_ENC_CODEC_AV1_GUID) && (m_bUseIVFContainer)) { if (m_bWriteIVFFileHeader) { - m_IVFUtils.WriteFileHeader(vPacket[i], MAKE_FOURCC('A', 'V', '0', '1'), m_initializeParams.encodeWidth, m_initializeParams.encodeHeight, m_initializeParams.frameRateNum, m_initializeParams.frameRateDen, 0xFFFF); + m_IVFUtils.WriteFileHeader(vPacket[i].frame, MAKE_FOURCC('A', 'V', '0', '1'), m_initializeParams.encodeWidth, m_initializeParams.encodeHeight, m_initializeParams.frameRateNum, m_initializeParams.frameRateDen, 0xFFFF); m_bWriteIVFFileHeader = false; } - m_IVFUtils.WriteFrameHeader(vPacket[i], lockBitstreamData.bitstreamSizeInBytes, lockBitstreamData.outputTimeStamp); + m_IVFUtils.WriteFrameHeader(vPacket[i].frame, lockBitstreamData.bitstreamSizeInBytes, lockBitstreamData.outputTimeStamp); } - vPacket[i].insert(vPacket[i].end(), &pData[0], &pData[lockBitstreamData.bitstreamSizeInBytes]); - + vPacket[i].frame.insert(vPacket[i].frame.end(), &pData[0], &pData[lockBitstreamData.bitstreamSizeInBytes]); + vPacket[i].pictureType = lockBitstreamData.pictureType; + vPacket[i].timeStamp = lockBitstreamData.outputTimeStamp; i++; NVENC_API_CALL(m_nvenc.nvEncUnlockBitstream(m_hEncoder, lockBitstreamData.outputBitstream)); @@ -729,7 +809,7 @@ void NvEncoder::FlushEncoder() // flush the encoder queue and then unmapped it if any surface is still mapped try { - std::vector> vPacket; + std::vector vPacket; EndEncode(vPacket); } catch (...) @@ -817,9 +897,11 @@ uint32_t NvEncoder::GetWidthInBytes(const NV_ENC_BUFFER_FORMAT bufferFormat, con case NV_ENC_BUFFER_FORMAT_NV12: case NV_ENC_BUFFER_FORMAT_YV12: case NV_ENC_BUFFER_FORMAT_IYUV: + case NV_ENC_BUFFER_FORMAT_NV16: case NV_ENC_BUFFER_FORMAT_YUV444: return width; case NV_ENC_BUFFER_FORMAT_YUV420_10BIT: + case NV_ENC_BUFFER_FORMAT_P210: case NV_ENC_BUFFER_FORMAT_YUV444_10BIT: return width * 2; case NV_ENC_BUFFER_FORMAT_ARGB: @@ -840,6 +922,8 @@ uint32_t NvEncoder::GetNumChromaPlanes(const NV_ENC_BUFFER_FORMAT bufferFormat) { case NV_ENC_BUFFER_FORMAT_NV12: case NV_ENC_BUFFER_FORMAT_YUV420_10BIT: + case NV_ENC_BUFFER_FORMAT_NV16: + case NV_ENC_BUFFER_FORMAT_P210: return 1; case NV_ENC_BUFFER_FORMAT_YV12: case NV_ENC_BUFFER_FORMAT_IYUV: @@ -864,6 +948,8 @@ uint32_t NvEncoder::GetChromaPitch(const NV_ENC_BUFFER_FORMAT bufferFormat,const { case NV_ENC_BUFFER_FORMAT_NV12: case NV_ENC_BUFFER_FORMAT_YUV420_10BIT: + case NV_ENC_BUFFER_FORMAT_NV16: + case NV_ENC_BUFFER_FORMAT_P210: case NV_ENC_BUFFER_FORMAT_YUV444: case NV_ENC_BUFFER_FORMAT_YUV444_10BIT: return lumaPitch; @@ -889,6 +975,8 @@ void NvEncoder::GetChromaSubPlaneOffsets(const NV_ENC_BUFFER_FORMAT bufferFormat { case NV_ENC_BUFFER_FORMAT_NV12: case NV_ENC_BUFFER_FORMAT_YUV420_10BIT: + case NV_ENC_BUFFER_FORMAT_NV16: + case NV_ENC_BUFFER_FORMAT_P210: chromaOffsets.push_back(pitch * height); return; case NV_ENC_BUFFER_FORMAT_YV12: @@ -922,6 +1010,9 @@ uint32_t NvEncoder::GetChromaHeight(const NV_ENC_BUFFER_FORMAT bufferFormat, con case NV_ENC_BUFFER_FORMAT_NV12: case NV_ENC_BUFFER_FORMAT_YUV420_10BIT: return (lumaHeight + 1)/2; + case NV_ENC_BUFFER_FORMAT_NV16: + case NV_ENC_BUFFER_FORMAT_P210: + return lumaHeight; case NV_ENC_BUFFER_FORMAT_YUV444: case NV_ENC_BUFFER_FORMAT_YUV444_10BIT: return lumaHeight; @@ -948,6 +1039,10 @@ uint32_t NvEncoder::GetChromaWidthInBytes(const NV_ENC_BUFFER_FORMAT bufferForma return lumaWidth; case NV_ENC_BUFFER_FORMAT_YUV420_10BIT: return 2 * lumaWidth; + case NV_ENC_BUFFER_FORMAT_NV16: + return lumaWidth; + case NV_ENC_BUFFER_FORMAT_P210: + return 2 * lumaWidth; case NV_ENC_BUFFER_FORMAT_YUV444: return lumaWidth; case NV_ENC_BUFFER_FORMAT_YUV444_10BIT: @@ -988,6 +1083,10 @@ int NvEncoder::GetFrameSize() const return GetEncodeWidth() * (GetEncodeHeight() + (GetEncodeHeight() + 1) / 2); case NV_ENC_BUFFER_FORMAT_YUV420_10BIT: return 2 * GetEncodeWidth() * (GetEncodeHeight() + (GetEncodeHeight() + 1) / 2); + case NV_ENC_BUFFER_FORMAT_NV16: + return 2 * GetEncodeWidth() * GetEncodeHeight(); + case NV_ENC_BUFFER_FORMAT_P210: + return 4 * GetEncodeWidth() * GetEncodeHeight(); case NV_ENC_BUFFER_FORMAT_YUV444: return GetEncodeWidth() * GetEncodeHeight() * 3; case NV_ENC_BUFFER_FORMAT_YUV444_10BIT: diff --git a/alvr/server/cpp/platform/win32/NvEncoder.h b/alvr/server/cpp/platform/win32/NvEncoder.h index b688dabc1d..9d490f8114 100644 --- a/alvr/server/cpp/platform/win32/NvEncoder.h +++ b/alvr/server/cpp/platform/win32/NvEncoder.h @@ -96,6 +96,13 @@ struct NvEncInputFrame NV_ENC_INPUT_RESOURCE_TYPE resourceType; }; +struct NvEncOutputFrame +{ + std::vector frame; + NV_ENC_PIC_TYPE pictureType; + uint64_t timeStamp; +}; + /** * @brief Shared base class for different encoder interfaces. */ @@ -132,7 +139,7 @@ class NvEncoder * input buffer and then call EncodeFrame() function to encode it. */ const NvEncInputFrame* GetNextInputFrame(); - + const NvEncInputFrame* GetNextInputFrame(uint32_t frameIdx); /** * @brief This function is used to encode a frame. @@ -140,7 +147,7 @@ class NvEncoder * data, which has been copied to an input buffer obtained from the * GetNextInputFrame() function. */ - virtual std::size_t EncodeFrame(std::vector> &vPacket, NV_ENC_PIC_PARAMS *pPicParams = nullptr); + virtual std::size_t EncodeFrame(std::vector &vPacket, NV_ENC_PIC_PARAMS *pPicParams = nullptr); /** * @brief This function to flush the encoder queue. @@ -149,7 +156,7 @@ class NvEncoder * from the encoder. The application must call this function before destroying * an encoder session. */ - virtual void EndEncode(std::vector> &vPacket); + virtual void EndEncode(std::vector &vPacket); /** * @brief This function is used to query hardware encoder capabilities. @@ -275,6 +282,12 @@ class NvEncoder * @brief This function returns initializeParams(width, height, fps etc). */ NV_ENC_INITIALIZE_PARAMS GetinitializeParams() const { return m_initializeParams; } + + /** + * @brief This function returns mvhevc is enabled or not. + */ + uint32_t IsMVHEVC() const { return m_enableStereoMVHEVC; }; + protected: /** @@ -380,7 +393,7 @@ class NvEncoder * This is called by DoEncode() function. If there is buffering enabled, * this may return without any output data. */ - std::size_t GetEncodedPacket(std::vector &vOutputBuffer, std::vector> &vPacket, bool bOutputDelay); + std::size_t GetEncodedPacket(std::vector &vOutputBuffer, std::vector &vPacket, bool bOutputDelay); /** * @brief This is a private function which is used to initialize the bitstream buffers. @@ -451,19 +464,25 @@ class NvEncoder IVFUtils m_IVFUtils; bool m_bWriteIVFFileHeader = true; bool m_bUseIVFContainer = true; - -private: + std::vector m_vBitstreamOutputBuffer; uint32_t m_nWidth; uint32_t m_nHeight; NV_ENC_BUFFER_FORMAT m_eBufferFormat; - void *m_pDevice; - NV_ENC_DEVICE_TYPE m_eDeviceType; NV_ENC_CONFIG m_encodeConfig = {}; bool m_bEncoderInitialized = false; uint32_t m_nExtraOutputDelay = 3; // To ensure encode and graphics can work in parallel, m_nExtraOutputDelay should be set to at least 1 - std::vector m_vBitstreamOutputBuffer; - std::vector m_vMVDataOutputBuffer; + + uint32_t m_nMaxEncodeWidth = 0; uint32_t m_nMaxEncodeHeight = 0; +private: + uint32_t m_enableStereoMVHEVC = 0; + uint32_t m_viewId = 0; + uint32_t m_outputHevc3DReferenceDisplayInfo = 0; + uint64_t m_nInputTimeStamp = 0; + void *m_pDevice; + NV_ENC_DEVICE_TYPE m_eDeviceType; + std::vector m_vMVDataOutputBuffer; + void* m_hModule = nullptr; }; diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp index 36f6cbc038..08e24a8ec7 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.cpp @@ -73,7 +73,7 @@ void VideoEncoderNVENC::Shutdown() for (const auto &packet : m_vPacket) { if (fpOut) { - fpOut.write(reinterpret_cast(packet.data()), packet.size()); + fpOut.write(reinterpret_cast(packet.frame.data()), packet.frame.size()); } } #endif @@ -122,7 +122,7 @@ void VideoEncoderNVENC::Transmit(ID3D11Texture2D *pTexture, uint64_t presentatio for (std::size_t packetIndex = 0; packetIndex < packetCount; ++packetIndex) { - const auto& packet = m_vPacket[packetIndex]; + const auto& packet = m_vPacket[packetIndex].frame; #ifndef NDEBUG if (fpOut) { fpOut.write(reinterpret_cast(packet.data()), packet.size()); diff --git a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h index 9cf745f412..4143a5b39c 100644 --- a/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h +++ b/alvr/server/cpp/platform/win32/VideoEncoderNVENC.h @@ -35,7 +35,7 @@ class VideoEncoderNVENC : public VideoEncoder std::shared_ptr m_Listener; - std::vector> m_vPacket{}; + std::vector m_vPacket{}; int m_codec; int m_refreshRate; From ab24f91e804b8dbf0429b9bf80d51094adb5e792 Mon Sep 17 00:00:00 2001 From: korejan <64199710+korejan@users.noreply.github.com> Date: Fri, 31 Oct 2025 17:13:50 +0000 Subject: [PATCH 60/60] amf sdk v1.5.0 --- .../win32/amf/public/common/AMFFactory.cpp | 6 + .../win32/amf/public/common/AMFMath.h | 4 +- .../win32/amf/public/common/AMFSTL.cpp | 2 +- .../public/common/PropertyStorageExImpl.cpp | 13 +- .../amf/public/common/PropertyStorageExImpl.h | 46 ++++-- .../platform/win32/amf/public/common/Thread.h | 8 +- .../win32/amf/public/common/TraceAdapter.h | 64 ++++---- .../amf/public/include/components/AMFXInput.h | 139 ++++++++++++++++++ .../public/include/components/ColorSpace.h | 42 +++++- .../include/components/DisplayCapture.h | 11 +- .../win32/amf/public/include/components/FRC.h | 53 +++---- .../public/include/components/PreAnalysis.h | 5 +- .../include/components/VideoConverter.h | 5 +- .../include/components/VideoDecoderUVD.h | 27 ++-- .../include/components/VideoEncoderAV1.h | 48 ++++-- .../include/components/VideoEncoderHEVC.h | 30 ++-- .../include/components/VideoEncoderVCE.h | 19 ++- .../amf/public/include/core/AudioBuffer.h | 7 + .../win32/amf/public/include/core/Buffer.h | 8 + .../win32/amf/public/include/core/Compute.h | 1 + .../win32/amf/public/include/core/D3D12AMF.h | 17 ++- .../win32/amf/public/include/core/Data.h | 11 +- .../win32/amf/public/include/core/Factory.h | 17 ++- .../win32/amf/public/include/core/Interface.h | 2 +- .../win32/amf/public/include/core/Platform.h | 86 ++++++++--- .../win32/amf/public/include/core/Surface.h | 29 +++- .../win32/amf/public/include/core/Variant.h | 37 ++--- .../win32/amf/public/include/core/Version.h | 4 +- .../win32/amf/public/include/core/VulkanAMF.h | 19 ++- 29 files changed, 549 insertions(+), 211 deletions(-) create mode 100644 alvr/server/cpp/platform/win32/amf/public/include/components/AMFXInput.h diff --git a/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp b/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp index 74ca38a96f..bde0ac431c 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFFactory.cpp @@ -84,6 +84,12 @@ AMF_RESULT AMFFactoryHelper::Init(const wchar_t* dllName) m_hDLLHandle = amf_load_library(dllName_); #else m_hDLLHandle = amf_load_library1(dllName_, false); //load with local flags +#endif +#ifdef AMFLITE_DLL_NAME + if (m_hDLLHandle == NULL && dllName == nullptr) + { + m_hDLLHandle = amf_load_library(AMFLITE_DLL_NAME); + } #endif if(m_hDLLHandle == NULL) { diff --git a/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h b/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h index 958a584424..bebb1352ea 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFMath.h @@ -344,7 +344,7 @@ namespace amf { public: Quaternion(){} - Quaternion(const Quaternion& other){Assign(other.x, other.y, other.z, other.w);} + Quaternion(const Quaternion& other) : Vector() {Assign(other.x, other.y, other.z, other.w);} Quaternion(float pitch, float yaw, float roll) {FromEuler(pitch, yaw, roll);} Quaternion(float _x, float _y, float _z, float _w) {Assign(_x, _y, _z, _w);} @@ -558,6 +558,7 @@ namespace amf k[8] = i8; k[9] = i9; k[10] = i10; k[11] = i11; k[12] = i12; k[13] = i13; k[14] = i14; k[15] = i15; } + Matrix(const Matrix& other) = default; inline void Identity() { @@ -1057,6 +1058,7 @@ namespace amf Pose() : m_ValidityFlags(PF_NONE){} Pose(const Pose &other) { *this = other; } + Pose& operator=(const Pose &other) = default; Pose(const amf::Quaternion& orientation, const amf::Vector& position) { diff --git a/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp index 2684d1b576..2adee720eb 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/AMFSTL.cpp @@ -508,7 +508,7 @@ amf_wstring AMF_STD_CALL amf::amf_from_url_utf8_to_unicode(const amf_string& dat Result += data.substr(old_pos); break; } - if(pos - old_pos > 0) + if(pos > old_pos) { Result += data.substr(old_pos, pos - old_pos); } diff --git a/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.cpp b/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.cpp index 0b24cfefcc..63b0cf4c18 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.cpp +++ b/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.cpp @@ -87,7 +87,7 @@ AMF_RESULT amf::CastVariantToAMFProperty(amf::AMFVariantStruct* pDest, const amf { if(pEnumDescriptionCache->value == AMFVariantGetInt64(pDest)) { - AMFVariantAssignInt64(pDest, pEnumDescriptionCache->value); + //pDest already AMF_VARIANT_INT64 found = true; break; } @@ -97,15 +97,16 @@ AMF_RESULT amf::CastVariantToAMFProperty(amf::AMFVariantStruct* pDest, const amf } if(!found) { + AMFVariant tmp; pEnumDescriptionCache = pEnumDescription; - err = AMFVariantChangeType(pDest, pSrc, AMF_VARIANT_WSTRING); + err = AMFVariantChangeType(&tmp, pSrc, AMF_VARIANT_WSTRING); if(err == AMF_OK) { //string came. validating and assigning numeric found = false; while(pEnumDescriptionCache->name) { - if(amf_wstring(pEnumDescriptionCache->name) == AMFVariantGetWString(pDest)) + if(amf_wstring(pEnumDescriptionCache->name) == AMFVariantGetWString(&tmp)) { AMFVariantAssignInt64(pDest, pEnumDescriptionCache->value); found = true; @@ -172,9 +173,9 @@ void AMFPropertyInfoImpl::Init(const wchar_t* name_, const wchar_t* desc_, AMF_V type = type_; contentType = contentType_; accessType = accessType_; - AMFVariantInit(&defaultValue); - AMFVariantInit(&minValue); - AMFVariantInit(&maxValue); + AMFVariantClear(&defaultValue); + AMFVariantClear(&minValue); + AMFVariantClear(&maxValue); pEnumDescription = pEnumDescription_; switch(type) diff --git a/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.h b/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.h index d7be9e9441..463436f67a 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/PropertyStorageExImpl.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -94,7 +94,8 @@ namespace amf public AMFObservableImpl { protected: - PropertyInfoMap m_PropertiesInfo; + PropertyInfoMap m_PropertiesInfo; + AMFCriticalSection m_Sync; //thread-safety lock. public: AMFPropertyStorageExImpl() @@ -130,6 +131,7 @@ namespace amf if (pDest != this) { + AMFLock lock(const_cast(&m_Sync)); for (PropertyInfoMap::const_iterator it = m_PropertiesInfo.begin(); it != m_PropertiesInfo.end(); it++) { if (!overwrite && pDest->HasProperty(it->first.c_str())) @@ -226,6 +228,7 @@ namespace amf size_t copySize = AMF_MIN(nameSize-1, found->first.length()); memcpy(name, found->first.c_str(), copySize * sizeof(wchar_t)); name[copySize] = 0; + AMFLock lock(const_cast(&m_Sync)); AMFVariantCopy(pValue, &found->second->value); return AMF_OK; } @@ -369,9 +372,17 @@ namespace amf //------------------------------------------------------------------------------------------------- virtual void AMF_STD_CALL OnPropertyChanged(const wchar_t* /*name*/){ } //------------------------------------------------------------------------------------------------- - virtual void AMF_STD_CALL AddObserver(AMFPropertyStorageObserver* pObserver) { AMFObservableImpl::AddObserver(pObserver); } + virtual void AMF_STD_CALL AddObserver(AMFPropertyStorageObserver* pObserver) + { + AMFLock lock(&m_Sync); + AMFObservableImpl::AddObserver(pObserver); + } //------------------------------------------------------------------------------------------------- - virtual void AMF_STD_CALL RemoveObserver(AMFPropertyStorageObserver* pObserver) { AMFObservableImpl::RemoveObserver(pObserver); } + virtual void AMF_STD_CALL RemoveObserver(AMFPropertyStorageObserver* pObserver) + { + AMFLock lock(&m_Sync); + AMFObservableImpl::RemoveObserver(pObserver); + } //------------------------------------------------------------------------------------------------- protected: //------------------------------------------------------------------------------------------------- @@ -409,17 +420,18 @@ namespace amf { return AMF_NOT_FOUND; } - - if (found->second->value == validatedValue) { - return AMF_OK; - } + AMFLock lock(&m_Sync); - found->second->value = validatedValue; + if (found->second->value == validatedValue) + { + return AMF_OK; + } + found->second->value = validatedValue; + } found->second->OnPropertyChanged(); OnPropertyChanged(name); NotifyObservers(&AMFPropertyStorageObserver::OnPropertyChanged, name); - return AMF_OK; } //------------------------------------------------------------------------------------------------- @@ -428,9 +440,11 @@ namespace amf AMF_RETURN_IF_INVALID_POINTER(name); AMF_RETURN_IF_INVALID_POINTER(pValue); + PropertyInfoMap::const_iterator found = m_PropertiesInfo.find(name); if (found != m_PropertiesInfo.end()) { + AMFLock lock(const_cast(&m_Sync)); AMFVariantCopy(pValue, &found->second->value); return AMF_OK; } @@ -440,6 +454,7 @@ namespace amf const AMFPropertyInfo* pParamInfo; if (GetPropertyInfo(name, &pParamInfo) == AMF_OK) { + AMFLock lock(const_cast(&m_Sync)); AMFVariantCopy(pValue, &pParamInfo->defaultValue); return AMF_OK; } @@ -479,6 +494,7 @@ namespace amf //------------------------------------------------------------------------------------------------- void ResetDefaultValues() { + AMFLock lock(&m_Sync); // copy defaults to property storage for (PropertyInfoMap::iterator it = m_PropertiesInfo.begin(); it != m_PropertiesInfo.end(); ++it) { @@ -501,7 +517,7 @@ namespace amf #define AMFPrimitivePropertyInfoMapBegin \ { \ amf::AMFPropertyInfoImpl* s_PropertiesInfo[] = \ - { + { #define AMFPrimitivePropertyInfoMapEnd \ }; \ @@ -510,7 +526,7 @@ namespace amf amf::AMFPropertyInfoImpl* pPropInfo = s_PropertiesInfo[i]; \ m_PropertiesInfo[pPropInfo->name].reset(pPropInfo); \ } \ - } + } #define AMFPropertyInfoBool(_name, _desc, _defaultValue, _AccessType) \ diff --git a/alvr/server/cpp/platform/win32/amf/public/common/Thread.h b/alvr/server/cpp/platform/win32/amf/public/common/Thread.h index 861e28d8e6..0b9f66181b 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/Thread.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/Thread.h @@ -228,7 +228,7 @@ namespace amf const int m_maxReadThreads; AMFSemaphore m_readSemaphore; AMFCriticalSection m_writeCriticalSection; - ReadWriteResources() : + ReadWriteResources() : m_maxReadThreads(10), m_readSemaphore(m_maxReadThreads, m_maxReadThreads), m_writeCriticalSection() @@ -356,7 +356,7 @@ namespace amf typedef std::list< ItemData > QueueList; QueueList m_Queue; - AMFCriticalSection m_cSect; + mutable AMFCriticalSection m_cSect; AMFEvent m_SomethingInQueueEvent; AMFSemaphore m_QueueSizeSem; amf_int32 m_iQueueSize; @@ -456,7 +456,7 @@ namespace amf bValue = InternalGet(ulID, item); } } - virtual amf_size GetSize() + virtual amf_size GetSize() const { AMFLock lock(&m_cSect); return m_Queue.size(); @@ -664,7 +664,7 @@ namespace amf m_bCancel = false; amf_pts start = amf_high_precision_clock(); amf_pts waited = 0; - int count = 0; + int count = 0; while(!m_bCancel) { count++; diff --git a/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h b/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h index 35721fa3d4..f49a1c2b19 100644 --- a/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h +++ b/alvr/server/cpp/platform/win32/amf/public/common/TraceAdapter.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -83,15 +83,15 @@ namespace amf * Asynchronous - trace message go to thread local queues; separate thread passes them to writes * Asynchronous mode offers no synchronization between working threads which are writing traces * and high performance. -* Asynchronous mode is not enabled always as that dedicated thread (started in Media SDK module) cannot be +* Asynchronous mode is not enabled always as that dedicated thread (started in Media SDK module) cannot be * terminated safely. See msdn ExitProcess description: it terminates all threads without notifications. -* ExitProcess is called after exit from main() -> before module static variables destroyed and before atexit +* ExitProcess is called after exit from main() -> before module static variables destroyed and before atexit * notifiers are called -> no way to finish trace dedicated thread. -* +* * Therefore here is direct enable of asynchronous mode. * AMFTraceEnableAsync(true) increases internal asynchronous counter by 1; AMFTraceEnableAsync(false) decreases by 1 * when counter becomes > 0 mode - switches to async; when becomes 0 - switches to sync -* +* * Tracer must be switched to sync mode before quit application, otherwise async writing thread will be force terminated by OS (at lease Windows) * See MSDN ExitProcess article for details. ******************************************************************************* @@ -181,20 +181,6 @@ AMF_RESULT AMF_CDECL_CALL AMFTraceFlush(); void AMF_CDECL_CALL AMFTraceW(const wchar_t* src_path, amf_int32 line, amf_int32 level, const wchar_t* scope, amf_int32 countArgs, const wchar_t* format, ...); -/** -******************************************************************************* -* AMF_UNICODE -* -* @brief -* Macro to convert string constant into wide char string constant -* -* Auxilary AMF_UNICODE_ macro is needed as otherwise it is not possible to use AMF_UNICODE(__FILE__) -* Microsoft macro _T also uses 2 passes to accomplish that -******************************************************************************* -*/ -#define AMF_UNICODE(s) AMF_UNICODE_(s) -#define AMF_UNICODE_(s) L ## s - /** ******************************************************************************* * AMFTrace @@ -259,7 +245,7 @@ bool AMF_CDECL_CALL AMFAssertsEnabled(); * Indentation value is thread specific ******************************************************************************* */ -void AMF_CDECL_CALL AMFTraceEnterScope(); +void AMF_CDECL_CALL AMFTraceEnterScope(); /** ******************************************************************************* * AMFTraceExitScope @@ -306,7 +292,7 @@ static const wchar_t* AMF_FACILITY = NULL; } #endif #else -#define AMFDebugBreak +#define AMFDebugBreak #endif /** @@ -327,7 +313,7 @@ inline amf_wstring __FormatMessage(int argsCount, const wchar_t* /*expression*/, // this version of __FormatMessage for case when descriptive message is provided with optional args if(argsCount <= 0) { - return amf_wstring(message); + return amf_wstring(message); } else { @@ -356,7 +342,7 @@ inline amf_wstring __FormatMessage(int argsCount, const wchar_t* /*expression*/, * @brief * Base generic macro: checks expression for success, if failed: trace error, debug break and return an error * -* return_result is a parameter to return to upper level, could be hard-coded or +* return_result is a parameter to return to upper level, could be hard-coded or * specified exp_res what means pass inner level error ******************************************************************************* */ @@ -389,7 +375,7 @@ inline amf_wstring __FormatMessage(int argsCount, const wchar_t* /*expression*/, EXPAND(amf::AMFTraceW(AMF_UNICODE(__FILE__), __LINE__, level, scope, 0, message.c_str()) ); \ AMFDebugBreak; \ } \ - } + } /** ******************************************************************************* @@ -398,7 +384,7 @@ inline amf_wstring __FormatMessage(int argsCount, const wchar_t* /*expression*/, * @brief * Macro supporting cascade call function returning AMF_RESULT from another * -* return_result is a parameter to return to upper level, could be hard-coded or +* return_result is a parameter to return to upper level, could be hard-coded or * specified exp_res what means pass inner level error ******************************************************************************* */ @@ -500,7 +486,7 @@ inline bool AMFHResultSucceded(HRESULT result) { return SUCCEEDED(result); } * Formats HRESULT into descriptive string ******************************************************************************* */ -inline amf_wstring AMFFormatHResult(HRESULT result) { return amf::amf_string_format(L"COM failed, HR = %0X:", result); } +inline amf_wstring AMFFormatHResult(HRESULT result) { return amf::amf_string_format(L"COM failed, HR = 0x%0X:", result); } /** ******************************************************************************* @@ -527,9 +513,9 @@ inline amf_wstring AMFFormatVkResult(int result) { return amf::amf_string_format * AMF_CALL * * @brief -* Macro to call AMF_RESULT returning function from AMF_RESULT returning function +* Macro to call AMF_RESULT returning function from AMF_RESULT returning function * -* It does: +* It does: * 1) Trace (level == debug) function name (or message if specified) * 2) Indent trace * 3) Call function @@ -612,7 +598,7 @@ inline amf_wstring AMFFormatVkResult(int result) { return amf::amf_string_format * * @brief * Checks VkResult if succeeded, otherwise trace error, debug break and return specified error to upper level -* +* * Could be used: A) with just expression B) with optinal descriptive message C) message + args for printf ******************************************************************************* */ @@ -713,7 +699,7 @@ extern "C" * Returns previous setting ******************************************************************************* */ - amf_int32 AMF_CDECL_CALL AMFTraceSetGlobalLevel(amf_int32 level); + amf_int32 AMF_CDECL_CALL AMFTraceSetGlobalLevel(amf_int32 level); /** ******************************************************************************* @@ -730,22 +716,22 @@ extern "C" * AMFTraceSetWriterLevel * * @brief - * Sets trace level for writer + * Sets trace level for writer * * Returns previous setting ******************************************************************************* */ - amf_int32 AMF_CDECL_CALL AMFTraceSetWriterLevel(const wchar_t* writerID, amf_int32 level); + amf_int32 AMF_CDECL_CALL AMFTraceSetWriterLevel(const wchar_t* writerID, amf_int32 level); /** ******************************************************************************* * AMFTraceGetWriterLevel * * @brief - * Gets trace level for writer + * Gets trace level for writer ******************************************************************************* */ - amf_int32 AMF_CDECL_CALL AMFTraceGetWriterLevel(const wchar_t* writerID); + amf_int32 AMF_CDECL_CALL AMFTraceGetWriterLevel(const wchar_t* writerID); /** ******************************************************************************* @@ -757,7 +743,7 @@ extern "C" * Returns previous setting ******************************************************************************* */ - amf_int32 AMF_CDECL_CALL AMFTraceSetWriterLevelForScope(const wchar_t* writerID, const wchar_t* scope, amf_int32 level); + amf_int32 AMF_CDECL_CALL AMFTraceSetWriterLevelForScope(const wchar_t* writerID, const wchar_t* scope, amf_int32 level); /** ******************************************************************************* @@ -767,7 +753,7 @@ extern "C" * Gets trace level for writer and scope ******************************************************************************* */ - amf_int32 AMF_CDECL_CALL AMFTraceGetWriterLevelForScope(const wchar_t* writerID, const wchar_t* scope); + amf_int32 AMF_CDECL_CALL AMFTraceGetWriterLevelForScope(const wchar_t* writerID, const wchar_t* scope); /** ******************************************************************************* diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/AMFXInput.h b/alvr/server/cpp/platform/win32/amf/public/include/components/AMFXInput.h new file mode 100644 index 0000000000..6ef38eb8b5 --- /dev/null +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/AMFXInput.h @@ -0,0 +1,139 @@ +// +// Notice Regarding Standards. AMD does not provide a license or sublicense to +// any Intellectual Property Rights relating to any standards, including but not +// limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; +// AVC/H.264; HEVC/H.265; AAC decode/FFMPEG; AAC encode/FFMPEG; VC-1; and MP3 +// (collectively, the "Media Technologies"). For clarity, you will pay any +// royalties due for such third party technologies, which may include the Media +// Technologies that are owed as a result of AMD providing the Software to you. +// +// MIT license +// +// +// Copyright (c) 2020 Advanced Micro Devices, Inc. All rights reserved. +// +// Permission is hereby granted, free of charge, to any person obtaining a copy +// of this software and associated documentation files (the "Software"), to deal +// in the Software without restriction, including without limitation the rights +// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +// copies of the Software, and to permit persons to whom the Software is +// furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in +// all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +// THE SOFTWARE. +// +#ifndef AMF_XInput_h +#define AMF_XInput_h + +#pragma once + +#include "../core/Interface.h" + +// XInput injection API: +// - XBox - like controller emulation +// - event injection +// - vibration notifications + +#if defined(__cplusplus) +namespace amf +{ +#endif + //---------------------------------------------------------------------------------------------- + // AMFXInput interface + //---------------------------------------------------------------------------------------------- + + typedef enum AMF_CONTROLLER_TYPE + { + AMF_CONTROLLER_XBOX360 = 1, + } AMF_CONTROLLER_TYPE; + + + typedef struct AMFXInputCreationDesc + { + AMF_CONTROLLER_TYPE eType; + amf_uint32 reserved[100]; + } AMFXInputCreationDesc; + + //---------------------------------------------------------------------------------------------- + // Constants for gamepad buttons - match Xinput.h + //---------------------------------------------------------------------------------------------- + #define AMF_XINPUT_GAMEPAD_DPAD_UP 0x0001 + #define AMF_XINPUT_GAMEPAD_DPAD_DOWN 0x0002 + #define AMF_XINPUT_GAMEPAD_DPAD_LEFT 0x0004 + #define AMF_XINPUT_GAMEPAD_DPAD_RIGHT 0x0008 + #define AMF_XINPUT_GAMEPAD_START 0x0010 + #define AMF_XINPUT_GAMEPAD_BACK 0x0020 + #define AMF_XINPUT_GAMEPAD_LEFT_THUMB 0x0040 + #define AMF_XINPUT_GAMEPAD_RIGHT_THUMB 0x0080 + #define AMF_XINPUT_GAMEPAD_LEFT_SHOULDER 0x0100 + #define AMF_XINPUT_GAMEPAD_RIGHT_SHOULDER 0x0200 + #define AMF_XINPUT_GAMEPAD_A 0x1000 + #define AMF_XINPUT_GAMEPAD_B 0x2000 + #define AMF_XINPUT_GAMEPAD_X 0x4000 + #define AMF_XINPUT_GAMEPAD_Y 0x8000 + //---------------------------------------------------------------------------------------------- + typedef struct AMFXInputState + { + amf_uint32 uiButtonStates; // bit-wize flags AMF_XINPUT_GAMEPAD_<> - the same as XINPUT_GAMEPAD_<> from Windows SDK XInput.h + amf_float fLeftTrigger; // 0.0f , 1.0f + amf_float fRightTrigger; // 0.0f , 1.0f + amf_float fThumbLX; // -1.0f , 1.0f + amf_float fThumbLY; // -1.0f , 1.0f + amf_float fThumbRX; // -1.0f , 1.0f + amf_float fThumbRY; // -1.0f , 1.0f + } AMFXInputState; + //---------------------------------------------------------------------------------------------- + typedef struct AMFXInputHaptic + { + amf_float fLeftMotor; // 0.0f , 1.0f - motor level + amf_float fRightMotor; // 0.0f , 1.0f - motor level + } AMFXInputHaptic; + //---------------------------------------------------------------------------------------------- +#if defined(__cplusplus) + //---------------------------------------------------------------------------------------------- + class AMF_NO_VTABLE AMFXInputCallback + { + public: + virtual void AMF_STD_CALL OnHaptic(amf_int32 id, const AMFXInputHaptic* pHaptic) = 0; + }; + //---------------------------------------------------------------------------------------------- + class AMF_NO_VTABLE AMFXInputController : public AMFInterface + { + public: + AMF_DECLARE_IID(0xbcaaaf0e, 0x6766, 0x46ac, 0xb1, 0xf1, 0x31, 0x5d, 0xca, 0x71, 0xe3, 0x4d) + + virtual amf_int32 AMF_STD_CALL GetControllerID() const = 0; + virtual AMF_RESULT AMF_STD_CALL SetCallback(AMFXInputCallback *pCallback) = 0; + + virtual AMF_RESULT AMF_STD_CALL SetState(const AMFXInputState *pState) = 0; + virtual AMF_RESULT AMF_STD_CALL GetState(AMFXInputState *pState) const = 0; + virtual AMF_RESULT AMF_STD_CALL Terminate() = 0; + }; + typedef amf::AMFInterfacePtr_T AMFXInputControllerPtr; +#endif + //---------------------------------------------------------------------------------------------- +#endif +#if defined(__cplusplus) +} + +#define AMF_XINPUT_CREATE_CONTROLLER_FUNCTION_NAME "AMFXInputCreateController" + +#if defined(__cplusplus) +extern "C" +{ + typedef AMF_RESULT(AMF_CDECL_CALL *AMFXInputCreateController_Fn)(amf_uint64 version, amf::AMFXInputCreationDesc* params, amf::AMFXInputController **ppController); +} +#else + typedef AMF_RESULT(AMF_CDECL_CALL *AMFXInputCreateController_Fn)(amf_uint64 version, AMFXInputCreationDesc* params, AMFXInputController **ppController); +#endif + + +#endif // AMF_XInput_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h b/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h index 8d6afdaeb3..f61c7db346 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/ColorSpace.h @@ -66,7 +66,7 @@ typedef enum AMF_COLOR_PRIMARIES_ENUM // as in VUI color_primaries AVC and HEVC AMF_COLOR_PRIMARIES_RESERVED = 3, AMF_COLOR_PRIMARIES_BT470M = 4, AMF_COLOR_PRIMARIES_BT470BG = 5, - AMF_COLOR_PRIMARIES_SMPTE170M = 6, + AMF_COLOR_PRIMARIES_SMPTE170M = 6, //BT601 AMF_COLOR_PRIMARIES_SMPTE240M = 7, AMF_COLOR_PRIMARIES_FILM = 8, AMF_COLOR_PRIMARIES_BT2020 = 9, @@ -100,6 +100,26 @@ typedef enum AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM // as in VUI transfer_charac AMF_COLOR_TRANSFER_CHARACTERISTIC_ARIB_STD_B67 = 18, //HLG } AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM; +typedef enum AMF_COLOR_MATRIX_COEFF_ENUM // as in VUI matrix coefficinet for encoder +{ + AMF_COLOR_MATRIX_COEFF_UNKNOWN = -1, + AMF_COLOR_MATRIX_COEFF_GBR = 0, // RGB + AMF_COLOR_MATRIX_COEFF_BT_709 = 1, // BT.709 + AMF_COLOR_MATRIX_COEFF_UNSPECIFIED = 2, // Unspecified + AMF_COLOR_MATRIX_COEFF_RESERVED = 3, // For future use + AMF_COLOR_MATRIX_COEFF_FCC = 4, // US FCC 73.628 + AMF_COLOR_MATRIX_COEFF_BT_470_B_G = 5, // BT.470 System B, G (historical) + AMF_COLOR_MATRIX_COEFF_BT_601 = 6, // BT.601 + AMF_COLOR_MATRIX_COEFF_SMPTE_240 = 7, // SMPTE 240 M + AMF_COLOR_MATRIX_COEFF_SMPTE_YCGCO = 8, // YCgCo + AMF_COLOR_MATRIX_COEFF_BT_2020_NCL = 9, // BT.2020 non-constant luminance, BT.2100 YCbCr + AMF_COLOR_MATRIX_COEFF_BT_2020_CL = 10, // BT.2020 constant luminance + AMF_COLOR_MATRIX_COEFF_SMPTE_2085 = 11, // SMPTE ST 2085 YDzDx + AMF_COLOR_MATRIX_COEFF_CHROMAT_NCL = 12, // (only used in AV1) Chromaticity-derived non-constant luminance + AMF_COLOR_MATRIX_COEFF_CHROMAT_CL = 13, // (only used in AV1) Chromaticity-derived constant luminance + AMF_COLOR_MATRIX_COEFF_ICTCP = 14 // (only used in AV1) BT.2100 ICtCp +} AMF_COLOR_MATRIX_COEFFICIENTS_ENUM; + typedef enum AMF_COLOR_BIT_DEPTH_ENUM { AMF_COLOR_BIT_DEPTH_UNDEFINED = 0, @@ -119,6 +139,26 @@ typedef struct AMFHDRMetadata amf_uint16 maxFrameAverageLightLevel; // nit value } AMFHDRMetadata; +#if defined(__cplusplus) +// Fieldwise equality comparison. +// C-style structs don't have this by default. +AMF_INLINE bool operator==(const AMFHDRMetadata& lhs, const AMFHDRMetadata& rhs) +{ + return (lhs.redPrimary[0] == rhs.redPrimary[0] && + lhs.redPrimary[1] == rhs.redPrimary[1] && + lhs.greenPrimary[0] == rhs.greenPrimary[0] && + lhs.greenPrimary[1] == rhs.greenPrimary[1] && + lhs.bluePrimary[0] == rhs.bluePrimary[0] && + lhs.bluePrimary[1] == rhs.bluePrimary[1] && + lhs.whitePoint[0] == rhs.whitePoint[0] && + lhs.whitePoint[1] == rhs.whitePoint[1] && + lhs.maxMasteringLuminance == rhs.maxMasteringLuminance && + lhs.minMasteringLuminance == rhs.minMasteringLuminance && + lhs.maxContentLightLevel == rhs.maxContentLightLevel && + lhs.maxFrameAverageLightLevel == rhs.maxFrameAverageLightLevel); +} +#endif + typedef enum AMF_COLOR_RANGE_ENUM { diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/DisplayCapture.h b/alvr/server/cpp/platform/win32/amf/public/include/components/DisplayCapture.h index 30820d6aab..8ca3325197 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/DisplayCapture.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/DisplayCapture.h @@ -40,11 +40,18 @@ #include "Component.h" +#if defined(__cplusplus) extern "C" { + using namespace amf; +#endif // defined(__cplusplus) + // To create capture component with Desktop Duplication API use this function - AMF_RESULT AMF_CDECL_CALL AMFCreateComponentDisplayCapture(amf::AMFContext* pContext, void* reserved, amf::AMFComponent** ppComponent); + AMF_RESULT AMF_CDECL_CALL AMFCreateComponentDisplayCapture(AMFContext* pContext, void* reserved, AMFComponent** ppComponent); + +#if defined(__cplusplus) } +#endif // defined(__cplusplus) // To create AMD Direct Capture component use this component ID with AMFFactory::CreateComponent() #define AMFDisplayCapture L"AMFDisplayCapture" @@ -75,6 +82,8 @@ typedef enum AMF_DISPLAYCAPTURE_MODE_ENUM #define AMF_DISPLAYCAPTURE_DIRTY_RECTS L"DirtyRects" // AMFInterface*(AMFBuffer*) - array of AMFRect(s) #define AMF_DISPLAYCAPTURE_FRAME_INDEX L"FrameIndex" // amf_int64; default = 0, index of presented frame since capture started #define AMF_DISPLAYCAPTURE_FRAME_FLIP_TIMESTAMP L"FlipTimesamp" // amf_int64; default = 0, flip timestmap of presented frame +#define AMF_DISPLAY_CAPTURE_DCC L"DisplayCaptureDCC" // bool, default false, DCC is enabled on the surface when set to true + // see Surface.h //#define AMF_SURFACE_ROTATION L"Rotation" // amf_int64(AMF_ROTATION_ENUM); default = AMF_ROTATION_NONE, can be set on surfaces - the same value as AMF_DISPLAYCAPTURE_ROTATION diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/FRC.h b/alvr/server/cpp/platform/win32/amf/public/include/components/FRC.h index af1f5bf7b8..18e80de4fc 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/FRC.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/FRC.h @@ -40,49 +40,42 @@ // Select rendering API for FRC enum AMF_FRC_ENGINE { - FRC_ENGINE_OFF = 0, - FRC_ENGINE_DX12 = 1, - FRC_ENGINE_OPENCL = 2, + FRC_ENGINE_OFF = 0, + FRC_ENGINE_DX12 = 1, + FRC_ENGINE_OPENCL = 2, + FRC_ENGINE_DX11 = 3, }; // Select present mode for FRC enum AMF_FRC_MODE_TYPE { - FRC_OFF = 0, - FRC_ON, - FRC_ONLY_INTERPOLATED, - FRC_x2_PRESENT, + FRC_OFF = 0, + FRC_ON = 1, + FRC_ONLY_INTERPOLATED = 2, + FRC_x2_PRESENT = 3, TOTAL_FRC_MODES }; -enum AMF_FRC_SNAPSHOT_MODE_TYPE { - FRC_SNAPSHOT_OFF = 0, - FRC_SNAPSHOT_LOAD, - FRC_SNAPSHOT_STORE, - FRC_SNAPSHOT_REGRESSION_TEST, - FRC_SNAPSHOT_STORE_NO_PADDING, - TOTAL_FRC_SNAPSHOT_MODES -}; - -enum AMF_FRC_PROFILE { - FRC_PROFILE_LOW = 0, - FRC_PROFILE_HIGH = 1, - FRC_PROFILE_SUPER = 2, +enum AMF_FRC_PROFILE_TYPE { + FRC_PROFILE_LOW = 0, + FRC_PROFILE_HIGH = 1, + FRC_PROFILE_SUPER = 2, TOTAL_FRC_PROFILES }; -enum AMF_FRC_MV_SEARCH_MODE { - FRC_MV_SEARCH_NATIVE = 0, - FRC_MV_SEARCH_PERFORMANCE = 1, +enum AMF_FRC_MV_SEARCH_MODE_TYPE { + FRC_MV_SEARCH_NATIVE = 0, + FRC_MV_SEARCH_PERFORMANCE = 1, TOTAL_FRC_MV_SEARCH_MODES }; -#define AMF_FRC_ENGINE_TYPE L"FRCEngineType" // AMF_MEMORY_TYPE (DX12, OPENCL, default : DX12)" - determines how the object is initialized and what kernels to use -#define AMF_FRC_OUTPUT_SIZE L"FRCSOutputSize" // AMFSize - output scaling width/hieight -#define AMF_FRC_MODE L"FRCMode" // FRC mode (0-off, 1-on (call at x2 source FPS), 2-only interpolated, 3-x2 Present) -#define AMF_FRC_ENABLE_FALLBACK L"FRCEnableFallback" // FRC enable fallback mode -#define AMF_FRC_INDICATOR L"FRCIndicator" // bool (default : false) -#define AMF_FRC_PROFILE L"FRCProfile" // FRC profile -#define AMF_FRC_MV_SEARCH_MODE L"FRCMVSEARCHMODE" // FRC MV search mode +#define AMF_FRC_ENGINE_TYPE L"FRCEngineType" // amf_int64(AMF_FRC_ENGINE); default = DX12; determines how the object is initialized and what kernels to use +#define AMF_FRC_OUTPUT_SIZE L"FRCSOutputSize" // AMFSize - output scaling width/height +#define AMF_FRC_MODE L"FRCMode" // amf_int64(AMF_FRC_MODE_TYPE); default = FRC_ONLY_INTERPOLATED; FRC mode +#define AMF_FRC_ENABLE_FALLBACK L"FRCEnableFallback" // bool; default = true; FRC enable fallback mode +#define AMF_FRC_INDICATOR L"FRCIndicator" // bool; default : false; draw indicator in the corner +#define AMF_FRC_PROFILE L"FRCProfile" // amf_int64(AMF_FRC_PROFILE_TYPE); default=FRC_PROFILE_HIGH; FRC profile +#define AMF_FRC_MV_SEARCH_MODE L"FRCMVSEARCHMODE" // amf_int64(AMF_FRC_MV_SEARCH_MODE_TYPE); defaut = FRC_MV_SEARCH_NATIVE; FRC MV search mode +#define AMF_FRC_USE_FUTURE_FRAME L"FRCUseFutureFrame" // bool; default = true; Enable dependency on future frame, improves quality for the cost of latency #endif //#ifndef AMFFRC_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h b/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h index 28c0192bfe..e3a88bf01f 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/PreAnalysis.h @@ -92,9 +92,12 @@ enum AMF_PA_HIGH_MOTION_QUALITY_BOOST_MODE_ENUM // PA object properties -#define AMF_PA_ENGINE_TYPE L"PAEngineType" // AMF_MEMORY_TYPE (Host, DX11, OpenCL, Vulkan, Auto default : UNKNOWN (Auto))" - determines how the object is initialized and what kernels to use +#define AMF_PA_ENGINE_TYPE L"PAEngineType" // AMF_MEMORY_TYPE (Host, DX11, OpenCL, Vulkan, DX12, Auto default : UNKNOWN (Auto))" - determines how the object is initialized and what kernels to use // by default it is Auto (DX11, OpenCL and Vulkan are currently available) +#define AMF_PA_QUERY_TIMEOUT L"PAQueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. + + #define AMF_PA_SCENE_CHANGE_DETECTION_ENABLE L"PASceneChangeDetectionEnable" // bool (default : True) - Enable Scene Change Detection GPU algorithm #define AMF_PA_SCENE_CHANGE_DETECTION_SENSITIVITY L"PASceneChangeDetectionSensitivity" // AMF_PA_SCENE_CHANGE_DETECTION_SENSITIVITY_ENUM (default : Medium) - Scene Change Detection Sensitivity #define AMF_PA_STATIC_SCENE_DETECTION_ENABLE L"PAStaticSceneDetectionEnable" // bool (default : False) - Enable Skip Detection GPU algorithm diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoConverter.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoConverter.h index ed8559a206..ac9b116553 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoConverter.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoConverter.h @@ -51,6 +51,7 @@ enum AMF_VIDEO_CONVERTER_SCALE_ENUM enum AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM { + AMF_VIDEO_CONVERTER_TONEMAPPING_UNDEFINED = -1, AMF_VIDEO_CONVERTER_TONEMAPPING_COPY = 0, AMF_VIDEO_CONVERTER_TONEMAPPING_AMD = 1, AMF_VIDEO_CONVERTER_TONEMAPPING_LINEAR = 2, @@ -94,13 +95,13 @@ enum AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM #define AMF_VIDEO_CONVERTER_INPUT_COLOR_PRIMARIES L"InputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum #define AMF_VIDEO_CONVERTER_INPUT_COLOR_RANGE L"InputColorRange" // amf_int64(AMF_COLOR_RANGE_ENUM) default = AMF_COLOR_RANGE_UNDEFINED #define AMF_VIDEO_CONVERTER_INPUT_HDR_METADATA L"InputHdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL -#define AMF_VIDEO_CONVERTER_INPUT_TONEMAPPING L"InputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) default = AMF_VIDEO_CONVERTER_TONEMAPPING_LINEAR +#define AMF_VIDEO_CONVERTER_INPUT_TONEMAPPING L"InputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) default = AMF_VIDEO_CONVERTER_TONEMAPPING_UNDEFINED #define AMF_VIDEO_CONVERTER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutputTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 See ColorSpace.h for enum #define AMF_VIDEO_CONVERTER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum #define AMF_VIDEO_CONVERTER_OUTPUT_COLOR_RANGE L"OutputColorRange" // amf_int64(AMF_COLOR_RANGE_ENUM) default = AMF_COLOR_RANGE_UNDEFINED #define AMF_VIDEO_CONVERTER_OUTPUT_HDR_METADATA L"OutputHdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL -#define AMF_VIDEO_CONVERTER_OUTPUT_TONEMAPPING L"OutputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) default = AMF_VIDEO_CONVERTER_TONEMAPPING_AMD +#define AMF_VIDEO_CONVERTER_OUTPUT_TONEMAPPING L"OutputTonemapping" // amf_int64(AMF_VIDEO_CONVERTER_TONEMAPPING_ENUM) DEPRECATED - use AMF_VIDEO_CONVERTER_INPUT_TONEMAPPING // these properties can be set on input or outout surface See ColorSpace.h // the same as decoder properties set on input surface - see below diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h index 7d1a32cad4..b9cebfd568 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoDecoderUVD.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -49,22 +49,22 @@ #define AMFVideoDecoderUVD_H264_SVC L"AMFVideoDecoderUVD_H264_SVC" #define AMFVideoDecoderUVD_MJPEG L"AMFVideoDecoderUVD_MJPEG" #define AMFVideoDecoderHW_H265_HEVC L"AMFVideoDecoderHW_H265_HEVC" -#define AMFVideoDecoderHW_H265_MAIN10 L"AMFVideoDecoderHW_H265_MAIN10" +#define AMFVideoDecoderHW_H265_MAIN10 L"AMFVideoDecoderHW_H265_MAIN10" // deprecated, AMFVideoDecoderHW_H265_HEVC can be used #define AMFVideoDecoderHW_VP9 L"AMFVideoDecoderHW_VP9" -#define AMFVideoDecoderHW_VP9_10BIT L"AMFVideoDecoderHW_VP9_10BIT" +#define AMFVideoDecoderHW_VP9_10BIT L"AMFVideoDecoderHW_VP9_10BIT" // deprecated, AMFVideoDecoderHW_VP9 can be used #define AMFVideoDecoderHW_AV1 L"AMFVideoDecoderHW_AV1" -#define AMFVideoDecoderHW_AV1_12BIT L"AMFVideoDecoderHW_AV1_12BIT" +#define AMFVideoDecoderHW_AV1_12BIT L"AMFVideoDecoderHW_AV1_12BIT" // deprecated, AMFVideoDecoderHW_AV1 can be used enum AMF_VIDEO_DECODER_MODE_ENUM { AMF_VIDEO_DECODER_MODE_REGULAR = 0, // DPB delay is based on number of reference frames + 1 (from SPS) AMF_VIDEO_DECODER_MODE_COMPLIANT, // DPB delay is based on profile - up to 16 - AMF_VIDEO_DECODER_MODE_LOW_LATENCY, // DPB delay is 0. Expect stream with no reordering in P-Frames or B-Frames. B-frames can be present as long as they do not introduce any frame re-ordering + AMF_VIDEO_DECODER_MODE_LOW_LATENCY, // DPB delay is 0. Expect stream with no reordering in P-Frames or B-Frames. B-frames can be present as long as they do not introduce any frame re-ordering }; enum AMF_TIMESTAMP_MODE_ENUM { AMF_TS_PRESENTATION = 0, // default. decoder will preserve timestamps from input to output - AMF_TS_SORT, // decoder will resort PTS list + AMF_TS_SORT, // decoder will resort PTS list AMF_TS_DECODE // timestamps reflect decode order - decoder will reuse them }; @@ -86,7 +86,7 @@ enum AMF_TIMESTAMP_MODE_ENUM #define AMF_VIDEO_DECODER_DEFAULT_SURFACES_FOR_TRANSIT 5 // if AMF_VIDEO_DECODER_SURFACE_POOL_SIZE is 0 , AMF_VIDEO_DECODER_SURFACE_POOL_SIZE=AMF_VIDEO_DECODER_DEFAULT_SURFACES_FOR_TRANSIT+AMF_VIDEO_DECODER_DPB_SIZE // Decoder capabilities - exposed in AMFCaps interface -#define AMF_VIDEO_DECODER_CAP_NUM_OF_STREAMS L"NumOfStreams" // amf_int64; maximum number of decode streams supported +#define AMF_VIDEO_DECODER_CAP_NUM_OF_STREAMS L"NumOfStreams" // amf_int64; maximum number of decode streams supported // metadata information: can be set on output surface @@ -97,7 +97,7 @@ enum AMF_TIMESTAMP_MODE_ENUM #define AMF_VIDEO_DECODER_HDR_METADATA L"HdrMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL /////// AMF_VIDEO_DECODER_FULL_RANGE_COLOR deprecated, use AMF_VIDEO_DECODER_COLOR_RANGE -#define AMF_VIDEO_DECODER_FULL_RANGE_COLOR L"FullRangeColor" // bool; default = false; false = studio range, true = full range +#define AMF_VIDEO_DECODER_FULL_RANGE_COLOR L"FullRangeColor" // bool; default = false; false = studio range, true = full range /////// #define AMF_VIDEO_DECODER_COLOR_RANGE L"ColorRange" // amf_int64(AMF_COLOR_RANGE_ENUM) default = AMF_COLOR_RANGE_UNDEFINED @@ -105,8 +105,8 @@ enum AMF_TIMESTAMP_MODE_ENUM #define AMF_VIDEO_DECODER_COLOR_PROFILE L"ColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO // properties to be set on decoder if internal converter is used -#define AMF_VIDEO_DECODER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 See VideoDecoderUVD.h for enum -#define AMF_VIDEO_DECODER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_DECODER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 7.2 See VideoDecoderUVD.h for enum +#define AMF_VIDEO_DECODER_OUTPUT_COLOR_PRIMARIES L"OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 7.1 See ColorSpace.h for enum #define AMF_VIDEO_DECODER_OUTPUT_HDR_METADATA L"OutHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL #define AMF_VIDEO_DECODER_LOW_LATENCY L"LowLatencyDecode" // amf_bool; default = false; true = low latency decode, false = regular decode @@ -122,6 +122,7 @@ enum AMF_TIMESTAMP_MODE_ENUM #define AMF_VIDEO_DECODER_ENABLE_SMART_ACCESS_VIDEO L"EnableDecoderSmartAccessVideo" // amf_bool; default = false; true = enables smart access video feature #define AMF_VIDEO_DECODER_SKIP_TRANSFER_SMART_ACCESS_VIDEO L"SkipTransferSmartAccessVideo" // amf_bool; default = false; true = keeps output on GPU where it ran +#define AMF_VIDEO_DECODER_OUTPUT_FORMAT L"OutputDecodeFormat" // amf_int64 (AMF_SURFACE_FORMAT) detected output format #define AMF_VIDEO_DECODER_CAP_SUPPORT_SMART_ACCESS_VIDEO L"SupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h index bcf7d4ca7f..b00ea41bbe 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderAV1.h @@ -101,7 +101,8 @@ enum AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_ENUM { AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_ONLY = 1, AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_64X16_1080P_CODED_1082 = 2, - AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_NO_RESTRICTIONS = 3 + AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_NO_RESTRICTIONS = 3, + AMF_VIDEO_ENCODER_AV1_ALIGNMENT_MODE_8X2_ONLY = 4 }; enum AMF_VIDEO_ENCODER_AV1_FORCE_FRAME_TYPE_ENUM @@ -124,8 +125,8 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_FRAME_TYPE_ENUM enum AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_ENUM { - AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_HIGH_QUALITY = 0, - AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_QUALITY = 30, + AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_HIGH_QUALITY = 0, + AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_QUALITY = 30, AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_BALANCED = 70, AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_SPEED = 100 }; @@ -134,7 +135,8 @@ enum AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_ENUM { AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_NONE = 0, AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_GOP_ALIGNED = 1, - AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_KEY_FRAME_ALIGNED = 2 + AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_KEY_FRAME_ALIGNED = 2, + AMF_VIDEO_ENCODER_AV1_HEADER_INSERTION_MODE_SUPPRESSED = 3 }; enum AMF_VIDEO_ENCODER_AV1_SWITCH_FRAME_INSERTION_MODE_ENUM @@ -185,11 +187,12 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_TILE = 1, AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_TILE_LAST = 2 }; -// *** Static properties - can be set only before Init() *** + +// *** Static properties - can be set only before Init() *** // Encoder Engine Settings #define AMF_VIDEO_ENCODER_AV1_ENCODER_INSTANCE_INDEX L"Av1EncoderInstanceIndex" // amf_int64; default = 0; selected HW instance idx. The number of instances is queried by using AMF_VIDEO_ENCODER_AV1_CAP_NUM_OF_HW_INSTANCES -#define AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE L"Av1EncodingLatencyMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE_ENUM); default = depends on USAGE; The encoding latency mode. +#define AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE L"Av1EncodingLatencyMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_ENCODING_LATENCY_MODE_ENUM); default = depends on USAGE; The encoding latency mode. #define AMF_VIDEO_ENCODER_AV1_QUERY_TIMEOUT L"Av1QueryTimeout" // amf_int64; default = 0 (no wait); timeout for QueryOutput call in ms. // Usage Settings @@ -204,7 +207,7 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET L"Av1QualityPreset" // amf_int64(AMF_VIDEO_ENCODER_AV1_QUALITY_PRESET_ENUM); default = depends on USAGE; Quality Preset // Codec Configuration -#define AMF_VIDEO_ENCODER_AV1_SCREEN_CONTENT_TOOLS L"Av1ScreenContentTools" // bool; default = depends on USAGE; If true, allow enabling screen content tools by AMF_VIDEO_ENCODER_AV1_PALETTE_MODE and AMF_VIDEO_ENCODER_AV1_FORCE_INTEGER_MV; if false, all screen content tools are disabled. +#define AMF_VIDEO_ENCODER_AV1_SCREEN_CONTENT_TOOLS L"Av1ScreenContentTools" // bool; default = true; If true, allow enabling screen content tools by AMF_VIDEO_ENCODER_AV1_PALETTE_MODE and AMF_VIDEO_ENCODER_AV1_FORCE_INTEGER_MV; if false, all screen content tools are disabled. #define AMF_VIDEO_ENCODER_AV1_ORDER_HINT L"Av1OrderHint" // bool; default = depends on USAGE; If true, code order hint; if false, don't code order hint #define AMF_VIDEO_ENCODER_AV1_FRAME_ID L"Av1FrameId" // bool; default = depends on USAGE; If true, code frame id; if false, don't code frame id #define AMF_VIDEO_ENCODER_AV1_TILE_GROUP_OBU L"Av1TileGroupObu" // bool; default = depends on USAGE; If true, code FrameHeaderObu + TileGroupObu and each TileGroupObu contains one tile; if false, code FrameObu. @@ -241,11 +244,11 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM // Tile Output #define AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE L"AV1OutputMode" // amf_int64(AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE_ENUM); default = AMF_VIDEO_ENCODER_AV1_OUTPUT_MODE_FRAME - defines encoder output mode -// *** Dynamic properties - can be set anytime *** +// *** Dynamic properties - can be set anytime *** // Codec Configuration -#define AMF_VIDEO_ENCODER_AV1_PALETTE_MODE L"Av1PaletteMode" // bool; default = depends on USAGE; If true, enable palette mode; if false, disable palette mode. Valid only when AMF_VIDEO_ENCODER_AV1_SCREEN_CONTENT_TOOLS is true. -#define AMF_VIDEO_ENCODER_AV1_FORCE_INTEGER_MV L"Av1ForceIntegerMv" // bool; default = depends on USAGE; If true, enable force integer MV; if false, disable force integer MV. Valid only when AMF_VIDEO_ENCODER_AV1_SCREEN_CONTENT_TOOLS is true. +#define AMF_VIDEO_ENCODER_AV1_PALETTE_MODE L"Av1PaletteMode" // bool; default = true; If true, enable palette mode; if false, disable palette mode. Valid only when AMF_VIDEO_ENCODER_AV1_SCREEN_CONTENT_TOOLS is true. +#define AMF_VIDEO_ENCODER_AV1_FORCE_INTEGER_MV L"Av1ForceIntegerMv" // bool; default = false; If true, enable force integer MV; if false, disable force integer MV. Valid only when AMF_VIDEO_ENCODER_AV1_SCREEN_CONTENT_TOOLS is true. #define AMF_VIDEO_ENCODER_AV1_CDF_UPDATE L"Av1CdfUpdate" // bool; default = depends on USAGE; If true, enable CDF update; if false, disable CDF update. #define AMF_VIDEO_ENCODER_AV1_CDF_FRAME_END_UPDATE_MODE L"Av1CdfFrameEndUpdateMode" // amd_int64(AMF_VIDEO_ENCODER_AV1_CDF_FRAME_END_UPDATE_MODE_ENUM); default = depends on USAGE; CDF frame end update mode @@ -263,9 +266,13 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTRA L"Av1MaxQIndex_Intra" // amf_int64; default = depends on USAGE; Max QIndex for intra frames; range = 1-255 #define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTER L"Av1MinQIndex_Inter" // amf_int64; default = depends on USAGE; Min QIndex for inter frames; range = 1-255 #define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTER L"Av1MaxQIndex_Inter" // amf_int64; default = depends on USAGE; Max QIndex for inter frames; range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_MIN_Q_INDEX_INTER_B L"Av1MinQIndex_Inter_B" // amf_int64; default = depends on USAGE; Min QIndex for inter frames (bi-directional); range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_MAX_Q_INDEX_INTER_B L"Av1MaxQIndex_Inter_B" // amf_int64; default = depends on USAGE; Max QIndex for inter frames (bi-directional); range = 1-255 + #define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTRA L"Av1QIndex_Intra" // amf_int64; default = depends on USAGE; intra-frame QIndex; range = 1-255 #define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTER L"Av1QIndex_Inter" // amf_int64; default = depends on USAGE; inter-frame QIndex; range = 1-255 +#define AMF_VIDEO_ENCODER_AV1_Q_INDEX_INTER_B L"Av1QIndex_Inter_B" // amf_int64; default = depends on USAGE; inter-frame QIndex (bi-directional); range = 1-255 #define AMF_VIDEO_ENCODER_AV1_RATE_CONTROL_SKIP_FRAME L"Av1RateControlSkipFrameEnable" // bool; default = depends on USAGE; If true, rate control may code skip frame when needed; if false, rate control will not code skip frame. @@ -285,10 +292,12 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_AV1_INPUT_COLOR_PROFILE L"Av1InputColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_AV1_INPUT_TRANSFER_CHARACTERISTIC L"Av1InputColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 section 7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_AV1_INPUT_COLOR_PRIMARIES L"Av1InputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_AV1_INPUT_MATRIX_COEFF L"Av1InMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_AV1_OUTPUT_COLOR_PROFILE L"Av1OutputColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_AV1_OUTPUT_TRANSFER_CHARACTERISTIC L"Av1OutputColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_AV1_OUTPUT_COLOR_PRIMARIES L"Av1OutputColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_MATRIX_COEFF L"Av1OutMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size // Frame encode parameters @@ -296,7 +305,7 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_AV1_FORCE_INSERT_SEQUENCE_HEADER L"Av1ForceInsertSequenceHeader" // bool; default = false; If true, force insert sequence header with current frame; #define AMF_VIDEO_ENCODER_AV1_MARK_CURRENT_WITH_LTR_INDEX L"Av1MarkCurrentWithLTRIndex" // amf_int64; default = N/A; Mark current frame with LTR index #define AMF_VIDEO_ENCODER_AV1_FORCE_LTR_REFERENCE_BITFIELD L"Av1ForceLTRReferenceBitfield" // amf_int64; default = 0; force LTR bit-field -#define AMF_VIDEO_ENCODER_AV1_ROI_DATA L"Av1ROIData" // 2D AMFSurface, surface format: AMF_SURFACE_GRAY32 +#define AMF_VIDEO_ENCODER_AV1_ROI_DATA L"Av1ROIData" // 2D AMFSurface, surface format: AMF_SURFACE_GRAY32; Importance value for each 64x64 block ranges from `0` (least important) to `10` (most important), stored in 32bit unsigned format #define AMF_VIDEO_ENCODER_AV1_PSNR_FEEDBACK L"Av1PSNRFeedback" // amf_bool; default = false; Signal encoder to calculate PSNR score #define AMF_VIDEO_ENCODER_AV1_SSIM_FEEDBACK L"Av1SSIMFeedback" // amf_bool; default = false; Signal encoder to calculate SSIM score #define AMF_VIDEO_ENCODER_AV1_STATISTICS_FEEDBACK L"Av1StatisticsFeedback" // amf_bool; default = false; Signal encoder to collect and feedback encoder statistics @@ -348,14 +357,29 @@ enum AMF_VIDEO_ENCODER_AV1_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_AV1_CAP_MAX_THROUGHPUT L"Av1CapMaxThroughput" // amf_int64; default = N/A; MAX throughput for AV1 encoder in MB (16 x 16 pixel) #define AMF_VIDEO_ENCODER_AV1_CAP_REQUESTED_THROUGHPUT L"Av1CapRequestedThroughput" // amf_int64; default = N/A; Currently total requested throughput for AV1 encode in MB (16 x 16 pixel) #define AMF_VIDEO_ENCODER_AV1_CAP_COLOR_CONVERSION L"Av1CapColorConversion" // amf_int64(AMF_ACCELERATION_TYPE); default = N/A; type of supported color conversion. -#define AMF_VIDEO_ENCODER_AV1_CAP_PRE_ANALYSIS L"Av1PreAnalysis" // amf_bool - pre analysis module is available for AV1 UVE encoder, n/a for the other encoders +#define AMF_VIDEO_ENCODER_AV1_CAP_PRE_ANALYSIS L"Av1PreAnalysis" // amf_bool - pre analysis module is available. #define AMF_VIDEO_ENCODER_AV1_CAP_MAX_BITRATE L"Av1MaxBitrate" // amf_int64; default = N/A; Maximum bit rate in bits #define AMF_VIDEO_ENCODER_AV1_CAP_MAX_PROFILE L"Av1MaxProfile" // amf_int64(AMF_VIDEO_ENCODER_AV1_PROFILE_ENUM); default = N/A; max value of code profile #define AMF_VIDEO_ENCODER_AV1_CAP_MAX_LEVEL L"Av1MaxLevel" // amf_int64(AMF_VIDEO_ENCODER_AV1_LEVEL_ENUM); default = N/A; max value of codec level #define AMF_VIDEO_ENCODER_AV1_CAP_MAX_NUM_TEMPORAL_LAYERS L"Av1CapMaxNumTemporalLayers" // amf_int64; default = N/A; The cap of maximum number of temporal layers #define AMF_VIDEO_ENCODER_AV1_CAP_MAX_NUM_LTR_FRAMES L"Av1CapMaxNumLTRFrames" // amf_int64; default = N/A; The cap of maximum number of LTR frames. This value is calculated based on current value of AMF_VIDEO_ENCODER_AV1_MAX_NUM_TEMPORAL_LAYERS. #define AMF_VIDEO_ENCODER_AV1_CAP_SUPPORT_TILE_OUTPUT L"AV1SupportTileOutput" // amf_bool; if tile output is supported +#define AMF_VIDEO_ENCODER_AV1_CAP_BFRAMES L"AV1BFrames" // amf_bool; if b frames are supported for AV1 #define AMF_VIDEO_ENCODER_AV1_CAP_SUPPORT_SMART_ACCESS_VIDEO L"Av1EncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video +#define AMF_VIDEO_ENCODER_AV1_CAP_WIDTH_ALIGNMENT_FACTOR L"Av1WidthAlignmentFactor" // amf_int64; default = 1; The encoder capability for width alignment +#define AMF_VIDEO_ENCODER_AV1_CAP_HEIGHT_ALIGNMENT_FACTOR L"Av1HeightAlignmentFactor" // amf_int64; default = 1; The encoder capability for height alignment + +#define AMF_VIDEO_ENCODER_AV1_MULTI_HW_INSTANCE_ENCODE L"Av1MultiHwInstanceEncode" // amf_bool; flag to enable AV1 multi VCN encode. + +#define AMF_VIDEO_ENCODER_AV1_INPUT_FULL_RANGE_COLOR L"Av1InputFullRangeColor" // amf_bool; default = false; indicates color range of RGB/YUV input is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_AV1_OUTPUT_FULL_RANGE_COLOR L"Av1NominalRange" // amf_bool; default = false; indicates color range of YUV output is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_AV1_NOMINAL_RANGE L"Av1NominalRange" // amf_bool; deprecated same usage as AMF_VIDEO_ENCODER_AV1_OUTPUT_FULL_RANGE_COLOR + +// properties for AV1 B-frame (VCN5 feature) +#define AMF_VIDEO_ENCODER_AV1_MAX_CONSECUTIVE_BPICTURES L"Av1MaxConsecutiveBPictures" // amf_int64; default 0. Maximum number of consecutive B frames for B frame encoding +#define AMF_VIDEO_ENCODER_AV1_B_PIC_PATTERN L"Av1BPicturesPattern" // amf_int64; default 0. Number of B frames for B frame encoding +#define AMF_VIDEO_ENCODER_AV1_ADAPTIVE_MINIGOP L"Av1AdaptiveMiniGop" // amf_bool; default false. Adaptive miniGOP size for B frame encoding + #endif //#ifndef AMF_VideoEncoderAV1_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h index 9549ec3399..d5f05c4915 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderHEVC.h @@ -104,16 +104,18 @@ enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_DATA_TYPE_ENUM enum AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_ENUM { - AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY = 0, - AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED = 5, - AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED = 10 + AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_QUALITY = 0, + AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_BALANCED = 5, + AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_SPEED = 10, + AMF_VIDEO_ENCODER_HEVC_QUALITY_PRESET_HIGH_QUALITY = 15 }; enum AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_ENUM { AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_NONE = 0, AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_GOP_ALIGNED, - AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_IDR_ALIGNED + AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_IDR_ALIGNED, + AMF_VIDEO_ENCODER_HEVC_HEADER_INSERTION_MODE_SUPPRESSED }; enum AMF_VIDEO_ENCODER_HEVC_PICTURE_TRANSFER_MODE_ENUM @@ -163,7 +165,9 @@ enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_HEVC_ASPECT_RATIO L"HevcAspectRatio" // AMFRatio; default = 1, 1 #define AMF_VIDEO_ENCODER_HEVC_LOWLATENCY_MODE L"LowLatencyInternal" // bool; default = false, enables low latency mode #define AMF_VIDEO_ENCODER_HEVC_PRE_ANALYSIS_ENABLE L"HevcEnablePreAnalysis" // bool; default = false; enables the pre-analysis module. Currently only works in AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR mode. Refer to AMF Video PreAnalysis API reference for more details. -#define AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE L"HevcNominalRange" // amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE); default = amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE_STUDIO); property is bool but amf_int64 also works for backward compatibility. +#define AMF_VIDEO_ENCODER_HEVC_INPUT_FULL_RANGE_COLOR L"HevcInputFullRangeColor" // bool; default = false; indicates color range of RGB/YUV input is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_FULL_RANGE_COLOR L"HevcNominalRange" // amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE); default = amf_int64(AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE_STUDIO); property is bool but amf_int64 also works for backward compatibility. +#define AMF_VIDEO_ENCODER_HEVC_NOMINAL_RANGE L"HevcNominalRange" // deprecated; same usage as AMF_VIDEO_ENCODER_HEVC_OUTPUT_FULL_RANGE_COLOR #define AMF_VIDEO_ENCODER_HEVC_MAX_NUM_TEMPORAL_LAYERS L"HevcMaxNumOfTemporalLayers" // amf_int64; default = 1; Max number of temporal layers. // Picture control properties @@ -183,7 +187,7 @@ enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_HEVC_HIGH_MOTION_QUALITY_BOOST_ENABLE L"HevcHighMotionQualityBoostEnable"// bool; default = depends on USAGE; Enable High motion quality boost mode #define AMF_VIDEO_ENCODER_HEVC_PREENCODE_ENABLE L"HevcRateControlPreAnalysisEnable" // bool; default = depends on USAGE; enables pre-encode assisted rate control -#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_PREANALYSIS_ENABLE L"HevcRateControlPreAnalysisEnable" // bool; default = depends on USAGE; enables pre-encode assisted rate control. Deprecated, please use AMF_VIDEO_ENCODER_PREENCODE_ENABLE instead. +#define AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_PREANALYSIS_ENABLE L"HevcRateControlPreAnalysisEnable" // bool; default = depends on USAGE; enables pre-encode assisted rate control. Deprecated, please use AMF_VIDEO_ENCODER_HEVC_PREENCODE_ENABLE instead. #ifdef _MSC_VER #ifndef __clang__ #pragma deprecated("AMF_VIDEO_ENCODER_HEVC_RATE_CONTROL_PREANALYSIS_ENABLE") @@ -200,10 +204,12 @@ enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_HEVC_INPUT_COLOR_PROFILE L"HevcInColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_HEVC_INPUT_TRANSFER_CHARACTERISTIC L"HevcInColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 section 7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_HEVC_INPUT_COLOR_PRIMARIES L"HevcInColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_HEVC_INPUT_MATRIX_COEFF L"HevcInMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PROFILE L"HevcOutColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_TRANSFER_CHARACTERISTIC L"HevcOutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_COLOR_PRIMARIES L"HevcOutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 section 7.1 See ColorSpace.h for enum +#define AMF_VIDEO_ENCODER_HEVC_OUTPUT_MATRIX_COEFF L"HevcOutMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size // Slice output #define AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE L"HevcOutputMode" // amf_int64(AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE_ENUM); default = AMF_VIDEO_ENCODER_HEVC_OUTPUT_MODE_FRAME - defines encoder output mode @@ -254,7 +260,7 @@ enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_HEVC_MARK_CURRENT_WITH_LTR_INDEX L"HevcMarkCurrentWithLTRIndex" // amf_int64; default = N/A; Mark current frame with LTR index #define AMF_VIDEO_ENCODER_HEVC_FORCE_LTR_REFERENCE_BITFIELD L"HevcForceLTRReferenceBitfield"// amf_int64; default = 0; force LTR bit-field -#define AMF_VIDEO_ENCODER_HEVC_ROI_DATA L"HevcROIData" // 2D AMFSurface, surface format: AMF_SURFACE_GRAY32 +#define AMF_VIDEO_ENCODER_HEVC_ROI_DATA L"HevcROIData" // 2D AMFSurface, surface format: AMF_SURFACE_GRAY32; Importance value for each 64x64 block ranges from `0` (least important) to `10` (most important), stored in 32bit unsigned format. #define AMF_VIDEO_ENCODER_HEVC_REFERENCE_PICTURE L"HevcReferencePicture" // AMFInterface(AMFSurface); surface used for frame injection #define AMF_VIDEO_ENCODER_HEVC_PSNR_FEEDBACK L"HevcPSNRFeedback" // amf_bool; default = false; Signal encoder to calculate PSNR score #define AMF_VIDEO_ENCODER_HEVC_SSIM_FEEDBACK L"HevcSSIMFeedback" // amf_bool; default = false; Signal encoder to calculate SSIM score @@ -314,14 +320,16 @@ enum AMF_VIDEO_ENCODER_HEVC_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_TEMPORAL_LAYERS L"HevcMaxTemporalLayers" // amf_int64 maximum number of temporal layers #define AMF_VIDEO_ENCODER_HEVC_CAP_NUM_OF_HW_INSTANCES L"HevcNumOfHwInstances" // amf_int64 number of HW encoder instances #define AMF_VIDEO_ENCODER_HEVC_CAP_COLOR_CONVERSION L"HevcColorConversion" // amf_int64(AMF_ACCELERATION_TYPE) - type of supported color conversion. default AMF_ACCEL_GPU -#define AMF_VIDEO_ENCODER_HEVC_CAP_PRE_ANALYSIS L"HevcPreAnalysis" // amf_bool - pre analysis module is available for HEVC UVE encoder, n/a for the other encoders -#define AMF_VIDEO_ENCODER_HEVC_CAP_ROI L"HevcROIMap" // amf_bool - ROI map support is available for HEVC UVE encoder, n/a for the other encoders +#define AMF_VIDEO_ENCODER_HEVC_CAP_PRE_ANALYSIS L"HevcPreAnalysis" // amf_bool - pre analysis module is available. +#define AMF_VIDEO_ENCODER_HEVC_CAP_ROI L"HevcROIMap" // amf_bool - ROI map support is available. #define AMF_VIDEO_ENCODER_HEVC_CAP_MAX_THROUGHPUT L"HevcMaxThroughput" // amf_int64 - MAX throughput for HEVC encoder in MB (16 x 16 pixel) #define AMF_VIDEO_ENCODER_HEVC_CAP_REQUESTED_THROUGHPUT L"HevcRequestedThroughput" // amf_int64 - Currently total requested throughput for HEVC encode in MB (16 x 16 pixel) -#define AMF_VIDEO_ENCODER_HEVC_CAP_QUERY_TIMEOUT_SUPPORT L"HevcQueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call -#define AMF_VIDEO_ENCODER_CAPS_HEVC_QUERY_TIMEOUT_SUPPORT L"HevcQueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call (Deprecated, please use AMF_VIDEO_ENCODER_HEVC_CAP_QUERY_TIMEOUT_SUPPORT instead) +#define AMF_VIDEO_ENCODER_HEVC_CAP_QUERY_TIMEOUT_SUPPORT L"HevcQueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutput call +#define AMF_VIDEO_ENCODER_CAPS_HEVC_QUERY_TIMEOUT_SUPPORT L"HevcQueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutput call (Deprecated, please use AMF_VIDEO_ENCODER_HEVC_CAP_QUERY_TIMEOUT_SUPPORT instead) #define AMF_VIDEO_ENCODER_HEVC_CAP_SUPPORT_SLICE_OUTPUT L"HevcSupportSliceOutput" // amf_bool - if slice output is supported #define AMF_VIDEO_ENCODER_HEVC_CAP_SUPPORT_SMART_ACCESS_VIDEO L"HevcEncoderSupportSmartAccessVideo" // amf_bool; returns true if system supports SmartAccess Video +#define AMF_VIDEO_ENCODER_HEVC_MULTI_HW_INSTANCE_ENCODE L"HevcMultiHwInstanceEncode" // amf_bool; flag to enable multi VCN encode. + #endif //#ifndef AMF_VideoEncoderHEVC_h diff --git a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h index ce6a27c338..c47b6a8e8e 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/components/VideoEncoderVCE.h @@ -111,7 +111,8 @@ enum AMF_VIDEO_ENCODER_QUALITY_PRESET_ENUM { AMF_VIDEO_ENCODER_QUALITY_PRESET_BALANCED = 0, AMF_VIDEO_ENCODER_QUALITY_PRESET_SPEED, - AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY + AMF_VIDEO_ENCODER_QUALITY_PRESET_QUALITY, + AMF_VIDEO_ENCODER_QUALITY_PRESET_HIGH_QUALITY }; enum AMF_VIDEO_ENCODER_PICTURE_STRUCTURE_ENUM @@ -194,7 +195,9 @@ enum AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_MAX_CONSECUTIVE_BPICTURES L"MaxConsecutiveBPictures" // amf_int64; Maximum number of consecutive B Pictures #define AMF_VIDEO_ENCODER_ADAPTIVE_MINIGOP L"AdaptiveMiniGOP" // bool; default = false; Disable/Enable Adaptive MiniGOP #define AMF_VIDEO_ENCODER_ASPECT_RATIO L"AspectRatio" // AMFRatio; default = 1, 1 -#define AMF_VIDEO_ENCODER_FULL_RANGE_COLOR L"FullRangeColor" // bool; default = false; inidicates that YUV input is (0,255) +#define AMF_VIDEO_ENCODER_INPUT_FULL_RANGE_COLOR L"InputFullRangeColor" // bool; default = false; indicates color range of RGB/YUV input is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_OUTPUT_FULL_RANGE_COLOR L"FullRangeColor" // bool; default = false; indicates color range of YUV output is FULL. e.g. for 8bit (0,255) +#define AMF_VIDEO_ENCODER_FULL_RANGE_COLOR L"FullRangeColor" // bool; deprecated same usage as AMF_VIDEO_ENCODER_OUTPUT_FULL_RANGE_COLOR #define AMF_VIDEO_ENCODER_LOWLATENCY_MODE L"LowLatencyInternal" // bool; default = false, enables low latency mode and POC mode 2 in the encoder #define AMF_VIDEO_ENCODER_PRE_ANALYSIS_ENABLE L"EnablePreAnalysis" // bool; default = false; enables the pre-analysis module. Currently only works in AMF_VIDEO_ENCODER_RATE_CONTROL_METHOD_PEAK_CONSTRAINED_VBR mode. Refer to AMF Video PreAnalysis API reference for more details. #define AMF_VIDEO_ENCODER_PREENCODE_ENABLE L"RateControlPreanalysisEnable" // amf_int64(AMF_VIDEO_ENCODER_PREENCODE_MODE_ENUM); default = AMF_VIDEO_ENCODER_PREENCODE_DISABLED; enables pre-encode assisted rate control @@ -217,11 +220,13 @@ enum AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_INPUT_TRANSFER_CHARACTERISTIC L"InColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 ?7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_INPUT_COLOR_PRIMARIES L"InColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.1 See ColorSpace.h for enum #define AMF_VIDEO_ENCODER_INPUT_HDR_METADATA L"InHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +#define AMF_VIDEO_ENCODER_INPUT_MATRIX_COEFF L"InMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_OUTPUT_COLOR_PROFILE L"OutColorProfile" // amf_int64(AMF_VIDEO_CONVERTER_COLOR_PROFILE_ENUM); default = AMF_VIDEO_CONVERTER_COLOR_PROFILE_UNKNOWN - mean AUTO by size #define AMF_VIDEO_ENCODER_OUTPUT_TRANSFER_CHARACTERISTIC L"OutColorTransferChar" // amf_int64(AMF_COLOR_TRANSFER_CHARACTERISTIC_ENUM); default = AMF_COLOR_TRANSFER_CHARACTERISTIC_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.2 See VideoDecoderUVD.h for enum #define AMF_VIDEO_ENCODER_OUTPUT_COLOR_PRIMARIES L"OutColorPrimaries" // amf_int64(AMF_COLOR_PRIMARIES_ENUM); default = AMF_COLOR_PRIMARIES_UNDEFINED, ISO/IEC 23001-8_2013 Section 7.1 See ColorSpace.h for enum #define AMF_VIDEO_ENCODER_OUTPUT_HDR_METADATA L"OutHDRMetadata" // AMFBuffer containing AMFHDRMetadata; default NULL +#define AMF_VIDEO_ENCODER_OUTPUT_MATRIX_COEFF L"OutMatrixCoeff" // amf_int64(AMF_COLOR_MATRIX_COEFF_ENUM); default = AMF_COLOR_MATRIX_COEFF_UNKNOWN - mean AUTO by size // Slice output #define AMF_VIDEO_ENCODER_OUTPUT_MODE L"OutputMode" // amf_int64(AMF_VIDEO_ENCODER_OUTPUT_MODE_ENUM); default = AMF_VIDEO_ENCODER_OUTPUT_MODE_FRAME - defines encoder output mode @@ -290,7 +295,7 @@ enum AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_PICTURE_STRUCTURE L"PictureStructure" // amf_int64(AMF_VIDEO_ENCODER_PICTURE_STRUCTURE_ENUM); default = AMF_VIDEO_ENCODER_PICTURE_STRUCTURE_FRAME; indicate picture type #define AMF_VIDEO_ENCODER_MARK_CURRENT_WITH_LTR_INDEX L"MarkCurrentWithLTRIndex" // //amf_int64; default = N/A; Mark current frame with LTR index #define AMF_VIDEO_ENCODER_FORCE_LTR_REFERENCE_BITFIELD L"ForceLTRReferenceBitfield"// amf_int64; default = 0; force LTR bit-field -#define AMF_VIDEO_ENCODER_ROI_DATA L"ROIData" // 2D AMFSurface, surface format: AMF_SURFACE_GRAY32 +#define AMF_VIDEO_ENCODER_ROI_DATA L"ROIData" // 2D AMFSurface, surface format: AMF_SURFACE_GRAY32; Importance value for each 16x16 macro block ranges from `0` (least important) to `10` (most important), stored in 32bit unsigned format. #define AMF_VIDEO_ENCODER_REFERENCE_PICTURE L"ReferencePicture" // AMFInterface(AMFSurface); surface used for frame injection #define AMF_VIDEO_ENCODER_PSNR_FEEDBACK L"PSNRFeedback" // amf_bool; default = false; Signal encoder to calculate PSNR score #define AMF_VIDEO_ENCODER_SSIM_FEEDBACK L"SSIMFeedback" // amf_bool; default = false; Signal encoder to calculate SSIM score @@ -361,12 +366,12 @@ enum AMF_VIDEO_ENCODER_OUTPUT_BUFFER_TYPE_ENUM #define AMF_VIDEO_ENCODER_CAP_FIXED_SLICE_MODE L"FixedSliceMode" // bool is fixed slice mode supported #define AMF_VIDEO_ENCODER_CAP_NUM_OF_HW_INSTANCES L"NumOfHwInstances" // amf_int64 number of HW encoder instances #define AMF_VIDEO_ENCODER_CAP_COLOR_CONVERSION L"ColorConversion" // amf_int64(AMF_ACCELERATION_TYPE) - type of supported color conversion. default AMF_ACCEL_GPU -#define AMF_VIDEO_ENCODER_CAP_PRE_ANALYSIS L"PreAnalysis" // amf_bool - pre analysis module is available for H264 UVE encoder, n/a for the other encoders -#define AMF_VIDEO_ENCODER_CAP_ROI L"ROIMap" // amf_bool - ROI map support is available for H264 UVE encoder, n/a for the other encoders +#define AMF_VIDEO_ENCODER_CAP_PRE_ANALYSIS L"PreAnalysis" // amf_bool - pre analysis module is available. +#define AMF_VIDEO_ENCODER_CAP_ROI L"ROIMap" // amf_bool - ROI map support is available. #define AMF_VIDEO_ENCODER_CAP_MAX_THROUGHPUT L"MaxThroughput" // amf_int64 - MAX throughput for H264 encoder in MB (16 x 16 pixel) #define AMF_VIDEO_ENCODER_CAP_REQUESTED_THROUGHPUT L"RequestedThroughput" // amf_int64 - Currently total requested throughput for H264 encoder in MB (16 x 16 pixel) -#define AMF_VIDEO_ENCODER_CAPS_QUERY_TIMEOUT_SUPPORT L"QueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call (Deprecated, please use AMF_VIDEO_ENCODER_CAP_QUERY_TIMEOUT_SUPPORT ) -#define AMF_VIDEO_ENCODER_CAP_QUERY_TIMEOUT_SUPPORT L"QueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutout call +#define AMF_VIDEO_ENCODER_CAPS_QUERY_TIMEOUT_SUPPORT L"QueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutput call (Deprecated, please use AMF_VIDEO_ENCODER_CAP_QUERY_TIMEOUT_SUPPORT ) +#define AMF_VIDEO_ENCODER_CAP_QUERY_TIMEOUT_SUPPORT L"QueryTimeoutSupport" // amf_bool - Timeout supported for QueryOutput call #define AMF_VIDEO_ENCODER_CAP_SUPPORT_SLICE_OUTPUT L"SupportSliceOutput" // amf_bool - if slice output is supported diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/AudioBuffer.h b/alvr/server/cpp/platform/win32/amf/public/include/core/AudioBuffer.h index 5f07dc4723..7382fc0c64 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/AudioBuffer.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/AudioBuffer.h @@ -150,9 +150,16 @@ namespace amf #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Woverloaded-virtual" +#endif +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Woverloaded-virtual" #endif virtual void AMF_STD_CALL AddObserver(AMFAudioBufferObserver* pObserver) = 0; virtual void AMF_STD_CALL RemoveObserver(AMFAudioBufferObserver* pObserver) = 0; +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif #ifdef __clang__ #pragma clang diagnostic pop #endif diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h index 51ead101be..608c0a1da5 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Buffer.h @@ -110,8 +110,16 @@ namespace amf #pragma clang diagnostic push #pragma clang diagnostic ignored "-Woverloaded-virtual" #endif +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Woverloaded-virtual" +#endif + virtual void AMF_STD_CALL AddObserver(AMFBufferObserver* pObserver) = 0; virtual void AMF_STD_CALL RemoveObserver(AMFBufferObserver* pObserver) = 0; +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif #ifdef __clang__ #pragma clang diagnostic pop #endif diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Compute.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Compute.h index bc34749f9f..a45964d67e 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Compute.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Compute.h @@ -61,6 +61,7 @@ namespace amf AMF_CHANNEL_ORDER_RGBA = 4, AMF_CHANNEL_ORDER_ARGB = 5, AMF_CHANNEL_ORDER_YUY2 = 6, + AMF_CHANNEL_ORDER_ABGR = 7, } AMF_CHANNEL_ORDER; //---------------------------------------------------------------------------------------------- typedef enum AMF_CHANNEL_TYPE diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h b/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h index 782859778f..7ad2d74f12 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/D3D12AMF.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -32,19 +32,22 @@ #ifndef __D3D12AMF_h__ #define __D3D12AMF_h__ -#pragma once +#pragma once #include "Platform.h" #if defined(_WIN32)||(defined(__linux) && defined(AMF_WSL)) #define AMFDX12_NUMBER_OF_DESCRYPTOR_HEAPS L"NumberOfDescryptorHeaps" // amf_int64, default is 4, to be set on AMFContext // syncronization properties set via SetPrivateData() -AMF_WEAK GUID AMFResourceStateGUID = { 0x452da9bf, 0x4ad7, 0x47a5, { 0xa6, 0x9b, 0x96, 0xd3, 0x23, 0x76, 0xf2, 0xf3 } }; // Current resource state value (D3D12_RESOURCE_STATES ), sizeof(UINT), set on ID3D12Resource +AMF_WEAK GUID AMFResourceStateGUID = { 0x452da9bf, 0x4ad7, 0x47a5, { 0xa6, 0x9b, 0x96, 0xd3, 0x23, 0x76, 0xf2, 0xf3 } }; // Current resource state value (D3D12_RESOURCE_STATES ), sizeof(UINT), set on ID3D12Resource AMF_WEAK GUID AMFFenceGUID = { 0x910a7928, 0x57bd, 0x4b04, { 0x91, 0xa3, 0xe7, 0xb8, 0x04, 0x12, 0xcd, 0xa5 } }; // IUnknown (ID3D12Fence), set on ID3D12Resource syncronization fence for this resource -AMF_WEAK GUID AMFFenceValueGUID = { 0x62a693d3, 0xbb4a, 0x46c9, { 0xa5, 0x04, 0x9a, 0x8e, 0x97, 0xbf, 0xf0, 0x56 } }; // The last value to wait on the fence from AMFFenceGUID; sizeof(UINT64), set on ID3D12Fence +AMF_WEAK GUID AMFFenceValueGUID = { 0x62a693d3, 0xbb4a, 0x46c9, { 0xa5, 0x04, 0x9a, 0x8e, 0x97, 0xbf, 0xf0, 0x56 } }; // The last value to wait on the fence from AMFFenceGUID; sizeof(UINT64), set on ID3D12Fence +AMF_WEAK GUID AMFResourceDecodeGUID= { 0x56bd5bde, 0x7c89, 0x45ff, {0xba, 0x5c, 0xc2, 0xd5, 0xea, 0x55, 0x8d, 0x1a } }; // UINT indicator that the surface is decode and surface state needs to be restored after change +// deprecated - not used vlaues AMF_WEAK GUID AMFFenceD3D11GUID = { 0xdffdf6e0, 0x85e0, 0x4645, { 0x9d, 0x7, 0xe6, 0x4a, 0x19, 0x6b, 0xc9, 0xbf } }; // IUnknown (ID3D11Fence) OpenSharedFence for interop AMF_WEAK GUID AMFFenceValueD3D11GUID = { 0x86581b71, 0x699f, 0x484b, { 0xb8, 0x75, 0x24, 0xda, 0x49, 0x8a, 0x74, 0xcf } }; // last value to wait on in d3d11 AMF_WEAK GUID AMFSharedHandleFenceGUID = { 0xca60dcc8, 0x76d1, 0x4088, 0xad, 0xd, 0x97, 0x71, 0xe7, 0xb0, 0x92, 0x49 }; // ID3D12Fence shared handle for D3D11 interop +// end of deprecated #endif diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Data.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Data.h index f32055a510..7067606b51 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Data.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Data.h @@ -1,4 +1,4 @@ -// +// // Notice Regarding Standards. AMD does not provide a license or sublicense to // any Intellectual Property Rights relating to any standards, including but not // limited to any audio and/or video codec technologies such as MPEG-2, MPEG-4; @@ -6,9 +6,9 @@ // (collectively, the "Media Technologies"). For clarity, you will pay any // royalties due for such third party technologies, which may include the Media // Technologies that are owed as a result of AMD providing the Software to you. -// -// MIT license -// +// +// MIT license +// // Copyright (c) 2018 Advanced Micro Devices, Inc. All rights reserved. // // Permission is hereby granted, free of charge, to any person obtaining a copy @@ -64,6 +64,7 @@ namespace amf AMF_MEMORY_COMPUTE_FOR_DX11 = 9, // deprecated, the same as AMF_MEMORY_OPENCL AMF_MEMORY_VULKAN = 10, AMF_MEMORY_DX12 = 11, + AMF_MEMORY_LAST } AMF_MEMORY_TYPE; //---------------------------------------------------------------------------------------------- @@ -81,7 +82,7 @@ namespace amf // bit mask //---------------------------------------------------------------------------------------------- typedef enum AMF_MEMORY_CPU_ACCESS_BITS - { // D3D11 D3D12 Vulkan + { // D3D11 D3D12 Vulkan AMF_MEMORY_CPU_DEFAULT = 0x80000000, // 0 , D3D12_HEAP_TYPE_DEFAULT , VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT | VK_MEMORY_PROPERTY_DEVICE_LOCAL_BIT AMF_MEMORY_CPU_NONE = 0x00000000, // 0 , D3D12_HEAP_TYPE_DEFAULT , AMF_MEMORY_CPU_READ = 0x00000001, // D3D11_CPU_ACCESS_READ , D3D12_HEAP_TYPE_READBACK, VK_MEMORY_PROPERTY_HOST_VISIBLE_BIT diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Factory.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Factory.h index 8f4795e5ae..a9f32f5762 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Factory.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Factory.h @@ -110,10 +110,17 @@ extern "C" #if defined(_M_AMD64) #define AMF_DLL_NAME L"amfrt64.dll" #define AMF_DLL_NAMEA "amfrt64.dll" + + #define AMFLITE_DLL_NAME L"amfrtlt64.dll" + #define AMFLITE_DLL_NAMEA "amfrtlt64.dll" + #else #define AMF_DLL_NAME L"amfrt32.dll" #define AMF_DLL_NAMEA "amfrt32.dll" - #endif + + #define AMFLITE_DLL_NAME L"amfrtlt32.dll" + #define AMFLITE_DLL_NAMEA "amfrtlt32.dll" +#endif #elif defined(__ANDROID__) && !defined(AMF_ANDROID_ENCODER) #define AMF_DLL_NAME L"libamf.so" #define AMF_DLL_NAMEA "libamf.so" @@ -124,9 +131,17 @@ extern "C" #if defined(__x86_64__) || defined(__aarch64__) #define AMF_DLL_NAME L"libamfrt64.so.1" #define AMF_DLL_NAMEA "libamfrt64.so.1" + + #define AMFLITE_DLL_NAME L"libamfrtlt64.so.1" + #define AMFLITE_DLL_NAMEA "libamfrtlt64.so.1" + #else #define AMF_DLL_NAME L"libamfrt32.so.1" #define AMF_DLL_NAMEA "libamfrt32.so.1" + + #define AMFLITE_DLL_NAME L"libamfrtlt32.so.1" + #define AMFLITE_DLL_NAMEA "libamfrtlt32.so.1" + #endif #endif //---------------------------------------------------------------------------------------------- diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Interface.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Interface.h index 9ac7e41165..96117f0e80 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Interface.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Interface.h @@ -49,7 +49,7 @@ namespace amf } #else #define AMF_DECLARE_IID(name, _data1, _data2, _data3, _data41, _data42, _data43, _data44, _data45, _data46, _data47, _data48) \ - AMF_INLINE static const AMFGuid IID_##name(void) \ + AMF_INLINE static AMFGuid IID_##name(void) \ { \ AMFGuid uid = {_data1, _data2, _data3, _data41, _data42, _data43, _data44, _data45, _data46, _data47, _data48}; \ return uid; \ diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h index 3f997fef71..a7ce125577 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Platform.h @@ -64,7 +64,26 @@ #define AMF_MACRO_STRING2(x) #x #define AMF_MACRO_STRING(x) AMF_MACRO_STRING2(x) +#ifdef _WIN32 #define AMF_TODO(_todo) (__FILE__ "(" AMF_MACRO_STRING(__LINE__) "): TODO: "_todo) +#else +//TODO is not helpful on linux because the pragma already includes line number and file +#define AMF_TODO +#endif + +/** +******************************************************************************* +* AMF_UNICODE +* +* @brief +* Macro to convert string constant into wide char string constant +* +* Auxilary AMF_UNICODE_ macro is needed as otherwise it is not possible to use AMF_UNICODE(__FILE__) +* Microsoft macro _T also uses 2 passes to accomplish that +******************************************************************************* +*/ +#define AMF_UNICODE(s) AMF_UNICODE_(s) +#define AMF_UNICODE_(s) L ## s #if defined(__GNUC__) || defined(__clang__) @@ -86,6 +105,12 @@ typedef signed int HRESULT; #include #include +#if defined(_MSC_VER) + #define AMF_NO_VTABLE __declspec(novtable) +#else + #define AMF_NO_VTABLE +#endif + #if defined(_WIN32) @@ -102,16 +127,6 @@ typedef signed int HRESULT; #define AMF_INLINE __inline #define AMF_FORCEINLINE __forceinline #endif - #define AMF_NO_VTABLE __declspec(novtable) - - #define AMFPRId64 "I64d" - #define LPRId64 L"I64d" - - #define AMFPRIud64 "Iu64d" - #define LPRIud64 L"Iu64d" - - #define AMFPRIx64 "I64x" - #define LPRIx64 L"I64x" #else // !WIN32 - Linux and Mac @@ -125,20 +140,38 @@ typedef signed int HRESULT; #define AMF_INLINE __inline__ #define AMF_FORCEINLINE __inline__ #endif - #define AMF_NO_VTABLE - #if !defined(AMFPRId64) - #define AMFPRId64 "lld" - #define LPRId64 L"lld" - #define AMFPRIud64 "ulld" - #define LPRIud64 L"ulld" +#endif // WIN32 +#if defined(__cplusplus) && (__cplusplus >= 201103L) + #include + #define AMFPRId64 PRId64 + #define AMFPRIud64 PRIu64 + #define AMFPRIx64 PRIx64 +#else +#if defined(_MSC_VER) + #define AMFPRId64 "I64d" + #define AMFPRIud64 "Iu64d" + #define AMFPRIx64 "I64x" +#else + #if !defined(AMFPRId64) + #define AMFPRId64 "lld" + #define AMFPRIud64 "ulld" #define AMFPRIx64 "llx" - #define LPRIx64 L"llx" #endif +#endif +#endif -#endif // WIN32 +#ifndef LPRId64 +#define LPRId64 AMF_UNICODE(AMFPRId64) +#endif +#ifndef LPRIud64 +#define LPRIud64 AMF_UNICODE(AMFPRIud64) +#endif +#ifndef LPRIx64 +#define LPRIx64 AMF_UNICODE(AMFPRIx64) +#endif #if defined(_WIN32) @@ -211,16 +244,23 @@ typedef struct AMFRect amf_int32 right; amf_int32 bottom; #if defined(__cplusplus) - bool operator==(const AMFRect& other) const - { - return left == other.left && top == other.top && right == other.right && bottom == other.bottom; - } - AMF_INLINE bool operator!=(const AMFRect& other) const { return !operator==(other); } amf_int32 Width() const { return right - left; } amf_int32 Height() const { return bottom - top; } #endif } AMFRect; +#if defined(__cplusplus) +static AMF_INLINE bool operator==(const AMFRect& self, const AMFRect& other) +{ + return self.left == other.left && self.top == other.top && self.right == other.right && self.bottom == other.bottom; +} + +static AMF_INLINE bool operator!=(const AMFRect& self, const AMFRect& other) +{ + return !operator==(self, other); +} +#endif + static AMF_INLINE struct AMFRect AMFConstructRect(amf_int32 left, amf_int32 top, amf_int32 right, amf_int32 bottom) { struct AMFRect object = {left, top, right, bottom}; diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h index 0f1b1db671..4530e890a4 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Surface.h @@ -62,17 +62,22 @@ namespace amf AMF_SURFACE_P010, ///< 10 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 10 bit per component (16 allocated, upper 10 bits are used) AMF_SURFACE_RGBA_F16, ///< 11 - packed 4:4:4 - 16 bit per component float AMF_SURFACE_UYVY, ///< 12 - packed 4:2:2 the similar to YUY2 but Y and UV swapped: Byte 0=8-bit Cb; Byte 1=8-bit Y'0; Byte 2=8-bit Cr Byte 3=8-bit Y'1; (used the same DX/CL/Vulkan storage as YUY2) - AMF_SURFACE_R10G10B10A2, ///< 13 - packed 4:4:4 to 4 bytes, 10 bit per RGB component, 2 bits per A + AMF_SURFACE_R10G10B10A2, ///< 13 - packed 4:4:4 to 4 bytes, 10 bit per RGB component, 2 bits per A, ABGR AMF_SURFACE_Y210, ///< 14 - packed 4:2:2 - Word 0=10-bit Y'0; Word 1=10-bit Cb; Word 2=10-bit Y'1; Word 3=10-bit Cr - AMF_SURFACE_AYUV, ///< 15 - packed 4:4:4 - 8 bit per component YUVA + AMF_SURFACE_AYUV, ///< 15 - packed 4:4:4 - 8 bit per component VUYA AMF_SURFACE_Y410, ///< 16 - packed 4:4:4 - 10 bit per YUV component, 2 bits per A, AVYU - AMF_SURFACE_Y416, ///< 16 - packed 4:4:4 - 16 bit per component 4 bytes, AVYU - AMF_SURFACE_GRAY32, ///< 17 - single component - 32 bit - AMF_SURFACE_P012, ///< 18 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 12 bit per component (16 allocated, upper 12 bits are used) - AMF_SURFACE_P016, ///< 19 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 16 bit per component (16 allocated, all bits are used) + AMF_SURFACE_Y416, ///< 17 - packed 4:4:4 - 16 bit per component 8 bytes, UYVA + AMF_SURFACE_GRAY32, ///< 18 - single component - 32 bit + AMF_SURFACE_P012, ///< 19 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 12 bit per component (16 allocated, upper 12 bits are used) + AMF_SURFACE_P016, ///< 20 - planar 4:2:0 Y width x height + packed UV width/2 x height/2 - 16 bit per component (16 allocated, all bits are used) + AMF_SURFACE_Y216, ///< 21 - packed 4:2:2 - Word 0=16-bit Y'0; Word 1=16-bit Cb; Word 2=16-bit Y'1; Word 3=16-bit Cr + AMF_SURFACE_R16G16, ///< 22 - packed 4:4 - 16-bit R; 16-bit G + AMF_SURFACE_R24G8, ///< 23 - packed 4:4 - 24-bit R; 8-bit G + AMF_SURFACE_R32, ///< 24 - single component float - 32 bit + AMF_SURFACE_R16, ///< 25 - single component float - 16 bit AMF_SURFACE_FIRST = AMF_SURFACE_NV12, - AMF_SURFACE_LAST = AMF_SURFACE_P016 + AMF_SURFACE_LAST = AMF_SURFACE_R16 } AMF_SURFACE_FORMAT; //---------------------------------------------------------------------------------------------- // AMF_SURFACE_USAGE translates to D3D11_BIND_FLAG or VkImageUsageFlags @@ -89,8 +94,9 @@ namespace amf AMF_SURFACE_USAGE_TRANSFER_DST = 0x00000010, // D3D12_RESOURCE_FLAG_NONE VK_IMAGE_USAGE_TRANSFER_DST_BIT AMF_SURFACE_USAGE_LINEAR = 0x00000020, // AMF_SURFACE_USAGE_NOSYNC = 0x00000040, // no fence (AMFFenceGUID) created no semaphore (AMFVulkanSync::hSemaphore) created - AMF_SURFACE_USAGE_DECODER_DST = 0x00000080, // VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR + AMF_SURFACE_USAGE_DECODER_DST = 0x00000080, // AMFResourceDecodeGUID is set to 1 VK_IMAGE_USAGE_VIDEO_DECODE_DST_BIT_KHR AMF_SURFACE_USAGE_DECODER_DPB = 0x00000100, // VK_IMAGE_USAGE_VIDEO_DECODE_DPB_BIT_KHR + AMF_SURFACE_USAGE_NO_TRANSITION = 0x00000200, // no layout transition } AMF_SURFACE_USAGE_BITS; typedef amf_flags AMF_SURFACE_USAGE; //---------------------------------------------------------------------------------------------- @@ -197,9 +203,16 @@ namespace amf #ifdef __clang__ #pragma clang diagnostic push #pragma clang diagnostic ignored "-Woverloaded-virtual" +#endif +#ifdef __GNUC__ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Woverloaded-virtual" #endif virtual void AMF_STD_CALL AddObserver(AMFSurfaceObserver* pObserver) = 0; virtual void AMF_STD_CALL RemoveObserver(AMFSurfaceObserver* pObserver) = 0; +#ifdef __GNUC__ +#pragma GCC diagnostic pop +#endif #ifdef __clang__ #pragma clang diagnostic pop #endif diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h index edf14ae9c4..ddac2def4e 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Variant.h @@ -132,16 +132,16 @@ namespace amf static AMF_INLINE const AMFRatio& AMF_STD_CALL AMFVariantGetRatio(const AMFVariantStruct* _variant) { return (_variant)->ratioValue; } static AMF_INLINE const AMFColor& AMF_STD_CALL AMFVariantGetColor(const AMFVariantStruct* _variant) { return (_variant)->colorValue; } #else // #if defined(__cplusplus) - static AMF_INLINE const AMFRect AMF_STD_CALL AMFVariantGetRect (const AMFVariantStruct* _variant) { return (_variant)->rectValue; } - static AMF_INLINE const AMFSize AMF_STD_CALL AMFVariantGetSize (const AMFVariantStruct* _variant) { return (_variant)->sizeValue; } - static AMF_INLINE const AMFPoint AMF_STD_CALL AMFVariantGetPoint(const AMFVariantStruct* _variant) { return (_variant)->pointValue; } - static AMF_INLINE const AMFFloatSize AMF_STD_CALL AMFVariantGetFloatSize(const AMFVariantStruct* _variant) { return (_variant)->floatSizeValue; } - static AMF_INLINE const AMFFloatPoint2D AMF_STD_CALL AMFVariantGetFloatPoint2D(const AMFVariantStruct* _variant) { return (_variant)->floatPoint2DValue; } - static AMF_INLINE const AMFFloatPoint3D AMF_STD_CALL AMFVariantGetFloatPoint3D(const AMFVariantStruct* _variant) { return (_variant)->floatPoint3DValue; } - static AMF_INLINE const AMFFloatVector4D AMF_STD_CALL AMFVariantGetFloatVector4D(const AMFVariantStruct* _variant) { return (_variant)->floatVector4DValue; } - static AMF_INLINE const AMFRate AMF_STD_CALL AMFVariantGetRate (const AMFVariantStruct* _variant) { return (_variant)->rateValue; } - static AMF_INLINE const AMFRatio AMF_STD_CALL AMFVariantGetRatio(const AMFVariantStruct* _variant) { return (_variant)->ratioValue; } - static AMF_INLINE const AMFColor AMF_STD_CALL AMFVariantGetColor(const AMFVariantStruct* _variant) { return (_variant)->colorValue; } + static AMF_INLINE AMFRect AMF_STD_CALL AMFVariantGetRect (const AMFVariantStruct* _variant) { return (_variant)->rectValue; } + static AMF_INLINE AMFSize AMF_STD_CALL AMFVariantGetSize (const AMFVariantStruct* _variant) { return (_variant)->sizeValue; } + static AMF_INLINE AMFPoint AMF_STD_CALL AMFVariantGetPoint(const AMFVariantStruct* _variant) { return (_variant)->pointValue; } + static AMF_INLINE AMFFloatSize AMF_STD_CALL AMFVariantGetFloatSize(const AMFVariantStruct* _variant) { return (_variant)->floatSizeValue; } + static AMF_INLINE AMFFloatPoint2D AMF_STD_CALL AMFVariantGetFloatPoint2D(const AMFVariantStruct* _variant) { return (_variant)->floatPoint2DValue; } + static AMF_INLINE AMFFloatPoint3D AMF_STD_CALL AMFVariantGetFloatPoint3D(const AMFVariantStruct* _variant) { return (_variant)->floatPoint3DValue; } + static AMF_INLINE AMFFloatVector4D AMF_STD_CALL AMFVariantGetFloatVector4D(const AMFVariantStruct* _variant) { return (_variant)->floatVector4DValue; } + static AMF_INLINE AMFRate AMF_STD_CALL AMFVariantGetRate (const AMFVariantStruct* _variant) { return (_variant)->rateValue; } + static AMF_INLINE AMFRatio AMF_STD_CALL AMFVariantGetRatio(const AMFVariantStruct* _variant) { return (_variant)->ratioValue; } + static AMF_INLINE AMFColor AMF_STD_CALL AMFVariantGetColor(const AMFVariantStruct* _variant) { return (_variant)->colorValue; } #endif // #if defined(__cplusplus) @@ -365,7 +365,7 @@ namespace amf operator=(p_other); } -#if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (_MSC_VER >= 1600) +#if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (defined(_MSC_VER) && _MSC_VER >= 1600) #pragma warning (push) #pragma warning (disable : 26439) //This kind of function may not throw. Declare it 'noexcept'. String(String&& p_other) : m_Str(nullptr) @@ -393,7 +393,7 @@ namespace amf m_Str = AMFVariantDuplicateString(p_other.m_Str); return *this; } -#if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (_MSC_VER >= 1600) +#if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (defined(_MSC_VER) && _MSC_VER >= 1600) String& operator=(String&& p_other) { Free(); @@ -475,7 +475,7 @@ namespace amf { operator=(p_other); } -#if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (_MSC_VER >= 1600) +#if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (defined(_MSC_VER) && _MSC_VER >= 1600) WString(WString&& p_other) : m_Str(nullptr) { operator=(p_other); @@ -492,7 +492,7 @@ namespace amf m_Str = AMFVariantDuplicateWString(p_other.m_Str); return *this; } -#if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (_MSC_VER >= 1600) +#if (__cplusplus == 201103L) || defined(__GXX_EXPERIMENTAL_CXX0X) || (defined(_MSC_VER) && _MSC_VER >= 1600) WString& operator=(WString&& p_other) { Free(); @@ -587,6 +587,7 @@ namespace amf static AMF_INLINE AMF_RESULT AMF_CDECL_CALL AMFVariantInit(AMFVariantStruct* pVariant) { AMF_VARIANT_RETURN_IF_INVALID_POINTER(pVariant); + memset(pVariant, 0, sizeof(AMFVariantStruct)); pVariant->type = AMF_VARIANT_EMPTY; return AMF_OK; } @@ -872,14 +873,14 @@ namespace amf { res = AMF_OK; char buff[0xFF]; - sprintf(buff, "%" AMFPRId64, (long long)value); + sprintf(buff, "%" AMFPRId64, value); return buff; } static AMF_INLINE AMFVariant::WString AMFConvertInt64ToWString(amf_int64 value, AMF_RESULT& res) { res = AMF_OK; wchar_t buff[0xFF]; - swprintf(buff, 0xFF, L"%" LPRId64, (long long)value); + swprintf(buff, 0xFF, L"%" LPRId64, value); return buff; } @@ -938,7 +939,7 @@ namespace amf static AMF_INLINE amf_int64 AMFConvertStringToInt64(const AMFVariant::String& value, AMF_RESULT& res) { res = AMF_OK; - long long tmp = 0; + amf_int64 tmp = 0; int readElements = 0; if (value.size() > 2 && ( value.c_str()[0] == '0') && ( value.c_str()[1] == 'x') ) @@ -2062,7 +2063,7 @@ namespace amf AMF_INLINE void AMFVariant::Attach(AMFVariantStruct& pVariant) { Clear(); - memcpy(this, &pVariant, sizeof(pVariant)); + memcpy(static_cast(this), &pVariant, sizeof(pVariant)); AMFVariantGetType(&pVariant) = AMF_VARIANT_EMPTY; } //------------------------------------------------------------------------------------------------- diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h b/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h index 61fef43e90..ee91358715 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/Version.h @@ -50,8 +50,8 @@ #define AMF_GET_BUILD_VERSION(x) ((x >> 0ull) & 0xFFFF) #define AMF_VERSION_MAJOR 1 -#define AMF_VERSION_MINOR 4 -#define AMF_VERSION_RELEASE 33 +#define AMF_VERSION_MINOR 5 +#define AMF_VERSION_RELEASE 0 #define AMF_VERSION_BUILD_NUM 0 #define AMF_FULL_VERSION AMF_MAKE_FULL_VERSION(AMF_VERSION_MAJOR, AMF_VERSION_MINOR, AMF_VERSION_RELEASE, AMF_VERSION_BUILD_NUM) diff --git a/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h b/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h index 5813ae8ac9..1de8bb6272 100644 --- a/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h +++ b/alvr/server/cpp/platform/win32/amf/public/include/core/VulkanAMF.h @@ -41,6 +41,12 @@ namespace amf { #endif + typedef enum AMF_VULKAN_EXTENSION_TYPE + { + AMF_VULKAN_EXTENSION_UNKNOWN = 0, + AMF_VARIANT_TIMELINE_SEMAPHORE = 1, + } AMF_VULKAN_EXTENSION_TYPE; + typedef struct AMFVulkanDevice { amf_size cbSizeof; // sizeof(AMFVulkanDevice) @@ -55,11 +61,19 @@ namespace amf amf_size cbSizeof; // sizeof(AMFVulkanSync) void* pNext; // reserved for extensions VkSemaphore hSemaphore; // VkSemaphore; can be nullptr - amf_bool bSubmitted; // if true - wait for hSemaphore. re-submit hSemaphore if not synced by other ways and set to true + amf_bool bSubmitted; // if true - wait for hSemaphore. re-submit hSemaphore if not synced by other ways and set to true, ignored if timeline VkFence hFence; // To sync on CPU; can be nullptr. Submitted in vkQueueSubmit. If waited for hFence, null it, do not delete or reset. } AMFVulkanSync; - typedef struct AMFVulkanBuffer + typedef struct AMFVulkanTimeline // can be attached to AMFVulkanSync::pNext + { + amf_size cbSizeof; // sizeof(AMFVulkanTimeline) + AMF_VULKAN_EXTENSION_TYPE eExtensionType;// identifies extensions to make extension chains in the future AMF_VARIANT_TIMELINE_SEMAPHORE + void* pNext; // reserved for extensions + amf_uint64 uiCount; // count for timeline semaphores + } AMFVulkanTimeline; + + typedef struct AMFVulkanBuffer { amf_size cbSizeof; // sizeof(AMFVulkanBuffer) void* pNext; // reserved for extensions @@ -112,6 +126,7 @@ namespace amf } AMFVulkanView; #define AMF_CONTEXT_VULKAN_COMPUTE_QUEUE L"VulkanComputeQueue" // amf_int64; default=0; Compute queue index in range [0, (VkQueueFamilyProperties.queueCount-1)] of the compute queue family. +#define AMF_CONTEXT_VULKAN_USE_TIMELINE_SEMAPHORES L"VulkanTimelineSemaphores" // amf_bool; default=false; Use timeline semaphores in Vulkan #if defined(__cplusplus) } // namespace amf