extensions/ext: Add VK_EXT_sample_locations (#616)
This commit is contained in:
parent
e76830bdef
commit
a672094c97
|
@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
|
||||
### Added
|
||||
|
||||
- Added `VK_EXT_sample_locations` device extension (#616)
|
||||
- Update Vulkan-Headers to 1.3.211 (#605, #608)
|
||||
- Added `VK_EXT_image_drm_format_modifier` device extension (#603)
|
||||
|
||||
|
|
|
@ -13,6 +13,7 @@ pub use self::image_drm_format_modifier::ImageDrmFormatModifier;
|
|||
pub use self::metal_surface::MetalSurface;
|
||||
pub use self::physical_device_drm::PhysicalDeviceDrm;
|
||||
pub use self::private_data::PrivateData;
|
||||
pub use self::sample_locations::SampleLocations;
|
||||
pub use self::tooling_info::ToolingInfo;
|
||||
|
||||
mod buffer_device_address;
|
||||
|
@ -30,4 +31,5 @@ mod image_drm_format_modifier;
|
|||
mod metal_surface;
|
||||
mod physical_device_drm;
|
||||
mod private_data;
|
||||
mod sample_locations;
|
||||
mod tooling_info;
|
||||
|
|
50
ash/src/extensions/ext/sample_locations.rs
Normal file
50
ash/src/extensions/ext/sample_locations.rs
Normal file
|
@ -0,0 +1,50 @@
|
|||
use crate::vk;
|
||||
use crate::{Entry, Instance};
|
||||
use std::ffi::CStr;
|
||||
use std::mem;
|
||||
|
||||
/// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/VK_EXT_sample_locations.html>
|
||||
#[derive(Clone)]
|
||||
pub struct SampleLocations {
|
||||
fp: vk::ExtSampleLocationsFn,
|
||||
}
|
||||
|
||||
impl SampleLocations {
|
||||
pub fn new(entry: &Entry, instance: &Instance) -> Self {
|
||||
let fp = vk::ExtSampleLocationsFn::load(|name| unsafe {
|
||||
mem::transmute(entry.get_instance_proc_addr(instance.handle(), name.as_ptr()))
|
||||
});
|
||||
Self { fp }
|
||||
}
|
||||
|
||||
/// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkGetPhysicalDeviceMultisamplePropertiesEXT.html>
|
||||
pub unsafe fn get_physical_device_multisample_properties(
|
||||
&self,
|
||||
physical_device: vk::PhysicalDevice,
|
||||
samples: vk::SampleCountFlags,
|
||||
multisample_properties: &mut vk::MultisamplePropertiesEXT,
|
||||
) {
|
||||
(self.fp.get_physical_device_multisample_properties_ext)(
|
||||
physical_device,
|
||||
samples,
|
||||
multisample_properties,
|
||||
)
|
||||
}
|
||||
|
||||
/// <https://www.khronos.org/registry/vulkan/specs/1.3-extensions/man/html/vkCmdSetSampleLocationsEXT.html>
|
||||
pub unsafe fn cmd_set_sample_locations(
|
||||
&self,
|
||||
command_buffer: vk::CommandBuffer,
|
||||
sample_locations_info: &vk::SampleLocationsInfoEXT,
|
||||
) {
|
||||
(self.fp.cmd_set_sample_locations_ext)(command_buffer, sample_locations_info)
|
||||
}
|
||||
|
||||
pub const fn name() -> &'static CStr {
|
||||
vk::ExtSampleLocationsFn::name()
|
||||
}
|
||||
|
||||
pub fn fp(&self) -> &vk::ExtSampleLocationsFn {
|
||||
&self.fp
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue