#[non_exhaustive]
#[repr(u64)]
pub enum PipelineStage {
Show 40 variants TopOfPipe = 1, DrawIndirect = 2, VertexInput = 4, VertexShader = 8, TessellationControlShader = 16, TessellationEvaluationShader = 32, GeometryShader = 64, FragmentShader = 128, EarlyFragmentTests = 256, LateFragmentTests = 512, ColorAttachmentOutput = 1_024, ComputeShader = 2_048, AllTransfer = 4_096, BottomOfPipe = 8_192, Host = 16_384, AllGraphics = 32_768, AllCommands = 65_536, Copy = 4_294_967_296, Resolve = 8_589_934_592, Blit = 17_179_869_184, Clear = 34_359_738_368, IndexInput = 68_719_476_736, VertexAttributeInput = 137_438_953_472, PreRasterizationShaders = 274_877_906_944, VideoDecode = 67_108_864, VideoEncode = 134_217_728, TransformFeedback = 16_777_216, ConditionalRendering = 262_144, AccelerationStructureBuild = 33_554_432, RayTracingShader = 2_097_152, FragmentDensityProcess = 8_388_608, FragmentShadingRateAttachment = 4_194_304, CommandPreprocess = 131_072, TaskShader = 524_288, MeshShader = 1_048_576, SubpassShading = 549_755_813_888, InvocationMask = 1_099_511_627_776, AccelerationStructureCopy = 268_435_456, MicromapBuild = 1_073_741_824, OpticalFlow = 536_870_912,
}
Expand description

A single stage in the device’s processing pipeline.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

TopOfPipe = 1

A pseudo-stage representing the start of the pipeline.

§

DrawIndirect = 2

Indirect buffers are read.

§

VertexInput = 4

Vertex and index buffers are read.

It is currently equivalent to setting all of the following flags, but automatically omitting any that are not supported in a given context. It also implicitly includes future flags that are added to Vulkan, if they are not yet supported by Vulkano.

  • index_input
  • vertex_attribute_input
§

VertexShader = 8

Vertex shaders are executed.

§

TessellationControlShader = 16

Tessellation control shaders are executed.

§

TessellationEvaluationShader = 32

Tessellation evaluation shaders are executed.

§

GeometryShader = 64

Geometry shaders are executed.

§

FragmentShader = 128

Fragment shaders are executed.

§

EarlyFragmentTests = 256

Early fragment tests (depth and stencil tests before fragment shading) are performed. Subpass load operations for framebuffer attachments with a depth/stencil format are performed.

§

LateFragmentTests = 512

Late fragment tests (depth and stencil tests after fragment shading) are performed. Subpass store operations for framebuffer attachments with a depth/stencil format are performed.

§

ColorAttachmentOutput = 1_024

The final color values are output from the pipeline after blending. Subpass load and store operations, multisample resolve operations for framebuffer attachments with a color or depth/stencil format, and clear_attachments are performed.

§

ComputeShader = 2_048

Compute shaders are executed.

§

AllTransfer = 4_096

The set of all current and future transfer pipeline stages.

It is currently equivalent to setting all of the following flags, but automatically omitting any that are not supported in a given context. It also implicitly includes future flags that are added to Vulkan, if they are not yet supported by Vulkano.

  • copy
  • blit
  • resolve
  • clear
  • acceleration_structure_copy
§

BottomOfPipe = 8_192

A pseudo-stage representing the end of the pipeline.

§

Host = 16_384

A pseudo-stage representing reads and writes to device memory on the host.

§

AllGraphics = 32_768

The set of all current and future graphics pipeline stages.

It is currently equivalent to setting all of the following flags, but automatically omitting any that are not supported in a given context. It also implicitly includes future flags that are added to Vulkan, if they are not yet supported by Vulkano.

  • draw_indirect
  • task_shader
  • mesh_shader
  • vertex_input
  • vertex_shader
  • tessellation_control_shader
  • tessellation_evaluation_shader
  • geometry_shader
  • fragment_shader
  • early_fragment_tests
  • late_fragment_tests
  • color_attachment_output
  • conditional_rendering
  • transform_feedback
  • fragment_shading_rate_attachment
  • fragment_density_process
  • invocation_mask
