rafx_framework/shaders/
util_fill_buffer_comp.rs

1// This code is auto-generated by the shader processor.
2
3#[allow(unused_imports)]
4use rafx_api::RafxResult;
5
6#[allow(unused_imports)]
7use crate::{
8    DescriptorSetAllocator, DescriptorSetArc, DescriptorSetBindings, DescriptorSetInitializer,
9    DescriptorSetWriter, DescriptorSetWriterContext, DynDescriptorSet, ImageViewResource,
10    ResourceArc,
11};
12
13#[derive(Copy, Clone, Debug)]
14#[repr(C)]
15pub struct ClearBufferConfigStd140 {
16    pub buffer_bytes_div_by_four: u32, // +0 (size: 4)
17    pub fill_value: u32,               // +4 (size: 4)
18    pub num_workgroups_x: u32,         // +8 (size: 4)
19    pub _padding0: [u8; 4],            // +12 (size: 4)
20} // 16 bytes
21
22impl Default for ClearBufferConfigStd140 {
23    fn default() -> Self {
24        ClearBufferConfigStd140 {
25            buffer_bytes_div_by_four: <u32>::default(),
26            fill_value: <u32>::default(),
27            num_workgroups_x: <u32>::default(),
28            _padding0: [u8::default(); 4],
29        }
30    }
31}
32
33pub type ClearBufferConfigUniform = ClearBufferConfigStd140;
34
35pub const CONFIG_DESCRIPTOR_SET_INDEX: usize = 0;
36pub const CONFIG_DESCRIPTOR_BINDING_INDEX: usize = 0;
37pub const DATA_DESCRIPTOR_SET_INDEX: usize = 0;
38pub const DATA_DESCRIPTOR_BINDING_INDEX: usize = 1;
39
40pub struct DescriptorSet0Args<'a> {
41    pub config: &'a ClearBufferConfigUniform,
42}
43
44impl<'a> DescriptorSetInitializer<'a> for DescriptorSet0Args<'a> {
45    type Output = DescriptorSet0;
46
47    fn create_dyn_descriptor_set(
48        descriptor_set: DynDescriptorSet,
49        args: Self,
50    ) -> Self::Output {
51        let mut descriptor = DescriptorSet0(descriptor_set);
52        descriptor.set_args(args);
53        descriptor
54    }
55
56    fn create_descriptor_set(
57        descriptor_set_allocator: &mut DescriptorSetAllocator,
58        descriptor_set: DynDescriptorSet,
59        args: Self,
60    ) -> RafxResult<DescriptorSetArc> {
61        let mut descriptor = Self::create_dyn_descriptor_set(descriptor_set, args);
62        descriptor.0.flush(descriptor_set_allocator)?;
63        Ok(descriptor.0.descriptor_set().clone())
64    }
65}
66
67impl<'a> DescriptorSetWriter<'a> for DescriptorSet0Args<'a> {
68    fn write_to(
69        descriptor_set: &mut DescriptorSetWriterContext,
70        args: Self,
71    ) {
72        descriptor_set.set_buffer_data(CONFIG_DESCRIPTOR_BINDING_INDEX as u32, args.config);
73    }
74}
75
76pub struct DescriptorSet0(pub DynDescriptorSet);
77
78impl DescriptorSet0 {
79    pub fn set_args_static(
80        descriptor_set: &mut DynDescriptorSet,
81        args: DescriptorSet0Args,
82    ) {
83        descriptor_set.set_buffer_data(CONFIG_DESCRIPTOR_BINDING_INDEX as u32, args.config);
84    }
85
86    pub fn set_args(
87        &mut self,
88        args: DescriptorSet0Args,
89    ) {
90        self.set_config(args.config);
91    }
92
93    pub fn set_config(
94        &mut self,
95        config: &ClearBufferConfigUniform,
96    ) {
97        self.0
98            .set_buffer_data(CONFIG_DESCRIPTOR_BINDING_INDEX as u32, config);
99    }
100
101    pub fn flush(
102        &mut self,
103        descriptor_set_allocator: &mut DescriptorSetAllocator,
104    ) -> RafxResult<()> {
105        self.0.flush(descriptor_set_allocator)
106    }
107}
108
109#[cfg(test)]
110mod test {
111    use super::*;
112
113    #[test]
114    fn test_struct_clear_buffer_config_std140() {
115        assert_eq!(std::mem::size_of::<ClearBufferConfigStd140>(), 16);
116        assert_eq!(std::mem::size_of::<u32>(), 4);
117        assert_eq!(std::mem::align_of::<u32>(), 4);
118        assert_eq!(
119            memoffset::offset_of!(ClearBufferConfigStd140, buffer_bytes_div_by_four),
120            0
121        );
122        assert_eq!(std::mem::size_of::<u32>(), 4);
123        assert_eq!(std::mem::align_of::<u32>(), 4);
124        assert_eq!(
125            memoffset::offset_of!(ClearBufferConfigStd140, fill_value),
126            4
127        );
128        assert_eq!(std::mem::size_of::<u32>(), 4);
129        assert_eq!(std::mem::align_of::<u32>(), 4);
130        assert_eq!(
131            memoffset::offset_of!(ClearBufferConfigStd140, num_workgroups_x),
132            8
133        );
134        assert_eq!(std::mem::size_of::<[u8; 4]>(), 4);
135        assert_eq!(std::mem::align_of::<[u8; 4]>(), 1);
136        assert_eq!(
137            memoffset::offset_of!(ClearBufferConfigStd140, _padding0),
138            12
139        );
140    }
141}