mirror of
https://github.com/gfx-rs/wgpu.git
synced 2026-04-22 03:02:01 -04:00
hal/dx12: debug markers
This commit is contained in:
@@ -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) {}
|
||||
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user