Instead of fixed arrays, the global state stores a map of UAVs and
SRVs, with the key being a pair of the shader register and register
space. Switched D3D12 sampler/gather to use SM5.1 and handle register
spaces.
Converting std::wstring to std::string by constructing the latter with
wchar_t iterators result in implicit conversion of wchar_t to char which
trips Visual Studio 2019 compiler into throwing a warning of potential
data loss during conversion. Use conv() helper function to do the
conversion and please the compiler at the same time.
Depending on OS and compiler, certain types may not be included
transitively by headers that were included previously. This commit
produces a clean build on the latest trunk versions of GCC, Clang,
and QT.
With large bindless descriptor tables, traversing all entries to
fill the boundDescs vector was a perf bottleneck. By switching to
storing the first descriptor pointer and a count, the bottleneck is
eliminated. Traversal during queue submit is slightly more complicated
but the same number of descriptors are visited.
- Add an outline of another callback used to detect which tests
failed.
- Refactor to make it easier to add additional callbacks: add shader
cache to keep track of created shaders and share them between
callbacks.
For Vulkan pixel history vkCmdEndRenderPass and vkCmdNextSubpass
can represent a modification, since it might be doing an implicit
image resolve. Pixel history is using drawcall callbacks to figure
out values pre- post- events, and vkCmdEndRenderPass and
vkCmdNextSubpass might be such events.
Also adds clear image usage to vkCmdBeginRenderPass(2) for images that
have VK_ATTACHMENT_LOAD_OP_CLEAR.
* We need to always do this when submitting possibly split depth/stencil
implicit transitions, in case the split transitions were actually from the
same layout and use a combined depth/stencil layout.
* Rather than forcing image states to completely split then completely merge
again when the barriers are the same but recorded per-subresource due to
previous splitting.