* This is primarily useful for HLSL on Vulkan, but could be used with any other
combination. If multiple tools can perform the conversion, the highest
priority one is used.
* On GL addressing modes are called wrap modes, and the wrap value is then known
as repeat. If we don't 'localise' this then it can be confusing to show that
it is "Wrap".
* rdcstr no longer inherits from rdcarray, it implements all functionality
itself.
* There are now three representations:
- Heap-allocated, same as how rdcarray behaves.
- Local-allocated, for small strings we store them in a union array.
- Compile-time literal, only created from user-defined literals.
* The main observation is that a lot of RenderDoc's strings are compile-time
literals either from struct names, member names, or stringified enum values.
Storing these directly and allowing them to be moved and copied quickly saves
on allocations and time. When the string is modified, it's copied to one of the other formats.
* Typeless textures must be interpreted as some kind of format, so without a
better hint we use UNORM as a default. Ensure that this is listed explicitly
* Each binding element within an arrayed descriptor has a bool indicating if
it's dynamically used or not (which will be set to true if the feedback isn't
available). Each descriptor has a uint32_t indicating how many elements are
dynamically used - which is useful for the UI to hide the root of an array
that has no used elements, or to heuristically decide whether to expand or
elide the contents.
Renames the "cont.d" column in the Pipeline State window to
"Additional". This is a less confusing title then the contraction.
Adds a "(VK_WHOLE_SIZE)" annotation after the range if VK_WHOLE_SIZE
was used, and an "(empty view)" annotation if the range is empty.
These annotations are intended to help diagnose incorrectly filled
buffer descriptors.
When selecting a draw with a tessellation evaluation shader using
layout(quads), RenderDoc would emit an "Unexpected output topology"
error.
Additional changes:
* Fixes a typo in the VK_EXT_transform_feedback name in various debug
prints.
* Renames the "GS Out" 3D View tab in the Mesh Viewer to "GS/DS Out",
to match the corresponding table. This affects all APIs.
* The apk targets api level 21 which is 5.0, so it still won't install on
anything older.
* We pop up a big warning to the user the first time they try and select such a
remote host.
* We now push everything mutable about the draw data configuration into a single
struct which we copy around (the actual buffer data remains refcounted and not
copied). This means that we don't have one thread still trying to do things on
a model which is being updated on another thread.
* If we have multiple bindings aliasing the same slot, we want to keep going if
the first one we find is unused to see if the slot is aliased with one that
*is* used. We'll still use the last unused one if we don't find any used at
all (and with aliasing any one we pick is as valid as another).