Skip to main content

mtl_gpu/texture/
mod.rs

1//! Metal texture resources.
2//!
3//! Corresponds to `Metal/MTLTexture.hpp`.
4//!
5//! Textures store formatted image data for shader access.
6
7mod descriptor;
8mod shared_handle;
9mod texture;
10mod view_descriptor;
11
12pub use descriptor::TextureDescriptor;
13pub use shared_handle::SharedTextureHandle;
14pub use texture::Texture;
15pub use view_descriptor::TextureViewDescriptor;
16
17#[cfg(test)]
18mod tests {
19    use super::*;
20    use crate::enums::PixelFormat;
21    use std::ffi::c_void;
22
23    #[test]
24    fn test_texture_size() {
25        assert_eq!(
26            std::mem::size_of::<Texture>(),
27            std::mem::size_of::<*mut c_void>()
28        );
29    }
30
31    #[test]
32    fn test_texture_descriptor_size() {
33        assert_eq!(
34            std::mem::size_of::<TextureDescriptor>(),
35            std::mem::size_of::<*mut c_void>()
36        );
37    }
38
39    #[test]
40    fn test_texture_descriptor_creation() {
41        let desc = TextureDescriptor::new();
42        assert!(desc.is_some());
43    }
44
45    #[test]
46    fn test_texture_2d_descriptor() {
47        let desc =
48            TextureDescriptor::texture_2d_descriptor(PixelFormat::RGBA8_UNORM, 256, 256, true);
49        assert!(desc.is_some());
50
51        let desc = desc.unwrap();
52        assert_eq!(desc.width(), 256);
53        assert_eq!(desc.height(), 256);
54        assert_eq!(desc.pixel_format(), PixelFormat::RGBA8_UNORM);
55    }
56
57    #[test]
58    fn test_texture_descriptor_setters() {
59        let desc = TextureDescriptor::new().unwrap();
60
61        desc.set_width(512);
62        desc.set_height(512);
63        desc.set_pixel_format(PixelFormat::BGRA8_UNORM);
64        desc.set_texture_type(crate::enums::TextureType::TYPE_2D);
65
66        assert_eq!(desc.width(), 512);
67        assert_eq!(desc.height(), 512);
68        assert_eq!(desc.pixel_format(), PixelFormat::BGRA8_UNORM);
69        assert_eq!(desc.texture_type(), crate::enums::TextureType::TYPE_2D);
70    }
71
72    #[test]
73    fn test_shared_texture_handle_size() {
74        assert_eq!(
75            std::mem::size_of::<SharedTextureHandle>(),
76            std::mem::size_of::<*mut c_void>()
77        );
78    }
79}