D3D11 gave no explicit control over batching query resolve operations, so it appears that 'EndQuery' is the place that ResolveQueryData operations are inserted.
The D3D11 pattern of:
- Begin(query)
- Draw
- End(query)
For tasks such as Occlusion Culling results in this pattern in D3D12:
- BeginQuery
- Draw
- EndQuery
- ResolveQueryData
This appears to inhibit draw-level parallelism as a ResolveQueryData operation sits between every draw. Some means (waves hands) of batching up Resolves into one operation before first use would help immeasurably!
D3D11 gave no explicit control over batching query resolve operations, so it appears that 'EndQuery' is the place that ResolveQueryData operations are inserted.
The D3D11 pattern of:
For tasks such as Occlusion Culling results in this pattern in D3D12:
This appears to inhibit draw-level parallelism as a ResolveQueryData operation sits between every draw. Some means (waves hands) of batching up Resolves into one operation before first use would help immeasurably!