* When a context is destroyed if we can't make it active somehow it's too late
to destroy anything. We have to assume/count on drivers cleaning up objects.
With sharegroups this may leak for a while unfortunately.
Wireframe overlay was missing the offset of the first vertex in the
draw call and resulted in showing an incorrect wireframe.
This is easily fixed by using the vertexOffset as the first index to
use, just like an indexOffset.
* These can't be re-used with different pipelines, there is only one version
(specialised or not) when the object is created. When looking up reflection
for a shader we use the pipeline only to find the right one so this would
cause the lookup to fail.
- Unify Draw Indirect replay callback handling into a helper functions (for Draw* and DrawMesh*)
- Replay callback handling uses its own Indirect Buffer for partial replay
- Fix event skipping when at an event inside the outer Indirect action
- The curEID might not be the same as baseEventID.
- This could skip later events which should be replayed, if for example doing multiple partial replays.
- Fix DrawMesh Indirect HandlePreCallback() not specifying ActionFlags::MeshDispatch in all cases
Check ALL overlays on ALL EIDs don't crash
Add some IndirectCount draws to VK_Indirect for testing overlays
Check overlays produce output and pixel history is not empty for each non-empty draw
Check overlays produce expected output for empty draws i.e. empty except for *Pass overlay modes
Check Quad Overdraw and Triangle Size overlays outputs match when comparing the Pass and Draw versions
When replaying a single event inside a multi-action Execute Indirect i.e. QuadOverdraw (draw) for a single draw inside an ExecuteIndirect
Also when replaying multiple events inside a multi-action Execute Indirect i.e. QuadOverdraw (pass) on the second draw inside an Execute Indirect draw with three draws
* On D3D11 the runtime handled this for us via query of the DESC struct, but on
D3D12 we'd get whatever the user provided. To make things more clear we
display only the active blend state slot and label it 'all' instead of 0 on
both D3D11 and D3D12.
Fixes validation error
D3D12 ERROR: ID3D12CommandList::ExecuteIndirect: Root Signature set does not match with Root Signature declared in the command signature [ EXECUTION ERROR # 744: EXECUTE_INDIRECT_INVALID_PARAMETERS]
The curEID might not be the same as baseEventID.
This could skip later events which should be replayed, if for example doing multiple partial replays.
Fixes device lost triggered when using TriangleSize (Pass) overlay.