mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-22 23:41:39 +00:00
Clarify root signature index in D3D12 pipeline view
* Internally we split ranges, but for display we should use the original root signature index.
This commit is contained in:
@@ -472,17 +472,18 @@ struct RootSignatureRange
|
||||
|
||||
bool operator==(const RootSignatureRange &o) const
|
||||
{
|
||||
return immediate == o.immediate && rootElement == o.rootElement && visibility == o.visibility &&
|
||||
registerSpace == o.registerSpace && dynamicallyUsedCount == o.dynamicallyUsedCount &&
|
||||
firstUsedIndex == o.firstUsedIndex && lastUsedIndex == o.lastUsedIndex &&
|
||||
constantBuffers == o.constantBuffers && samplers == o.samplers && views == o.views;
|
||||
return immediate == o.immediate && rootSignatureIndex == o.rootSignatureIndex &&
|
||||
visibility == o.visibility && registerSpace == o.registerSpace &&
|
||||
dynamicallyUsedCount == o.dynamicallyUsedCount && firstUsedIndex == o.firstUsedIndex &&
|
||||
lastUsedIndex == o.lastUsedIndex && constantBuffers == o.constantBuffers &&
|
||||
samplers == o.samplers && views == o.views;
|
||||
}
|
||||
bool operator<(const RootSignatureRange &o) const
|
||||
{
|
||||
if(!(immediate == o.immediate))
|
||||
return immediate < o.immediate;
|
||||
if(!(rootElement == o.rootElement))
|
||||
return rootElement < o.rootElement;
|
||||
if(!(rootSignatureIndex == o.rootSignatureIndex))
|
||||
return rootSignatureIndex < o.rootSignatureIndex;
|
||||
if(!(visibility == o.visibility))
|
||||
return visibility < o.visibility;
|
||||
if(!(registerSpace == o.registerSpace))
|
||||
@@ -505,7 +506,7 @@ struct RootSignatureRange
|
||||
DOCUMENT("``True`` if this root element is a root constant (i.e. not in a table).");
|
||||
bool immediate = false;
|
||||
DOCUMENT("The index in the original root signature that this descriptor came from.");
|
||||
uint32_t rootElement = ~0U;
|
||||
uint32_t rootSignatureIndex = ~0U;
|
||||
DOCUMENT("The :class:`BindType` contained by this element.");
|
||||
BindType type = BindType::Unknown;
|
||||
DOCUMENT("The :class:`ShaderStageMask` of this element.");
|
||||
|
||||
@@ -979,7 +979,7 @@ void D3D12Replay::FillRootElements(uint32_t eventId, const D3D12RenderState::Roo
|
||||
rootElements.resize_for_index(ridx);
|
||||
D3D12Pipe::RootSignatureRange &element = rootElements[ridx++];
|
||||
element.immediate = true;
|
||||
element.rootElement = (uint32_t)rootEl;
|
||||
element.rootSignatureIndex = (uint32_t)rootEl;
|
||||
element.type = BindType::ConstantBuffer;
|
||||
element.registerSpace = p.Constants.RegisterSpace;
|
||||
element.visibility = ToShaderStageMask(p.ShaderVisibility);
|
||||
@@ -1010,7 +1010,7 @@ void D3D12Replay::FillRootElements(uint32_t eventId, const D3D12RenderState::Roo
|
||||
rootElements.resize_for_index(ridx);
|
||||
D3D12Pipe::RootSignatureRange &element = rootElements[ridx++];
|
||||
element.immediate = true;
|
||||
element.rootElement = (uint32_t)rootEl;
|
||||
element.rootSignatureIndex = (uint32_t)rootEl;
|
||||
element.type = BindType::ConstantBuffer;
|
||||
element.registerSpace = p.Descriptor.RegisterSpace;
|
||||
element.visibility = ToShaderStageMask(p.ShaderVisibility);
|
||||
@@ -1043,7 +1043,7 @@ void D3D12Replay::FillRootElements(uint32_t eventId, const D3D12RenderState::Roo
|
||||
rootElements.resize_for_index(ridx);
|
||||
D3D12Pipe::RootSignatureRange &element = rootElements[ridx++];
|
||||
element.immediate = true;
|
||||
element.rootElement = (uint32_t)rootEl;
|
||||
element.rootSignatureIndex = (uint32_t)rootEl;
|
||||
element.type = BindType::ReadOnlyResource;
|
||||
element.registerSpace = p.Descriptor.RegisterSpace;
|
||||
element.visibility = ToShaderStageMask(p.ShaderVisibility);
|
||||
@@ -1083,7 +1083,7 @@ void D3D12Replay::FillRootElements(uint32_t eventId, const D3D12RenderState::Roo
|
||||
rootElements.resize_for_index(ridx);
|
||||
D3D12Pipe::RootSignatureRange &element = rootElements[ridx++];
|
||||
element.immediate = true;
|
||||
element.rootElement = (uint32_t)rootEl;
|
||||
element.rootSignatureIndex = (uint32_t)rootEl;
|
||||
element.type = BindType::ReadWriteResource;
|
||||
element.registerSpace = p.Descriptor.RegisterSpace;
|
||||
element.visibility = ToShaderStageMask(p.ShaderVisibility);
|
||||
@@ -1145,7 +1145,7 @@ void D3D12Replay::FillRootElements(uint32_t eventId, const D3D12RenderState::Roo
|
||||
D3D12Pipe::RootSignatureRange &element = rootElements[ridx++];
|
||||
|
||||
element.immediate = false;
|
||||
element.rootElement = (uint32_t)rootEl;
|
||||
element.rootSignatureIndex = (uint32_t)rootEl;
|
||||
element.registerSpace = range.RegisterSpace;
|
||||
element.visibility = ToShaderStageMask(p.ShaderVisibility);
|
||||
|
||||
@@ -1364,7 +1364,7 @@ void D3D12Replay::FillRootElements(uint32_t eventId, const D3D12RenderState::Roo
|
||||
rootElements.resize_for_index(ridx);
|
||||
D3D12Pipe::RootSignatureRange &element = rootElements[ridx++];
|
||||
element.immediate = true;
|
||||
element.rootElement = (uint32_t)i;
|
||||
element.rootSignatureIndex = (uint32_t)i;
|
||||
element.type = BindType::Sampler;
|
||||
element.registerSpace = sampDesc.RegisterSpace;
|
||||
element.visibility = ToShaderStageMask(sampDesc.ShaderVisibility);
|
||||
|
||||
@@ -1370,7 +1370,7 @@ template <typename SerialiserType>
|
||||
void DoSerialise(SerialiserType &ser, D3D12Pipe::RootSignatureRange &el)
|
||||
{
|
||||
SERIALISE_MEMBER(immediate);
|
||||
SERIALISE_MEMBER(rootElement);
|
||||
SERIALISE_MEMBER(rootSignatureIndex);
|
||||
SERIALISE_MEMBER(type);
|
||||
SERIALISE_MEMBER(visibility);
|
||||
SERIALISE_MEMBER(registerSpace);
|
||||
|
||||
Reference in New Issue
Block a user