diff --git a/CHANGES.md b/CHANGES.md index b0941b1..a3c8a82 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,10 @@ # Changes +## 0.1.2 (2018-11-17) + +* Updated to ash 0.26 +* Made function pointer structs borrowed for performance + ## 0.1.1 (2018-11-15) * Updated to ash 0.25 (Vulkan 1.1) diff --git a/Cargo.toml b/Cargo.toml index ad4fe7f..586abd1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vk-sync" -version = "0.1.1" +version = "0.1.2" license = "MIT/Apache-2.0" authors = ["Graham Wihlidal "] homepage = "https://github.com/gwihlidal/vk-sync-rs" @@ -26,7 +26,7 @@ name = "vk_sync" path = "src/lib.rs" [dependencies] -ash = { version = "0.25", optional = true } +ash = { version = "0.26", optional = true } [features] default = ["ash_bind"] diff --git a/src/cmd.rs b/src/cmd.rs index 36d6883..bb5d301 100644 --- a/src/cmd.rs +++ b/src/cmd.rs @@ -7,7 +7,7 @@ use ash; /// barriers to be passed to `vkCmdPipelineBarrier`. /// `command_buffer` is passed unmodified to `vkCmdPipelineBarrier`. pub fn pipeline_barrier( - device: ash::vk::DeviceFnV1_0, + device: &ash::vk::DeviceFnV1_0, command_buffer: ash::vk::CommandBuffer, global_barrier: Option, buffer_barriers: &[BufferBarrier], @@ -66,7 +66,7 @@ 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, + device: &ash::vk::DeviceFnV1_0, command_buffer: ash::vk::CommandBuffer, event: ash::vk::Event, previous_accesses: &[AccessType], @@ -86,7 +86,7 @@ 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, + device: &ash::vk::DeviceFnV1_0, command_buffer: ash::vk::CommandBuffer, event: ash::vk::Event, previous_accesses: &[AccessType], @@ -109,7 +109,7 @@ pub fn reset_event( /// /// `commandBuffer` and `events` are passed unmodified to `vkCmdWaitEvents`. pub fn wait_events( - device: ash::vk::DeviceFnV1_0, + device: &ash::vk::DeviceFnV1_0, command_buffer: ash::vk::CommandBuffer, events: &[ash::vk::Event], global_barrier: Option, diff --git a/src/lib.rs b/src/lib.rs index 7326c14..8873f7d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -178,7 +178,9 @@ pub enum AccessType { } impl Default for AccessType { - fn default() -> Self { AccessType::Nothing } + fn default() -> Self { + AccessType::Nothing + } } /// Defines a handful of layout options for images. @@ -200,7 +202,9 @@ pub enum ImageLayout { } impl Default for ImageLayout { - fn default() -> Self { ImageLayout::Optimal } + fn default() -> Self { + ImageLayout::Optimal + } } /// Global barriers define a set of accesses on multiple resources at once. @@ -509,13 +513,11 @@ pub(crate) fn get_access_info(access_type: &AccessType) -> AccessInfo { access_mask: ash::vk::AccessFlags::empty(), image_layout: ash::vk::ImageLayout::UNDEFINED, }, - AccessType::CommandBufferReadNVX => { - AccessInfo { - stage_mask: ash::vk::PipelineStageFlags::COMMAND_PROCESS_NVX, - access_mask: ash::vk::AccessFlags::COMMAND_PROCESS_READ_NVX, - image_layout: ash::vk::ImageLayout::UNDEFINED, - } - }, + AccessType::CommandBufferReadNVX => AccessInfo { + stage_mask: ash::vk::PipelineStageFlags::COMMAND_PROCESS_NVX, + access_mask: ash::vk::AccessFlags::COMMAND_PROCESS_READ_NVX, + image_layout: ash::vk::ImageLayout::UNDEFINED, + }, AccessType::IndirectBuffer => AccessInfo { stage_mask: ash::vk::PipelineStageFlags::DRAW_INDIRECT, access_mask: ash::vk::AccessFlags::INDIRECT_COMMAND_READ, @@ -680,13 +682,11 @@ pub(crate) fn get_access_info(access_type: &AccessType) -> AccessInfo { access_mask: ash::vk::AccessFlags::empty(), image_layout: ash::vk::ImageLayout::PRESENT_SRC_KHR, }, - AccessType::CommandBufferWriteNVX => { - AccessInfo { - stage_mask: ash::vk::PipelineStageFlags::COMMAND_PROCESS_NVX, - access_mask: ash::vk::AccessFlags::COMMAND_PROCESS_WRITE_NVX, - image_layout: ash::vk::ImageLayout::UNDEFINED, - } - } + AccessType::CommandBufferWriteNVX => AccessInfo { + stage_mask: ash::vk::PipelineStageFlags::COMMAND_PROCESS_NVX, + access_mask: ash::vk::AccessFlags::COMMAND_PROCESS_WRITE_NVX, + image_layout: ash::vk::ImageLayout::UNDEFINED, + }, AccessType::VertexShaderWrite => AccessInfo { stage_mask: ash::vk::PipelineStageFlags::VERTEX_SHADER, access_mask: ash::vk::AccessFlags::SHADER_WRITE, @@ -723,20 +723,20 @@ pub(crate) fn get_access_info(access_type: &AccessType) -> AccessInfo { access_mask: ash::vk::AccessFlags::DEPTH_STENCIL_ATTACHMENT_WRITE, image_layout: ash::vk::ImageLayout::DEPTH_STENCIL_ATTACHMENT_OPTIMAL, }, - AccessType::DepthAttachmentWriteStencilReadOnly => { - AccessInfo { - stage_mask: ash::vk::PipelineStageFlags::EARLY_FRAGMENT_TESTS | ash::vk::PipelineStageFlags::LATE_FRAGMENT_TESTS, - access_mask: ash::vk::AccessFlags::DEPTH_STENCIL_ATTACHMENT_WRITE | ash::vk::AccessFlags::DEPTH_STENCIL_ATTACHMENT_READ, - image_layout: ash::vk::ImageLayout::DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, - } - } - AccessType::StencilAttachmentWriteDepthReadOnly => { - AccessInfo { - stage_mask: ash::vk::PipelineStageFlags::EARLY_FRAGMENT_TESTS | ash::vk::PipelineStageFlags::LATE_FRAGMENT_TESTS, - access_mask: ash::vk::AccessFlags::DEPTH_STENCIL_ATTACHMENT_WRITE | ash::vk::AccessFlags::DEPTH_STENCIL_ATTACHMENT_READ, - image_layout: ash::vk::ImageLayout::DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, - } - } + AccessType::DepthAttachmentWriteStencilReadOnly => AccessInfo { + stage_mask: ash::vk::PipelineStageFlags::EARLY_FRAGMENT_TESTS + | ash::vk::PipelineStageFlags::LATE_FRAGMENT_TESTS, + access_mask: ash::vk::AccessFlags::DEPTH_STENCIL_ATTACHMENT_WRITE + | ash::vk::AccessFlags::DEPTH_STENCIL_ATTACHMENT_READ, + image_layout: ash::vk::ImageLayout::DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL, + }, + AccessType::StencilAttachmentWriteDepthReadOnly => AccessInfo { + stage_mask: ash::vk::PipelineStageFlags::EARLY_FRAGMENT_TESTS + | ash::vk::PipelineStageFlags::LATE_FRAGMENT_TESTS, + access_mask: ash::vk::AccessFlags::DEPTH_STENCIL_ATTACHMENT_WRITE + | ash::vk::AccessFlags::DEPTH_STENCIL_ATTACHMENT_READ, + image_layout: ash::vk::ImageLayout::DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL, + }, AccessType::ComputeShaderWrite => AccessInfo { stage_mask: ash::vk::PipelineStageFlags::COMPUTE_SHADER, access_mask: ash::vk::AccessFlags::SHADER_WRITE, diff --git a/tests/global.rs b/tests/global.rs index 3e55972..e506aac 100644 --- a/tests/global.rs +++ b/tests/global.rs @@ -98,7 +98,10 @@ fn transfer_write_graphics_read_vertex() { assert_eq!(src_mask, ash::vk::PipelineStageFlags::TRANSFER); assert_eq!(dst_mask, ash::vk::PipelineStageFlags::VERTEX_INPUT); - assert_eq!(barrier.src_access_mask, ash::vk::AccessFlags::TRANSFER_WRITE); + assert_eq!( + barrier.src_access_mask, + ash::vk::AccessFlags::TRANSFER_WRITE + ); assert_eq!( barrier.dst_access_mask, ash::vk::AccessFlags::VERTEX_ATTRIBUTE_READ diff --git a/tests/image.rs b/tests/image.rs index 727c182..cf72f5b 100644 --- a/tests/image.rs +++ b/tests/image.rs @@ -422,9 +422,15 @@ fn transfer_write_image_fragment_read_sampled() { assert_eq!(src_mask, ash::vk::PipelineStageFlags::TRANSFER); assert_eq!(dst_mask, ash::vk::PipelineStageFlags::FRAGMENT_SHADER); - assert_eq!(barrier.src_access_mask, ash::vk::AccessFlags::TRANSFER_WRITE); + assert_eq!( + barrier.src_access_mask, + ash::vk::AccessFlags::TRANSFER_WRITE + ); assert_eq!(barrier.dst_access_mask, ash::vk::AccessFlags::SHADER_READ); - assert_eq!(barrier.old_layout, ash::vk::ImageLayout::TRANSFER_DST_OPTIMAL); + assert_eq!( + barrier.old_layout, + ash::vk::ImageLayout::TRANSFER_DST_OPTIMAL + ); assert_eq!( barrier.new_layout, ash::vk::ImageLayout::SHADER_READ_ONLY_OPTIMAL