Texture buffers now default to viewing in the buffer not texture viewer

* The pipeline state windows will open up the buffer viewer instead of
  the texture viewer to show the contents of texture buffers.
This commit is contained in:
baldurk
2015-02-12 21:15:02 +00:00
parent 40e06c17de
commit 8938c71853
4 changed files with 54 additions and 25 deletions
+20 -8
View File
@@ -646,12 +646,12 @@ namespace renderdocui.Windows
#region Get Data Formats/Organisation
public void ViewRawBuffer(ResourceId buff)
public void ViewRawBuffer(bool isBuffer, ResourceId id)
{
ViewRawBuffer(buff, "");
ViewRawBuffer(isBuffer, id, "");
}
public void ViewRawBuffer(ResourceId buff, string formatString)
public void ViewRawBuffer(bool isBuffer, ResourceId id, string formatString)
{
if (m_Core.CurBuffers == null) return;
@@ -660,7 +660,7 @@ namespace renderdocui.Windows
Text = "Buffer Contents";
foreach (var b in m_Core.CurBuffers)
{
if (b.ID == buff)
if (b.ID == id)
{
Text = b.name + " - Contents";
break;
@@ -674,7 +674,7 @@ namespace renderdocui.Windows
FormatElement[] elems = FormatElement.ParseFormatString(formatString, true, out errors);
input.Strides = new uint[] { elems.Last().offset + elems.Last().ByteSize };
input.Buffers = new ResourceId[] { buff };
input.Buffers = new ResourceId[] { isBuffer ? id : ResourceId.Null, isBuffer ? ResourceId.Null : id };
input.Offsets = new uint[] { 0 };
input.IndexBuffer = ResourceId.Null;
input.BufferFormats = elems;
@@ -855,11 +855,14 @@ namespace renderdocui.Windows
if (!MeshView)
{
if (input != null && input.Buffers[0] != ResourceId.Null)
if (input != null && (input.Buffers[0] != ResourceId.Null || input.Buffers[1] != ResourceId.Null))
{
ret.Buffers = new byte[1][];
ret.Buffers[0] = r.GetBufferData(input.Buffers[0], 0, 0);
if(input.Buffers[0] != ResourceId.Null)
ret.Buffers[0] = r.GetBufferData(input.Buffers[0], 0, 0);
else if (input.Buffers[1] != ResourceId.Null)
ret.Buffers[0] = r.GetTextureData(input.Buffers[1], 0, 0);
ret.Indices = null;
ret.IndexCount = (uint)ret.Buffers[0].Length / input.Strides[0];
@@ -2717,7 +2720,16 @@ namespace renderdocui.Windows
public void ProcessBufferFormat(string formatText)
{
ViewRawBuffer(GetUIState(MeshDataStage.VSIn).m_Input.Buffers[0], formatText);
ResourceId id = GetUIState(MeshDataStage.VSIn).m_Input.Buffers[0];
bool isBuffer = true;
if (id == ResourceId.Null)
{
isBuffer = false;
id = GetUIState(MeshDataStage.VSIn).m_Input.Buffers[1];
}
ViewRawBuffer(isBuffer, id, formatText);
}
private void ShowFormatSpecifier()
@@ -1458,11 +1458,19 @@ namespace renderdocui.Windows.PipelineState
{
FetchTexture tex = (FetchTexture)tag;
var viewer = m_Core.GetTextureViewer();
viewer.Show(m_DockContent.DockPanel);
if (!viewer.IsDisposed)
viewer.ViewTexture(tex.ID, true);
if (tex.resType == ShaderResourceType.Buffer)
{
var viewer = new BufferViewer(m_Core, false);
viewer.ViewRawBuffer(false, tex.ID);
viewer.Show(m_DockContent.DockPanel);
}
else
{
var viewer = m_Core.GetTextureViewer();
viewer.Show(m_DockContent.DockPanel);
if (!viewer.IsDisposed)
viewer.ViewTexture(tex.ID, true);
}
}
else if(tag is FetchBuffer)
{
@@ -1581,9 +1589,9 @@ namespace renderdocui.Windows.PipelineState
{
var viewer = new BufferViewer(m_Core, false);
if (format.Length == 0)
viewer.ViewRawBuffer(buf.ID);
viewer.ViewRawBuffer(true, buf.ID);
else
viewer.ViewRawBuffer(buf.ID, format);
viewer.ViewRawBuffer(true, buf.ID, format);
viewer.Show(m_DockContent.DockPanel);
}
}
@@ -1661,7 +1669,7 @@ namespace renderdocui.Windows.PipelineState
if (id != ResourceId.Null)
{
var viewer = new BufferViewer(m_Core, false);
viewer.ViewRawBuffer(id);
viewer.ViewRawBuffer(true, id);
viewer.Show(m_DockContent.DockPanel);
}
}
@@ -2004,7 +2012,7 @@ namespace renderdocui.Windows.PipelineState
return;
var buf = stage.ConstantBuffers[slot].Buffer;
viewer.ViewRawBuffer(buf);
viewer.ViewRawBuffer(true, buf);
viewer.Show(m_DockContent.DockPanel);
return;
@@ -1595,10 +1595,19 @@ namespace renderdocui.Windows.PipelineState
{
FetchTexture tex = (FetchTexture)tag;
var viewer = m_Core.GetTextureViewer();
viewer.Show(m_DockContent.DockPanel);
if (!viewer.IsDisposed)
viewer.ViewTexture(tex.ID, true);
if (tex.resType == ShaderResourceType.Buffer)
{
var viewer = new BufferViewer(m_Core, false);
viewer.ViewRawBuffer(false, tex.ID);
viewer.Show(m_DockContent.DockPanel);
}
else
{
var viewer = m_Core.GetTextureViewer();
viewer.Show(m_DockContent.DockPanel);
if (!viewer.IsDisposed)
viewer.ViewTexture(tex.ID, true);
}
}
else if(tag is ReadWriteTag)
{
@@ -1628,9 +1637,9 @@ namespace renderdocui.Windows.PipelineState
{
var viewer = new BufferViewer(m_Core, false);
if (format.Length == 0)
viewer.ViewRawBuffer(buf.ID);
viewer.ViewRawBuffer(true, buf.ID);
else
viewer.ViewRawBuffer(buf.ID, format);
viewer.ViewRawBuffer(true, buf.ID, format);
viewer.Show(m_DockContent.DockPanel);
}
}
@@ -1662,7 +1671,7 @@ namespace renderdocui.Windows.PipelineState
if (id != ResourceId.Null)
{
var viewer = new BufferViewer(m_Core, false);
viewer.ViewRawBuffer(id);
viewer.ViewRawBuffer(true, id);
viewer.Show(m_DockContent.DockPanel);
}
}
+1 -1
View File
@@ -481,7 +481,7 @@ namespace renderdocui.Windows
if (m_Core.CurBuffers[i].ID == ID)
{
var viewer = new BufferViewer(m_Core, false);
viewer.ViewRawBuffer(ID);
viewer.ViewRawBuffer(true, ID);
viewer.Show(DockPanel);
return;
}