* Rather than explicitly having vkQueueSubmit as a node with command
buffer children, and those with the contents, we now inline everything
and just add labels at beginning and end.
* Also tweaked slightly the fake pass algorithm to handle labels being
present and merging a bit more aggressively to merge adjacent command
buffers that are doing the same pass.
* The linux json file has a different name but this isn't important.
Currently I'm not sure how the json/lib will be placed (will it be
installed somewhere and the json point at /opt/renderdoc/ or what?)
* The reason being that the actual recorded events are interleaved with
others (either on the queue or the cmd buffer), so we have to skip
over those. The events are duplicated where they are inserted by EID
and refer to the original offsets.
* Any uses of this for replaying subsections of the frame are to be
implemented under the replay driver level, as it's too onerous to
require that the replay driver be able to replay arbitrary subsections
or to communicate granularity up to the above layer.
* For non-image mappings (image opaque and buffer) we unbind the whole
resource then bind the initial mapping. This means two batches though
so needs to be synchronised.
* For those types that I think it's valid for them to be duplicated, we
look up if an existing wrapper is present and if so use that - and
just use ReplaceResource.
* If it turns out some other types are duplicated, the handling can be
added easily.
* If we don't add objects into the real->wrapper map, then duplicate
objects returned from the driver are fine. We will naturally create a
unique handle for each and we don't have to worry about clashes, as
the application will see each unique handle and free them separately
since it's not allowed to *rely* on duplicate handles. Then when they
destroy the unique handles, we'll end up destroying the duplicates
multiple times.
* Particularly using the offsets gained from GetImageSubresourceLayout
could cause problems, so instead we pack the slices and mips into the
buffer ourselves just using the per-subresource size.