renderer: thread-local commandpools
This commit is contained in:
parent
4cbf1f053b
commit
2b09a2c4f8
|
@ -22,12 +22,14 @@ tracing-subscriber = {version ="0.3.18", features = ["env-filter"]}
|
|||
glam = {version = "0.29.0", features = ["bytemuck"]}
|
||||
rand = "0.8.5"
|
||||
bitflags = "2.6"
|
||||
thread_local = "1.1.8"
|
||||
|
||||
ash = "0.38.0"
|
||||
ash-window = "0.13.0"
|
||||
vk-mem = "0.4.0"
|
||||
vk-sync = "0.1.6"
|
||||
|
||||
arrayvec = "0.7.6"
|
||||
tinyvec = "1.8"
|
||||
indexmap = "2"
|
||||
petgraph = "0.7"
|
||||
|
|
|
@ -5,6 +5,7 @@ edition = "2021"
|
|||
|
||||
[dependencies]
|
||||
tinyvec = { workspace = true }
|
||||
arrayvec = { workspace = true }
|
||||
indexmap = { workspace = true }
|
||||
petgraph = { workspace = true }
|
||||
itertools = { workspace = true }
|
||||
|
@ -13,6 +14,7 @@ rand = { workspace = true }
|
|||
parking_lot = { workspace = true }
|
||||
glam = { workspace = true }
|
||||
bitflags = { workspace = true }
|
||||
thread_local = {workspace = true}
|
||||
|
||||
thiserror = { workspace = true }
|
||||
anyhow = { workspace = true }
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -26,6 +26,7 @@ pub struct DeviceQueueFamilies {
|
|||
pub(crate) present: (u32, u32),
|
||||
pub(crate) async_compute: (u32, u32),
|
||||
pub(crate) transfer: (u32, u32),
|
||||
pub(crate) properties: Box<[vk::QueueFamilyProperties]>,
|
||||
}
|
||||
|
||||
impl DeviceQueueFamilies {
|
||||
|
@ -78,12 +79,12 @@ bitflags::bitflags! {
|
|||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
||||
pub struct QueueFlags: u32 {
|
||||
const GRAPHICS = 1 << 0;
|
||||
const PRESENT = 1 << 1;
|
||||
const ASYNC_COMPUTE = 1 << 2;
|
||||
const TRANSFER = 1 << 3;
|
||||
const ASYNC_COMPUTE = 1 << 1;
|
||||
const TRANSFER = 1 << 2;
|
||||
const PRESENT = 1 << 3;
|
||||
|
||||
const NONE = 0;
|
||||
const PRESENT_GRAPHICS = 1 << 0 | 1 << 1;
|
||||
const PRESENT_GRAPHICS = 1 << 0 | 1 << 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -256,7 +257,7 @@ impl DeviceBuilder {
|
|||
display_handle: Option<RawDisplayHandle>,
|
||||
pdev: vk::PhysicalDevice,
|
||||
) -> DeviceQueueFamilies {
|
||||
let queue_families = unsafe {
|
||||
let queue_familiy_properties = unsafe {
|
||||
instance
|
||||
.instance
|
||||
.get_physical_device_queue_family_properties(pdev)
|
||||
|
@ -318,7 +319,7 @@ impl DeviceBuilder {
|
|||
}
|
||||
|
||||
let mut queue_families = QueueFamilies(
|
||||
queue_families
|
||||
queue_familiy_properties
|
||||
.iter()
|
||||
.enumerate()
|
||||
.map(|(i, family)| {
|
||||
|
@ -416,6 +417,7 @@ impl DeviceBuilder {
|
|||
async_compute,
|
||||
transfer,
|
||||
present,
|
||||
properties: queue_familiy_properties.into_boxed_slice(),
|
||||
};
|
||||
|
||||
queues
|
||||
|
@ -887,7 +889,7 @@ impl Device {
|
|||
pub fn physical_device(&self) -> &PhysicalDevice {
|
||||
&self.0.physical
|
||||
}
|
||||
pub fn graphics_queue(&self) -> &Queue {
|
||||
pub fn main_queue(&self) -> &Queue {
|
||||
&self.0.main_queue
|
||||
}
|
||||
pub fn transfer_queue(&self) -> &Queue {
|
||||
|
|
|
@ -5,6 +5,7 @@ use indexmap::IndexMap;
|
|||
|
||||
use crate::{
|
||||
buffers::{Buffer, BufferDesc},
|
||||
commands::traits::CommandBufferExt,
|
||||
device::{self, DeviceOwned},
|
||||
images::{Image, ImageDesc, ImageViewDesc},
|
||||
render_graph::{
|
||||
|
|
|
@ -8,7 +8,8 @@ use std::{
|
|||
|
||||
use crate::{
|
||||
buffers::{Buffer, BufferDesc},
|
||||
commands, def_monotonic_id,
|
||||
commands::{self, traits::CommandBufferExt},
|
||||
def_monotonic_id,
|
||||
device::{self, DeviceOwned},
|
||||
images::{self, Image, ImageDesc},
|
||||
util::{self, Rgba, WithLifetime},
|
||||
|
@ -489,7 +490,7 @@ impl RenderGraph {
|
|||
})?;
|
||||
|
||||
let pool =
|
||||
commands::SingleUseCommandPool::new(device.clone(), device.graphics_queue().clone())?;
|
||||
commands::SingleUseCommandPool::new(device.clone(), device.main_queue().clone())?;
|
||||
|
||||
let resources = &self.resources;
|
||||
let cmds = topo
|
||||
|
|
|
@ -7,7 +7,7 @@ pub use crate::egui_pass::{egui_pass, egui_pre_pass};
|
|||
|
||||
use crate::{
|
||||
buffers::{Buffer, BufferDesc},
|
||||
commands,
|
||||
commands::{self, traits::CommandBufferExt},
|
||||
device::{Device, DeviceOwned},
|
||||
images::ImageViewDesc,
|
||||
pipeline,
|
||||
|
@ -97,7 +97,7 @@ impl Wireframe {
|
|||
},
|
||||
)?;
|
||||
|
||||
let pool = commands::SingleUseCommandPool::new(dev.clone(), dev.graphics_queue().clone())?;
|
||||
let pool = commands::SingleUseCommandPool::new(dev.clone(), dev.main_queue().clone())?;
|
||||
|
||||
let cmd = pool.alloc()?;
|
||||
|
||||
|
|
Loading…
Reference in a new issue