* We can't assume ranges in root signature elements map to shader binding
arrays, there is a many:many relationship (one range can have multiple
elements, or only part of an array, one array can have multiple ranges).
* This can happen if the application calls ResizeBuffers without releasing all
references - the texture is not recreated but we destroyed the RTV, so we need
to create the RTV again.
* dxc emits a PDB which contains a stream with the debuginfo DXBC container,
which we expected to happen for fxc too. Instead fxc just emits the bare SPDB
chunk PDB. So we need to try to guess what to expect and/or handle both.
* Because the flow layout adjusts to its available size, we instead set it to
minimum size until it's first laid out. Otherwise it can get unreasonably
sized.
* This prevents SH_ItemView_ArrowKeysNavigateIntoChildren from causing left-move
from an expanded node to jump immediately to its parent instead of collapsing
it when the scrollbar is not leftmost
* In addition for memory allocations for images we prevent the memory from
getting write references propagated to it, as this can cause initial states to
be generated in captures after the first when we convert write references into
dirty states.
* In principle descriptors should be updated less often than they are
referenced, so we used to cache tracking of them at update time to improve the
speed that references can be processed at submit time during capture.
* Some applications though update a *lot* of descriptors *very* often,
effectively writing all their descriptors for a frame every frame. That means
that this background tracking is wasteful and has a big performance impact, so
instead it's a better balance to do more work at submit time during capture.
* We force FetchUAV/FetchSRV to always return something, and it can be empty if
the resource is unbound meaning we get proper OOB behaviour for it. The D3D12
implementation still prints an error message for registers that don't
correspond to the root signature at all, but for D3D11 we silently allow it.
* This likely comes from capturing without tessellation and retrieving 0, and
replaying with tessellation. For this case we don't need to set the number of
vertices at all.