This allows local arm64 builds, and should continue to work
for stable releases only containing arm32.
This also adds the "-g" flag to the install, granting all
requested runtime permissions, simplifying the user experience.
* Instead of erroring and failing to replay a capture if WSI is not
present when replaying even though enabled at compile time, we just
print a warning and allow the supported windowing systems list to
become empty.
* The UI or whichever app is controlling things must then respect this
and not try to create any outputs. If the replay is happening
completely headless there are then no more errors.
* VULKAN_LAYER_FOLDER points outside the prefix to /etc in absolute, so
usually if you customise one you'll want to customise the other.
* This is especially true if you're pointing the install prefix at some
non-root location, and you want make install to succeed instead of
failing to write to /etc.
* Force loading librenderdoccmd.so in the Loader
* Build renderdoc as libVkLayer_GLES_RenderDoc.so, link renderdoccmd
against it, otherwise we will get UnsatisfiedLinkError when running
* If there's a variable which is unused and has no binding declared, it
will be sorted to the end of the list and given a binding of 0. We
don't want to let this override a valid binding for 0, so make sure we
prioritise any variable which is marked as used over one that is
unused.
Before this, when binding multiple sets that use dynamic offsets, the
wrong offsets would be stored for all sets other than the first. This
caused the wrong offsets to be used when replaying individual draws.
* There's a weird issue on mesa where copying between a texture with
unsized format GL_RGBA and sized format GL_RGBA8 fails. The workaround
is to promote to sized format immediately, which changes the behaviour
slightly but as ever the unsized formats are explicitly ambiguous, so
we're within our rights (as part of the GL implementation so to speak)
to change it.
* We need the dispatch thread dimension to be valid when creating the
shader reflection data, which may happen before we've disassembled the
bytecode.
* We do a minimal pass just to skip to that opcode and extract the dims.
* Instead of checking on the filename, we look for a specially named
exported symbol somewhere in a module that's already loaded.
* This allows us to mark the python module as a replay program, so if
it's loaded into the python interpreter it will be able to use the
replay API.