While we always use an 8 byte storage within renderdoc, the KHR
storage can be of multiple size & type.
The issue was that we were storing a counter in double but then
reporting the type in uint.
To fix this use the KHR storage type to figure the renderdoc type. The
byteWidth size remains always 8 bytes within renderdoc.
This fixes a performance regression when loading captures from <=v1.6
(before the new image state code went in). The code to import the old
image state information was incorrectly discarding the frame ref
information, forcing the images to be reinitialized on every replay.
In old captures `ImageRefs` chunk is processed, creating `ImageState`
objects that only contain `refType`; then `BeginCaptureFrame` processes
the `ImageLayouts` info, to construct a new `ImageState` object,
containing the layout information. This `ImageState` was overwriting the
`ImageState` from the `ImageRefs` chunk, discarding the `refType` info.
This change merges the `ImageState`s from `ImageRefs`, where each field
of the merged image state comes from whichever `ImageState` had a
non-undefined value for that field.
For new captures, this change should be safe, since the image state
should be undefined when the `BeginCaptureFrame` chunk is processed, so
the `MergCaptureBeginState` call will just take all the state fields
from the `ImageState` stored in the `BeginCaptureFrame` chunk.
Change-Id: Id2252edb6382bd02bc0236b77c7cca667e97bf29
This is needed for Vulkan Pixel history, where we need to know render
state at current point of time for a command buffer during callback
replay.
Modifications:
- Removed m_pDriver and m_CreationInfo members from VulkanRenderState,
instead these are accepted as arguments to member functions.
- BakedCmdBufferInfo state is now full VulkanRenderState
* Enter and shift-enter in the find text go forwarwd and backwards respectively.
* This replaces the previous system of selecting a direction explicitly and only
ever going in that direction when finding.
* The builtin is more directly useful but the signature index allows us to match
up inputs and outputs that don't have a builtin meaning (pure interpolators).