#[doc = "<s>Vulkan Manual Page</s> · Constant"]
#[doc(alias = "VK_NV_SHADING_RATE_IMAGE_SPEC_VERSION")]
pub const NV_SHADING_RATE_IMAGE_SPEC_VERSION: u32 = 3;
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
#[doc(alias = "VK_NV_SHADING_RATE_IMAGE_EXTENSION_NAME")]
pub const NV_SHADING_RATE_IMAGE_EXTENSION_NAME: *const std::os::raw::c_char =
crate::cstr!("VK_NV_shading_rate_image");
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const FN_CMD_BIND_SHADING_RATE_IMAGE_NV: *const std::os::raw::c_char =
crate::cstr!("vkCmdBindShadingRateImageNV");
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const FN_CMD_SET_VIEWPORT_SHADING_RATE_PALETTE_NV: *const std::os::raw::c_char =
crate::cstr!("vkCmdSetViewportShadingRatePaletteNV");
#[doc = "<s>Vulkan Manual Page</s> · Constant"]
pub const FN_CMD_SET_COARSE_SAMPLE_ORDER_NV: *const std::os::raw::c_char =
crate::cstr!("vkCmdSetCoarseSampleOrderNV");
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShadingRatePaletteEntryNV.html) · Enum"]
#[doc(alias = "VkShadingRatePaletteEntryNV")]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
#[repr(transparent)]
pub struct ShadingRatePaletteEntryNV(pub i32);
impl std::fmt::Debug for ShadingRatePaletteEntryNV {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(match self {
&Self::NO_INVOCATIONS_NV => "NO_INVOCATIONS_NV",
&Self::_16_INVOCATIONS_PER_PIXEL_NV => "_16_INVOCATIONS_PER_PIXEL_NV",
&Self::_8_INVOCATIONS_PER_PIXEL_NV => "_8_INVOCATIONS_PER_PIXEL_NV",
&Self::_4_INVOCATIONS_PER_PIXEL_NV => "_4_INVOCATIONS_PER_PIXEL_NV",
&Self::_2_INVOCATIONS_PER_PIXEL_NV => "_2_INVOCATIONS_PER_PIXEL_NV",
&Self::_1_INVOCATION_PER_PIXEL_NV => "_1_INVOCATION_PER_PIXEL_NV",
&Self::_1_INVOCATION_PER_2X1_PIXELS_NV => "_1_INVOCATION_PER_2X1_PIXELS_NV",
&Self::_1_INVOCATION_PER_1X2_PIXELS_NV => "_1_INVOCATION_PER_1X2_PIXELS_NV",
&Self::_1_INVOCATION_PER_2X2_PIXELS_NV => "_1_INVOCATION_PER_2X2_PIXELS_NV",
&Self::_1_INVOCATION_PER_4X2_PIXELS_NV => "_1_INVOCATION_PER_4X2_PIXELS_NV",
&Self::_1_INVOCATION_PER_2X4_PIXELS_NV => "_1_INVOCATION_PER_2X4_PIXELS_NV",
&Self::_1_INVOCATION_PER_4X4_PIXELS_NV => "_1_INVOCATION_PER_4X4_PIXELS_NV",
_ => "(unknown variant)",
})
}
}
#[doc = "Provided by [`crate::extensions::nv_shading_rate_image`]"]
impl ShadingRatePaletteEntryNV {
pub const NO_INVOCATIONS_NV: Self = Self(0);
pub const _16_INVOCATIONS_PER_PIXEL_NV: Self = Self(1);
pub const _8_INVOCATIONS_PER_PIXEL_NV: Self = Self(2);
pub const _4_INVOCATIONS_PER_PIXEL_NV: Self = Self(3);
pub const _2_INVOCATIONS_PER_PIXEL_NV: Self = Self(4);
pub const _1_INVOCATION_PER_PIXEL_NV: Self = Self(5);
pub const _1_INVOCATION_PER_2X1_PIXELS_NV: Self = Self(6);
pub const _1_INVOCATION_PER_1X2_PIXELS_NV: Self = Self(7);
pub const _1_INVOCATION_PER_2X2_PIXELS_NV: Self = Self(8);
pub const _1_INVOCATION_PER_4X2_PIXELS_NV: Self = Self(9);
pub const _1_INVOCATION_PER_2X4_PIXELS_NV: Self = Self(10);
pub const _1_INVOCATION_PER_4X4_PIXELS_NV: Self = Self(11);
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleOrderTypeNV.html) · Enum"]
#[doc(alias = "VkCoarseSampleOrderTypeNV")]
#[derive(Copy, Clone, PartialEq, Eq, Hash, Default, Ord, PartialOrd)]
#[repr(transparent)]
pub struct CoarseSampleOrderTypeNV(pub i32);
impl std::fmt::Debug for CoarseSampleOrderTypeNV {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.write_str(match self {
&Self::DEFAULT_NV => "DEFAULT_NV",
&Self::CUSTOM_NV => "CUSTOM_NV",
&Self::PIXEL_MAJOR_NV => "PIXEL_MAJOR_NV",
&Self::SAMPLE_MAJOR_NV => "SAMPLE_MAJOR_NV",
_ => "(unknown variant)",
})
}
}
#[doc = "Provided by [`crate::extensions::nv_shading_rate_image`]"]
impl CoarseSampleOrderTypeNV {
pub const DEFAULT_NV: Self = Self(0);
pub const CUSTOM_NV: Self = Self(1);
pub const PIXEL_MAJOR_NV: Self = Self(2);
pub const SAMPLE_MAJOR_NV: Self = Self(3);
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindShadingRateImageNV.html) · Function"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdBindShadingRateImageNV = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
image_view: crate::vk1_0::ImageView,
image_layout: crate::vk1_0::ImageLayout,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetViewportShadingRatePaletteNV.html) · Function"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetViewportShadingRatePaletteNV = unsafe extern "system" fn(
command_buffer: crate::vk1_0::CommandBuffer,
first_viewport: u32,
viewport_count: u32,
p_shading_rate_palettes: *const crate::extensions::nv_shading_rate_image::ShadingRatePaletteNV,
) -> ();
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetCoarseSampleOrderNV.html) · Function"]
#[allow(non_camel_case_types)]
pub type PFN_vkCmdSetCoarseSampleOrderNV = unsafe extern "system" fn (command_buffer : crate :: vk1_0 :: CommandBuffer , sample_order_type : crate :: extensions :: nv_shading_rate_image :: CoarseSampleOrderTypeNV , custom_sample_order_count : u32 , p_custom_sample_orders : * const crate :: extensions :: nv_shading_rate_image :: CoarseSampleOrderCustomNV) -> () ;
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShadingRatePaletteNV.html) · Structure"]
#[doc(alias = "VkShadingRatePaletteNV")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct ShadingRatePaletteNV {
pub shading_rate_palette_entry_count: u32,
pub p_shading_rate_palette_entries:
*const crate::extensions::nv_shading_rate_image::ShadingRatePaletteEntryNV,
}
impl Default for ShadingRatePaletteNV {
fn default() -> Self {
Self {
shading_rate_palette_entry_count: Default::default(),
p_shading_rate_palette_entries: std::ptr::null(),
}
}
}
impl std::fmt::Debug for ShadingRatePaletteNV {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("ShadingRatePaletteNV")
.field(
"shading_rate_palette_entry_count",
&self.shading_rate_palette_entry_count,
)
.field(
"p_shading_rate_palette_entries",
&self.p_shading_rate_palette_entries,
)
.finish()
}
}
impl ShadingRatePaletteNV {
#[inline]
pub fn into_builder<'a>(self) -> ShadingRatePaletteNVBuilder<'a> {
ShadingRatePaletteNVBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkShadingRatePaletteNV.html) · Builder of [`ShadingRatePaletteNV`]"]
#[repr(transparent)]
pub struct ShadingRatePaletteNVBuilder<'a>(ShadingRatePaletteNV, std::marker::PhantomData<&'a ()>);
impl<'a> ShadingRatePaletteNVBuilder<'a> {
#[inline]
pub fn new() -> ShadingRatePaletteNVBuilder<'a> {
ShadingRatePaletteNVBuilder(Default::default(), std::marker::PhantomData)
}
#[inline]
pub fn shading_rate_palette_entries(
mut self,
shading_rate_palette_entries : & 'a [crate :: extensions :: nv_shading_rate_image :: ShadingRatePaletteEntryNV],
) -> Self {
self.0.p_shading_rate_palette_entries = shading_rate_palette_entries.as_ptr() as _;
self.0.shading_rate_palette_entry_count = shading_rate_palette_entries.len() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub fn build(self) -> ShadingRatePaletteNV {
self.0
}
}
impl<'a> std::default::Default for ShadingRatePaletteNVBuilder<'a> {
fn default() -> ShadingRatePaletteNVBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for ShadingRatePaletteNVBuilder<'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 ShadingRatePaletteNVBuilder<'a> {
type Target = ShadingRatePaletteNV;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for ShadingRatePaletteNVBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html) · Structure"]
#[doc(alias = "VkPipelineViewportShadingRateImageStateCreateInfoNV")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineViewportShadingRateImageStateCreateInfoNV {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub shading_rate_image_enable: crate::vk1_0::Bool32,
pub viewport_count: u32,
pub p_shading_rate_palettes:
*const crate::extensions::nv_shading_rate_image::ShadingRatePaletteNV,
}
impl Default for PipelineViewportShadingRateImageStateCreateInfoNV {
fn default() -> Self {
Self { s_type : crate :: vk1_0 :: StructureType :: PIPELINE_VIEWPORT_SHADING_RATE_IMAGE_STATE_CREATE_INFO_NV , p_next : std :: ptr :: null () , shading_rate_image_enable : Default :: default () , viewport_count : Default :: default () , p_shading_rate_palettes : std :: ptr :: null () }
}
}
impl std::fmt::Debug for PipelineViewportShadingRateImageStateCreateInfoNV {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("PipelineViewportShadingRateImageStateCreateInfoNV")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field(
"shading_rate_image_enable",
&(self.shading_rate_image_enable != 0),
)
.field("viewport_count", &self.viewport_count)
.field("p_shading_rate_palettes", &self.p_shading_rate_palettes)
.finish()
}
}
impl PipelineViewportShadingRateImageStateCreateInfoNV {
#[inline]
pub fn into_builder<'a>(self) -> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
PipelineViewportShadingRateImageStateCreateInfoNVBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportShadingRateImageStateCreateInfoNV.html) · Builder of [`PipelineViewportShadingRateImageStateCreateInfoNV`]"]
#[repr(transparent)]
pub struct PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a>(
PipelineViewportShadingRateImageStateCreateInfoNV,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
#[inline]
pub fn new() -> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
PipelineViewportShadingRateImageStateCreateInfoNVBuilder(
Default::default(),
std::marker::PhantomData,
)
}
#[inline]
pub fn shading_rate_image_enable(mut self, shading_rate_image_enable: bool) -> Self {
self.0.shading_rate_image_enable = shading_rate_image_enable as _;
self
}
#[inline]
pub fn shading_rate_palettes(
mut self,
shading_rate_palettes : & 'a [crate :: extensions :: nv_shading_rate_image :: ShadingRatePaletteNVBuilder],
) -> Self {
self.0.p_shading_rate_palettes = shading_rate_palettes.as_ptr() as _;
self.0.viewport_count = shading_rate_palettes.len() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub fn build(self) -> PipelineViewportShadingRateImageStateCreateInfoNV {
self.0
}
}
impl<'a> std::default::Default for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
fn default() -> PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'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 PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
type Target = PipelineViewportShadingRateImageStateCreateInfoNV;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineViewportShadingRateImageStateCreateInfoNVBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html) · Structure"]
#[doc(alias = "VkPhysicalDeviceShadingRateImageFeaturesNV")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PhysicalDeviceShadingRateImageFeaturesNV {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *mut std::ffi::c_void,
pub shading_rate_image: crate::vk1_0::Bool32,
pub shading_rate_coarse_sample_order: crate::vk1_0::Bool32,
}
impl Default for PhysicalDeviceShadingRateImageFeaturesNV {
fn default() -> Self {
Self {
s_type: crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_FEATURES_NV,
p_next: std::ptr::null_mut(),
shading_rate_image: Default::default(),
shading_rate_coarse_sample_order: Default::default(),
}
}
}
impl std::fmt::Debug for PhysicalDeviceShadingRateImageFeaturesNV {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("PhysicalDeviceShadingRateImageFeaturesNV")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("shading_rate_image", &(self.shading_rate_image != 0))
.field(
"shading_rate_coarse_sample_order",
&(self.shading_rate_coarse_sample_order != 0),
)
.finish()
}
}
impl PhysicalDeviceShadingRateImageFeaturesNV {
#[inline]
pub fn into_builder<'a>(self) -> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
PhysicalDeviceShadingRateImageFeaturesNVBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShadingRateImageFeaturesNV.html) · Builder of [`PhysicalDeviceShadingRateImageFeaturesNV`]"]
#[repr(transparent)]
pub struct PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a>(
PhysicalDeviceShadingRateImageFeaturesNV,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
#[inline]
pub fn new() -> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
PhysicalDeviceShadingRateImageFeaturesNVBuilder(
Default::default(),
std::marker::PhantomData,
)
}
#[inline]
pub fn shading_rate_image(mut self, shading_rate_image: bool) -> Self {
self.0.shading_rate_image = shading_rate_image as _;
self
}
#[inline]
pub fn shading_rate_coarse_sample_order(
mut self,
shading_rate_coarse_sample_order: bool,
) -> Self {
self.0.shading_rate_coarse_sample_order = shading_rate_coarse_sample_order as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub fn build(self) -> PhysicalDeviceShadingRateImageFeaturesNV {
self.0
}
}
impl<'a> std::default::Default for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
fn default() -> PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'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 PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
type Target = PhysicalDeviceShadingRateImageFeaturesNV;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PhysicalDeviceShadingRateImageFeaturesNVBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html) · Structure"]
#[doc(alias = "VkPhysicalDeviceShadingRateImagePropertiesNV")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PhysicalDeviceShadingRateImagePropertiesNV {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *mut std::ffi::c_void,
pub shading_rate_texel_size: crate::vk1_0::Extent2D,
pub shading_rate_palette_size: u32,
pub shading_rate_max_coarse_samples: u32,
}
impl Default for PhysicalDeviceShadingRateImagePropertiesNV {
fn default() -> Self {
Self {
s_type: crate::vk1_0::StructureType::PHYSICAL_DEVICE_SHADING_RATE_IMAGE_PROPERTIES_NV,
p_next: std::ptr::null_mut(),
shading_rate_texel_size: Default::default(),
shading_rate_palette_size: Default::default(),
shading_rate_max_coarse_samples: Default::default(),
}
}
}
impl std::fmt::Debug for PhysicalDeviceShadingRateImagePropertiesNV {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("PhysicalDeviceShadingRateImagePropertiesNV")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("shading_rate_texel_size", &self.shading_rate_texel_size)
.field("shading_rate_palette_size", &self.shading_rate_palette_size)
.field(
"shading_rate_max_coarse_samples",
&self.shading_rate_max_coarse_samples,
)
.finish()
}
}
impl PhysicalDeviceShadingRateImagePropertiesNV {
#[inline]
pub fn into_builder<'a>(self) -> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
PhysicalDeviceShadingRateImagePropertiesNVBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPhysicalDeviceShadingRateImagePropertiesNV.html) · Builder of [`PhysicalDeviceShadingRateImagePropertiesNV`]"]
#[repr(transparent)]
pub struct PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a>(
PhysicalDeviceShadingRateImagePropertiesNV,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
#[inline]
pub fn new() -> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
PhysicalDeviceShadingRateImagePropertiesNVBuilder(
Default::default(),
std::marker::PhantomData,
)
}
#[inline]
pub fn shading_rate_texel_size(
mut self,
shading_rate_texel_size: crate::vk1_0::Extent2D,
) -> Self {
self.0.shading_rate_texel_size = shading_rate_texel_size as _;
self
}
#[inline]
pub fn shading_rate_palette_size(mut self, shading_rate_palette_size: u32) -> Self {
self.0.shading_rate_palette_size = shading_rate_palette_size as _;
self
}
#[inline]
pub fn shading_rate_max_coarse_samples(mut self, shading_rate_max_coarse_samples: u32) -> Self {
self.0.shading_rate_max_coarse_samples = shading_rate_max_coarse_samples as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub fn build(self) -> PhysicalDeviceShadingRateImagePropertiesNV {
self.0
}
}
impl<'a> std::default::Default for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
fn default() -> PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'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 PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
type Target = PhysicalDeviceShadingRateImagePropertiesNV;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PhysicalDeviceShadingRateImagePropertiesNVBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleLocationNV.html) · Structure"]
#[doc(alias = "VkCoarseSampleLocationNV")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct CoarseSampleLocationNV {
pub pixel_x: u32,
pub pixel_y: u32,
pub sample: u32,
}
impl Default for CoarseSampleLocationNV {
fn default() -> Self {
Self {
pixel_x: Default::default(),
pixel_y: Default::default(),
sample: Default::default(),
}
}
}
impl std::fmt::Debug for CoarseSampleLocationNV {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("CoarseSampleLocationNV")
.field("pixel_x", &self.pixel_x)
.field("pixel_y", &self.pixel_y)
.field("sample", &self.sample)
.finish()
}
}
impl CoarseSampleLocationNV {
#[inline]
pub fn into_builder<'a>(self) -> CoarseSampleLocationNVBuilder<'a> {
CoarseSampleLocationNVBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleLocationNV.html) · Builder of [`CoarseSampleLocationNV`]"]
#[repr(transparent)]
pub struct CoarseSampleLocationNVBuilder<'a>(
CoarseSampleLocationNV,
std::marker::PhantomData<&'a ()>,
);
impl<'a> CoarseSampleLocationNVBuilder<'a> {
#[inline]
pub fn new() -> CoarseSampleLocationNVBuilder<'a> {
CoarseSampleLocationNVBuilder(Default::default(), std::marker::PhantomData)
}
#[inline]
pub fn pixel_x(mut self, pixel_x: u32) -> Self {
self.0.pixel_x = pixel_x as _;
self
}
#[inline]
pub fn pixel_y(mut self, pixel_y: u32) -> Self {
self.0.pixel_y = pixel_y as _;
self
}
#[inline]
pub fn sample(mut self, sample: u32) -> Self {
self.0.sample = sample as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub fn build(self) -> CoarseSampleLocationNV {
self.0
}
}
impl<'a> std::default::Default for CoarseSampleLocationNVBuilder<'a> {
fn default() -> CoarseSampleLocationNVBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for CoarseSampleLocationNVBuilder<'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 CoarseSampleLocationNVBuilder<'a> {
type Target = CoarseSampleLocationNV;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for CoarseSampleLocationNVBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleOrderCustomNV.html) · Structure"]
#[doc(alias = "VkCoarseSampleOrderCustomNV")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct CoarseSampleOrderCustomNV {
pub shading_rate: crate::extensions::nv_shading_rate_image::ShadingRatePaletteEntryNV,
pub sample_count: u32,
pub sample_location_count: u32,
pub p_sample_locations: *const crate::extensions::nv_shading_rate_image::CoarseSampleLocationNV,
}
impl Default for CoarseSampleOrderCustomNV {
fn default() -> Self {
Self {
shading_rate: Default::default(),
sample_count: Default::default(),
sample_location_count: Default::default(),
p_sample_locations: std::ptr::null(),
}
}
}
impl std::fmt::Debug for CoarseSampleOrderCustomNV {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("CoarseSampleOrderCustomNV")
.field("shading_rate", &self.shading_rate)
.field("sample_count", &self.sample_count)
.field("sample_location_count", &self.sample_location_count)
.field("p_sample_locations", &self.p_sample_locations)
.finish()
}
}
impl CoarseSampleOrderCustomNV {
#[inline]
pub fn into_builder<'a>(self) -> CoarseSampleOrderCustomNVBuilder<'a> {
CoarseSampleOrderCustomNVBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkCoarseSampleOrderCustomNV.html) · Builder of [`CoarseSampleOrderCustomNV`]"]
#[repr(transparent)]
pub struct CoarseSampleOrderCustomNVBuilder<'a>(
CoarseSampleOrderCustomNV,
std::marker::PhantomData<&'a ()>,
);
impl<'a> CoarseSampleOrderCustomNVBuilder<'a> {
#[inline]
pub fn new() -> CoarseSampleOrderCustomNVBuilder<'a> {
CoarseSampleOrderCustomNVBuilder(Default::default(), std::marker::PhantomData)
}
#[inline]
pub fn shading_rate(
mut self,
shading_rate: crate::extensions::nv_shading_rate_image::ShadingRatePaletteEntryNV,
) -> Self {
self.0.shading_rate = shading_rate as _;
self
}
#[inline]
pub fn sample_count(mut self, sample_count: u32) -> Self {
self.0.sample_count = sample_count as _;
self
}
#[inline]
pub fn sample_locations(
mut self,
sample_locations : & 'a [crate :: extensions :: nv_shading_rate_image :: CoarseSampleLocationNVBuilder],
) -> Self {
self.0.p_sample_locations = sample_locations.as_ptr() as _;
self.0.sample_location_count = sample_locations.len() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub fn build(self) -> CoarseSampleOrderCustomNV {
self.0
}
}
impl<'a> std::default::Default for CoarseSampleOrderCustomNVBuilder<'a> {
fn default() -> CoarseSampleOrderCustomNVBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for CoarseSampleOrderCustomNVBuilder<'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 CoarseSampleOrderCustomNVBuilder<'a> {
type Target = CoarseSampleOrderCustomNV;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for CoarseSampleOrderCustomNVBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html) · Structure"]
#[doc(alias = "VkPipelineViewportCoarseSampleOrderStateCreateInfoNV")]
#[derive(Copy, Clone)]
#[repr(C)]
pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNV {
pub s_type: crate::vk1_0::StructureType,
pub p_next: *const std::ffi::c_void,
pub sample_order_type: crate::extensions::nv_shading_rate_image::CoarseSampleOrderTypeNV,
pub custom_sample_order_count: u32,
pub p_custom_sample_orders:
*const crate::extensions::nv_shading_rate_image::CoarseSampleOrderCustomNV,
}
impl Default for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
fn default() -> Self {
Self { s_type : crate :: vk1_0 :: StructureType :: PIPELINE_VIEWPORT_COARSE_SAMPLE_ORDER_STATE_CREATE_INFO_NV , p_next : std :: ptr :: null () , sample_order_type : Default :: default () , custom_sample_order_count : Default :: default () , p_custom_sample_orders : std :: ptr :: null () }
}
}
impl std::fmt::Debug for PipelineViewportCoarseSampleOrderStateCreateInfoNV {
fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
f.debug_struct("PipelineViewportCoarseSampleOrderStateCreateInfoNV")
.field("s_type", &self.s_type)
.field("p_next", &self.p_next)
.field("sample_order_type", &self.sample_order_type)
.field("custom_sample_order_count", &self.custom_sample_order_count)
.field("p_custom_sample_orders", &self.p_custom_sample_orders)
.finish()
}
}
impl PipelineViewportCoarseSampleOrderStateCreateInfoNV {
#[inline]
pub fn into_builder<'a>(self) -> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder(self, std::marker::PhantomData)
}
}
#[derive(Copy, Clone)]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/VkPipelineViewportCoarseSampleOrderStateCreateInfoNV.html) · Builder of [`PipelineViewportCoarseSampleOrderStateCreateInfoNV`]"]
#[repr(transparent)]
pub struct PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a>(
PipelineViewportCoarseSampleOrderStateCreateInfoNV,
std::marker::PhantomData<&'a ()>,
);
impl<'a> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
#[inline]
pub fn new() -> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder(
Default::default(),
std::marker::PhantomData,
)
}
#[inline]
pub fn sample_order_type(
mut self,
sample_order_type: crate::extensions::nv_shading_rate_image::CoarseSampleOrderTypeNV,
) -> Self {
self.0.sample_order_type = sample_order_type as _;
self
}
#[inline]
pub fn custom_sample_orders(
mut self,
custom_sample_orders : & 'a [crate :: extensions :: nv_shading_rate_image :: CoarseSampleOrderCustomNVBuilder],
) -> Self {
self.0.p_custom_sample_orders = custom_sample_orders.as_ptr() as _;
self.0.custom_sample_order_count = custom_sample_orders.len() as _;
self
}
#[inline]
#[doc = "Discards all lifetime information. Use the `Deref` and `DerefMut` implementations if possible."]
pub fn build(self) -> PipelineViewportCoarseSampleOrderStateCreateInfoNV {
self.0
}
}
impl<'a> std::default::Default for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
fn default() -> PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
Self::new()
}
}
impl<'a> std::fmt::Debug for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'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 PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
type Target = PipelineViewportCoarseSampleOrderStateCreateInfoNV;
fn deref(&self) -> &Self::Target {
&self.0
}
}
impl<'a> std::ops::DerefMut for PipelineViewportCoarseSampleOrderStateCreateInfoNVBuilder<'a> {
fn deref_mut(&mut self) -> &mut Self::Target {
&mut self.0
}
}
#[doc = "Provided by [`crate::extensions::nv_shading_rate_image`]"]
impl crate::DeviceLoader {
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdBindShadingRateImageNV.html) · Function"]
#[doc(alias = "vkCmdBindShadingRateImageNV")]
pub unsafe fn cmd_bind_shading_rate_image_nv(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
image_view: Option<crate::vk1_0::ImageView>,
image_layout: crate::vk1_0::ImageLayout,
) -> () {
let _function = self
.cmd_bind_shading_rate_image_nv
.expect("`cmd_bind_shading_rate_image_nv` is not loaded");
let _return = _function(
command_buffer as _,
match image_view {
Some(v) => v,
None => Default::default(),
},
image_layout as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetViewportShadingRatePaletteNV.html) · Function"]
#[doc(alias = "vkCmdSetViewportShadingRatePaletteNV")]
pub unsafe fn cmd_set_viewport_shading_rate_palette_nv(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
first_viewport: u32,
shading_rate_palettes : & [crate :: extensions :: nv_shading_rate_image :: ShadingRatePaletteNVBuilder],
) -> () {
let _function = self
.cmd_set_viewport_shading_rate_palette_nv
.expect("`cmd_set_viewport_shading_rate_palette_nv` is not loaded");
let viewport_count = shading_rate_palettes.len();
let _return = _function(
command_buffer as _,
first_viewport as _,
viewport_count as _,
shading_rate_palettes.as_ptr() as _,
);
()
}
#[inline]
#[doc = "[Vulkan Manual Page](https://www.khronos.org/registry/vulkan/specs/1.2-extensions/man/html/vkCmdSetCoarseSampleOrderNV.html) · Function"]
#[doc(alias = "vkCmdSetCoarseSampleOrderNV")]
pub unsafe fn cmd_set_coarse_sample_order_nv(
&self,
command_buffer: crate::vk1_0::CommandBuffer,
sample_order_type: crate::extensions::nv_shading_rate_image::CoarseSampleOrderTypeNV,
custom_sample_orders : & [crate :: extensions :: nv_shading_rate_image :: CoarseSampleOrderCustomNVBuilder],
) -> () {
let _function = self
.cmd_set_coarse_sample_order_nv
.expect("`cmd_set_coarse_sample_order_nv` is not loaded");
let custom_sample_order_count = custom_sample_orders.len();
let _return = _function(
command_buffer as _,
sample_order_type as _,
custom_sample_order_count as _,
custom_sample_orders.as_ptr() as _,
);
()
}
}