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