pub use crate::backend::DescriptorSetLayout;
use crate::shader::ShaderStageFlags;
bitflags::bitflags! {
#[cfg_attr(feature = "serde-1", derive(serde::Serialize, serde::Deserialize))]
pub struct DescriptorBindingFlags: u32 {
const UPDATE_AFTER_BIND = 0x00000001;
const UPDATE_UNUSED_WHILE_PENDING = 0x00000002;
const PARTIALLY_BOUND = 0x00000004;
const VARIABLE_DESCRIPTOR_COUNT = 0x00000008;
}
}
bitflags::bitflags! {
#[cfg_attr(feature = "serde-1", derive(serde::Serialize, serde::Deserialize))]
pub struct DescriptorSetLayoutFlags: u32 {
const PUSH_DESCRIPTOR = 0x00000001;
const UPDATE_AFTER_BIND_POOL = 0x00000002;
}
}
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde-1", derive(serde::Serialize, serde::Deserialize))]
pub struct DescriptorSetLayoutInfo {
pub bindings: Vec<DescriptorSetLayoutBinding>,
pub flags: DescriptorSetLayoutFlags,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde-1", derive(serde::Serialize, serde::Deserialize))]
pub struct DescriptorSetLayoutBinding {
pub binding: u32,
pub ty: DescriptorType,
pub count: u32,
pub stages: ShaderStageFlags,
pub flags: DescriptorBindingFlags,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[cfg_attr(feature = "serde-1", derive(serde::Serialize, serde::Deserialize))]
pub enum DescriptorType {
Sampler,
CombinedImageSampler,
SampledImage,
StorageImage,
UniformBuffer,
StorageBuffer,
UniformBufferDynamic,
StorageBufferDynamic,
InputAttachment,
AccelerationStructure,
}