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.
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.
* This doesn't trigger a rebuild if nothing else has changed, but it does mean
these files can't be customised without going through the build process as
they'll be overwritten on any rebuild. It looks like IfDifferent doesn't work
properly or maybe isn't available on all msbuild versions.