* This is a very big blunt hammer for fixing the problem of multithreaded
submission from GL. Every GL call checks to see if the context changed (which
would only happen from a thread switch to a different context) and if detected
it inserts a manual MakeCurrent call equivalent.
* It's slow to capture (when this happens - checking is not particularly slow)
and slow to replay, but it's functional which is an improvement.
* This allows persistent config storage and registering tweak variables that
works independent of the UI's configuration.
* Config vars can be debug only, which means they will be compiled out in stable
version releases. This allows for debug-logging tweaks that are available in
all builds (including nightly builds) for diagnostic purposes, but have zero
overhead in stable releases.
* Variables have a loose hierarchy defined with _ or . to separate nodes.
When getting read only resources from the pipe state, stitch back up
according to the bindpoint mappings. When displaying resources in UI,
don't traverse unbounded arrays. Fix resource swizzle on load/sample/
gather instructions, which happens on fetch result, not on the source
operand. Added more tests for unbounded arrays and different ways to
index into arrays.
* This is useful for large tests like Mesh_Zoo and Texture_Zoo which are API
independent, which can derive from TestCase to get all the helpers, but then
not get auto-added until an API-specific test derives from them
* We still detect the precise same git commit in the android build and skip
recompiles, which is useful for building android once on one platform and
sharing it with other host platform builds.
The assignment of logical identifiers is not guaranteed to match the
order of appearance in the shader bytecode. Adjusted D3D12_CBuffer_Zoo
to exercise this for testing.
* This doesn't test every edge case, but it is a simple smoke test that ensures
any format can at least get consistent accurate results out.
* Further work is needed to test the different failures, overdraws, primitive
IDs, and all the other specific checks in the history.