Hello,
I am working on a DX12 renderer which is utilizing multiple threads to build command lists. I am currently trying to figure out a proper way to handle fencing and synchronization between the threads.
My problem is that for some reason my waits seem to be passing through even if the fence hasn't yet been signaled.
This is my structure:
Render Thread: Supplies render data from scene and launches several render tasks on worker threads. Lastly uses GPU&CPU waits to check if all tasks are ready before executing Present.
Worker threads: Builds command list for specified task. Uses cpu-waits if there are dependencies. Queues itself into Queue-thread for GPU-submission.
Queue-thread: Runs continously, checking if any cmd list has been queued. Inserts gpu-waits if needed. Executes the cmd list and lastly signals fence.
As noted, the fences seem to act as if they are signaled when Render thread reaches present.
Am I missing something trivial?
/Baemz