[][src]Struct vulkano::descriptor::descriptor::DescriptorDesc

pub struct DescriptorDesc {
    pub ty: DescriptorDescTy,
    pub array_count: u32,
    pub stages: ShaderStages,
    pub readonly: bool,
}

Contains the exact description of a single descriptor.

Note: You are free to fill a DescriptorDesc struct the way you want, but its validity will be checked when you create a pipeline layout, a descriptor set, or when you try to bind a descriptor set.

Fields

ty: DescriptorDescTy

Describes the content and layout of each array element of a descriptor.

array_count: u32

How many array elements this descriptor is made of. The value 0 is invalid and may trigger a panic depending on the situation.

stages: ShaderStages

Which shader stages are going to access this descriptor.

readonly: bool

True if the attachment is only ever read by the shader. False if it is also written.

Methods

impl DescriptorDesc[src]

pub fn is_superset_of(
    &self,
    other: &DescriptorDesc
) -> Result<(), DescriptorDescSupersetError>
[src]

Checks whether we are a superset of another descriptor.

Returns true if self is the same descriptor as other, or if self is the same as other but with a larger array elements count and/or more shader stages.

Example

use vulkano::descriptor::descriptor::DescriptorDesc;
use vulkano::descriptor::descriptor::DescriptorDescTy::*;
use vulkano::descriptor::descriptor::ShaderStages;

let desc_super = DescriptorDesc{ ty: Sampler, array_count: 2, stages: ShaderStages{
  vertex: true,
  tessellation_control: true,
  tessellation_evaluation: true,
  geometry: true,
  fragment: true,
  compute: true
}, readonly: false };
let desc_sub = DescriptorDesc{ ty: Sampler, array_count: 1, stages: ShaderStages{
  vertex: true,
  tessellation_control: false,
  tessellation_evaluation: false,
  geometry: false,
  fragment: true,
  compute: false
}, readonly: true };

assert_eq!(desc_super.is_superset_of(&desc_sub).unwrap(), ());

pub fn union(&self, other: &DescriptorDesc) -> Option<DescriptorDesc>[src]

Builds a DescriptorDesc that is the union of self and other, if possible.

The returned value will be a superset of both self and other.

Example

use vulkano::descriptor::descriptor::DescriptorDesc;
use vulkano::descriptor::descriptor::DescriptorDescTy::*;
use vulkano::descriptor::descriptor::ShaderStages;

let desc_part1 = DescriptorDesc{ ty: Sampler, array_count: 2, stages: ShaderStages{
  vertex: true,
  tessellation_control: true,
  tessellation_evaluation: false,
  geometry: true,
  fragment: false,
  compute: true
}, readonly: false };

let desc_part2 = DescriptorDesc{ ty: Sampler, array_count: 1, stages: ShaderStages{
  vertex: true,
  tessellation_control: false,
  tessellation_evaluation: true,
  geometry: false,
  fragment: true,
  compute: true
}, readonly: true };

let desc_union = DescriptorDesc{ ty: Sampler, array_count: 2, stages: ShaderStages{
  vertex: true,
  tessellation_control: true,
  tessellation_evaluation: true,
  geometry: true,
  fragment: true,
  compute: true
}, readonly: false };

assert_eq!(desc_part1.union(&desc_part2), Some(desc_union));

pub fn pipeline_stages_and_access(&self) -> (PipelineStages, AccessFlagBits)[src]

Returns the pipeline stages and access flags corresponding to the usage of this descriptor.

Panic

Panics if the type is Sampler.

Trait Implementations

impl Clone for DescriptorDesc[src]

impl PartialEq<DescriptorDesc> for DescriptorDesc[src]

impl Debug for DescriptorDesc[src]

impl StructuralPartialEq for DescriptorDesc[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Content for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> From<T> for T[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Any for T where
    T: 'static + ?Sized
[src]