* This extension is no longer supported by VMA so doesn't run cleanly. We could
fix it up to do everything manually, but there's little point as it's clear
now that this extension had a short lifespan and limited support, and is
unlikely to be in use today in significant manner. We still support it in
RenderDoc of course, but there's not much value in testing it specifically
(and it wasn't auto-tested before)
When the color write enable state (from VK_EXT_color_write_enable) is
not dynamic (i.e the extension is not used),
VulkanRenderState::colorWriteEnable was initialized from pipeline's
color mask info. However, this information should be ignored if color
write mask is dynamic (with shader object / EDS3).
Instead, if color write enable state is not dynamic, it can be
implicitly considered to be true if VkPipelineColorWriteCreateInfoEXT is
not provided, or otherwise it's taken from that.
This change fixes the UI (and HTML export) where the color mask was
output as `____` in such situations regardless of what mask was
dynamically set.
- add secondary commands buffers to Submit() calls so they get put back into the command buffer pool
- fix validation error about renderEndSemaphore
- fix sync validation errors
- add more names to objects
- fix some incorrect names
- move the pipeline bind to after marker "DrawIndirect: Single"
- add marker to start and end of EIDS which should be tracked for resource usage
- add a per frame update descriptorset
- bind compute descriptor sets before binding compute pipelines
- Remove hard coded EIDs from VK_Resource_Usage python
* Some CaptureAccess uses like enumerating GPUs happen before the replay thread
is running, in this case we can safely run on the UI thread as we know there
will be nothing to conflict with.
* We previously decided we'd normally access this only on the UI thread when
local, and only on the replay thread when remote (by neccessity), but some
actions like resolving symbols can be quite slow so we want to make sure these
are actually async and so we leave them on the replay thread so we can display
a proper UI spinner and leave the UI thread active.