erupt/generated/extensions/
ext_video_decode_h264.rs

1// DO NOT EDIT: @generated by erupt's generator
2//! ## Versioning Warning ⚠️
3//!
4//! This is a Vulkan **provisional/beta** extension and **must** be used with
5//! caution. Its API/behaviour has not been finalized yet and _may_ therefore
6//! change in ways that break backwards compatibility between revisions, and
7//! before final release of a non-provisional version of this extension.
8///<s>Vulkan Manual Page</s> · Constant
9#[doc(alias = "VK_EXT_VIDEO_DECODE_H264_SPEC_VERSION")]
10pub const EXT_VIDEO_DECODE_H264_SPEC_VERSION: u32 = 5;
11///<s>Vulkan Manual Page</s> · Constant
12#[doc(alias = "VK_EXT_VIDEO_DECODE_H264_EXTENSION_NAME")]
13pub const EXT_VIDEO_DECODE_H264_EXTENSION_NAME: *const std::os::raw::c_char = crate::cstr!(
14    "VK_EXT_video_decode_h264"
15);
16///Provided by [`crate::extensions::ext_video_decode_h264`]
17impl crate::vk1_0::StructureType {
18    pub const VIDEO_DECODE_H264_CAPABILITIES_EXT: Self = Self(1000040000);
19    pub const VIDEO_DECODE_H264_PICTURE_INFO_EXT: Self = Self(1000040001);
20    pub const VIDEO_DECODE_H264_MVC_EXT: Self = Self(1000040002);
21    pub const VIDEO_DECODE_H264_PROFILE_EXT: Self = Self(1000040003);
22    pub const VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT: Self = Self(
23        1000040004,
24    );
25    pub const VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT: Self = Self(1000040005);
26    pub const VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT: Self = Self(1000040006);
27}
28///Provided by [`crate::extensions::ext_video_decode_h264`]
29impl crate::extensions::khr_video_queue::VideoCodecOperationFlagBitsKHR {
30    pub const DECODE_H264_EXT: Self = Self(1);
31}
32bitflags::bitflags! {
33    #[doc =
34    "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264PictureLayoutFlagsEXT.html) · Bitmask of [`VideoDecodeH264PictureLayoutFlagBitsEXT`]"]
35    #[doc(alias = "VkVideoDecodeH264PictureLayoutFlagsEXT")] #[derive(Default)]
36    #[repr(transparent)] pub struct VideoDecodeH264PictureLayoutFlagsEXT : u32 { const
37    PROGRESSIVE_EXT = VideoDecodeH264PictureLayoutFlagBitsEXT::PROGRESSIVE_EXT.0; const
38    INTERLACED_INTERLEAVED_LINES_EXT =
39    VideoDecodeH264PictureLayoutFlagBitsEXT::INTERLACED_INTERLEAVED_LINES_EXT.0; const
40    INTERLACED_SEPARATE_PLANES_EXT =
41    VideoDecodeH264PictureLayoutFlagBitsEXT::INTERLACED_SEPARATE_PLANES_EXT.0; }
42}
43///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264PictureLayoutFlagBitsEXT.html) · Bits enum of [`VideoDecodeH264PictureLayoutFlagsEXT`]
44#[doc(alias = "VkVideoDecodeH264PictureLayoutFlagBitsEXT")]
45#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
46#[repr(transparent)]
47pub struct VideoDecodeH264PictureLayoutFlagBitsEXT(pub u32);
48impl VideoDecodeH264PictureLayoutFlagBitsEXT {
49    #[inline]
50    ///Converts this enum variant to the corresponding bitmask
51    pub const fn bitmask(&self) -> VideoDecodeH264PictureLayoutFlagsEXT {
52        VideoDecodeH264PictureLayoutFlagsEXT::from_bits_truncate(self.0)
53    }
54}
55impl std::fmt::Debug for VideoDecodeH264PictureLayoutFlagBitsEXT {
56    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
57        f.write_str(
58            match self {
59                &Self::PROGRESSIVE_EXT => "PROGRESSIVE_EXT",
60                &Self::INTERLACED_INTERLEAVED_LINES_EXT => {
61                    "INTERLACED_INTERLEAVED_LINES_EXT"
62                }
63                &Self::INTERLACED_SEPARATE_PLANES_EXT => "INTERLACED_SEPARATE_PLANES_EXT",
64                _ => "(unknown variant)",
65            },
66        )
67    }
68}
69///Provided by [`crate::extensions::ext_video_decode_h264`]
70impl crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureLayoutFlagBitsEXT {
71    pub const PROGRESSIVE_EXT: Self = Self(0);
72    pub const INTERLACED_INTERLEAVED_LINES_EXT: Self = Self(1);
73    pub const INTERLACED_SEPARATE_PLANES_EXT: Self = Self(2);
74}
75impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
76for crate::vk1_0::BufferCreateInfoBuilder<'a> {}
77impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
78for crate::vk1_0::BufferCreateInfoBuilder<'a> {}
79impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
80for crate::vk1_0::ImageCreateInfoBuilder<'a> {}
81impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
82for crate::vk1_0::ImageCreateInfoBuilder<'a> {}
83impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
84for crate::vk1_0::ImageViewCreateInfoBuilder<'a> {}
85impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
86for crate::vk1_0::ImageViewCreateInfoBuilder<'a> {}
87impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
88for crate::vk1_0::QueryPoolCreateInfoBuilder<'a> {}
89impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
90for crate::vk1_0::QueryPoolCreateInfoBuilder<'a> {}
91impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
92for crate::vk1_1::FormatProperties2Builder<'a> {}
93impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
94for crate::vk1_1::FormatProperties2Builder<'a> {}
95impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXT>
96for crate::extensions::khr_video_queue::VideoProfileKHRBuilder<'a> {}
97impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264ProfileEXTBuilder<'_>>
98for crate::extensions::khr_video_queue::VideoProfileKHRBuilder<'a> {}
99impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264DpbSlotInfoEXT>
100for crate::extensions::khr_video_queue::VideoReferenceSlotKHRBuilder<'a> {}
101impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264DpbSlotInfoEXTBuilder<'_>>
102for crate::extensions::khr_video_queue::VideoReferenceSlotKHRBuilder<'a> {}
103impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264CapabilitiesEXT>
104for crate::extensions::khr_video_decode_queue::VideoDecodeCapabilitiesKHRBuilder<'a> {}
105impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264CapabilitiesEXTBuilder<'_>>
106for crate::extensions::khr_video_decode_queue::VideoDecodeCapabilitiesKHRBuilder<'a> {}
107impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264PictureInfoEXT>
108for crate::extensions::khr_video_decode_queue::VideoDecodeInfoKHRBuilder<'a> {}
109impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264PictureInfoEXTBuilder<'_>>
110for crate::extensions::khr_video_decode_queue::VideoDecodeInfoKHRBuilder<'a> {}
111///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264ProfileEXT.html) · Structure
112#[doc(alias = "VkVideoDecodeH264ProfileEXT")]
113#[derive(Copy, Clone)]
114#[repr(C)]
115pub struct VideoDecodeH264ProfileEXT {
116    pub s_type: crate::vk1_0::StructureType,
117    pub p_next: *const std::ffi::c_void,
118    pub std_profile_idc: crate::external::vk_video::StdVideoH264ProfileIdc,
119    pub picture_layout: crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureLayoutFlagsEXT,
120}
121impl VideoDecodeH264ProfileEXT {
122    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_PROFILE_EXT;
123}
124impl Default for VideoDecodeH264ProfileEXT {
125    fn default() -> Self {
126        Self {
127            s_type: Self::STRUCTURE_TYPE,
128            p_next: std::ptr::null(),
129            std_profile_idc: Default::default(),
130            picture_layout: Default::default(),
131        }
132    }
133}
134impl std::fmt::Debug for VideoDecodeH264ProfileEXT {
135    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
136        f.debug_struct("VideoDecodeH264ProfileEXT")
137            .field("s_type", &self.s_type)
138            .field("p_next", &self.p_next)
139            .field("std_profile_idc", &self.std_profile_idc)
140            .field("picture_layout", &self.picture_layout)
141            .finish()
142    }
143}
144impl VideoDecodeH264ProfileEXT {
145    #[inline]
146    pub fn into_builder<'a>(self) -> VideoDecodeH264ProfileEXTBuilder<'a> {
147        VideoDecodeH264ProfileEXTBuilder(self, std::marker::PhantomData)
148    }
149}
150#[derive(Copy, Clone)]
151///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264ProfileEXT.html) · Builder of [`VideoDecodeH264ProfileEXT`]
152#[repr(transparent)]
153pub struct VideoDecodeH264ProfileEXTBuilder<'a>(
154    VideoDecodeH264ProfileEXT,
155    std::marker::PhantomData<&'a ()>,
156);
157impl<'a> VideoDecodeH264ProfileEXTBuilder<'a> {
158    #[inline]
159    pub fn new() -> VideoDecodeH264ProfileEXTBuilder<'a> {
160        VideoDecodeH264ProfileEXTBuilder(Default::default(), std::marker::PhantomData)
161    }
162    #[inline]
163    #[must_use]
164    pub fn std_profile_idc(
165        mut self,
166        std_profile_idc: crate::external::vk_video::StdVideoH264ProfileIdc,
167    ) -> Self {
168        self.0.std_profile_idc = std_profile_idc as _;
169        self
170    }
171    #[inline]
172    #[must_use]
173    pub fn picture_layout(
174        mut self,
175        picture_layout: crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureLayoutFlagsEXT,
176    ) -> Self {
177        self.0.picture_layout = picture_layout as _;
178        self
179    }
180    #[inline]
181    /// Discards all lifetime information.
182    /// Use the `Deref` and `DerefMut` implementations if possible.
183    pub fn build_dangling(self) -> VideoDecodeH264ProfileEXT {
184        self.0
185    }
186}
187impl<'a> std::default::Default for VideoDecodeH264ProfileEXTBuilder<'a> {
188    fn default() -> VideoDecodeH264ProfileEXTBuilder<'a> {
189        Self::new()
190    }
191}
192impl<'a> std::fmt::Debug for VideoDecodeH264ProfileEXTBuilder<'a> {
193    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
194        std::fmt::Debug::fmt(&self.0, f)
195    }
196}
197impl<'a> std::ops::Deref for VideoDecodeH264ProfileEXTBuilder<'a> {
198    type Target = VideoDecodeH264ProfileEXT;
199    fn deref(&self) -> &Self::Target {
200        &self.0
201    }
202}
203impl<'a> std::ops::DerefMut for VideoDecodeH264ProfileEXTBuilder<'a> {
204    fn deref_mut(&mut self) -> &mut Self::Target {
205        &mut self.0
206    }
207}
208///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264CapabilitiesEXT.html) · Structure
209#[doc(alias = "VkVideoDecodeH264CapabilitiesEXT")]
210#[derive(Copy, Clone)]
211#[repr(C)]
212pub struct VideoDecodeH264CapabilitiesEXT {
213    pub s_type: crate::vk1_0::StructureType,
214    pub p_next: *mut std::ffi::c_void,
215    pub max_level: crate::external::vk_video::StdVideoH264Level,
216    pub field_offset_granularity: crate::vk1_0::Offset2D,
217}
218impl VideoDecodeH264CapabilitiesEXT {
219    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_CAPABILITIES_EXT;
220}
221impl Default for VideoDecodeH264CapabilitiesEXT {
222    fn default() -> Self {
223        Self {
224            s_type: Self::STRUCTURE_TYPE,
225            p_next: std::ptr::null_mut(),
226            max_level: Default::default(),
227            field_offset_granularity: Default::default(),
228        }
229    }
230}
231impl std::fmt::Debug for VideoDecodeH264CapabilitiesEXT {
232    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
233        f.debug_struct("VideoDecodeH264CapabilitiesEXT")
234            .field("s_type", &self.s_type)
235            .field("p_next", &self.p_next)
236            .field("max_level", &self.max_level)
237            .field("field_offset_granularity", &self.field_offset_granularity)
238            .finish()
239    }
240}
241impl VideoDecodeH264CapabilitiesEXT {
242    #[inline]
243    pub fn into_builder<'a>(self) -> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
244        VideoDecodeH264CapabilitiesEXTBuilder(self, std::marker::PhantomData)
245    }
246}
247#[derive(Copy, Clone)]
248///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264CapabilitiesEXT.html) · Builder of [`VideoDecodeH264CapabilitiesEXT`]
249#[repr(transparent)]
250pub struct VideoDecodeH264CapabilitiesEXTBuilder<'a>(
251    VideoDecodeH264CapabilitiesEXT,
252    std::marker::PhantomData<&'a ()>,
253);
254impl<'a> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
255    #[inline]
256    pub fn new() -> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
257        VideoDecodeH264CapabilitiesEXTBuilder(
258            Default::default(),
259            std::marker::PhantomData,
260        )
261    }
262    #[inline]
263    #[must_use]
264    pub fn max_level(
265        mut self,
266        max_level: crate::external::vk_video::StdVideoH264Level,
267    ) -> Self {
268        self.0.max_level = max_level as _;
269        self
270    }
271    #[inline]
272    #[must_use]
273    pub fn field_offset_granularity(
274        mut self,
275        field_offset_granularity: crate::vk1_0::Offset2D,
276    ) -> Self {
277        self.0.field_offset_granularity = field_offset_granularity as _;
278        self
279    }
280    #[inline]
281    /// Discards all lifetime information.
282    /// Use the `Deref` and `DerefMut` implementations if possible.
283    pub fn build_dangling(self) -> VideoDecodeH264CapabilitiesEXT {
284        self.0
285    }
286}
287impl<'a> std::default::Default for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
288    fn default() -> VideoDecodeH264CapabilitiesEXTBuilder<'a> {
289        Self::new()
290    }
291}
292impl<'a> std::fmt::Debug for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
293    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
294        std::fmt::Debug::fmt(&self.0, f)
295    }
296}
297impl<'a> std::ops::Deref for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
298    type Target = VideoDecodeH264CapabilitiesEXT;
299    fn deref(&self) -> &Self::Target {
300        &self.0
301    }
302}
303impl<'a> std::ops::DerefMut for VideoDecodeH264CapabilitiesEXTBuilder<'a> {
304    fn deref_mut(&mut self) -> &mut Self::Target {
305        &mut self.0
306    }
307}
308///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264SessionParametersAddInfoEXT.html) · Structure
309#[doc(alias = "VkVideoDecodeH264SessionParametersAddInfoEXT")]
310#[derive(Copy, Clone)]
311#[repr(C)]
312pub struct VideoDecodeH264SessionParametersAddInfoEXT {
313    pub s_type: crate::vk1_0::StructureType,
314    pub p_next: *const std::ffi::c_void,
315    pub sps_std_count: u32,
316    pub p_sps_std: *const crate::external::vk_video::StdVideoH264SequenceParameterSet,
317    pub pps_std_count: u32,
318    pub p_pps_std: *const crate::external::vk_video::StdVideoH264PictureParameterSet,
319}
320impl VideoDecodeH264SessionParametersAddInfoEXT {
321    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_EXT;
322}
323impl Default for VideoDecodeH264SessionParametersAddInfoEXT {
324    fn default() -> Self {
325        Self {
326            s_type: Self::STRUCTURE_TYPE,
327            p_next: std::ptr::null(),
328            sps_std_count: Default::default(),
329            p_sps_std: std::ptr::null(),
330            pps_std_count: Default::default(),
331            p_pps_std: std::ptr::null(),
332        }
333    }
334}
335impl std::fmt::Debug for VideoDecodeH264SessionParametersAddInfoEXT {
336    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
337        f.debug_struct("VideoDecodeH264SessionParametersAddInfoEXT")
338            .field("s_type", &self.s_type)
339            .field("p_next", &self.p_next)
340            .field("sps_std_count", &self.sps_std_count)
341            .field("p_sps_std", &self.p_sps_std)
342            .field("pps_std_count", &self.pps_std_count)
343            .field("p_pps_std", &self.p_pps_std)
344            .finish()
345    }
346}
347impl VideoDecodeH264SessionParametersAddInfoEXT {
348    #[inline]
349    pub fn into_builder<'a>(
350        self,
351    ) -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
352        VideoDecodeH264SessionParametersAddInfoEXTBuilder(self, std::marker::PhantomData)
353    }
354}
355#[derive(Copy, Clone)]
356///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264SessionParametersAddInfoEXT.html) · Builder of [`VideoDecodeH264SessionParametersAddInfoEXT`]
357#[repr(transparent)]
358pub struct VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a>(
359    VideoDecodeH264SessionParametersAddInfoEXT,
360    std::marker::PhantomData<&'a ()>,
361);
362impl<'a> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
363    #[inline]
364    pub fn new() -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
365        VideoDecodeH264SessionParametersAddInfoEXTBuilder(
366            Default::default(),
367            std::marker::PhantomData,
368        )
369    }
370    #[inline]
371    #[must_use]
372    pub fn sps_std(
373        mut self,
374        sps_std: &'a [crate::external::vk_video::StdVideoH264SequenceParameterSetBuilder],
375    ) -> Self {
376        self.0.p_sps_std = sps_std.as_ptr() as _;
377        self.0.sps_std_count = sps_std.len() as _;
378        self
379    }
380    #[inline]
381    #[must_use]
382    pub fn pps_std(
383        mut self,
384        pps_std: &'a [crate::external::vk_video::StdVideoH264PictureParameterSetBuilder],
385    ) -> Self {
386        self.0.p_pps_std = pps_std.as_ptr() as _;
387        self.0.pps_std_count = pps_std.len() as _;
388        self
389    }
390    #[inline]
391    /// Discards all lifetime information.
392    /// Use the `Deref` and `DerefMut` implementations if possible.
393    pub fn build_dangling(self) -> VideoDecodeH264SessionParametersAddInfoEXT {
394        self.0
395    }
396}
397impl<'a> std::default::Default
398for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
399    fn default() -> VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
400        Self::new()
401    }
402}
403impl<'a> std::fmt::Debug for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
404    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
405        std::fmt::Debug::fmt(&self.0, f)
406    }
407}
408impl<'a> std::ops::Deref for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
409    type Target = VideoDecodeH264SessionParametersAddInfoEXT;
410    fn deref(&self) -> &Self::Target {
411        &self.0
412    }
413}
414impl<'a> std::ops::DerefMut for VideoDecodeH264SessionParametersAddInfoEXTBuilder<'a> {
415    fn deref_mut(&mut self) -> &mut Self::Target {
416        &mut self.0
417    }
418}
419///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264SessionParametersCreateInfoEXT.html) · Structure
420#[doc(alias = "VkVideoDecodeH264SessionParametersCreateInfoEXT")]
421#[derive(Copy, Clone)]
422#[repr(C)]
423pub struct VideoDecodeH264SessionParametersCreateInfoEXT {
424    pub s_type: crate::vk1_0::StructureType,
425    pub p_next: *const std::ffi::c_void,
426    pub max_sps_std_count: u32,
427    pub max_pps_std_count: u32,
428    pub p_parameters_add_info: *const crate::extensions::ext_video_decode_h264::VideoDecodeH264SessionParametersAddInfoEXT,
429}
430impl VideoDecodeH264SessionParametersCreateInfoEXT {
431    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_SESSION_PARAMETERS_CREATE_INFO_EXT;
432}
433impl Default for VideoDecodeH264SessionParametersCreateInfoEXT {
434    fn default() -> Self {
435        Self {
436            s_type: Self::STRUCTURE_TYPE,
437            p_next: std::ptr::null(),
438            max_sps_std_count: Default::default(),
439            max_pps_std_count: Default::default(),
440            p_parameters_add_info: std::ptr::null(),
441        }
442    }
443}
444impl std::fmt::Debug for VideoDecodeH264SessionParametersCreateInfoEXT {
445    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
446        f.debug_struct("VideoDecodeH264SessionParametersCreateInfoEXT")
447            .field("s_type", &self.s_type)
448            .field("p_next", &self.p_next)
449            .field("max_sps_std_count", &self.max_sps_std_count)
450            .field("max_pps_std_count", &self.max_pps_std_count)
451            .field("p_parameters_add_info", &self.p_parameters_add_info)
452            .finish()
453    }
454}
455impl VideoDecodeH264SessionParametersCreateInfoEXT {
456    #[inline]
457    pub fn into_builder<'a>(
458        self,
459    ) -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
460        VideoDecodeH264SessionParametersCreateInfoEXTBuilder(
461            self,
462            std::marker::PhantomData,
463        )
464    }
465}
466#[derive(Copy, Clone)]
467///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264SessionParametersCreateInfoEXT.html) · Builder of [`VideoDecodeH264SessionParametersCreateInfoEXT`]
468#[repr(transparent)]
469pub struct VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a>(
470    VideoDecodeH264SessionParametersCreateInfoEXT,
471    std::marker::PhantomData<&'a ()>,
472);
473impl<'a> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
474    #[inline]
475    pub fn new() -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
476        VideoDecodeH264SessionParametersCreateInfoEXTBuilder(
477            Default::default(),
478            std::marker::PhantomData,
479        )
480    }
481    #[inline]
482    #[must_use]
483    pub fn max_sps_std_count(mut self, max_sps_std_count: u32) -> Self {
484        self.0.max_sps_std_count = max_sps_std_count as _;
485        self
486    }
487    #[inline]
488    #[must_use]
489    pub fn max_pps_std_count(mut self, max_pps_std_count: u32) -> Self {
490        self.0.max_pps_std_count = max_pps_std_count as _;
491        self
492    }
493    #[inline]
494    #[must_use]
495    pub fn parameters_add_info(
496        mut self,
497        parameters_add_info: &'a crate::extensions::ext_video_decode_h264::VideoDecodeH264SessionParametersAddInfoEXT,
498    ) -> Self {
499        self.0.p_parameters_add_info = parameters_add_info as _;
500        self
501    }
502    #[inline]
503    /// Discards all lifetime information.
504    /// Use the `Deref` and `DerefMut` implementations if possible.
505    pub fn build_dangling(self) -> VideoDecodeH264SessionParametersCreateInfoEXT {
506        self.0
507    }
508}
509impl<'a> std::default::Default
510for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
511    fn default() -> VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
512        Self::new()
513    }
514}
515impl<'a> std::fmt::Debug for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
516    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
517        std::fmt::Debug::fmt(&self.0, f)
518    }
519}
520impl<'a> std::ops::Deref for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
521    type Target = VideoDecodeH264SessionParametersCreateInfoEXT;
522    fn deref(&self) -> &Self::Target {
523        &self.0
524    }
525}
526impl<'a> std::ops::DerefMut
527for VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'a> {
528    fn deref_mut(&mut self) -> &mut Self::Target {
529        &mut self.0
530    }
531}
532///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264PictureInfoEXT.html) · Structure
533#[doc(alias = "VkVideoDecodeH264PictureInfoEXT")]
534#[derive(Copy, Clone)]
535#[repr(C)]
536pub struct VideoDecodeH264PictureInfoEXT {
537    pub s_type: crate::vk1_0::StructureType,
538    pub p_next: *const std::ffi::c_void,
539    pub p_std_picture_info: *const crate::external::vk_video::StdVideoDecodeH264PictureInfo,
540    pub slices_count: u32,
541    pub p_slices_data_offsets: *const u32,
542}
543impl VideoDecodeH264PictureInfoEXT {
544    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_PICTURE_INFO_EXT;
545}
546impl Default for VideoDecodeH264PictureInfoEXT {
547    fn default() -> Self {
548        Self {
549            s_type: Self::STRUCTURE_TYPE,
550            p_next: std::ptr::null(),
551            p_std_picture_info: std::ptr::null(),
552            slices_count: Default::default(),
553            p_slices_data_offsets: std::ptr::null(),
554        }
555    }
556}
557impl std::fmt::Debug for VideoDecodeH264PictureInfoEXT {
558    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
559        f.debug_struct("VideoDecodeH264PictureInfoEXT")
560            .field("s_type", &self.s_type)
561            .field("p_next", &self.p_next)
562            .field("p_std_picture_info", &self.p_std_picture_info)
563            .field("slices_count", &self.slices_count)
564            .field("p_slices_data_offsets", &self.p_slices_data_offsets)
565            .finish()
566    }
567}
568impl VideoDecodeH264PictureInfoEXT {
569    #[inline]
570    pub fn into_builder<'a>(self) -> VideoDecodeH264PictureInfoEXTBuilder<'a> {
571        VideoDecodeH264PictureInfoEXTBuilder(self, std::marker::PhantomData)
572    }
573}
574impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264MvcEXT>
575for crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureInfoEXTBuilder<'a> {}
576impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264MvcEXTBuilder<'_>>
577for crate::extensions::ext_video_decode_h264::VideoDecodeH264PictureInfoEXTBuilder<'a> {}
578#[derive(Copy, Clone)]
579///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264PictureInfoEXT.html) · Builder of [`VideoDecodeH264PictureInfoEXT`]
580#[repr(transparent)]
581pub struct VideoDecodeH264PictureInfoEXTBuilder<'a>(
582    VideoDecodeH264PictureInfoEXT,
583    std::marker::PhantomData<&'a ()>,
584);
585impl<'a> VideoDecodeH264PictureInfoEXTBuilder<'a> {
586    #[inline]
587    pub fn new() -> VideoDecodeH264PictureInfoEXTBuilder<'a> {
588        VideoDecodeH264PictureInfoEXTBuilder(
589            Default::default(),
590            std::marker::PhantomData,
591        )
592    }
593    #[inline]
594    #[must_use]
595    pub fn std_picture_info(
596        mut self,
597        std_picture_info: &'a crate::external::vk_video::StdVideoDecodeH264PictureInfo,
598    ) -> Self {
599        self.0.p_std_picture_info = std_picture_info as _;
600        self
601    }
602    #[inline]
603    #[must_use]
604    pub fn slices_data_offsets(mut self, slices_data_offsets: &'a [u32]) -> Self {
605        self.0.p_slices_data_offsets = slices_data_offsets.as_ptr() as _;
606        self.0.slices_count = slices_data_offsets.len() as _;
607        self
608    }
609    #[inline]
610    /// Discards all lifetime information.
611    /// Use the `Deref` and `DerefMut` implementations if possible.
612    pub fn build_dangling(self) -> VideoDecodeH264PictureInfoEXT {
613        self.0
614    }
615}
616impl<'a> std::default::Default for VideoDecodeH264PictureInfoEXTBuilder<'a> {
617    fn default() -> VideoDecodeH264PictureInfoEXTBuilder<'a> {
618        Self::new()
619    }
620}
621impl<'a> std::fmt::Debug for VideoDecodeH264PictureInfoEXTBuilder<'a> {
622    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
623        std::fmt::Debug::fmt(&self.0, f)
624    }
625}
626impl<'a> std::ops::Deref for VideoDecodeH264PictureInfoEXTBuilder<'a> {
627    type Target = VideoDecodeH264PictureInfoEXT;
628    fn deref(&self) -> &Self::Target {
629        &self.0
630    }
631}
632impl<'a> std::ops::DerefMut for VideoDecodeH264PictureInfoEXTBuilder<'a> {
633    fn deref_mut(&mut self) -> &mut Self::Target {
634        &mut self.0
635    }
636}
637///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264DpbSlotInfoEXT.html) · Structure
638#[doc(alias = "VkVideoDecodeH264DpbSlotInfoEXT")]
639#[derive(Copy, Clone)]
640#[repr(C)]
641pub struct VideoDecodeH264DpbSlotInfoEXT {
642    pub s_type: crate::vk1_0::StructureType,
643    pub p_next: *const std::ffi::c_void,
644    pub p_std_reference_info: *const crate::external::vk_video::StdVideoDecodeH264ReferenceInfo,
645}
646impl VideoDecodeH264DpbSlotInfoEXT {
647    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_DPB_SLOT_INFO_EXT;
648}
649impl Default for VideoDecodeH264DpbSlotInfoEXT {
650    fn default() -> Self {
651        Self {
652            s_type: Self::STRUCTURE_TYPE,
653            p_next: std::ptr::null(),
654            p_std_reference_info: std::ptr::null(),
655        }
656    }
657}
658impl std::fmt::Debug for VideoDecodeH264DpbSlotInfoEXT {
659    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
660        f.debug_struct("VideoDecodeH264DpbSlotInfoEXT")
661            .field("s_type", &self.s_type)
662            .field("p_next", &self.p_next)
663            .field("p_std_reference_info", &self.p_std_reference_info)
664            .finish()
665    }
666}
667impl VideoDecodeH264DpbSlotInfoEXT {
668    #[inline]
669    pub fn into_builder<'a>(self) -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
670        VideoDecodeH264DpbSlotInfoEXTBuilder(self, std::marker::PhantomData)
671    }
672}
673#[derive(Copy, Clone)]
674///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264DpbSlotInfoEXT.html) · Builder of [`VideoDecodeH264DpbSlotInfoEXT`]
675#[repr(transparent)]
676pub struct VideoDecodeH264DpbSlotInfoEXTBuilder<'a>(
677    VideoDecodeH264DpbSlotInfoEXT,
678    std::marker::PhantomData<&'a ()>,
679);
680impl<'a> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
681    #[inline]
682    pub fn new() -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
683        VideoDecodeH264DpbSlotInfoEXTBuilder(
684            Default::default(),
685            std::marker::PhantomData,
686        )
687    }
688    #[inline]
689    #[must_use]
690    pub fn std_reference_info(
691        mut self,
692        std_reference_info: &'a crate::external::vk_video::StdVideoDecodeH264ReferenceInfo,
693    ) -> Self {
694        self.0.p_std_reference_info = std_reference_info as _;
695        self
696    }
697    #[inline]
698    /// Discards all lifetime information.
699    /// Use the `Deref` and `DerefMut` implementations if possible.
700    pub fn build_dangling(self) -> VideoDecodeH264DpbSlotInfoEXT {
701        self.0
702    }
703}
704impl<'a> std::default::Default for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
705    fn default() -> VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
706        Self::new()
707    }
708}
709impl<'a> std::fmt::Debug for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
710    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
711        std::fmt::Debug::fmt(&self.0, f)
712    }
713}
714impl<'a> std::ops::Deref for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
715    type Target = VideoDecodeH264DpbSlotInfoEXT;
716    fn deref(&self) -> &Self::Target {
717        &self.0
718    }
719}
720impl<'a> std::ops::DerefMut for VideoDecodeH264DpbSlotInfoEXTBuilder<'a> {
721    fn deref_mut(&mut self) -> &mut Self::Target {
722        &mut self.0
723    }
724}
725///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264MvcEXT.html) · Structure
726#[doc(alias = "VkVideoDecodeH264MvcEXT")]
727#[derive(Copy, Clone)]
728#[repr(C)]
729pub struct VideoDecodeH264MvcEXT {
730    pub s_type: crate::vk1_0::StructureType,
731    pub p_next: *const std::ffi::c_void,
732    pub p_std_mvc: *const crate::external::vk_video::StdVideoDecodeH264Mvc,
733}
734impl VideoDecodeH264MvcEXT {
735    pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::VIDEO_DECODE_H264_MVC_EXT;
736}
737impl Default for VideoDecodeH264MvcEXT {
738    fn default() -> Self {
739        Self {
740            s_type: Self::STRUCTURE_TYPE,
741            p_next: std::ptr::null(),
742            p_std_mvc: std::ptr::null(),
743        }
744    }
745}
746impl std::fmt::Debug for VideoDecodeH264MvcEXT {
747    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
748        f.debug_struct("VideoDecodeH264MvcEXT")
749            .field("s_type", &self.s_type)
750            .field("p_next", &self.p_next)
751            .field("p_std_mvc", &self.p_std_mvc)
752            .finish()
753    }
754}
755impl VideoDecodeH264MvcEXT {
756    #[inline]
757    pub fn into_builder<'a>(self) -> VideoDecodeH264MvcEXTBuilder<'a> {
758        VideoDecodeH264MvcEXTBuilder(self, std::marker::PhantomData)
759    }
760}
761#[derive(Copy, Clone)]
762///[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VkVideoDecodeH264MvcEXT.html) · Builder of [`VideoDecodeH264MvcEXT`]
763#[repr(transparent)]
764pub struct VideoDecodeH264MvcEXTBuilder<'a>(
765    VideoDecodeH264MvcEXT,
766    std::marker::PhantomData<&'a ()>,
767);
768impl<'a> VideoDecodeH264MvcEXTBuilder<'a> {
769    #[inline]
770    pub fn new() -> VideoDecodeH264MvcEXTBuilder<'a> {
771        VideoDecodeH264MvcEXTBuilder(Default::default(), std::marker::PhantomData)
772    }
773    #[inline]
774    #[must_use]
775    pub fn std_mvc(
776        mut self,
777        std_mvc: &'a crate::external::vk_video::StdVideoDecodeH264Mvc,
778    ) -> Self {
779        self.0.p_std_mvc = std_mvc as _;
780        self
781    }
782    #[inline]
783    /// Discards all lifetime information.
784    /// Use the `Deref` and `DerefMut` implementations if possible.
785    pub fn build_dangling(self) -> VideoDecodeH264MvcEXT {
786        self.0
787    }
788}
789impl<'a> std::default::Default for VideoDecodeH264MvcEXTBuilder<'a> {
790    fn default() -> VideoDecodeH264MvcEXTBuilder<'a> {
791        Self::new()
792    }
793}
794impl<'a> std::fmt::Debug for VideoDecodeH264MvcEXTBuilder<'a> {
795    fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
796        std::fmt::Debug::fmt(&self.0, f)
797    }
798}
799impl<'a> std::ops::Deref for VideoDecodeH264MvcEXTBuilder<'a> {
800    type Target = VideoDecodeH264MvcEXT;
801    fn deref(&self) -> &Self::Target {
802        &self.0
803    }
804}
805impl<'a> std::ops::DerefMut for VideoDecodeH264MvcEXTBuilder<'a> {
806    fn deref_mut(&mut self) -> &mut Self::Target {
807        &mut self.0
808    }
809}
810impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264SessionParametersCreateInfoEXT>
811for crate::extensions::khr_video_queue::VideoSessionParametersCreateInfoKHRBuilder<'a> {}
812impl<
813    'a,
814> crate::ExtendableFrom<'a, VideoDecodeH264SessionParametersCreateInfoEXTBuilder<'_>>
815for crate::extensions::khr_video_queue::VideoSessionParametersCreateInfoKHRBuilder<'a> {}
816impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264SessionParametersAddInfoEXT>
817for crate::extensions::khr_video_queue::VideoSessionParametersUpdateInfoKHRBuilder<'a> {}
818impl<'a> crate::ExtendableFrom<'a, VideoDecodeH264SessionParametersAddInfoEXTBuilder<'_>>
819for crate::extensions::khr_video_queue::VideoSessionParametersUpdateInfoKHRBuilder<'a> {}