* We also only use GIT_COMMIT_HASH where necessary to avoid rebuilding many
files for no reason, including splitting version.cpp out into a separate
project as we do with VS since otherwise changing its preprocessor defines
rebuilds the whole renderdoc project.
* At the same time, move the git hash to be internal only so we don't have to
try to link version.cpp into other projects like renderdoccmd or qrenderdoc.
* 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.