| 796 | } |
| 797 | |
| 798 | void Device::Flush() { |
| 799 | graphicsQueue->Signal(waitFence.Get(), ++waitFenceCounter); |
| 800 | |
| 801 | // Wait graphics |
| 802 | if (waitFence->GetCompletedValue() != waitFenceCounter) { |
| 803 | REQUIRE(SUCCEEDED(waitFence->SetEventOnCompletion(waitFenceCounter, waitFenceEvent))); |
| 804 | WaitForSingleObject(waitFenceEvent, INFINITE); |
| 805 | } |
| 806 | |
| 807 | computeQueue->Signal(waitFence.Get(), ++waitFenceCounter); |
| 808 | |
| 809 | // Wait compute |
| 810 | if (waitFence->GetCompletedValue() != waitFenceCounter) { |
| 811 | REQUIRE(SUCCEEDED(waitFence->SetEventOnCompletion(waitFenceCounter, waitFenceEvent))); |
| 812 | WaitForSingleObject(waitFenceEvent, INFINITE); |
| 813 | } |
| 814 | |
| 815 | copyQueue->Signal(waitFence.Get(), ++waitFenceCounter); |
| 816 | |
| 817 | // Wait copy |
| 818 | if (waitFence->GetCompletedValue() != waitFenceCounter) { |
| 819 | REQUIRE(SUCCEEDED(waitFence->SetEventOnCompletion(waitFenceCounter, waitFenceEvent))); |
| 820 | WaitForSingleObject(waitFenceEvent, INFINITE); |
| 821 | } |
| 822 | |
| 823 | // Let the backend catch up to the messages |
| 824 | graphicsQueue->ExecuteCommandLists(0u, nullptr); |
| 825 | computeQueue->ExecuteCommandLists(0u, nullptr); |
| 826 | } |
| 827 | |
| 828 | SamplerID Device::CreateSampler() { |
| 829 | ResourceInfo& resource = resources.emplace_back(); |
no test coverage detected