#[doc(alias = "VK_EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION")]
pub const EXT_SUBPASS_MERGE_FEEDBACK_SPEC_VERSION: u32 = 1;
#[doc(alias = "VK_EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME")]
pub const EXT_SUBPASS_MERGE_FEEDBACK_EXTENSION_NAME: *const std::os::raw::c_char = crate::cstr!(
"VK_EXT_subpass_merge_feedback"
);
impl crate::vk1_0::StructureType {
pub const PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT: Self = Self(
1000458000,
);
pub const RENDER_PASS_CREATION_CONTROL_EXT: Self = Self(1000458001);
pub const RENDER_PASS_CREATION_FEEDBACK_INFO_EXT: Self = Self(1000458002);
pub const RENDER_PASS_SUBPASS_FEEDBACK_INFO_EXT: Self = Self(1000458003);
}
#[doc(alias = "VkSubpassMergeStatusEXT")]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
#[repr(transparent)]
pub struct SubpassMergeStatusEXT(pub i32);
impl std::fmt::Debug for SubpassMergeStatusEXT {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(
match self {
&Self::MERGED_EXT => "MERGED_EXT",
&Self::DISALLOWED_EXT => "DISALLOWED_EXT",
&Self::NOT_MERGED_SIDE_EFFECTS_EXT => "NOT_MERGED_SIDE_EFFECTS_EXT",
&Self::NOT_MERGED_SAMPLES_MISMATCH_EXT => {
"NOT_MERGED_SAMPLES_MISMATCH_EXT"
}
&Self::NOT_MERGED_VIEWS_MISMATCH_EXT => "NOT_MERGED_VIEWS_MISMATCH_EXT",
&Self::NOT_MERGED_ALIASING_EXT => "NOT_MERGED_ALIASING_EXT",
&Self::NOT_MERGED_DEPENDENCIES_EXT => "NOT_MERGED_DEPENDENCIES_EXT",
&Self::NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT => {
"NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT"
}
&Self::NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT => {
"NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT"
}
&Self::NOT_MERGED_INSUFFICIENT_STORAGE_EXT => {
"NOT_MERGED_INSUFFICIENT_STORAGE_EXT"
}
&Self::NOT_MERGED_DEPTH_STENCIL_COUNT_EXT => {
"NOT_MERGED_DEPTH_STENCIL_COUNT_EXT"
}
&Self::NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT => {
"NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT"
}
&Self::NOT_MERGED_SINGLE_SUBPASS_EXT => "NOT_MERGED_SINGLE_SUBPASS_EXT",
&Self::NOT_MERGED_UNSPECIFIED_EXT => "NOT_MERGED_UNSPECIFIED_EXT",
_ => "(unknown variant)",
},
)
}
}
impl crate::extensions::ext_subpass_merge_feedback::SubpassMergeStatusEXT {
pub const MERGED_EXT: Self = Self(0);
pub const DISALLOWED_EXT: Self = Self(1);
pub const NOT_MERGED_SIDE_EFFECTS_EXT: Self = Self(2);
pub const NOT_MERGED_SAMPLES_MISMATCH_EXT: Self = Self(3);
pub const NOT_MERGED_VIEWS_MISMATCH_EXT: Self = Self(4);
pub const NOT_MERGED_ALIASING_EXT: Self = Self(5);
pub const NOT_MERGED_DEPENDENCIES_EXT: Self = Self(6);
pub const NOT_MERGED_INCOMPATIBLE_INPUT_ATTACHMENT_EXT: Self = Self(7);
pub const NOT_MERGED_TOO_MANY_ATTACHMENTS_EXT: Self = Self(8);
pub const NOT_MERGED_INSUFFICIENT_STORAGE_EXT: Self = Self(9);
pub const NOT_MERGED_DEPTH_STENCIL_COUNT_EXT: Self = Self(10);
pub const NOT_MERGED_RESOLVE_ATTACHMENT_REUSE_EXT: Self = Self(11);
pub const NOT_MERGED_SINGLE_SUBPASS_EXT: Self = Self(12);
pub const NOT_MERGED_UNSPECIFIED_EXT: Self = Self(13);
}
impl<'a> crate::ExtendableFrom<'a, PhysicalDeviceSubpassMergeFeedbackFeaturesEXT>
for crate::vk1_0::DeviceCreateInfoBuilder<'a> {}
impl<
'a,
> crate::ExtendableFrom<'a, PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'_>>
for crate::vk1_0::DeviceCreateInfoBuilder<'a> {}
impl<'a> crate::ExtendableFrom<'a, PhysicalDeviceSubpassMergeFeedbackFeaturesEXT>
for crate::vk1_1::PhysicalDeviceFeatures2Builder<'a> {}
impl<
'a,
> crate::ExtendableFrom<'a, PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'_>>
for crate::vk1_1::PhysicalDeviceFeatures2Builder<'a> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassCreationControlEXT>
for crate::vk1_2::SubpassDescription2Builder<'a> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassCreationControlEXTBuilder<'_>>
for crate::vk1_2::SubpassDescription2Builder<'a> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassSubpassFeedbackInfoEXT>
for crate::vk1_2::SubpassDescription2Builder<'a> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassSubpassFeedbackInfoEXTBuilder<'_>>
for crate::vk1_2::SubpassDescription2Builder<'a> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassCreationControlEXT>
for crate::vk1_2::RenderPassCreateInfo2Builder<'a> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassCreationControlEXTBuilder<'_>>
for crate::vk1_2::RenderPassCreateInfo2Builder<'a> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassCreationFeedbackInfoEXT>
for crate::vk1_2::RenderPassCreateInfo2Builder<'a> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassCreationFeedbackInfoEXTBuilder<'_>>
for crate::vk1_2::RenderPassCreateInfo2Builder<'a> {}
#[doc(alias = "VkRenderPassCreationControlEXT")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct RenderPassCreationControlEXT {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub disallow_merging: crate::vk1_0::Bool32,
}
impl RenderPassCreationControlEXT {
pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::RENDER_PASS_CREATION_CONTROL_EXT;
}
impl Default for RenderPassCreationControlEXT {
fn default() -> Self {
Self {
s_type: Self::STRUCTURE_TYPE,
p_next: std::ptr::null(),
disallow_merging: Default::default(),
}
}
}
impl std::fmt::Debug for RenderPassCreationControlEXT {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("RenderPassCreationControlEXT")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("disallow_merging", &(self.disallow_merging != 0))
.finish()
}
}
impl RenderPassCreationControlEXT {
#[inline]
pub fn into_builder<'a>(self) -> RenderPassCreationControlEXTBuilder<'a> {
RenderPassCreationControlEXTBuilder(self, std::marker::PhantomData)
}
}
impl<'a> crate::ExtendableFrom<'a, RenderPassCreationFeedbackInfoEXT>
for crate::extensions::ext_subpass_merge_feedback::RenderPassCreationControlEXTBuilder<
'a,
> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassCreationFeedbackInfoEXTBuilder<'_>>
for crate::extensions::ext_subpass_merge_feedback::RenderPassCreationControlEXTBuilder<
'a,
> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassSubpassFeedbackInfoEXT>
for crate::extensions::ext_subpass_merge_feedback::RenderPassCreationControlEXTBuilder<
'a,
> {}
impl<'a> crate::ExtendableFrom<'a, RenderPassSubpassFeedbackInfoEXTBuilder<'_>>
for crate::extensions::ext_subpass_merge_feedback::RenderPassCreationControlEXTBuilder<
'a,
> {}
#[derive(Copy, Clone)]
#[repr(transparent)]
pub struct RenderPassCreationControlEXTBuilder<'a>(
RenderPassCreationControlEXT,
std::marker::PhantomData<&'a ()>,
);
impl<'a> RenderPassCreationControlEXTBuilder<'a> {
#[inline]
pub fn new() -> RenderPassCreationControlEXTBuilder<'a> {
RenderPassCreationControlEXTBuilder(Default::default(), std::marker::PhantomData)
}
#[inline]
#[must_use]
pub fn disallow_merging(mut self, disallow_merging: bool) -> Self {
self.0.disallow_merging = disallow_merging as _;
self
}
#[inline]
pub fn build_dangling(self) -> RenderPassCreationControlEXT {
self.0
}
}
impl<'a> std::default::Default for RenderPassCreationControlEXTBuilder<'a> {
fn default() -> RenderPassCreationControlEXTBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for RenderPassCreationControlEXTBuilder<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, f)
}
}
impl<'a> std::ops::Deref for RenderPassCreationControlEXTBuilder<'a> {
type Target = RenderPassCreationControlEXT;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for RenderPassCreationControlEXTBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc(alias = "VkRenderPassCreationFeedbackInfoEXT")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct RenderPassCreationFeedbackInfoEXT {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub post_merge_subpass_count: u32,
}
impl RenderPassCreationFeedbackInfoEXT {
pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::RENDER_PASS_CREATION_FEEDBACK_INFO_EXT;
}
impl Default for RenderPassCreationFeedbackInfoEXT {
fn default() -> Self {
Self {
s_type: Self::STRUCTURE_TYPE,
p_next: std::ptr::null(),
post_merge_subpass_count: Default::default(),
}
}
}
impl std::fmt::Debug for RenderPassCreationFeedbackInfoEXT {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("RenderPassCreationFeedbackInfoEXT")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("post_merge_subpass_count", &self.post_merge_subpass_count)
.finish()
}
}
impl RenderPassCreationFeedbackInfoEXT {
#[inline]
pub fn into_builder<'a>(self) -> RenderPassCreationFeedbackInfoEXTBuilder<'a> {
RenderPassCreationFeedbackInfoEXTBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[repr(transparent)]
pub struct RenderPassCreationFeedbackInfoEXTBuilder<'a>(
RenderPassCreationFeedbackInfoEXT,
std::marker::PhantomData<&'a ()>,
);
impl<'a> RenderPassCreationFeedbackInfoEXTBuilder<'a> {
#[inline]
pub fn new() -> RenderPassCreationFeedbackInfoEXTBuilder<'a> {
RenderPassCreationFeedbackInfoEXTBuilder(
Default::default(),
std::marker::PhantomData,
)
}
#[inline]
#[must_use]
pub fn post_merge_subpass_count(mut self, post_merge_subpass_count: u32) -> Self {
self.0.post_merge_subpass_count = post_merge_subpass_count as _;
self
}
#[inline]
pub fn build_dangling(self) -> RenderPassCreationFeedbackInfoEXT {
self.0
}
}
impl<'a> std::default::Default for RenderPassCreationFeedbackInfoEXTBuilder<'a> {
fn default() -> RenderPassCreationFeedbackInfoEXTBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for RenderPassCreationFeedbackInfoEXTBuilder<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, f)
}
}
impl<'a> std::ops::Deref for RenderPassCreationFeedbackInfoEXTBuilder<'a> {
type Target = RenderPassCreationFeedbackInfoEXT;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for RenderPassCreationFeedbackInfoEXTBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc(alias = "VkRenderPassSubpassFeedbackInfoEXT")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct RenderPassSubpassFeedbackInfoEXT {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub subpass_merge_status: crate::extensions::ext_subpass_merge_feedback::SubpassMergeStatusEXT,
pub description: [std::os::raw::c_char; 256],
pub post_merge_index: u32,
}
impl RenderPassSubpassFeedbackInfoEXT {
pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::RENDER_PASS_SUBPASS_FEEDBACK_INFO_EXT;
}
impl Default for RenderPassSubpassFeedbackInfoEXT {
fn default() -> Self {
Self {
s_type: Self::STRUCTURE_TYPE,
p_next: std::ptr::null(),
subpass_merge_status: Default::default(),
description: unsafe { std::mem::zeroed() },
post_merge_index: Default::default(),
}
}
}
impl std::fmt::Debug for RenderPassSubpassFeedbackInfoEXT {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("RenderPassSubpassFeedbackInfoEXT")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("subpass_merge_status", &self.subpass_merge_status)
.field(
"description",
unsafe { &std::ffi::CStr::from_ptr(self.description.as_ptr()) },
)
.field("post_merge_index", &self.post_merge_index)
.finish()
}
}
impl RenderPassSubpassFeedbackInfoEXT {
#[inline]
pub fn into_builder<'a>(self) -> RenderPassSubpassFeedbackInfoEXTBuilder<'a> {
RenderPassSubpassFeedbackInfoEXTBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[repr(transparent)]
pub struct RenderPassSubpassFeedbackInfoEXTBuilder<'a>(
RenderPassSubpassFeedbackInfoEXT,
std::marker::PhantomData<&'a ()>,
);
impl<'a> RenderPassSubpassFeedbackInfoEXTBuilder<'a> {
#[inline]
pub fn new() -> RenderPassSubpassFeedbackInfoEXTBuilder<'a> {
RenderPassSubpassFeedbackInfoEXTBuilder(
Default::default(),
std::marker::PhantomData,
)
}
#[inline]
#[must_use]
pub fn subpass_merge_status(
mut self,
subpass_merge_status: crate::extensions::ext_subpass_merge_feedback::SubpassMergeStatusEXT,
) -> Self {
self.0.subpass_merge_status = subpass_merge_status as _;
self
}
#[inline]
#[must_use]
pub fn description(mut self, description: [std::os::raw::c_char; 256]) -> Self {
self.0.description = description as _;
self
}
#[inline]
#[must_use]
pub fn post_merge_index(mut self, post_merge_index: u32) -> Self {
self.0.post_merge_index = post_merge_index as _;
self
}
#[inline]
pub fn build_dangling(self) -> RenderPassSubpassFeedbackInfoEXT {
self.0
}
}
impl<'a> std::default::Default for RenderPassSubpassFeedbackInfoEXTBuilder<'a> {
fn default() -> RenderPassSubpassFeedbackInfoEXTBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for RenderPassSubpassFeedbackInfoEXTBuilder<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, f)
}
}
impl<'a> std::ops::Deref for RenderPassSubpassFeedbackInfoEXTBuilder<'a> {
type Target = RenderPassSubpassFeedbackInfoEXT;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for RenderPassSubpassFeedbackInfoEXTBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc(alias = "VkPhysicalDeviceSubpassMergeFeedbackFeaturesEXT")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *mut std::ffi::c_void,
pub subpass_merge_feedback: crate::vk1_0::Bool32,
}
impl PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
pub const STRUCTURE_TYPE: crate::vk1_0::StructureType = crate::vk1_0::StructureType::PHYSICAL_DEVICE_SUBPASS_MERGE_FEEDBACK_FEATURES_EXT;
}
impl Default for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
fn default() -> Self {
Self {
s_type: Self::STRUCTURE_TYPE,
p_next: std::ptr::null_mut(),
subpass_merge_feedback: Default::default(),
}
}
}
impl std::fmt::Debug for PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("PhysicalDeviceSubpassMergeFeedbackFeaturesEXT")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("subpass_merge_feedback", &(self.subpass_merge_feedback != 0))
.finish()
}
}
impl PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
#[inline]
pub fn into_builder<'a>(
self,
) -> PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder(
self,
std::marker::PhantomData,
)
}
}
#[derive(Copy, Clone)]
#[repr(transparent)]
pub struct PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a>(
PhysicalDeviceSubpassMergeFeedbackFeaturesEXT,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
#[inline]
pub fn new() -> PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder(
Default::default(),
std::marker::PhantomData,
)
}
#[inline]
#[must_use]
pub fn subpass_merge_feedback(mut self, subpass_merge_feedback: bool) -> Self {
self.0.subpass_merge_feedback = subpass_merge_feedback as _;
self
}
#[inline]
pub fn build_dangling(self) -> PhysicalDeviceSubpassMergeFeedbackFeaturesEXT {
self.0
}
}
impl<'a> std::default::Default
for PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
fn default() -> PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
std::fmt::Debug::fmt(&self.0, f)
}
}
impl<'a> std::ops::Deref for PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
type Target = PhysicalDeviceSubpassMergeFeedbackFeaturesEXT;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut
for PhysicalDeviceSubpassMergeFeedbackFeaturesEXTBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}