* This is useful when writing automated tests that want to test the output of
rendering which only happens to outputs, such as mesh rendering, or could
potentially be bypassed with direct readback like GetTextureData vs rendering
a texture.
* When needed on windows we convert to/from UTF-8. For most places this is easy
enough, the callstack processing is now moved to store most data as UTF-8 in
the first place.
* This means that things will work successfully even if the 'executable' is
actually e.g. python3 in a system directory and nowhere related to where the
renderdoc library is.
* 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.
* This gives a little nicer syntax, a bit better type safety, and also
reflects better for SWIG bindings. Overall it's a minor change but
better.
* We don't update the C# UI at all, since it's soon to be removed and
not worth the effort/code churn.
* For now so we're ABI compatible with C#, all enums are uint32_t, but
that is an obvious optimisation in future to reduce struct packing.
* We avoid 'None' as an enum value, because it's a reserved word in
python so will cause problems generating bindings.
* 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 is primarily for vulkan, which supports either xlib or xcb (and
not necessarily both). GL still only supports xlib, windows and
android only support one system regardless of API.
* This should also support xlib again for fetching keystates etc.
* If one of the extensions or layers listed in the log isn't present on
replay, we will just fail to load the capture. It's impossible to know
whether or not it's safe to drop unsupported layers.
* Note that RenderDoc already suppresses reporting device extensions to
the application if they're not supported by capture, which affects
this.
* Also when adding platform surface extensions we check for availability
and only add those present. We do require some minimum amount, but in
future we'll need to report which windowing systems are supported to
the UI layer so it can work appropriately using e.g. xcb or xlib.