hal/dx12: debug markers

This commit is contained in:
Dzmitry Malyshau
2021-07-08 23:21:02 -04:00
parent 27b8085048
commit 1f91c5f297
3 changed files with 36 additions and 3 deletions

View File

@@ -13,6 +13,15 @@ fn make_box(origin: &wgt::Origin3d, size: &crate::CopyExtent) -> d3d12::D3D12_BO
}
}
impl super::Temp {
fn prepare_marker(&mut self, marker: &str) -> (&[u16], u32) {
self.marker.clear();
self.marker.extend(marker.encode_utf16());
self.marker.push(0);
(&self.marker, self.marker.len() as u32 * 2)
}
}
impl crate::CommandEncoder<super::Api> for super::CommandEncoder {
unsafe fn begin_encoding(&mut self, label: crate::Label) -> Result<(), crate::DeviceError> {
let list = match self.free_lists.pop() {
@@ -398,9 +407,21 @@ impl crate::CommandEncoder<super::Api> for super::CommandEncoder {
) {
}
unsafe fn insert_debug_marker(&mut self, label: &str) {}
unsafe fn begin_debug_marker(&mut self, group_label: &str) {}
unsafe fn end_debug_marker(&mut self) {}
unsafe fn insert_debug_marker(&mut self, label: &str) {
let (wide_label, size) = self.temp.prepare_marker(label);
self.list
.unwrap()
.SetMarker(0, wide_label.as_ptr() as *const _, size);
}
unsafe fn begin_debug_marker(&mut self, group_label: &str) {
let (wide_label, size) = self.temp.prepare_marker(group_label);
self.list
.unwrap()
.BeginEvent(0, wide_label.as_ptr() as *const _, size);
}
unsafe fn end_debug_marker(&mut self) {
self.list.unwrap().EndEvent()
}
unsafe fn set_render_pipeline(&mut self, pipeline: &Resource) {}

View File

@@ -1013,6 +1013,11 @@ impl crate::Device<super::Api> for super::Device {
.into_device_result("Root signature creation")?;
blob.destroy();
if let Some(label) = desc.label {
let cwstr = conv::map_label(label);
raw.SetName(cwstr.as_ptr());
}
Ok(super::PipelineLayout {
raw,
parameter_offsets,
@@ -1079,6 +1084,11 @@ impl crate::Device<super::Api> for super::Device {
.create_query_heap(heap_ty, desc.count, 0)
.into_device_result("Query heap creation")?;
if let Some(label) = desc.label {
let cwstr = conv::map_label(label);
raw.SetName(cwstr.as_ptr());
}
Ok(super::QuerySet { raw, raw_ty })
}
unsafe fn destroy_query_set(&self, set: super::QuerySet) {

View File

@@ -211,11 +211,13 @@ unsafe impl Sync for Queue {}
#[derive(Default)]
struct Temp {
marker: Vec<u16>,
barriers: Vec<d3d12::D3D12_RESOURCE_BARRIER>,
}
impl Temp {
fn clear(&mut self) {
self.marker.clear();
self.barriers.clear();
}
}