Skip to content

Commit

Permalink
Merge pull request #4 from expenses/master
Browse files Browse the repository at this point in the history
Update to ash 0.33
  • Loading branch information
gwihlidal authored Jan 22, 2022
2 parents 7a77a74 + 496dbbc commit 67a2f8b
Show file tree
Hide file tree
Showing 5 changed files with 439 additions and 437 deletions.
20 changes: 1 addition & 19 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,23 +22,5 @@ travis-ci = { repository = "gwihlidal/vk-sync-rs" }
appveyor = { repository = "gwihlidal/vk-sync-rs" }
maintenance = { status = "actively-developed" }

[lib]
name = "vk_sync"
path = "src/lib.rs"

[dependencies]
ash = { version = "0.29", optional = true }

[features]
default = ["ash_bind"]
ash_bind = ["ash"]

[profile.release]
lto = true
opt-level = 3
codegen-units = 1

[workspace]
members = [
"./",
]
ash = "0.33"
69 changes: 31 additions & 38 deletions src/cmd.rs
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,20 @@ use ash;
/// barriers to be passed to `vkCmdPipelineBarrier`.
/// `command_buffer` is passed unmodified to `vkCmdPipelineBarrier`.
pub fn pipeline_barrier(
device: &ash::vk::DeviceFnV1_0,
command_buffer: ash::vk::CommandBuffer,
device: &ash::Device,
command_buffer: vk::CommandBuffer,
global_barrier: Option<GlobalBarrier>,
buffer_barriers: &[BufferBarrier],
image_barriers: &[ImageBarrier],
) {
let mut src_stage_mask = ash::vk::PipelineStageFlags::TOP_OF_PIPE;
let mut dst_stage_mask = ash::vk::PipelineStageFlags::BOTTOM_OF_PIPE;
let mut src_stage_mask = vk::PipelineStageFlags::TOP_OF_PIPE;
let mut dst_stage_mask = vk::PipelineStageFlags::BOTTOM_OF_PIPE;

// TODO: Optimize out the Vec heap allocations
let mut vk_memory_barriers: Vec<ash::vk::MemoryBarrier> = Vec::with_capacity(1);
let mut vk_buffer_barriers: Vec<ash::vk::BufferMemoryBarrier> =
let mut vk_memory_barriers: Vec<vk::MemoryBarrier> = Vec::with_capacity(1);
let mut vk_buffer_barriers: Vec<vk::BufferMemoryBarrier> =
Vec::with_capacity(buffer_barriers.len());
let mut vk_image_barriers: Vec<ash::vk::ImageMemoryBarrier> =
let mut vk_image_barriers: Vec<vk::ImageMemoryBarrier> =
Vec::with_capacity(image_barriers.len());

// Global memory barrier
Expand Down Expand Up @@ -52,13 +52,10 @@ pub fn pipeline_barrier(
command_buffer,
src_stage_mask,
dst_stage_mask,
ash::vk::DependencyFlags::empty(),
vk_memory_barriers.len() as u32,
vk_memory_barriers.as_ptr(),
vk_buffer_barriers.len() as u32,
vk_buffer_barriers.as_ptr(),
vk_image_barriers.len() as u32,
vk_image_barriers.as_ptr(),
vk::DependencyFlags::empty(),
&vk_memory_barriers,
&vk_buffer_barriers,
&vk_image_barriers,
);
}
}
Expand All @@ -67,12 +64,12 @@ pub fn pipeline_barrier(
/// Sets an event when the accesses defined by `previous_accesses` are completed.
/// `command_buffer` and `event` are passed unmodified to `vkCmdSetEvent`.
pub fn set_event(
device: &ash::vk::DeviceFnV1_0,
command_buffer: ash::vk::CommandBuffer,
event: ash::vk::Event,
device: &ash::Device,
command_buffer: vk::CommandBuffer,
event: vk::Event,
previous_accesses: &[AccessType],
) {
let mut stage_mask = ash::vk::PipelineStageFlags::TOP_OF_PIPE;
let mut stage_mask = vk::PipelineStageFlags::TOP_OF_PIPE;
for previous_access in previous_accesses {
let previous_info = get_access_info(*previous_access);
stage_mask |= previous_info.stage_mask;
Expand All @@ -87,12 +84,12 @@ pub fn set_event(
/// Resets an event when the accesses defined by `previous_accesses` are completed.
/// `command_buffer` and `event` are passed unmodified to `vkCmdResetEvent`.
pub fn reset_event(
device: &ash::vk::DeviceFnV1_0,
command_buffer: ash::vk::CommandBuffer,
event: ash::vk::Event,
device: &ash::Device,
command_buffer: vk::CommandBuffer,
event: vk::Event,
previous_accesses: &[AccessType],
) {
let mut stage_mask = ash::vk::PipelineStageFlags::TOP_OF_PIPE;
let mut stage_mask = vk::PipelineStageFlags::TOP_OF_PIPE;
for previous_access in previous_accesses {
let previous_info = get_access_info(*previous_access);
stage_mask |= previous_info.stage_mask;
Expand All @@ -110,21 +107,21 @@ pub fn reset_event(
///
/// `commandBuffer` and `events` are passed unmodified to `vkCmdWaitEvents`.
pub fn wait_events(
device: &ash::vk::DeviceFnV1_0,
command_buffer: ash::vk::CommandBuffer,
events: &[ash::vk::Event],
device: &ash::Device,
command_buffer: vk::CommandBuffer,
events: &[vk::Event],
global_barrier: Option<GlobalBarrier>,
buffer_barriers: &[BufferBarrier],
image_barriers: &[ImageBarrier],
) {
let mut src_stage_mask = ash::vk::PipelineStageFlags::TOP_OF_PIPE;
let mut dst_stage_mask = ash::vk::PipelineStageFlags::BOTTOM_OF_PIPE;
let mut src_stage_mask = vk::PipelineStageFlags::TOP_OF_PIPE;
let mut dst_stage_mask = vk::PipelineStageFlags::BOTTOM_OF_PIPE;

// TODO: Optimize out the Vec heap allocations
let mut vk_memory_barriers: Vec<ash::vk::MemoryBarrier> = Vec::with_capacity(1);
let mut vk_buffer_barriers: Vec<ash::vk::BufferMemoryBarrier> =
let mut vk_memory_barriers: Vec<vk::MemoryBarrier> = Vec::with_capacity(1);
let mut vk_buffer_barriers: Vec<vk::BufferMemoryBarrier> =
Vec::with_capacity(buffer_barriers.len());
let mut vk_image_barriers: Vec<ash::vk::ImageMemoryBarrier> =
let mut vk_image_barriers: Vec<vk::ImageMemoryBarrier> =
Vec::with_capacity(image_barriers.len());

// Global memory barrier
Expand Down Expand Up @@ -154,16 +151,12 @@ pub fn wait_events(
unsafe {
device.cmd_wait_events(
command_buffer,
events.len() as u32,
events.as_ptr(),
&events,
src_stage_mask,
dst_stage_mask,
vk_memory_barriers.len() as u32,
vk_memory_barriers.as_ptr(),
vk_buffer_barriers.len() as u32,
vk_buffer_barriers.as_ptr(),
vk_image_barriers.len() as u32,
vk_image_barriers.as_ptr(),
&vk_memory_barriers,
&vk_buffer_barriers,
&vk_image_barriers,
);
}
}
Loading

0 comments on commit 67a2f8b

Please sign in to comment.