* 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.
* Ideally we would also include mesh output here, but we would need a way to
clear the postvs cache every so often to avoid bloating, otherwise it will
generate too much data iterating the whole capture.
This is supported by OpenGL, and on Vulkan with
VK_EXT_primitive_topology_list_restart. On Vulkan, all drivers are
known to support this even without
VK_EXT_primitive_topology_list_restart. On D3D, primitive restart is
only supported for strip topologies.
Previously, RenderDoc specifically disabled primitive restart for
non-strip topologies. In this change, that is no longer done. If the
app enables primitive restart, so will RenderDoc behave accordingly. It
would be the responsibility of the app to avoid primitive restart if the
API doesn't allow it.
* This may break on drivers old enough to not recognise the first non-legacy
ASIC, but that is much rarer than new drivers that have dropped support for
the old ones.
* Normally we have to ignore subsequent states as potentially garbage pointers
if discard is enabled, but when it's dynamic state we have to ignore its
valid.
* 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.
* Most of the main entry points that can fail with relevant reasons now has a
way of specifying a message to return with it. This message can be displayed
to the user to give more information or context about an error.
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