Fix fetching DRED contexts

* Though these are broken as they are not properly processing BeginEvent strings
  which are not packed/encoded
This commit is contained in:
baldurk
2024-12-05 13:31:23 +00:00
parent 72fffe4cf2
commit 9bc648cf3b
2 changed files with 26 additions and 17 deletions
+6 -2
View File
@@ -3748,8 +3748,12 @@ void WrappedID3D12Device::DumpDRED(D3D12_AUTO_BREADCRUMB_NODE *node,
if(ctx && numContexts > 0 && ctx->BreadcrumbIndex == i)
{
RDCLOG(" [%u]: %s -- %ls", i, ToStr(node->pCommandHistory[i]).c_str(), ctx->pContextString);
ctx++;
numContexts--;
// sometimes get duplicates?
while(ctx->BreadcrumbIndex == i)
{
ctx++;
numContexts--;
}
}
else
{
+20 -15
View File
@@ -549,6 +549,26 @@ class WrappedID3D12CommandQueue;
template <typename SerialiserType> \
bool CONCAT(Serialise_, func(SerialiserType &ser, __VA_ARGS__));
template <typename DRED_NODE>
inline void GetDREDContexts(const DRED_NODE *node, D3D12_DRED_BREADCRUMB_CONTEXT **contexts,
UINT &numContexts);
template <>
inline void GetDREDContexts(const D3D12_AUTO_BREADCRUMB_NODE *node,
D3D12_DRED_BREADCRUMB_CONTEXT **contexts, UINT &numContexts)
{
*contexts = NULL;
numContexts = 0;
}
template <>
inline void GetDREDContexts(const D3D12_AUTO_BREADCRUMB_NODE1 *node,
D3D12_DRED_BREADCRUMB_CONTEXT **contexts, UINT &numContexts)
{
*contexts = node->pBreadcrumbContexts;
numContexts = node->BreadcrumbContextsCount;
}
class WrappedID3D12Device : public IFrameCapturer, public ID3DDevice, public ID3D12Device14
{
private:
@@ -805,21 +825,6 @@ private:
void DumpDREDPageFault(const D3D12_DRED_PAGE_FAULT_OUTPUT &DredPageFaultOutput);
template <typename DRED_NODE>
void GetDREDContexts(DRED_NODE *node, D3D12_DRED_BREADCRUMB_CONTEXT **contexts, UINT &numContexts)
{
*contexts = NULL;
numContexts = 0;
}
template <>
void GetDREDContexts(D3D12_AUTO_BREADCRUMB_NODE1 *node, D3D12_DRED_BREADCRUMB_CONTEXT **contexts,
UINT &numContexts)
{
*contexts = node->pBreadcrumbContexts;
numContexts = node->BreadcrumbContextsCount;
}
template <typename DRED_NODE>
void DumpDRED(DRED_NODE *head)
{