diff --git a/qrenderdoc/Code/Interface/CommonPipelineState.cpp b/qrenderdoc/Code/Interface/CommonPipelineState.cpp index edc0c2e81..023a1e05c 100644 --- a/qrenderdoc/Code/Interface/CommonPipelineState.cpp +++ b/qrenderdoc/Code/Interface/CommonPipelineState.cpp @@ -1012,6 +1012,11 @@ QMap> CommonPipelineState::GetReadOnlyResou BindpointMap key(space, reg); BoundResource val; + // consider this register to not exist - it's in a gap defined by sparse root signature + // elements + if(bind.RootElement == ~0U) + continue; + val.Id = bind.Resource; val.HighestMip = (int)bind.HighestMip; val.FirstSlice = (int)bind.FirstArraySlice; @@ -1142,6 +1147,11 @@ QMap> CommonPipelineState::GetReadWriteReso BindpointMap key(space, reg); BoundResource val; + // consider this register to not exist - it's in a gap defined by sparse root signature + // elements + if(bind.RootElement == ~0U) + continue; + val.Id = bind.Resource; val.HighestMip = (int)bind.HighestMip; val.FirstSlice = (int)bind.FirstArraySlice; diff --git a/renderdocui/Code/CommonPipelineState.cs b/renderdocui/Code/CommonPipelineState.cs index 6b3f5818b..82a1d51da 100644 --- a/renderdocui/Code/CommonPipelineState.cs +++ b/renderdocui/Code/CommonPipelineState.cs @@ -1129,6 +1129,10 @@ namespace renderdocui.Code var key = new BindpointMap(space, reg); var val = new BoundResource(); + // consider this register to not exist - it's in a gap defined by sparse root signature elements + if (bind.RootElement == uint.MaxValue) + continue; + val = new BoundResource(); val.Id = bind.Resource; val.HighestMip = (int)bind.HighestMip; @@ -1278,6 +1282,10 @@ namespace renderdocui.Code var key = new BindpointMap(space, reg); var val = new BoundResource(); + // consider this register to not exist - it's in a gap defined by sparse root signature elements + if (bind.RootElement == uint.MaxValue) + continue; + val = new BoundResource(); val.Id = bind.Resource; val.HighestMip = (int)bind.HighestMip;