51TEST(FenceWaiterVKTest, ExecutesFenceCallback) {
54 auto const waiter =
context->GetFenceWaiter();
56 bool submit_called =
false;
57 auto submit_callback = [&](vk::Fence) {
64 waiter->AddFence(std::move(fence), submit_callback,
65 [&signal]() { signal.Signal(); });
66 EXPECT_TRUE(submit_called);
71TEST(FenceWaiterVKTest, ExecutesFenceCallbackX2) {
74 auto const waiter =
context->GetFenceWaiter();
78 waiter->AddFence(std::move(fence), default_submit_callback,
79 [&signal]() { signal.Signal(); });
83 waiter->AddFence(std::move(fence2), default_submit_callback,
84 [&signal2]() { signal2.Signal(); });
90TEST(FenceWaiterVKTest, ExecutesNewFenceThenOldFence) {
93 auto const waiter =
context->GetFenceWaiter();
99 waiter->AddFence(std::move(fence), default_submit_callback,
100 [&signal]() { signal.Signal(); });
109 waiter->AddFence(std::move(fence2), default_submit_callback,
110 [&signal2]() { signal2.Signal(); });
115 raw_fence->SetStatus(vk::Result::eSuccess);
139TEST(FenceWaiterVKTest, InProgressFencesStillWaitIfTerminated) {
145 auto const waiter =
context->GetFenceWaiter();
153 waiter->AddFence(std::move(fence), default_submit_callback,
154 [&signal]() { signal.Signal(); });
157 std::thread thread([&]() {
158 std::this_thread::sleep_for(std::chrono::milliseconds{100u});
159 raw_fence->
SetStatus(vk::Result::eSuccess);
std::shared_ptr< ContextVK > Build()
Create a Vulkan context with Vulkan functions mocked. The caller is given a chance to tinker on the s...