* 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
* This can cause conflicts with those values set in injected applications, and
librenderdoc.so doesn't need any runtime paths to locate its dependencies
(they are all expected global system libraries)
When QtCreator is used to build a CMake script, it defaults to storing
the qmake to use in the variable "QT_QMAKE_EXECUTABLE"
(this is tweakable in Tools->Options->Kits->CMake generator)
We detect if QT_QMAKE_EXECUTABLE is already defined and if so, use that
setting. Otherwise use the previous default (which is "qmake")
Why this change? A user may have several Qt versions installed, and
QtCreator supports managing between them via the IDE.
Without this change the user will change between kits in the IDE but
Renderdoc will still use the default qmake.
This is problematic in Linux systems because the Qt version installed
via the Qt installer is often more up to date than the distro-provided
one
* This is a simple test using descriptor indexing in fragment and compute
shaders, with sampled images and storage buffers, including passing bindless
arrays through functions to be sure that's tracked properly.
* There's also a define to turn on a reasonably bad case (though not
worst/extreme) of # of descriptors - roughly 5 million descriptors allocated
in total, with roughly 1 million bound at draw time.
* 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.
* We use VK_EXT_buffer_device_address where possible to reduce code complexity &
increase compatibility, but when not available we reserve a buffer within the
existing bindings.
* Only array descriptors have the feedback run. Non-array descriptors can still
be dynamically used/unused but it's expected that there is less pressure to
trim the list as this would only account for flow control and there is value
in showing bindings that may be dynamically unused. For arrays the size might
potentially be extremely large (with 'bindless' type arrays) so reducing it
only to the set of used items is important.
* With VK_EXT_descriptor_indexing descriptor sets can be updated while a
submission is going on, leading to potentially parallel access to the
references.
* With VK_EXT_descriptor_indexing, the contents of descriptor sets at bind times
are (conservatively) meaningless as they may be updated/changed right up until
submit time with the right feature flags enabled. So instead of marking
resources conservatively dirty at bind time, we do it at submit time. It's
invalid for an application to except multiple versions of a descriptor set to
get applied, so sampling once at submit time is sufficient.
* The extension is not yet whitelisted as there is no solution currently for
feedback on used bindings or handling of pointers in data structures within
the UI or shader reflection.