Skip to main content

mtl_gpu/argument/
mod.rs

1//! Metal argument types for reflection.
2//!
3//! Corresponds to `Metal/MTLArgument.hpp`.
4//!
5//! These types provide reflection information about function arguments.
6
7mod argument;
8mod array_type;
9mod binding;
10mod buffer_binding;
11mod encoder;
12mod object_payload_binding;
13mod pointer_type;
14mod struct_member;
15mod struct_type;
16mod tensor_binding;
17mod tensor_reference_type;
18mod texture_binding;
19mod texture_reference_type;
20mod threadgroup_binding;
21mod type_info;
22
23pub use argument::Argument;
24pub use array_type::ArrayType;
25pub use binding::Binding;
26pub use buffer_binding::BufferBinding;
27pub use encoder::ArgumentEncoder;
28pub use object_payload_binding::ObjectPayloadBinding;
29pub use pointer_type::PointerType;
30pub use struct_member::StructMember;
31pub use struct_type::StructType;
32pub use tensor_binding::TensorBinding;
33pub use tensor_reference_type::TensorReferenceType;
34pub use texture_binding::TextureBinding;
35pub use texture_reference_type::TextureReferenceType;
36pub use threadgroup_binding::ThreadgroupBinding;
37pub use type_info::Type;
38
39use mtl_foundation::UInteger;
40
41/// The maximum stride value for static attributes.
42///
43/// C++ equivalent: `MTL::AttributeStrideStatic`
44pub const ATTRIBUTE_STRIDE_STATIC: UInteger = UInteger::MAX;
45
46#[cfg(test)]
47mod tests {
48    use super::*;
49    use std::ffi::c_void;
50
51    #[test]
52    fn test_type_size() {
53        assert_eq!(
54            std::mem::size_of::<Type>(),
55            std::mem::size_of::<*mut c_void>()
56        );
57    }
58
59    #[test]
60    fn test_argument_size() {
61        assert_eq!(
62            std::mem::size_of::<Argument>(),
63            std::mem::size_of::<*mut c_void>()
64        );
65    }
66
67    #[test]
68    fn test_binding_size() {
69        assert_eq!(
70            std::mem::size_of::<Binding>(),
71            std::mem::size_of::<*mut c_void>()
72        );
73    }
74
75    #[test]
76    fn test_struct_type_size() {
77        assert_eq!(
78            std::mem::size_of::<StructType>(),
79            std::mem::size_of::<*mut c_void>()
80        );
81    }
82
83    #[test]
84    fn test_array_type_size() {
85        assert_eq!(
86            std::mem::size_of::<ArrayType>(),
87            std::mem::size_of::<*mut c_void>()
88        );
89    }
90
91    #[test]
92    fn test_pointer_type_size() {
93        assert_eq!(
94            std::mem::size_of::<PointerType>(),
95            std::mem::size_of::<*mut c_void>()
96        );
97    }
98
99    #[test]
100    fn test_argument_encoder_size() {
101        assert_eq!(
102            std::mem::size_of::<ArgumentEncoder>(),
103            std::mem::size_of::<*mut c_void>()
104        );
105    }
106
107    #[test]
108    fn test_attribute_stride_static() {
109        assert_eq!(ATTRIBUTE_STRIDE_STATIC, UInteger::MAX);
110    }
111}