* 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.
* For non-PIE executables /proc/self/maps contains a segment that starts at e.g.
0x00400000, which is fine, but the offset listed is 00000000 which is not.
* We need to pass absolute addresses to addr2line, so using dl_iterate_phdr to
iterate ourselves allows us to specify that the offset is 00400000.
* For simplicity and backwards compatibility, we generate the same format as
/proc/self/maps complete with dummy fields that we don't need. In future this
could be a more compact representation.
* 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 instead always have 3rdparty/ in the relevant include search paths and rely
on that. Each library still has its own unique base dir within 3rdparty to
clarify where the include is coming from.
* There was a gap between stopping active capturing (meaning newly created
buffers are given an extra refcount) and releasing the extra refcount. Any
newly created buffers in that gap would still be released but that would mean
one of the application's ref's is removed, possibly destroying a buffer by
mistake.
* Instead we keep a specific list of buffers that we're extending so that we
know that the buffers we release are exactly those we gave extra refs to.
* 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.