I've got a decent setup going. I track N frames (currently 2); I generate all my draw calls on a thread, then submit them to a CommandQueue and signal that frame's fence. Then I switch to the next frame and do the same procedure, so that I'm constantly generating draw calls and never waiting for any substantial time on the GPU to finish.
Now I want to do a depth prepass, and I'm struggling to figure out how to do so without waiting. First I'd submit my drawcalls for the depth prepass, but then I'd have to wait until it completed before submitting my drawcalls that use the results. Since the signalling the fence sets a point in the queue that you can wait for, I'd essentially by lockstepping each frame.
Should I make a separate CommandQueue that's only responsible for the depth prepass? Or is there some other aspect that I'm missing?