From 56107331b05c3158813d558bf4349a83e584d225 Mon Sep 17 00:00:00 2001 From: Marijn Suijten Date: Tue, 18 Jul 2023 13:45:46 +0200 Subject: [PATCH] extensions/amd: Add VK_AMD_buffer_marker --- Changelog.md | 1 + ash/src/extensions/amd/buffer_marker.rs | 45 +++++++++++++++++++++++++ ash/src/extensions/amd/mod.rs | 3 ++ ash/src/extensions/mod.rs | 1 + 4 files changed, 50 insertions(+) create mode 100644 ash/src/extensions/amd/buffer_marker.rs create mode 100644 ash/src/extensions/amd/mod.rs diff --git a/Changelog.md b/Changelog.md index f7185f3d5..2951af658 100644 --- a/Changelog.md +++ b/Changelog.md @@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added `VK_NV_memory_decompression` device extension (#761) - Added `VK_GOOGLE_display_timing` device extension (#765) - Added `VK_ANDROID_external_memory_android_hardware_buffer` device extension (#769) +- Added `VK_AMD_buffer_marker` device extension (#772) ### Changed diff --git a/ash/src/extensions/amd/buffer_marker.rs b/ash/src/extensions/amd/buffer_marker.rs new file mode 100644 index 000000000..512e2becd --- /dev/null +++ b/ash/src/extensions/amd/buffer_marker.rs @@ -0,0 +1,45 @@ +use crate::vk; +use crate::{Device, Instance}; +use std::ffi::CStr; +use std::mem; + +/// +#[derive(Clone)] +pub struct BufferMarker { + fp: vk::AmdBufferMarkerFn, +} + +impl BufferMarker { + pub fn new(instance: &Instance, device: &Device) -> Self { + let fp = vk::AmdBufferMarkerFn::load(|name| unsafe { + mem::transmute(instance.get_device_proc_addr(device.handle(), name.as_ptr())) + }); + Self { fp } + } + + /// + #[inline] + pub unsafe fn cmd_write_buffer_marker( + &self, + command_buffer: vk::CommandBuffer, + pipeline_stage: vk::PipelineStageFlags, + dst_buffer: vk::Buffer, + dst_offset: vk::DeviceSize, + marker: u32, + ) { + (self.fp.cmd_write_buffer_marker_amd)( + command_buffer, + pipeline_stage, + dst_buffer, + dst_offset, + marker, + ) + } + + pub const NAME: &'static CStr = vk::AmdBufferMarkerFn::NAME; + + #[inline] + pub fn fp(&self) -> &vk::AmdBufferMarkerFn { + &self.fp + } +} diff --git a/ash/src/extensions/amd/mod.rs b/ash/src/extensions/amd/mod.rs new file mode 100644 index 000000000..8ba8f504b --- /dev/null +++ b/ash/src/extensions/amd/mod.rs @@ -0,0 +1,3 @@ +pub use self::buffer_marker::BufferMarker; + +mod buffer_marker; diff --git a/ash/src/extensions/mod.rs b/ash/src/extensions/mod.rs index 90f8332b3..152d43fba 100644 --- a/ash/src/extensions/mod.rs +++ b/ash/src/extensions/mod.rs @@ -1,3 +1,4 @@ +pub mod amd; pub mod android; pub mod ext; pub mod google;