1    type GpuState =
2        | Draw command_buffer : VkCommandBuffer
3               pipeline : Pipeline
4               vertex_buffer : VertexBuffer
5               index_buffer : IndexBuffer
6               index_count : u32
7               index_offset : u32
8               descriptor_set_states : [DescriptorSetState; Renderer.max_uniform_sets]
9               pipeline_push_constant_stages : ShaderStageFlags
10   
11       | Compute command_buffer : VkCommandBuffer
12                 shader : ComputeShader
13                 pipeline : ComputePipeline
14                 local_group_size : [u32; 3]
15                 descriptor_set_states : [DescriptorSetState; Renderer.max_uniform_sets]
16                 images_back_to_read : mut Set<Image>
17                 pipeline_push_constant_stages : ShaderStageFlags
18       | None
19   
20       def draw = case self of
21           is GpuState/Draw -> self
22           else -> fail
23   
24       def compute = case self of
25           is GpuState/Compute -> self
26           else -> fail
27   
28       def draw_mut @mut = case self of
29           is GpuState/Draw -> self
30           else -> fail
31   
32       def compute_mut @mut = case self of
33           is GpuState/Compute -> self
34           else -> fail
35   
36       def is_none = self == None
37