Implement replay-side resource tracking for OpenGL

* This means that the timeline bar will show use as read/write/clear etc
  and that right clicking on textures in the texture viewer will show
  the events where that texture is used for rendering, for reading, and
  so on.
This commit is contained in:
baldurk
2015-04-11 11:03:19 +01:00
parent e0e345abd7
commit a5cc19ccc6
19 changed files with 885 additions and 336 deletions
+3 -3
View File
@@ -3051,9 +3051,9 @@ namespace renderdocui.Windows
ToolStripItem item = null;
if (start == end)
item = new ToolStripLabel("EID " + start + ": " + usage.Str());
item = new ToolStripLabel("EID " + start + ": " + usage.Str(m_Core.APIProps.pipelineType));
else
item = new ToolStripLabel("EID " + start + "-" + end + ": " + usage.Str());
item = new ToolStripLabel("EID " + start + "-" + end + ": " + usage.Str(m_Core.APIProps.pipelineType));
item.Click += new EventHandler(resourceContextItem_Click);
item.Tag = end;
@@ -3091,7 +3091,7 @@ namespace renderdocui.Windows
{
uint start = 0;
uint end = 0;
ResourceUsage us = ResourceUsage.IA_IB;
ResourceUsage us = ResourceUsage.IndexBuffer;
foreach (var u in usage)
{
+5 -4
View File
@@ -620,8 +620,9 @@ namespace renderdocui.Windows
if (u.eventID == s.draws[d].eventID)
{
// read/write
if (u.usage == ResourceUsage.CS_UAV ||
u.usage == ResourceUsage.PS_UAV ||
if (
((int)u.usage >= (int)ResourceUsage.VS_RWResource &&
(int)u.usage <= (int)ResourceUsage.CS_RWResource) ||
u.usage == ResourceUsage.GenMips ||
u.usage == ResourceUsage.Copy ||
u.usage == ResourceUsage.Resolve)
@@ -632,8 +633,8 @@ namespace renderdocui.Windows
}
// write
else if (u.usage == ResourceUsage.SO ||
u.usage == ResourceUsage.OM_DSV ||
u.usage == ResourceUsage.OM_RTV ||
u.usage == ResourceUsage.DepthStencilTarget ||
u.usage == ResourceUsage.ColourTarget ||
u.usage == ResourceUsage.CopyDst ||
u.usage == ResourceUsage.ResolveDst)
{