* It's unclear if this should be required as the fills and copies don't overlap,
but this is not so perf sensitive that a barrier can't be added for safety.
* Previously with shader feedback being fetched separately we may have had to
replay multiple times to ensure clean results. If we do it as part of the
initial replay on selecting the event this issue goes away and we remove the
extra redundant replay.
Added interface functions:
- GetComboBoxCount() the function returns the number of
combo box options currently set,
- SelectComboBoxOption() - selects an active combo box
option by name from the list of set options.
Updated interface functions:
- Changed SetComboOptions() to SetComboBoxOptions to keep
consistency in naming.
* Previously we iterated over each bind, and found the matching resources. Now
we iterate over resources and find the matching bind. This matters when there
are multiple overlapping binds so they are only found once (we don't
disambguate which bind was used, as we don't elsewhere currently)
* There seems to be a significant slowdown when using real swapchains, both for
creation and display. Since thumbnails don't update often (only on event
change, or if the panel is resized which is not a regular occurence)
counterintuitively it's better to render and readback the image offscreen and
re-upload it on the CPU.
* The principle here is that on D3D12 it's common to have huge descriptor heaps
in which only a handful of descriptors are changed. By caching the expanded
D3D12Pipe::View results from these unchanging descriptors we don't have to do
that over and over. Any descriptors written in the captured frame may have
different contents depending on where we've replayed up to, so we don't cache
them to keep things simple rather than invalidating the cache.
* We defer destruction of the view objects created until the next flush. In
future this could be smarter about associating resource destructions with a
submitted batch and deferring further until a fence is signalled to avoid
synchronisation.