wgpu_core/command/
encoder_command.rs

1use core::convert::Infallible;
2
3use alloc::{string::String, sync::Arc, vec::Vec};
4
5use crate::{
6    id,
7    resource::{Buffer, QuerySet, Texture},
8};
9
10#[derive(Clone, Debug)]
11#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12pub enum Command {
13    CopyBufferToBuffer {
14        src: id::BufferId,
15        src_offset: wgt::BufferAddress,
16        dst: id::BufferId,
17        dst_offset: wgt::BufferAddress,
18        size: Option<wgt::BufferAddress>,
19    },
20    CopyBufferToTexture {
21        src: wgt::TexelCopyBufferInfo<id::BufferId>,
22        dst: wgt::TexelCopyTextureInfo<id::TextureId>,
23        size: wgt::Extent3d,
24    },
25    CopyTextureToBuffer {
26        src: wgt::TexelCopyTextureInfo<id::TextureId>,
27        dst: wgt::TexelCopyBufferInfo<id::BufferId>,
28        size: wgt::Extent3d,
29    },
30    CopyTextureToTexture {
31        src: wgt::TexelCopyTextureInfo<id::TextureId>,
32        dst: wgt::TexelCopyTextureInfo<id::TextureId>,
33        size: wgt::Extent3d,
34    },
35    ClearBuffer {
36        dst: id::BufferId,
37        offset: wgt::BufferAddress,
38        size: Option<wgt::BufferAddress>,
39    },
40    ClearTexture {
41        dst: id::TextureId,
42        subresource_range: wgt::ImageSubresourceRange,
43    },
44    WriteTimestamp {
45        query_set_id: id::QuerySetId,
46        query_index: u32,
47    },
48    ResolveQuerySet {
49        query_set_id: id::QuerySetId,
50        start_query: u32,
51        query_count: u32,
52        destination: id::BufferId,
53        destination_offset: wgt::BufferAddress,
54    },
55    PushDebugGroup(String),
56    PopDebugGroup,
57    InsertDebugMarker(String),
58    RunComputePass {
59        base: crate::command::BasePass<crate::command::ComputeCommand, Infallible>,
60        timestamp_writes: Option<crate::command::PassTimestampWrites>,
61    },
62    RunRenderPass {
63        base: crate::command::BasePass<crate::command::RenderCommand, Infallible>,
64        target_colors: Vec<Option<crate::command::RenderPassColorAttachment>>,
65        target_depth_stencil: Option<crate::command::RenderPassDepthStencilAttachment>,
66        timestamp_writes: Option<crate::command::PassTimestampWrites>,
67        occlusion_query_set_id: Option<id::QuerySetId>,
68    },
69    BuildAccelerationStructures {
70        blas: Vec<crate::ray_tracing::TraceBlasBuildEntry>,
71        tlas: Vec<crate::ray_tracing::TraceTlasPackage>,
72    },
73}
74
75#[derive(Clone, Debug)]
76pub enum ArcCommand {
77    CopyBufferToBuffer {
78        src: Arc<Buffer>,
79        src_offset: wgt::BufferAddress,
80        dst: Arc<Buffer>,
81        dst_offset: wgt::BufferAddress,
82        size: Option<wgt::BufferAddress>,
83    },
84    CopyBufferToTexture {
85        src: wgt::TexelCopyBufferInfo<Arc<Buffer>>,
86        dst: wgt::TexelCopyTextureInfo<Arc<Texture>>,
87        size: wgt::Extent3d,
88    },
89    CopyTextureToBuffer {
90        src: wgt::TexelCopyTextureInfo<Arc<Texture>>,
91        dst: wgt::TexelCopyBufferInfo<Arc<Buffer>>,
92        size: wgt::Extent3d,
93    },
94    CopyTextureToTexture {
95        src: wgt::TexelCopyTextureInfo<Arc<Texture>>,
96        dst: wgt::TexelCopyTextureInfo<Arc<Texture>>,
97        size: wgt::Extent3d,
98    },
99    ClearBuffer {
100        dst: Arc<Buffer>,
101        offset: wgt::BufferAddress,
102        size: Option<wgt::BufferAddress>,
103    },
104    ClearTexture {
105        dst: Arc<Texture>,
106        subresource_range: wgt::ImageSubresourceRange,
107    },
108    WriteTimestamp {
109        query_set: Arc<QuerySet>,
110        query_index: u32,
111    },
112    ResolveQuerySet {
113        query_set: Arc<QuerySet>,
114        start_query: u32,
115        query_count: u32,
116        destination: Arc<Buffer>,
117        destination_offset: wgt::BufferAddress,
118    },
119    PushDebugGroup(String),
120    PopDebugGroup,
121    InsertDebugMarker(String),
122    RunComputePass {
123        pass: super::BasePass<super::ArcComputeCommand, Infallible>,
124        timestamp_writes: Option<super::ArcPassTimestampWrites>,
125    },
126    RunRenderPass {
127        pass: super::BasePass<super::ArcRenderCommand, Infallible>,
128        color_attachments: super::ArcRenderPassColorAttachmentArray,
129        depth_stencil_attachment: Option<super::ArcRenderPassDepthStencilAttachment>,
130        timestamp_writes: Option<super::ArcPassTimestampWrites>,
131        occlusion_query_set: Option<Arc<QuerySet>>,
132    },
133    BuildAccelerationStructures {
134        blas: Vec<crate::ray_tracing::ArcBlasBuildEntry>,
135        tlas: Vec<crate::ray_tracing::ArcTlasPackage>,
136    },
137    TransitionResources {
138        buffer_transitions: Vec<wgt::BufferTransition<Arc<Buffer>>>,
139        texture_transitions: Vec<wgt::TextureTransition<Arc<Texture>>>,
140    },
141}