* This allows it to tick faster when e.g. loading a capture that takes a while
without any pings. It also allows it to continue going for a short while after
the remote server shuts down to capture any crashdump messages.
* This invokes run_tests.py with any arguments but specifies the renderdoc
module and python module paths automatically. Only works if built within the
project repo itself as otherwise it won't locate the test script
* Previously it would be swallowed and processed as the argument to the test
command itself. We need to do a little manual parsing and stop cmdline from
doing too much work.
* We also fix a number of issues that could cause incorrect formats to be
generated.
* Test cases added for D3D11/GL/Vulkan to test different struct types. These
aren't automated at the moment because most of the code they're testing is in
the UI itself.
* On replay on macOS we use NSOpenGLContext so we can render to windows.
* We have two windowing systems on mac - one for Metal compatible outputs and
one for OpenGL compatible outputs.
* Fortunately the extension doesn't add any functionality that can't be achieved
through the old bindings, it's just better decoupled.
* What we do is set up our own VAO attrib/binding tracking, and translate all
the functions (old and new style) into the equivalent modifications of that
state, then each time a change happens we flush out the attribs and bindings
using the old attrib functions.
* We also intercept the queries to the new bindings and return the right values,
so even if loading a capture that uses ARB_vertex_attrib_binding would work as
expected (as all the translation to old bindings happens under the emulation
layer).
* Split up old uber-cbuffers used for unrelated shaders into shader-specific
cbuffers (DebugPixelCBufferData -> TexDisplayPSCBuffer / CheckerboardCBuffer /
MeshPixelCBuffer).
* Split up HLSL files so not everything is lumped into 'debugdisplay.hlsl' but
has separate files as appropriate.
* Use #include in GLSL and HLSL to better organise shader code together rather
than relying on lumping files together on the C++ side.
* Renamed files like 'debugcbuffers.h' to 'hlsl_cbuffers.h'.
* Trimmed out some extensions/cruft that isn't needed in the GLSL side since we
no longer use separable shaders.
* Combine some shaders like Outline/Checkerboard that were similar into central
place.
* If we have a renderpass that we stop replaying at subpass 0, we want to
pretend that the image is preserved as it was at that point - layout and all.
However since we're replaying with the original renderpass any subpass
transitions and finalLayout transitions will take effect. When we end any
active RP during vkEndCommandBuffer, we then undo any of these implicit
transitions to put the image back as it was.
* If a library is loaded as RTLD_DEEPBIND it might be linked directly against
libGL, in which case we need to plt hook the functions we care about as well
as just dlopen.
* When a library libBlah.so is loaded, it might be linked to libGL.so. If so, we
need to go populate our original functions and perform any callbacks when
libGL.so gets loaded as a dependency. This is true even if the library isn't
loaded as LOCAL.
When `Intervals<T>::update` was called with `finish=UINT64_MAX`, the loop
condition `i->start() < finish` would remain true for every interval, until `i`
went past the last interval, at which point `i->start()` (and all the other
accesses to `i` within the loop) have undefined behaviuor.