ash/extensions/ext/
image_compression_control.rs1use crate::vk;
2use crate::{Device, Instance};
3use std::ffi::CStr;
4use std::mem;
5
6#[derive(Clone)]
8pub struct ImageCompressionControl {
9 handle: vk::Device,
10 fp: vk::ExtImageCompressionControlFn,
11}
12
13impl ImageCompressionControl {
14 pub fn new(instance: &Instance, device: &Device) -> Self {
15 let handle = device.handle();
16 let fp = vk::ExtImageCompressionControlFn::load(|name| unsafe {
17 mem::transmute(instance.get_device_proc_addr(handle, name.as_ptr()))
18 });
19 Self { handle, fp }
20 }
21
22 #[inline]
24 pub unsafe fn get_image_subresource_layout2(
25 &self,
26 image: vk::Image,
27 subresource: &vk::ImageSubresource2EXT,
28 layout: &mut vk::SubresourceLayout2EXT,
29 ) {
30 (self.fp.get_image_subresource_layout2_ext)(self.handle, image, subresource, layout)
31 }
32
33 #[inline]
34 pub const fn name() -> &'static CStr {
35 vk::ExtImageCompressionControlFn::name()
36 }
37
38 #[inline]
39 pub fn fp(&self) -> &vk::ExtImageCompressionControlFn {
40 &self.fp
41 }
42
43 #[inline]
44 pub fn device(&self) -> vk::Device {
45 self.handle
46 }
47}