Apply to loose events i.e. Barriers and resource usage in the current command buffer info
Fixes incorrect event ID in UI and resource usage for non-Action events at the end of a command buffer which contained IndirectDraw*Count calls
* We normally deduplicate during capture, but replay can introduce new
duplication against internal objects. Using ReplaceResource() would fix this
but updating the wrapper map is necessary for D3D11 to query current state
properly.
* Without this then buffers over 32-bit range which are treated as a 1D resource
could fail. Note that most APIs don't actually behave well with >=4GB buffers.
DiscardFrameCapture releases m_RefBuffers and m_RefQueues while holding
a write lock on m_CapTransitionLock. When a resource's ref count reaches
zero, the destructor calls Unmap, which tries to acquire a read lock on
the same m_CapTransitionLock.
If the parent command buffer was begun with VK_COMMAND_BUFFER_USAGE_RENDER_PASS_CONTINUE_BIT then that implies an active render pass to propagate to the child command buffer.
Fixes incorrect error report in nested command buffers:
"Executing a command buffer with RENDER_PASS_CONTINUE_BIT outside of render pass"
* Two of these were fixed in slightly earlier versions but the cutoff doesn't
need to be exact, this major version is ~4.5 months old as of the time of
this commit.
* The pipeline rebind workaround was likely fixed years ago.
Without the comma, this
"igvk32.dll",
"igvk64.dll"
"igxelpgicd32.dll",
"igxelpgicd64.dll",
becomes
"igvk32.dll",
"igvk64.dlligxelpgicd32.dll",
"igxelpgicd64.dll",
The forward declaration of InterpolationMode already included its
underlying type. This commit does the same for ResourceRetType and
ResourceDimension.
Placing `alignas` before the type is more in-line with the C++ standard,
Microsoft Learn examples, and other places in this codebase. While the
old way worked with MSVC, this is more consistent and improves
compatibility with other tools without affecting the MSVC build.
Explicitly check for a valid command buffer Id instead of relying on m_LastEventID > startEID check to fix reading baked command buffer when selecting vkQueueSubmit
The command buffer id will be 0 which will make an empty entry in the map.
The submit will be skipped because startEID >= m_LastEventID.
Add asserts to catch invalid command buffer ID being used during ReplayQueueSubmit()
Change resource usage EID offset for events without an action to match usage EID offset for events with an action.
Simplify EID offset when adding events without an action.
Closer match to the D3D12 implementation.
When doing history on depth targts, for ClearDepthStencil events, generate the DepthStencilView dimension from the depth target resource description instead of using the ResourceUsage view member.
Don't early ignore events by using the ResourceUsage view parameter, test the event for any modification.
* The address is 64-byte aligned so shifted by 6, and the range 16-byte aligned
so shifted by 4.
* The max UBO range is still 64k so 13 bits is 1 more than needed to represent
all ranges.
* This would generally only come up with gl_PerVertex, and was hidden before
because gl_Position is the first member. It likely would also reproduce if a
user had a struct output from the mesh shader.