Skip to content

Commit

Permalink
Remove the ash::vk stutter (#2640)
Browse files Browse the repository at this point in the history
  • Loading branch information
marc0246 authored Feb 7, 2025
1 parent 74d7dc5 commit 478bad3
Show file tree
Hide file tree
Showing 75 changed files with 1,629 additions and 1,658 deletions.
98 changes: 48 additions & 50 deletions vulkano/src/acceleration_structure.rs
Original file line number Diff line number Diff line change
Expand Up @@ -93,14 +93,15 @@ use crate::{
DeviceAddress, DeviceSize, NonNullDeviceAddress, Packed24_8, Requires, RequiresAllOf,
RequiresOneOf, Validated, ValidationError, VulkanError, VulkanObject,
};
use ash::vk;
use bytemuck::{Pod, Zeroable};
use std::{fmt::Debug, hash::Hash, mem::MaybeUninit, num::NonZeroU64, ptr, sync::Arc};

/// An opaque data structure that is used to accelerate spatial queries on geometry data.
#[derive(Debug)]
pub struct AccelerationStructure {
device: InstanceOwnedDebugWrapper<Arc<Device>>,
handle: ash::vk::AccelerationStructureKHR,
handle: vk::AccelerationStructureKHR,
id: NonZeroU64,

create_flags: AccelerationStructureCreateFlags,
Expand Down Expand Up @@ -195,7 +196,7 @@ impl AccelerationStructure {
/// - `create_info` must match the info used to create the object.
pub unsafe fn from_handle(
device: Arc<Device>,
handle: ash::vk::AccelerationStructureKHR,
handle: vk::AccelerationStructureKHR,
create_info: AccelerationStructureCreateInfo,
) -> Arc<Self> {
let AccelerationStructureCreateInfo {
Expand Down Expand Up @@ -245,7 +246,7 @@ impl AccelerationStructure {
/// The device address of the acceleration structure may be different from the device address
/// of the underlying buffer.
pub fn device_address(&self) -> NonNullDeviceAddress {
let info_vk = ash::vk::AccelerationStructureDeviceAddressInfoKHR::default()
let info_vk = vk::AccelerationStructureDeviceAddressInfoKHR::default()
.acceleration_structure(self.handle);
let fns = self.device.fns();
let ptr = unsafe {
Expand Down Expand Up @@ -273,7 +274,7 @@ impl Drop for AccelerationStructure {
}

unsafe impl VulkanObject for AccelerationStructure {
type Handle = ash::vk::AccelerationStructureKHR;
type Handle = vk::AccelerationStructureKHR;

#[inline]
fn handle(&self) -> Self::Handle {
Expand Down Expand Up @@ -409,15 +410,15 @@ impl AccelerationStructureCreateInfo {
Ok(())
}

pub(crate) fn to_vk(&self) -> ash::vk::AccelerationStructureCreateInfoKHR<'static> {
pub(crate) fn to_vk(&self) -> vk::AccelerationStructureCreateInfoKHR<'static> {
let &Self {
create_flags,
ref buffer,
ty,
_ne: _,
} = self;

ash::vk::AccelerationStructureCreateInfoKHR::default()
vk::AccelerationStructureCreateInfoKHR::default()
.create_flags(create_flags.into())
.buffer(buffer.buffer().handle())
.offset(buffer.offset())
Expand Down Expand Up @@ -611,7 +612,7 @@ impl AccelerationStructureBuildGeometryInfo {
pub(crate) fn to_vk<'a>(
&self,
fields1_vk: &'a AccelerationStructureBuildGeometryInfoFields1Vk,
) -> ash::vk::AccelerationStructureBuildGeometryInfoKHR<'a> {
) -> vk::AccelerationStructureBuildGeometryInfoKHR<'a> {
let &Self {
flags,
ref mode,
Expand All @@ -622,7 +623,7 @@ impl AccelerationStructureBuildGeometryInfo {
} = self;
let AccelerationStructureBuildGeometryInfoFields1Vk { geometries_vk } = fields1_vk;

ash::vk::AccelerationStructureBuildGeometryInfoKHR::default()
vk::AccelerationStructureBuildGeometryInfoKHR::default()
.ty(geometries.to_vk_ty())
.flags(flags.into())
.mode(mode.to_vk())
Expand Down Expand Up @@ -669,7 +670,7 @@ impl AccelerationStructureBuildGeometryInfo {
}

pub(crate) struct AccelerationStructureBuildGeometryInfoFields1Vk {
pub(crate) geometries_vk: Vec<ash::vk::AccelerationStructureGeometryKHR<'static>>,
pub(crate) geometries_vk: Vec<vk::AccelerationStructureGeometryKHR<'static>>,
}

vulkan_bitflags! {
Expand Down Expand Up @@ -741,26 +742,23 @@ vulkan_bitflags! {
#[repr(i32)]
pub enum BuildAccelerationStructureMode {
/// Build a new acceleration structure from scratch.
Build = ash::vk::BuildAccelerationStructureModeKHR::BUILD.as_raw(),
Build = vk::BuildAccelerationStructureModeKHR::BUILD.as_raw(),

/// Update a previously built source acceleration structure with new data, storing the
/// updated structure in the destination. The source and destination acceleration structures
/// may be the same, which will do the update in-place.
///
/// The destination acceleration structure must have been built with the
/// [`BuildAccelerationStructureFlags::ALLOW_UPDATE`] flag.
Update(Arc<AccelerationStructure>) =
ash::vk::BuildAccelerationStructureModeKHR::UPDATE.as_raw(),
Update(Arc<AccelerationStructure>) = vk::BuildAccelerationStructureModeKHR::UPDATE.as_raw(),
}

impl BuildAccelerationStructureMode {
pub(crate) fn to_vk(&self) -> ash::vk::BuildAccelerationStructureModeKHR {
pub(crate) fn to_vk(&self) -> vk::BuildAccelerationStructureModeKHR {
match self {
BuildAccelerationStructureMode::Build => {
ash::vk::BuildAccelerationStructureModeKHR::BUILD
}
BuildAccelerationStructureMode::Build => vk::BuildAccelerationStructureModeKHR::BUILD,
BuildAccelerationStructureMode::Update(_) => {
ash::vk::BuildAccelerationStructureModeKHR::UPDATE
vk::BuildAccelerationStructureModeKHR::UPDATE
}
}
}
Expand Down Expand Up @@ -790,16 +788,16 @@ impl AccelerationStructureGeometries {
}
}

pub(crate) fn to_vk_ty(&self) -> ash::vk::AccelerationStructureTypeKHR {
pub(crate) fn to_vk_ty(&self) -> vk::AccelerationStructureTypeKHR {
match self {
AccelerationStructureGeometries::Triangles(_) => {
ash::vk::AccelerationStructureTypeKHR::BOTTOM_LEVEL
vk::AccelerationStructureTypeKHR::BOTTOM_LEVEL
}
AccelerationStructureGeometries::Aabbs(_) => {
ash::vk::AccelerationStructureTypeKHR::BOTTOM_LEVEL
vk::AccelerationStructureTypeKHR::BOTTOM_LEVEL
}
AccelerationStructureGeometries::Instances(_) => {
ash::vk::AccelerationStructureTypeKHR::TOP_LEVEL
vk::AccelerationStructureTypeKHR::TOP_LEVEL
}
}
}
Expand Down Expand Up @@ -986,7 +984,7 @@ impl AccelerationStructureGeometryTrianglesData {
Ok(())
}

pub(crate) fn to_vk(&self) -> ash::vk::AccelerationStructureGeometryKHR<'static> {
pub(crate) fn to_vk(&self) -> vk::AccelerationStructureGeometryKHR<'static> {
let &AccelerationStructureGeometryTrianglesData {
flags,
vertex_format,
Expand All @@ -998,10 +996,10 @@ impl AccelerationStructureGeometryTrianglesData {
_ne,
} = self;

ash::vk::AccelerationStructureGeometryKHR::default()
.geometry_type(ash::vk::GeometryTypeKHR::TRIANGLES)
.geometry(ash::vk::AccelerationStructureGeometryDataKHR {
triangles: ash::vk::AccelerationStructureGeometryTrianglesDataKHR::default()
vk::AccelerationStructureGeometryKHR::default()
.geometry_type(vk::GeometryTypeKHR::TRIANGLES)
.geometry(vk::AccelerationStructureGeometryDataKHR {
triangles: vk::AccelerationStructureGeometryTrianglesDataKHR::default()
.vertex_format(vertex_format.into())
.vertex_data(vertex_data.as_ref().map_or_else(
Default::default,
Expand All @@ -1012,7 +1010,7 @@ impl AccelerationStructureGeometryTrianglesData {
.index_type(
index_data
.as_ref()
.map_or(ash::vk::IndexType::NONE_KHR, |index_data| {
.map_or(vk::IndexType::NONE_KHR, |index_data| {
index_data.index_type().into()
}),
)
Expand Down Expand Up @@ -1098,18 +1096,18 @@ impl AccelerationStructureGeometryAabbsData {
Ok(())
}

pub(crate) fn to_vk(&self) -> ash::vk::AccelerationStructureGeometryKHR<'static> {
pub(crate) fn to_vk(&self) -> vk::AccelerationStructureGeometryKHR<'static> {
let &Self {
flags,
ref data,
stride,
_ne: _,
} = self;

ash::vk::AccelerationStructureGeometryKHR::default()
.geometry_type(ash::vk::GeometryTypeKHR::AABBS)
.geometry(ash::vk::AccelerationStructureGeometryDataKHR {
aabbs: ash::vk::AccelerationStructureGeometryAabbsDataKHR::default()
vk::AccelerationStructureGeometryKHR::default()
.geometry_type(vk::GeometryTypeKHR::AABBS)
.geometry(vk::AccelerationStructureGeometryDataKHR {
aabbs: vk::AccelerationStructureGeometryAabbsDataKHR::default()
.data(data.as_ref().map_or_else(
Default::default,
Subbuffer::to_vk_device_or_host_address_const,
Expand Down Expand Up @@ -1179,7 +1177,7 @@ impl AccelerationStructureGeometryInstancesData {
Ok(())
}

pub(crate) fn to_vk(&self) -> ash::vk::AccelerationStructureGeometryKHR<'static> {
pub(crate) fn to_vk(&self) -> vk::AccelerationStructureGeometryKHR<'static> {
let &Self {
flags,
ref data,
Expand All @@ -1188,10 +1186,10 @@ impl AccelerationStructureGeometryInstancesData {

let (array_of_pointers_vk, data_vk) = data.to_vk();

ash::vk::AccelerationStructureGeometryKHR::default()
.geometry_type(ash::vk::GeometryTypeKHR::INSTANCES)
.geometry(ash::vk::AccelerationStructureGeometryDataKHR {
instances: ash::vk::AccelerationStructureGeometryInstancesDataKHR::default()
vk::AccelerationStructureGeometryKHR::default()
.geometry_type(vk::GeometryTypeKHR::INSTANCES)
.geometry(vk::AccelerationStructureGeometryDataKHR {
instances: vk::AccelerationStructureGeometryInstancesDataKHR::default()
.array_of_pointers(array_of_pointers_vk)
.data(data_vk),
})
Expand All @@ -1217,7 +1215,7 @@ pub enum AccelerationStructureGeometryInstancesDataType {
}

impl AccelerationStructureGeometryInstancesDataType {
pub(crate) fn to_vk(&self) -> (bool, ash::vk::DeviceOrHostAddressConstKHR) {
pub(crate) fn to_vk(&self) -> (bool, vk::DeviceOrHostAddressConstKHR) {
match self {
AccelerationStructureGeometryInstancesDataType::Values(data) => (
false,
Expand Down Expand Up @@ -1374,15 +1372,15 @@ pub struct AccelerationStructureBuildRangeInfo {

impl AccelerationStructureBuildRangeInfo {
#[allow(clippy::wrong_self_convention)]
pub(crate) fn to_vk(&self) -> ash::vk::AccelerationStructureBuildRangeInfoKHR {
pub(crate) fn to_vk(&self) -> vk::AccelerationStructureBuildRangeInfoKHR {
let &Self {
primitive_count,
primitive_offset,
first_vertex,
transform_offset,
} = self;

ash::vk::AccelerationStructureBuildRangeInfoKHR {
vk::AccelerationStructureBuildRangeInfoKHR {
primitive_count,
primitive_offset,
first_vertex,
Expand Down Expand Up @@ -1472,15 +1470,15 @@ impl CopyAccelerationStructureInfo {
Ok(())
}

pub(crate) fn to_vk(&self) -> ash::vk::CopyAccelerationStructureInfoKHR<'static> {
pub(crate) fn to_vk(&self) -> vk::CopyAccelerationStructureInfoKHR<'static> {
let &Self {
ref src,
ref dst,
mode,
_ne: _,
} = self;

ash::vk::CopyAccelerationStructureInfoKHR::default()
vk::CopyAccelerationStructureInfoKHR::default()
.src(src.handle())
.dst(dst.handle())
.mode(mode.into())
Expand Down Expand Up @@ -1554,15 +1552,15 @@ impl CopyAccelerationStructureToMemoryInfo {
Ok(())
}

pub(crate) fn to_vk(&self) -> ash::vk::CopyAccelerationStructureToMemoryInfoKHR<'static> {
pub(crate) fn to_vk(&self) -> vk::CopyAccelerationStructureToMemoryInfoKHR<'static> {
let &Self {
ref src,
ref dst,
mode,
_ne: _,
} = self;

ash::vk::CopyAccelerationStructureToMemoryInfoKHR::default()
vk::CopyAccelerationStructureToMemoryInfoKHR::default()
.src(src.handle())
.dst(dst.to_vk_device_or_host_address())
.mode(mode.into())
Expand Down Expand Up @@ -1639,15 +1637,15 @@ impl CopyMemoryToAccelerationStructureInfo {
Ok(())
}

pub(crate) fn to_vk(&self) -> ash::vk::CopyMemoryToAccelerationStructureInfoKHR<'static> {
pub(crate) fn to_vk(&self) -> vk::CopyMemoryToAccelerationStructureInfoKHR<'static> {
let &Self {
ref src,
ref dst,
mode,
_ne: _,
} = self;

ash::vk::CopyMemoryToAccelerationStructureInfoKHR::default()
vk::CopyMemoryToAccelerationStructureInfoKHR::default()
.src(src.to_vk_device_or_host_address_const())
.dst(dst.handle())
.mode(mode.into())
Expand Down Expand Up @@ -1717,12 +1715,12 @@ pub struct AccelerationStructureBuildSizesInfo {
}

impl AccelerationStructureBuildSizesInfo {
pub(crate) fn to_mut_vk() -> ash::vk::AccelerationStructureBuildSizesInfoKHR<'static> {
ash::vk::AccelerationStructureBuildSizesInfoKHR::default()
pub(crate) fn to_mut_vk() -> vk::AccelerationStructureBuildSizesInfoKHR<'static> {
vk::AccelerationStructureBuildSizesInfoKHR::default()
}

pub(crate) fn from_vk(val_vk: &ash::vk::AccelerationStructureBuildSizesInfoKHR<'_>) -> Self {
let &ash::vk::AccelerationStructureBuildSizesInfoKHR {
pub(crate) fn from_vk(val_vk: &vk::AccelerationStructureBuildSizesInfoKHR<'_>) -> Self {
let &vk::AccelerationStructureBuildSizesInfoKHR {
acceleration_structure_size,
update_scratch_size,
build_scratch_size,
Expand Down
17 changes: 9 additions & 8 deletions vulkano/src/buffer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@ use crate::{
DeviceSize, NonNullDeviceAddress, Requires, RequiresAllOf, RequiresOneOf, Validated,
ValidationError, Version, VulkanError, VulkanObject,
};
use ash::vk;
use parking_lot::{Mutex, MutexGuard};
use smallvec::SmallVec;
use std::{
Expand Down Expand Up @@ -504,7 +505,7 @@ impl Buffer {
pub unsafe fn device_address_unchecked(&self) -> NonNullDeviceAddress {
let device = self.device();

let info_vk = ash::vk::BufferDeviceAddressInfo::default().buffer(self.handle());
let info_vk = vk::BufferDeviceAddressInfo::default().buffer(self.handle());

let ptr = {
let fns = device.fns();
Expand All @@ -527,7 +528,7 @@ impl Buffer {
}

unsafe impl VulkanObject for Buffer {
type Handle = ash::vk::Buffer;
type Handle = vk::Buffer;

#[inline]
fn handle(&self) -> Self::Handle {
Expand Down Expand Up @@ -924,15 +925,15 @@ impl ExternalBufferInfo {
Ok(())
}

pub(crate) fn to_vk(&self) -> ash::vk::PhysicalDeviceExternalBufferInfo<'static> {
pub(crate) fn to_vk(&self) -> vk::PhysicalDeviceExternalBufferInfo<'static> {
let &Self {
flags,
usage,
handle_type,
_ne: _,
} = self;

ash::vk::PhysicalDeviceExternalBufferInfo::default()
vk::PhysicalDeviceExternalBufferInfo::default()
.flags(flags.into())
.usage(usage.into())
.handle_type(handle_type.into())
Expand All @@ -948,12 +949,12 @@ pub struct ExternalBufferProperties {
}

impl ExternalBufferProperties {
pub(crate) fn to_mut_vk() -> ash::vk::ExternalBufferProperties<'static> {
ash::vk::ExternalBufferProperties::default()
pub(crate) fn to_mut_vk() -> vk::ExternalBufferProperties<'static> {
vk::ExternalBufferProperties::default()
}

pub(crate) fn from_vk(val_vk: &ash::vk::ExternalBufferProperties<'_>) -> Self {
let &ash::vk::ExternalBufferProperties {
pub(crate) fn from_vk(val_vk: &vk::ExternalBufferProperties<'_>) -> Self {
let &vk::ExternalBufferProperties {
ref external_memory_properties,
..
} = val_vk;
Expand Down
Loading

0 comments on commit 478bad3

Please sign in to comment.