Skip to content

Commit

Permalink
extensions/ext: Add VK_EXT_sample_locations
Browse files Browse the repository at this point in the history
  • Loading branch information
MarijnS95 committed Apr 28, 2022
1 parent 61ab543 commit 5cc10ff
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 0 deletions.
1 change: 1 addition & 0 deletions Changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

### Added

- Added `VK_EXT_sample_locations` instance extension (#616)
- Update Vulkan-Headers to 1.3.211 (#605, #608)

### Removed
Expand Down
2 changes: 2 additions & 0 deletions ash/src/extensions/ext/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ pub use self::headless_surface::HeadlessSurface;
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;
Expand All @@ -28,4 +29,5 @@ mod headless_surface;
mod metal_surface;
mod physical_device_drm;
mod private_data;
mod sample_locations;
mod tooling_info;
51 changes: 51 additions & 0 deletions ash/src/extensions/ext/sample_locations.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
use crate::prelude::*;
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
}
}

0 comments on commit 5cc10ff

Please sign in to comment.