* Instead of baking these into the overlay texture and trying to decode them
afterwards, we instead write a grayscale 16F value into the overlay texture,
and add a special decode display mode that will use the heatmap and bucketing
provided.
* This means that saving these overlay textures now saves grayscale. When saving
to an 8-bit format, we remap to 0-255 so that greater than 1.0 values are
mapped lower.
* On the light theme we use a less dark background colour improving contrast
with the text.
* On the dark theme the background is still super dark, but we dim the outline
colour which provides an indication of disabled stages
* When calling the register() function there is no frame or globals, so we need
to set an internal handle external to that.
* This means functions that get wrapped know that there's a global handler for
exceptions, which just prints to the log. Otherwise they think they're running
synchronously and write to an invalid exception handling object.
* This will rarely be relevant, but it ensures if the function is decref'd and
the lambda is still alive, that we keep the python object alive until we are
done with it. The primary case for this is persistent callbacks where the
module is then reloaded.
* For pipelines using tessellation or containing a geometry shader we use
transform feedback to fetch the output of the vertex pipeline after these
stages.
* Using the row index is not accurate when some input attributes are disabled,
because they won't match up to the original index in the attributes list.
A new button is added to the UI so that we can cycle the currently active window when there are more windows to capture. It's like pressing the F11 button but it works on Android too.
* On linux sometimes you can't invoke a GUI application as root. To work around
this, we use renderdoccmd to register the layer if it's available, or fail if
it isn't.
* Normally we want to inherit CC and CXX from the parent process to ensure that
the user's choice of compiler is respected. Unfortunately macOS 10.14 starts
shipping broken compilers, so inheriting CC & CXX causes the swig compilation
to fail.
* As a workaround, we just disable this on macOS assuming the user won't ever
want to override CC & CXX because it's all locked into XCode anyway.