* The shader feedback itself will potentially trigger a replay. If this happens
after the overlay is processed when fetching the pipeline state it will undo
the clear-before. To workaround this without a huge and unnecessary refactor,
we just triggere the shader feedback cache before doing a clear-before
overlay. The amount of work is the same it just happens in a different place.
* This was broken in fa674a59b6 where the style
overrode the widget's foreground role. Changed to only use the custom
light/dark role when the desired role is Text (or WindowText).
* Add CATCH_CONFIG_FORCE_FALLBACK_STRINGIFIER to force use of ToStr in
all cases. We can handle ints, etc, we don't need ostringstream, and
this allows us to handle enums that would otherwise just be printed as
their integer value.
* Add CATCH_CONFIG_INLINE_DEBUG_BREAK which restores the Catch 1.0
behaviour of debugbreaks happening in macros and so in-line at the
actual site failure. So the debugger stops on the CHECK() or REQUIRE()
call instead of inside AssertionHandler::complete()
Cherry pick from https://github.com/baldurk/renderdoc/commit/4232736fc21fc6a13a4de6997a5ae106598b225f
* For the most part we implement this as a thin pass-through layer. Where we
care about things (image barriers for layout transitions and queue
submissions) we do two different things:
- For image barriers, we "downcast" to plain VkImageMemoryBarrier. Currently
the only thing that's unique to VkImageMemoryBarrier2KHR is extra access
flags and pipeline stages, which we don't care about. This keeps a lot of
code from having to either handle two paths or handle the new path and then
do lots of conversions back to VkImageMemoryBarrier when running on older
drivers.
- For queue submissions we do the opposite. We promote old VkSubmitInfo to
VkSubmitInfo2KHR and process that in a common function, then if necessary
we decay back to VkSubmitInfo before sending to the driver.
* We can't yet whitelist this for shader debugging because we don't properly
support the aliasing behaviour - each workgroup variable has its own separate
storage, we need to treat them like SSBO pointers into the same buffer and
automatically size it large enough for all of them.
* Note the sync2 structs aren't properly sorted in vk_next_chains.cpp because
I'm about to implement it and I'm too lazy to insert them in the right places
only to go find them all again to remove them.