§

AllCommands = 65_536

The set of all current and future pipeline stages of all types.

It is currently equivalent to setting all flags in PipelineStages, but automatically omitting any that are not supported in a given context. It also implicitly includes future flags that are added to Vulkan, if they are not yet supported by Vulkano.

§

Copy = 4_294_967_296

The copy_buffer, copy_image, copy_buffer_to_image, copy_image_to_buffer and copy_query_pool_results commands are executed.

§

Resolve = 8_589_934_592

The resolve_image command is executed.

§

Blit = 17_179_869_184

The blit_image command is executed.

§

Clear = 34_359_738_368

The clear_color_image, clear_depth_stencil_image, fill_buffer and update_buffer commands are executed.

§

IndexInput = 68_719_476_736

Index buffers are read.

§

VertexAttributeInput = 137_438_953_472

Vertex buffers are read.

§

PreRasterizationShaders = 274_877_906_944

The various pre-rasterization shader types are executed.

It is currently equivalent to setting all of the following flags, but automatically omitting any that are not supported in a given context. It also implicitly includes future flags that are added to Vulkan, if they are not yet supported by Vulkano.

  • vertex_shader
  • tessellation_control_shader
  • tessellation_evaluation_shader
  • geometry_shader
  • task_shader
  • mesh_shader
§

VideoDecode = 67_108_864

Video decode operations are performed.

§

VideoEncode = 134_217_728

Video encode operations are performed.

§

TransformFeedback = 16_777_216

Vertex attribute output values are written to the transform feedback buffers.

§

ConditionalRendering = 262_144

The predicate of conditional rendering is read.

§

AccelerationStructureBuild = 33_554_432

Acceleration_structure commands are executed.

§

RayTracingShader = 2_097_152

The various ray tracing shader types are executed.

§

FragmentDensityProcess = 8_388_608

The fragment density map is read to generate the fragment areas.

§

FragmentShadingRateAttachment = 4_194_304

The fragment shading rate attachment or shading rate image is read to determine the fragment shading rate for portions of a rasterized primitive.

§

CommandPreprocess = 131_072

Device-side preprocessing for generated commands via the preprocess_generated_commands command is handled.

§

TaskShader = 524_288

Task shaders are executed.

§

MeshShader = 1_048_576

Mesh shaders are executed.

§

SubpassShading = 549_755_813_888

Subpass shading shaders are executed.

§

InvocationMask = 1_099_511_627_776

The invocation mask image is read to optimize ray dispatch.

§

AccelerationStructureCopy = 268_435_456

The copy_acceleration_structure command is executed.

§

MicromapBuild = 1_073_741_824

Micromap commands are executed.

§

OpticalFlow = 536_870_912

Optical flow operations are performed.

Trait Implementations§

source§

impl Clone for PipelineStage

source§

fn clone(&self) -> PipelineStage

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PipelineStage

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<PipelineStage> for PipelineStageFlags

source§

fn from(val: PipelineStage) -> Self

Converts to this type from the input type.
source§

impl From<PipelineStage> for PipelineStageFlags2

source§

fn from(val: PipelineStage) -> Self

Converts to this type from the input type.
source§

impl From<PipelineStage> for PipelineStages

source§

fn from(val: PipelineStage) -> Self

Converts to this type from the input type.
source§

impl FromIterator<PipelineStage> for PipelineStages

source§

fn from_iter<T>(iter: T) -> Selfwhere T: IntoIterator<Item = PipelineStage>,

Creates a value from an iterator. Read more
source§

impl Hash for PipelineStage

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for PipelineStage

source§

fn eq(&self, other: &PipelineStage) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl TryFrom<PipelineStageFlags2> for PipelineStage

§

type Error = ()

The type returned in the event of a conversion error.
source§

fn try_from(val: PipelineStageFlags2) -> Result<Self, Self::Error>

Performs the conversion.
source§

impl Copy for PipelineStage

source§

impl Eq for PipelineStage

source§

impl StructuralEq for PipelineStage

source§

impl StructuralPartialEq for PipelineStage

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

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

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.