* Distributions will just be a tarball with binaries and library, so if
the user doesn't install it somewhere in LD_LIBRARY_PATH, we want it
to still work.
* When transferring over the network, we keep texture data consistently
in GL origin-bottom-left order. This means we can just flip images on
display and otherwise have things consistently behaving, while still
preserving the behaviour of flipping on saving to disk to try and
mostly 'do the right thing' when saving an image.
* The behaviour should be the same as before except for remote proxying
which is fixed. The behaviour for GL is still that compressed images
saved as compressed will appear to flip vertically from what is
natively displayed in the UI, but I think this is the only sensible
way to behave (and anyway, flipping compressed images is far too
involved to be worthwhile).
* Without this sleep, a second CheckStatus() could actually receive a
busy signal on localhost (or a sufficiently fast connection or slow
computer) because the last client hang-up hasn't completed by the time
the next connection comes in.
* This was copy-pasted from windows where unfortunately the nfds
argument is ignored and we could get away with just passing 0 (which
I suspect is where the broken code came from originally - a windows
example code that passed 0)
Fixes glXCreateWindow returning "BadMatch (invalid parameter attributes)".
Also delete the GLX_ALPHA_SIZE=8 criteria, else there might not be any
matching config.
* If the AMD extensions are active and captured, the driver will crash
on replay in a hard to diagnose way (unless you know what's really
wrong!)
* With this change, the target application should see the extensions
failing to create and gracefully fallback to not using them.
* Also allow disabling GL a little better by removing the dependency in
renderdoccmd.
* Disabling them now completely removes all xcb and xlib build
dependencies. The resulting library/executable is only useful in
limited situations - e.g. replaying vulkan remotely which doesn't need
any window system interaction. Or capturing vulkan as well with the
KHR_display WSI extension which doesn't need any built-time includes
or libs.
* This lets us detect when a remote server has been disconnected and
needs to be restarted, as well as alerting the user if this happens in
the middle of a replay session.
* Pinging other hosts means the context switcher is reasonably up to
date if one of them comes up.
* The compression bound was just a hacked 'uncompressed size + 512'
which might not be enough for true worst case.
* Worse, the serialisation was transferring size_ts so it would break if
proxying between 32-bit and 64-bit executables.
* If the machine idents differ in significant ways that we'd consider
it to be a different platform (currently just OS), and if so mark it
as supported but suggested to be replayed remotely.
* This can be used to determine what kind of machine a capture came from
and potentially decide to alert the user and suggest replaying on that
kind of machine if it's very different.