02_caps_buffer_texture/
02_caps_buffer_texture.rs1use apple_metal::{gpu_family, pixel_format, resource_options, MetalDevice, TextureDescriptor};
2
3fn main() {
4 let d = MetalDevice::system_default().expect("no Metal");
5 println!("unified memory: {}", d.has_unified_memory());
6 println!(
7 "recommended max working set: {} MB",
8 d.recommended_max_working_set_size() / (1024 * 1024)
9 );
10 println!("supports Metal3: {}", d.supports_family(gpu_family::METAL3));
11 println!("supports Apple7: {}", d.supports_family(gpu_family::APPLE7));
12
13 let buf = d
14 .new_buffer(4096, resource_options::STORAGE_MODE_SHARED)
15 .expect("buffer create failed");
16 println!(
17 "buffer {} bytes, contents={:?}",
18 buf.length(),
19 buf.contents().is_some()
20 );
21 let n = buf.write_bytes(b"hello metal");
22 println!("wrote {n} bytes");
23
24 let tx = d
25 .new_texture(TextureDescriptor::new_2d(
26 256,
27 256,
28 pixel_format::BGRA8UNORM,
29 ))
30 .expect("texture create failed");
31 println!(
32 "texture {}x{} fmt={}",
33 tx.width(),
34 tx.height(),
35 tx.pixel_format()
36 );
37}