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

Method OnBinaryWait

layers/sync/sync_submit.cpp:97–119  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

95}
96
97std::optional<SignalInfo> SignalsUpdate::OnBinaryWait(VkSemaphore semaphore) {
98 // Signal can't be registered in both lists at the same time.
99 assert(!vvl::Contains(binary_signal_requests, semaphore) || !vvl::Contains(binary_unsignal_requests, semaphore));
100
101 if (vvl::Contains(binary_unsignal_requests, semaphore)) {
102 return {}; // [core validation check]: multi wait
103 }
104
105 // Get resolving signal
106 std::optional<SignalInfo> resolving_signal;
107 if (auto it = binary_signal_requests.find(semaphore); it != binary_signal_requests.end()) {
108 resolving_signal.emplace(std::move(it->second));
109 binary_signal_requests.erase(it);
110 } else if (auto* registry_signal = vvl::Find(sync_validator_.binary_signals_, semaphore)) {
111 resolving_signal.emplace(*registry_signal);
112 } else {
113 return {}; // [core validation check]: missing signal for binary wait
114 }
115
116 // Register unsignal request
117 binary_unsignal_requests.emplace(semaphore);
118 return resolving_signal;
119}
120
121std::optional<SignalInfo> SignalsUpdate::OnTimelineWait(VkSemaphore semaphore, uint64_t wait_value) {
122 std::optional<SignalInfo> resolving_signal;

Callers 2

ResolvePresentWaitsMethod · 0.80
ResolveSubmitWaitsMethod · 0.80

Calls 6

ContainsFunction · 0.85
FindFunction · 0.50
findMethod · 0.45
endMethod · 0.45
emplaceMethod · 0.45
eraseMethod · 0.45

Tested by

no test coverage detected