mirror of
https://github.com/gfx-rs/wgpu.git
synced 2024-11-21 22:33:49 +00:00
extract Queue.maintain
This commit is contained in:
parent
5061ae3e5e
commit
9e17e32686
@ -21,6 +21,7 @@ use crate::{
|
||||
ParentDevice, ResourceErrorIdent, StagingBuffer, Texture, TextureInner, Trackable,
|
||||
},
|
||||
resource_log,
|
||||
snatch::SnatchGuard,
|
||||
track::{self, Tracker, TrackerIndex},
|
||||
FastHashMap, SubmissionIndex,
|
||||
};
|
||||
@ -107,6 +108,26 @@ impl Queue {
|
||||
pub(crate) fn lock_life<'a>(&'a self) -> MutexGuard<'a, LifetimeTracker> {
|
||||
self.life_tracker.lock()
|
||||
}
|
||||
|
||||
pub(crate) fn maintain(
|
||||
&self,
|
||||
submission_index: u64,
|
||||
snatch_guard: &SnatchGuard,
|
||||
) -> (
|
||||
SmallVec<[SubmittedWorkDoneClosure; 1]>,
|
||||
Vec<super::BufferMapPendingClosure>,
|
||||
bool,
|
||||
) {
|
||||
let mut life_tracker = self.lock_life();
|
||||
let submission_closures =
|
||||
life_tracker.triage_submissions(submission_index, &self.device.command_allocator);
|
||||
|
||||
let mapping_closures = life_tracker.handle_mapping(snatch_guard);
|
||||
|
||||
let queue_empty = life_tracker.queue_empty();
|
||||
|
||||
(submission_closures, mapping_closures, queue_empty)
|
||||
}
|
||||
}
|
||||
|
||||
crate::impl_resource_type!(Queue);
|
||||
@ -1505,7 +1526,7 @@ fn validate_command_buffer(
|
||||
command_buffer: &CommandBuffer,
|
||||
queue: &Queue,
|
||||
cmd_buf_data: &crate::command::CommandBufferMutable,
|
||||
snatch_guard: &crate::snatch::SnatchGuard<'_>,
|
||||
snatch_guard: &SnatchGuard,
|
||||
submit_surface_textures_owned: &mut FastHashMap<*const Texture, Arc<Texture>>,
|
||||
used_surface_textures: &mut track::TextureUsageScope,
|
||||
) -> Result<(), QueueSubmitError> {
|
||||
|
@ -443,15 +443,7 @@ impl Device {
|
||||
|
||||
let (submission_closures, mapping_closures, queue_empty) =
|
||||
if let Some(queue) = self.get_queue() {
|
||||
let mut life_tracker = queue.lock_life();
|
||||
let submission_closures =
|
||||
life_tracker.triage_submissions(submission_index, &self.command_allocator);
|
||||
|
||||
let mapping_closures = life_tracker.handle_mapping(&snatch_guard);
|
||||
|
||||
let queue_empty = life_tracker.queue_empty();
|
||||
|
||||
(submission_closures, mapping_closures, queue_empty)
|
||||
queue.maintain(submission_index, &snatch_guard)
|
||||
} else {
|
||||
(SmallVec::new(), Vec::new(), true)
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user