From 930c1c53d5a4c5609674d4f8323dedd30405cc19 Mon Sep 17 00:00:00 2001 From: baldurk Date: Thu, 15 Jan 2015 19:00:44 +0000 Subject: [PATCH] Crash fixes if drawcall is NULL --- .../PipelineState/D3D11PipelineStateViewer.cs | 12 +++++++----- .../Windows/PipelineState/GLPipelineStateViewer.cs | 12 +++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/renderdocui/Windows/PipelineState/D3D11PipelineStateViewer.cs b/renderdocui/Windows/PipelineState/D3D11PipelineStateViewer.cs index 45eac7646..123ba918d 100644 --- a/renderdocui/Windows/PipelineState/D3D11PipelineStateViewer.cs +++ b/renderdocui/Windows/PipelineState/D3D11PipelineStateViewer.cs @@ -639,15 +639,17 @@ namespace renderdocui.Windows.PipelineState inputLayouts.NodesSelection.Clear(); inputLayouts.EndUpdate(); - topology.Text = draw.topology.ToString(); - if (draw.topology > PrimitiveTopology.PatchList) + PrimitiveTopology topo = draw != null ? draw.topology : PrimitiveTopology.Unknown; + + topology.Text = topo.ToString(); + if (topo > PrimitiveTopology.PatchList) { - int numCPs = (int)draw.topology - (int)PrimitiveTopology.PatchList + 1; + int numCPs = (int)topo - (int)PrimitiveTopology.PatchList + 1; topology.Text = string.Format("PatchList ({0} Control Points)", numCPs); } - switch (draw.topology) + switch (topo) { case PrimitiveTopology.PointList: topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_pointlist; @@ -708,7 +710,7 @@ namespace renderdocui.Windows.PipelineState } } - var node = iabuffers.Nodes.Add(new object[] { "Index", name, draw.indexByteWidth, state.m_IA.ibuffer.Offset, length }); + var node = iabuffers.Nodes.Add(new object[] { "Index", name, draw != null ? draw.indexByteWidth : 0, state.m_IA.ibuffer.Offset, length }); node.Image = global::renderdocui.Properties.Resources.action; node.HoverImage = global::renderdocui.Properties.Resources.action_hover; diff --git a/renderdocui/Windows/PipelineState/GLPipelineStateViewer.cs b/renderdocui/Windows/PipelineState/GLPipelineStateViewer.cs index 36961dfda..7d8bd6a11 100644 --- a/renderdocui/Windows/PipelineState/GLPipelineStateViewer.cs +++ b/renderdocui/Windows/PipelineState/GLPipelineStateViewer.cs @@ -322,15 +322,17 @@ namespace renderdocui.Windows.PipelineState inputLayouts.NodesSelection.Clear(); inputLayouts.EndUpdate(); - topology.Text = draw.topology.ToString(); - if (draw.topology > PrimitiveTopology.PatchList) + PrimitiveTopology topo = draw != null ? draw.topology : PrimitiveTopology.Unknown; + + topology.Text = topo.ToString(); + if (topo > PrimitiveTopology.PatchList) { - int numCPs = (int)draw.topology - (int)PrimitiveTopology.PatchList + 1; + int numCPs = (int)topo - (int)PrimitiveTopology.PatchList + 1; topology.Text = string.Format("PatchList ({0} Control Points)", numCPs); } - switch (draw.topology) + switch (topo) { case PrimitiveTopology.PointList: topologyDiagram.Image = global::renderdocui.Properties.Resources.topo_pointlist; @@ -391,7 +393,7 @@ namespace renderdocui.Windows.PipelineState } } - var node = iabuffers.Nodes.Add(new object[] { "Index", name, draw.indexByteWidth, 0, length }); + var node = iabuffers.Nodes.Add(new object[] { "Index", name, draw != null ? draw.indexByteWidth : 0, 0, length }); node.Image = global::renderdocui.Properties.Resources.action; node.HoverImage = global::renderdocui.Properties.Resources.action_hover;