wgpu: Add some more debug labels
This commit is contained in:
parent
af9b1f1dec
commit
1863c93be1
|
@ -8,7 +8,7 @@ use std::sync::{Arc, Mutex, Weak};
|
||||||
type PoolInner<T> = Mutex<Vec<T>>;
|
type PoolInner<T> = Mutex<Vec<T>>;
|
||||||
type Constructor<T> = Box<dyn Fn(&Descriptors) -> T>;
|
type Constructor<T> = Box<dyn Fn(&Descriptors) -> T>;
|
||||||
|
|
||||||
#[derive(Debug, Default)]
|
#[derive(Debug)]
|
||||||
pub struct TexturePool {
|
pub struct TexturePool {
|
||||||
pools: FnvHashMap<TextureKey, BufferPool<wgpu::Texture>>,
|
pools: FnvHashMap<TextureKey, BufferPool<wgpu::Texture>>,
|
||||||
globals_cache: FnvHashMap<GlobalsKey, Weak<Globals>>,
|
globals_cache: FnvHashMap<GlobalsKey, Weak<Globals>>,
|
||||||
|
@ -16,7 +16,10 @@ pub struct TexturePool {
|
||||||
|
|
||||||
impl TexturePool {
|
impl TexturePool {
|
||||||
pub fn new() -> Self {
|
pub fn new() -> Self {
|
||||||
Default::default()
|
Self {
|
||||||
|
pools: FnvHashMap::default(),
|
||||||
|
globals_cache: FnvHashMap::default(),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_texture(
|
pub fn get_texture(
|
||||||
|
@ -34,9 +37,17 @@ impl TexturePool {
|
||||||
sample_count,
|
sample_count,
|
||||||
};
|
};
|
||||||
let pool = self.pools.entry(key).or_insert_with(|| {
|
let pool = self.pools.entry(key).or_insert_with(|| {
|
||||||
|
let label = if cfg!(feature = "render_debug_labels") {
|
||||||
|
use std::sync::atomic::{AtomicU32, Ordering};
|
||||||
|
static ID_COUNT: AtomicU32 = AtomicU32::new(0);
|
||||||
|
let id = ID_COUNT.fetch_add(1, Ordering::Relaxed);
|
||||||
|
create_debug_label!("Pooled texture {}", id)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
};
|
||||||
BufferPool::new(Box::new(move |descriptors| {
|
BufferPool::new(Box::new(move |descriptors| {
|
||||||
descriptors.device.create_texture(&wgpu::TextureDescriptor {
|
descriptors.device.create_texture(&wgpu::TextureDescriptor {
|
||||||
label: None,
|
label: label.as_deref(),
|
||||||
size,
|
size,
|
||||||
mip_level_count: 1,
|
mip_level_count: 1,
|
||||||
sample_count,
|
sample_count,
|
||||||
|
|
|
@ -306,7 +306,15 @@ impl<'pass, 'frame: 'pass, 'global: 'frame> CommandRenderer<'pass, 'frame, 'glob
|
||||||
Chunk::Draw(chunk, needs_depth) => {
|
Chunk::Draw(chunk, needs_depth) => {
|
||||||
let mut render_pass =
|
let mut render_pass =
|
||||||
draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||||
label: None,
|
label: create_debug_label!(
|
||||||
|
"Chunked draw calls {}",
|
||||||
|
if needs_depth {
|
||||||
|
"(with depth)"
|
||||||
|
} else {
|
||||||
|
"(Depthless)"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.as_deref(),
|
||||||
color_attachments: &[target.color_attachments(clear_color.take())],
|
color_attachments: &[target.color_attachments(clear_color.take())],
|
||||||
depth_stencil_attachment: if needs_depth {
|
depth_stencil_attachment: if needs_depth {
|
||||||
target.depth_attachment(&descriptors, texture_pool, first)
|
target.depth_attachment(&descriptors, texture_pool, first)
|
||||||
|
@ -394,7 +402,16 @@ impl<'pass, 'frame: 'pass, 'global: 'frame> CommandRenderer<'pass, 'frame, 'glob
|
||||||
descriptors
|
descriptors
|
||||||
.device
|
.device
|
||||||
.create_bind_group(&wgpu::BindGroupDescriptor {
|
.create_bind_group(&wgpu::BindGroupDescriptor {
|
||||||
label: None,
|
label: create_debug_label!(
|
||||||
|
"Complex blend binds {:?} {}",
|
||||||
|
blend_mode,
|
||||||
|
if needs_depth {
|
||||||
|
"(with depth)"
|
||||||
|
} else {
|
||||||
|
"(Depthless)"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.as_deref(),
|
||||||
layout: &descriptors.bind_layouts.blend,
|
layout: &descriptors.bind_layouts.blend,
|
||||||
entries: &[
|
entries: &[
|
||||||
wgpu::BindGroupEntry {
|
wgpu::BindGroupEntry {
|
||||||
|
@ -424,7 +441,16 @@ impl<'pass, 'frame: 'pass, 'global: 'frame> CommandRenderer<'pass, 'frame, 'glob
|
||||||
|
|
||||||
let mut render_pass =
|
let mut render_pass =
|
||||||
draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
draw_encoder.begin_render_pass(&wgpu::RenderPassDescriptor {
|
||||||
label: None,
|
label: create_debug_label!(
|
||||||
|
"Complex blend {:?} {}",
|
||||||
|
blend_mode,
|
||||||
|
if needs_depth {
|
||||||
|
"(with depth)"
|
||||||
|
} else {
|
||||||
|
"(Depthless)"
|
||||||
|
}
|
||||||
|
)
|
||||||
|
.as_deref(),
|
||||||
color_attachments: &[target.color_attachments(clear_color.take())],
|
color_attachments: &[target.color_attachments(clear_color.take())],
|
||||||
depth_stencil_attachment: if needs_depth {
|
depth_stencil_attachment: if needs_depth {
|
||||||
target.depth_attachment(descriptors, texture_pool, first)
|
target.depth_attachment(descriptors, texture_pool, first)
|
||||||
|
|
|
@ -275,7 +275,7 @@ impl Surface {
|
||||||
resolve_target: None,
|
resolve_target: None,
|
||||||
})],
|
})],
|
||||||
depth_stencil_attachment: None,
|
depth_stencil_attachment: None,
|
||||||
label: None,
|
label: create_debug_label!("Copy back to render target").as_deref(),
|
||||||
});
|
});
|
||||||
|
|
||||||
render_pass.set_pipeline(&pipeline);
|
render_pass.set_pipeline(&pipeline);
|
||||||
|
|
Loading…
Reference in New Issue