Skip to content

Commit

Permalink
extract Queue.maintain
Browse files Browse the repository at this point in the history
  • Loading branch information
teoxoy committed Oct 15, 2024
1 parent 1d448eb commit 312114a
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 12 deletions.
25 changes: 24 additions & 1 deletion wgpu-core/src/device/queue.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ use crate::{
ParentDevice, ResourceErrorIdent, StagingBuffer, Texture, TextureInner, Trackable,
},
resource_log,
snatch::SnatchGuard,
track::{self, Tracker, TrackerIndex},
FastHashMap, SubmissionIndex,
};
Expand Down Expand Up @@ -96,6 +97,28 @@ 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);

life_tracker.triage_mapped();

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);
Expand Down Expand Up @@ -1449,7 +1472,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> {
Expand Down
12 changes: 1 addition & 11 deletions wgpu-core/src/device/resource.rs
Original file line number Diff line number Diff line change
Expand Up @@ -432,17 +432,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);

life_tracker.triage_mapped();

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)
};
Expand Down

0 comments on commit 312114a

Please sign in to comment.