This adds the next step toward D3D12 pixel history, which is mostly
the generic action callback that is used for other replays later
(similar to how Vulkan pixel history operates).
Change package name to "renderdoc.org.demos" instead of "org.renderdoc.demos" (RenderDoc filters out packages containing "org.renderdoc.")
Added an <intent-filter> to the Android manifest.
This registers the activity with the android package system which means RenderDoc Launch Application knows the activity name to launch.
Used category CATEGORY_ALTERNATIVE to prevent the activity from appearing on the launcher UI.
This is a basic test that mirrors the Vulkan pixel history test,
but repeats draws multiple times to verify SM5.1 and SM6.0.
SM6.6 should be tested as well for writes from direct heap access
but is not yet implemented differently than SM6.0.
This adds some of the D3D12 pixel history framework, with creation
of resources that will be needed during pixel history, and a helper
function and shader to copy pixels from MSAA resources.
Fixes rare problem of current draw not displaying when switching from Stencil overlay to None overlay and the current draw uses the stencil buffer contents
* 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.