let buffer = device
.create_buffer(&vk::BufferCreateInfo::default().size(4096), None)
.unwrap();
let get_object_info: unsafe extern "system" fn(vk::ObjectType, u64) -> *const c_void =
mem::transmute(
(instance.fp_v1_0().get_device_proc_addr)(device.handle(), c"vkGetObjectInfo".as_ptr())
.unwrap(),
);
let cached_buffer_info = get_object_info(vk::ObjectType::BUFFER, buffer.as_raw())
.cast::<vk::BufferCreateInfo<'static>>()
.as_ref()
.unwrap();
assert_eq!(cached_buffer_info.size, 4096);
I wrote a Vulkan layer in Rust for caching various CreateInfo structs and accessing them later.