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.
`CreateThread` expects `lpStartAddress` to be a function with the
signature
DWORD WINAPI ThreadProc(
_In_ LPVOID lpParameter
);
on Win32 `WINAPI` is `__stdcall`, but `CheckHookThread` previously
had the effective signature
DWORD __cdecl CheckHookThread(LPVOID param);
because the calling convention was unspecified. The cast that was hiding
this error is also removed.
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.