* Worst case this is just as invalid as an application, if it uses a totally
bogus VA. However in D3D12 it is apparently valid to refer to VAs out of
bounds of any resource as long as it's within bounds of an underlying heap. To
handle this without serialising VAs as Heap+offset we instead just allow the
address lookup to run out of bounds and pick the next lowest buffer. If the
offset is greater than the buffer size then we're probably no worse than the
application.
In development/CMakeLists.txt:477, the Python interpreter and libs are discovered. It uses the 'old' package discovery mechanism and the new depending on CMake's version.
However the old mechanism sets different variables to the new, so the new also sets the old vars for compatibility, however it is missing two variables.
The first missing var causes the Python minor version to be hardcoded to zero (renderdoccmd/CMakeLists.txt:9) and the second causes the later conditional (CMakeLists.txt:495) to be malformed.
In replay/entry_points.cpp RENDERDOC_RunFunctionalTests(..), it uses a simple char-replacement algorithm for finding the Python modules depending on the Python minor version.
Unfortunately that mechanism relies on there being only a single character to replace which doesn't work once we reach double figures.
* If we only garbage collect after a successful create, applications which
deliberately leak state objects and only free them when they see a failed
create will not have a change to garbage collect.
* We commit statically linked x64 binaries for clang-format-15 for windows and
linux to make the transition easier for anyone running a linux distro that
doesn't yet support llvm 15, or in future for distros that drop support for
it.
ie.
struct A {
vec3 m1;
vec3 m2;
vec3 m2;
};
uniform A a[1];
with a[0] being passed to a function.
Previously it would look for "a.m1", if that is not found then it looks for "a[0].m1" etc.
Include the discarded offset when indexing to get the post mod data per fragment
Do not include the discarded offset when indexing to get the primitive ID per fragment (primitive ID uses a replacement shader which is not affected by discards in the original shader)
Store the post mod depth data in slot 1 of the depth output to make the indexing simpler to keep track of discarded fragments
Set the post mod data for discarded fragments (excluding the final fragment) to be the known texture after (which starts as the pre mod data and is updated for non-discarded fragments).