mirror of
https://github.com/baldurk/renderdoc.git
synced 2026-05-06 01:50:38 +00:00
Fixup display&export of byte address and structured (with/no counter)
This commit is contained in:
@@ -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