mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-07-13 19:17:12 +00:00
Fixup display&export of byte address and structured (with/no counter)
This commit is contained in:
@@ -769,11 +769,6 @@ D3D11PipelineState D3D11Replay::MakePipelineState()
|
||||
if(desc.ViewDimension == D3D11_UAV_DIMENSION_BUFFER &&
|
||||
(desc.Buffer.Flags & (D3D11_BUFFER_UAV_FLAG_APPEND | D3D11_BUFFER_UAV_FLAG_COUNTER)))
|
||||
{
|
||||
D3D11_BUFFER_DESC bufdesc;
|
||||
((ID3D11Buffer *)res)->GetDesc(&bufdesc);
|
||||
|
||||
view.ElementSize = bufdesc.StructureByteStride;
|
||||
view.Structured = true;
|
||||
view.BufferStructCount = m_pDevice->GetDebugManager()->GetStructCount(rs->CSUAVs[s]);
|
||||
}
|
||||
|
||||
@@ -782,10 +777,19 @@ D3D11PipelineState D3D11Replay::MakePipelineState()
|
||||
view.Format = MakeResourceFormat(desc.Format);
|
||||
view.Type = ToStr::Get(desc.ViewDimension);
|
||||
|
||||
if(desc.ViewDimension == D3D11_RTV_DIMENSION_BUFFER)
|
||||
if(desc.ViewDimension == D3D11_UAV_DIMENSION_BUFFER)
|
||||
{
|
||||
view.FirstElement = desc.Buffer.FirstElement;
|
||||
view.NumElements = desc.Buffer.NumElements;
|
||||
view.Flags = desc.Buffer.Flags;
|
||||
|
||||
D3D11_BUFFER_DESC bufdesc;
|
||||
((ID3D11Buffer *)res)->GetDesc(&bufdesc);
|
||||
|
||||
view.Structured = bufdesc.StructureByteStride > 0 && desc.Format == DXGI_FORMAT_UNKNOWN;
|
||||
|
||||
if(view.Structured)
|
||||
view.ElementSize = bufdesc.StructureByteStride;
|
||||
}
|
||||
else if(desc.ViewDimension == D3D11_UAV_DIMENSION_TEXTURE1D)
|
||||
{
|
||||
|
||||
@@ -137,7 +137,7 @@ namespace renderdoc
|
||||
public UInt32 NumElements;
|
||||
|
||||
// BufferEx
|
||||
public UInt32 Flags;
|
||||
public D3D11BufferViewFlags Flags;
|
||||
|
||||
// Texture
|
||||
public UInt32 HighestMip;
|
||||
|
||||
@@ -287,6 +287,14 @@ namespace renderdoc
|
||||
SwapBuffer = 0x10,
|
||||
};
|
||||
|
||||
[Flags]
|
||||
public enum D3D11BufferViewFlags
|
||||
{
|
||||
Raw = 0x1,
|
||||
Append = 0x2,
|
||||
Counter = 0x4,
|
||||
};
|
||||
|
||||
public enum ShaderStageType
|
||||
{
|
||||
Vertex = 0,
|
||||
|
||||
@@ -332,7 +332,18 @@ namespace renderdocui.Windows.PipelineState
|
||||
|
||||
// for structured buffers, display how many 'elements' there are in the buffer
|
||||
if (bufs[t].structureSize > 0)
|
||||
{
|
||||
typename = "StructuredBuffer[" + (bufs[t].length / bufs[t].structureSize) + "]";
|
||||
}
|
||||
else if (r.Flags.HasFlag(D3D11BufferViewFlags.Raw))
|
||||
{
|
||||
typename = "ByteAddressBuffer";
|
||||
}
|
||||
|
||||
if (r.Flags.HasFlag(D3D11BufferViewFlags.Append) || r.Flags.HasFlag(D3D11BufferViewFlags.Counter))
|
||||
{
|
||||
typename += " (Count: " + r.BufferStructCount + ")";
|
||||
}
|
||||
|
||||
// get the buffer type, whether it's just a basic type or a complex struct
|
||||
if (shaderInput != null && !shaderInput.IsTexture)
|
||||
@@ -1011,9 +1022,15 @@ namespace renderdocui.Windows.PipelineState
|
||||
typename = "Buffer";
|
||||
|
||||
if (bufs[t].structureSize > 0)
|
||||
typename = "StructuredBuffer[" + (bufs[t].length / bufs[t].structureSize) + "]";
|
||||
{
|
||||
typename = "RWStructuredBuffer[" + (bufs[t].length / bufs[t].structureSize) + "]";
|
||||
}
|
||||
else if (r.Flags.HasFlag(D3D11BufferViewFlags.Raw))
|
||||
{
|
||||
typename = "RWByteAddressBuffer";
|
||||
}
|
||||
|
||||
if (r.Structured)
|
||||
if (r.Flags.HasFlag(D3D11BufferViewFlags.Append) || r.Flags.HasFlag(D3D11BufferViewFlags.Counter))
|
||||
{
|
||||
typename += " (Count: " + r.BufferStructCount + ")";
|
||||
}
|
||||
@@ -1336,9 +1353,15 @@ namespace renderdocui.Windows.PipelineState
|
||||
typename = "Buffer";
|
||||
|
||||
if (bufs[t].structureSize > 0)
|
||||
typename = "StructuredBuffer[" + (bufs[t].length / bufs[t].structureSize) + "]";
|
||||
{
|
||||
typename = "RWStructuredBuffer[" + (bufs[t].length / bufs[t].structureSize) + "]";
|
||||
}
|
||||
else if (r.Flags.HasFlag(D3D11BufferViewFlags.Raw))
|
||||
{
|
||||
typename = "RWByteAddressBuffer";
|
||||
}
|
||||
|
||||
if (r.Structured)
|
||||
if (r.Flags.HasFlag(D3D11BufferViewFlags.Append) || r.Flags.HasFlag(D3D11BufferViewFlags.Counter))
|
||||
{
|
||||
typename += " (Count: " + r.BufferStructCount + ")";
|
||||
}
|
||||
@@ -2566,13 +2589,24 @@ namespace renderdocui.Windows.PipelineState
|
||||
|
||||
ShaderResource shaderInput = null;
|
||||
|
||||
bool rw = false;
|
||||
|
||||
if (refl != null)
|
||||
{
|
||||
foreach (var bind in refl.ReadOnlyResources)
|
||||
{
|
||||
if (bind.bindPoint == i)
|
||||
{
|
||||
shaderInput = bind;
|
||||
break;
|
||||
}
|
||||
}
|
||||
foreach (var bind in refl.ReadWriteResources)
|
||||
{
|
||||
if (bind.bindPoint == i)
|
||||
{
|
||||
shaderInput = bind;
|
||||
rw = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -2583,6 +2617,8 @@ namespace renderdocui.Windows.PipelineState
|
||||
string format = "Unknown";
|
||||
uint w = 0, h = 0, d = 0, a = 0;
|
||||
|
||||
string viewFormat = view.Format.ToString();
|
||||
|
||||
FetchTexture tex = null;
|
||||
FetchBuffer buf = null;
|
||||
|
||||
@@ -2618,9 +2654,15 @@ namespace renderdocui.Windows.PipelineState
|
||||
|
||||
// for structured buffers, display how many 'elements' there are in the buffer
|
||||
if (bufs[t].structureSize > 0)
|
||||
typename = "StructuredBuffer[" + (bufs[t].length / bufs[t].structureSize) + "]";
|
||||
{
|
||||
typename = (rw ? "RWStructuredBuffer" : "StructuredBuffer") + "[" + (bufs[t].length / bufs[t].structureSize) + "]";
|
||||
}
|
||||
else if (view.Flags.HasFlag(D3D11BufferViewFlags.Raw))
|
||||
{
|
||||
typename = rw ? "RWByteAddressBuffer" : "ByteAddressBuffer";
|
||||
}
|
||||
|
||||
if (view.Structured)
|
||||
if (view.Flags.HasFlag(D3D11BufferViewFlags.Append) || view.Flags.HasFlag(D3D11BufferViewFlags.Counter))
|
||||
{
|
||||
typename += " (Count: " + view.BufferStructCount + ")";
|
||||
}
|
||||
@@ -2630,9 +2672,9 @@ namespace renderdocui.Windows.PipelineState
|
||||
if (view.Format.compType == FormatComponentType.None)
|
||||
{
|
||||
if (shaderInput.variableType.members.Length > 0)
|
||||
format = "struct " + shaderInput.variableType.Name;
|
||||
viewFormat = format = "struct " + shaderInput.variableType.Name;
|
||||
else
|
||||
format = shaderInput.variableType.Name;
|
||||
viewFormat = format = shaderInput.variableType.Name;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -2673,7 +2715,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
i, name,
|
||||
view.Type, typename,
|
||||
w, h, d, a,
|
||||
view.Format, format,
|
||||
viewFormat, format,
|
||||
viewParams };
|
||||
}
|
||||
|
||||
@@ -2817,7 +2859,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
{
|
||||
if (sh.SRVs[i].View == ResourceId.Null) continue;
|
||||
|
||||
rows.Add(ExportViewHTML(sh.SRVs[i], i, null, ""));
|
||||
rows.Add(ExportViewHTML(sh.SRVs[i], i, sh.ShaderDetails, ""));
|
||||
}
|
||||
|
||||
ExportHTMLTable(writer,
|
||||
@@ -2843,7 +2885,7 @@ namespace renderdocui.Windows.PipelineState
|
||||
{
|
||||
if (sh.UAVs[i].View == ResourceId.Null) continue;
|
||||
|
||||
rows.Add(ExportViewHTML(sh.UAVs[i], i, null, ""));
|
||||
rows.Add(ExportViewHTML(sh.UAVs[i], i, sh.ShaderDetails, ""));
|
||||
}
|
||||
|
||||
ExportHTMLTable(writer,
|
||||
|
||||
Reference in New Issue
Block a user