debug: timing things
This commit is contained in:
parent
7640cf053b
commit
9802bec8b0
|
@ -1851,56 +1851,61 @@ impl EguiState {
|
||||||
const TEXTURE_BINDING: u32 = 0;
|
const TEXTURE_BINDING: u32 = 0;
|
||||||
const UNIFORM_BINDING: u32 = 1;
|
const UNIFORM_BINDING: u32 = 1;
|
||||||
fn new(device: Device) -> Result<Self> {
|
fn new(device: Device) -> Result<Self> {
|
||||||
let descriptor_pool = pipeline::DescriptorPool::new(
|
let (descriptor_pool, descriptor_layout, sets) =
|
||||||
device.clone(),
|
util::timed("Create Descriptor Set", || {
|
||||||
pipeline::DescriptorPoolDesc {
|
let descriptor_pool = pipeline::DescriptorPool::new(
|
||||||
flags: vk::DescriptorPoolCreateFlags::UPDATE_AFTER_BIND,
|
device.clone(),
|
||||||
name: Some("egui-descriptorpool".into()),
|
pipeline::DescriptorPoolDesc {
|
||||||
sizes: &[
|
flags: vk::DescriptorPoolCreateFlags::UPDATE_AFTER_BIND,
|
||||||
vk::DescriptorPoolSize {
|
name: Some("egui-descriptorpool".into()),
|
||||||
ty: vk::DescriptorType::COMBINED_IMAGE_SAMPLER,
|
sizes: &[
|
||||||
descriptor_count: 10,
|
vk::DescriptorPoolSize {
|
||||||
|
ty: vk::DescriptorType::COMBINED_IMAGE_SAMPLER,
|
||||||
|
descriptor_count: 10,
|
||||||
|
},
|
||||||
|
vk::DescriptorPoolSize {
|
||||||
|
ty: vk::DescriptorType::STORAGE_BUFFER,
|
||||||
|
descriptor_count: 1,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
max_sets: 1,
|
||||||
|
..Default::default()
|
||||||
},
|
},
|
||||||
vk::DescriptorPoolSize {
|
)?;
|
||||||
ty: vk::DescriptorType::STORAGE_BUFFER,
|
let descriptor_layout = pipeline::DescriptorSetLayout::new(
|
||||||
descriptor_count: 1,
|
device.clone(),
|
||||||
|
pipeline::DescriptorSetLayoutDesc {
|
||||||
|
flags: vk::DescriptorSetLayoutCreateFlags::UPDATE_AFTER_BIND_POOL,
|
||||||
|
name: Some("egui-descriptor-layout".into()),
|
||||||
|
bindings: &[
|
||||||
|
pipeline::DescriptorSetLayoutBindingDesc {
|
||||||
|
binding: Self::TEXTURE_BINDING,
|
||||||
|
count: 10,
|
||||||
|
kind: vk::DescriptorType::COMBINED_IMAGE_SAMPLER,
|
||||||
|
stage: vk::ShaderStageFlags::FRAGMENT,
|
||||||
|
flags: Some(
|
||||||
|
vk::DescriptorBindingFlags::PARTIALLY_BOUND
|
||||||
|
| vk::DescriptorBindingFlags::UPDATE_AFTER_BIND,
|
||||||
|
),
|
||||||
|
},
|
||||||
|
pipeline::DescriptorSetLayoutBindingDesc {
|
||||||
|
binding: Self::UNIFORM_BINDING,
|
||||||
|
count: 1,
|
||||||
|
kind: vk::DescriptorType::STORAGE_BUFFER,
|
||||||
|
stage: vk::ShaderStageFlags::FRAGMENT,
|
||||||
|
flags: None,
|
||||||
|
},
|
||||||
|
],
|
||||||
},
|
},
|
||||||
],
|
)?;
|
||||||
max_sets: 1,
|
|
||||||
..Default::default()
|
|
||||||
},
|
|
||||||
)?;
|
|
||||||
let descriptor_layout = pipeline::DescriptorSetLayout::new(
|
|
||||||
device.clone(),
|
|
||||||
pipeline::DescriptorSetLayoutDesc {
|
|
||||||
flags: vk::DescriptorSetLayoutCreateFlags::UPDATE_AFTER_BIND_POOL,
|
|
||||||
name: Some("egui-descriptor-layout".into()),
|
|
||||||
bindings: &[
|
|
||||||
pipeline::DescriptorSetLayoutBindingDesc {
|
|
||||||
binding: Self::TEXTURE_BINDING,
|
|
||||||
count: 10,
|
|
||||||
kind: vk::DescriptorType::COMBINED_IMAGE_SAMPLER,
|
|
||||||
stage: vk::ShaderStageFlags::FRAGMENT,
|
|
||||||
flags: Some(
|
|
||||||
vk::DescriptorBindingFlags::PARTIALLY_BOUND
|
|
||||||
| vk::DescriptorBindingFlags::UPDATE_AFTER_BIND,
|
|
||||||
),
|
|
||||||
},
|
|
||||||
pipeline::DescriptorSetLayoutBindingDesc {
|
|
||||||
binding: Self::UNIFORM_BINDING,
|
|
||||||
count: 1,
|
|
||||||
kind: vk::DescriptorType::STORAGE_BUFFER,
|
|
||||||
stage: vk::ShaderStageFlags::FRAGMENT,
|
|
||||||
flags: None,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
)?;
|
|
||||||
|
|
||||||
let sets = descriptor_pool.allocate(&[pipeline::DescriptorSetAllocDesc {
|
let sets = descriptor_pool.allocate(&[pipeline::DescriptorSetAllocDesc {
|
||||||
name: None,
|
name: None,
|
||||||
layout: &descriptor_layout,
|
layout: &descriptor_layout,
|
||||||
}])?;
|
}])?;
|
||||||
|
|
||||||
|
Result::Ok((descriptor_pool, descriptor_layout, sets))
|
||||||
|
})?;
|
||||||
|
|
||||||
let pipeline_layout = pipeline::PipelineLayout::new(
|
let pipeline_layout = pipeline::PipelineLayout::new(
|
||||||
device.clone(),
|
device.clone(),
|
||||||
|
|
|
@ -426,6 +426,7 @@ impl RenderGraph {
|
||||||
.iter()
|
.iter()
|
||||||
.map(|(rid, access)| (*rid, *access))
|
.map(|(rid, access)| (*rid, *access))
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
self.add_pass(PassDesc {
|
self.add_pass(PassDesc {
|
||||||
reads: output_reads,
|
reads: output_reads,
|
||||||
writes: vec![],
|
writes: vec![],
|
||||||
|
@ -444,22 +445,28 @@ impl RenderGraph {
|
||||||
});
|
});
|
||||||
|
|
||||||
// create internal resources:
|
// create internal resources:
|
||||||
for (i, res) in self.resources.iter_mut().enumerate() {
|
util::timed("Create internal RenderGraph resources:", || {
|
||||||
match res {
|
for (i, res) in self.resources.iter_mut().enumerate() {
|
||||||
GraphResource::ImageDesc(image_desc) => {
|
match res {
|
||||||
tracing::trace!("creating resource #{i:?} with {image_desc:?}");
|
GraphResource::ImageDesc(image_desc) => {
|
||||||
*res = GraphResource::Image(Arc::new(Image::new(
|
tracing::trace!("creating resource #{i:?} with {image_desc:?}");
|
||||||
device.clone(),
|
*res = GraphResource::Image(Arc::new(Image::new(
|
||||||
image_desc.clone(),
|
device.clone(),
|
||||||
)?));
|
image_desc.clone(),
|
||||||
|
)?));
|
||||||
|
}
|
||||||
|
GraphResource::BufferDesc(buffer_desc) => {
|
||||||
|
tracing::trace!("creating resource #{i:?} with {buffer_desc:?}");
|
||||||
|
*res = GraphResource::Buffer(Buffer::new(
|
||||||
|
device.clone(),
|
||||||
|
buffer_desc.clone(),
|
||||||
|
)?);
|
||||||
|
}
|
||||||
|
_ => {}
|
||||||
}
|
}
|
||||||
GraphResource::BufferDesc(buffer_desc) => {
|
|
||||||
tracing::trace!("creating resource #{i:?} with {buffer_desc:?}");
|
|
||||||
*res = GraphResource::Buffer(Buffer::new(device.clone(), buffer_desc.clone())?);
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
}
|
||||||
}
|
ash::prelude::VkResult::Ok(())
|
||||||
|
})?;
|
||||||
|
|
||||||
let pool =
|
let pool =
|
||||||
commands::SingleUseCommandPool::new(device.clone(), device.graphics_queue().clone())?;
|
commands::SingleUseCommandPool::new(device.clone(), device.graphics_queue().clone())?;
|
||||||
|
|
Loading…
Reference in a new issue