When capture is triggered, calls to vkQueueSubmit attempt to flush all
coherent mapped memory. This causes a problem in some cases if
application calls vkUnmapMemory on the memory that is being flushed.
The goal is to only allow vkUnmapMemory to proceed if that memory is not
currently being flushed, and is in one of the records in the copy that
vkQueueSubmit made of m_CoherentMaps.
* 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.