DebugShaderInputs struct contains existing the parameters:
sample
primitive
and a new parameter
view
Default constructor for DebugShaderInputs sets the parameters to NoPreference (~0U).
The argument buffers are used fully used with no spare bytes
The python test iterates over every draw to check the replay has a valid output target count
This verifies the replay did not crash when replaying ExecuteIndirect with multiple draws and an argument buffer with no spare bytes
1000 drawcalls of 1 instance of 1 triangle
1 drawcall of 1000 instances of 1 triangle
Python tests verify the count of modifications is correct, the modifications are self-consistent and the picked texture value matches the final modifications tex after value
Check the post mod stencil at pixel location 110,100
Check the post mod stencil is unknown at pixel location 275, 260 for fragment zero of a multi-fragment event
Validate that in a fragment event the postMod stencil value should be unknown (-1 or -2)
This test validates the code change in 4815adaa83
It's currently forcibly disabled via 'check_support' because it's known
to fail due to the fact that the commands are always serialised and
replayed in submission order instead of the order that respects queues
blocked on fence waits that get signalled later from other queues.
* We need to check for map writes even if the mapped buffer isn't the one that's
referenced by a submit but still overlaps it. We do this by moving to the heap
for all placed resources so any map to a buffer on a heap is checked as long
as any buffer bound to that heap is referenced.
* When debugging a pixel or doing quad overdraw we replace the pixel shader and
patch in our own UAV. Previously we were moving other UAVs out of the way that
were visible to the pixel shader, but this fails if a UAV is visible to all
stages and used in a vertex stage.
* Now instead for pixel shader inputs we pick a free space and use it. For quad
overdraw we pick an arbitrary high space to hopefully use the precompiled
shader, and if it's somehow not free we recompile the shader with a free
space.
* This is a test of a specific case of lazy serialisation, but in particular
D3D12 descriptors do some aliasing tricks for types to compress the data, so
repeated serialisation needs to be safe.
Fix a typo in a comment in D3D12_Descriptor_Indexing.py.
Fix UAV using a typed buffer view instead of a structured buffer view.
Fix SetDescriptorHeaps being called before ClearUnorderedAccessViewUint
* This is a stupid requirement as the quad overdraw shader doesn't use any
interpolators, but the D3D12 runtime complains and refuses to create a PSO
unless the PS has a matching signature. This works as long as the position was
the first output from the previous stage, but if it isn't the PSO fails to
create.
* To fix this, we take the existing shader and patch it by grafting the output
signature from the last stage over onto the input signature, and patching up
where the position is.