MCPcopy Create free account
hub / github.com/KhronosGroup/Vulkan-ValidationLayers / Retire

Method Retire

layers/state_tracker/queue_state.cpp:309–328  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

307}
308
309void vvl::Queue::Retire(QueueSubmission& submission) {
310 submission.EndUse();
311 for (auto& wait : submission.wait_semaphores) {
312 wait.semaphore->RetireWait(this, wait.payload, submission.loc.Get(), true);
313 timeline_wait_count_.fetch_sub((wait.semaphore->type == VK_SEMAPHORE_TYPE_TIMELINE) ? 1 : 0);
314 }
315
316 // When device is lost skip updating substates which might access destroyed/garbage objects.
317 // NOTE: we still need to run semaphore/fence retire routines which do not work with Vulkan
318 // handles but ensure correct invariants (for example, Fence::Retire sets its std::promise)
319 if (!device_state_.is_device_lost) {
320 for (auto& item : sub_states_) {
321 item.second->Retire(submission);
322 }
323 }
324
325 for (auto& signal : submission.signal_semaphores) {
326 signal.semaphore->RetireSignal(signal.payload);
327 }
328}
329
330void vvl::Queue::ThreadFunc() {
331 VVL_TracySetThreadName(__FUNCTION__);

Callers 1

ThreadFuncMethod · 0.45

Calls 4

RetireWaitMethod · 0.80
RetireSignalMethod · 0.80
EndUseMethod · 0.45
GetMethod · 0.45

Tested by

no test coverage detected