Add warning and clip display if a buffer will be too large

* E.g. if a huge buffer is displayed as just floats, there could be
  100s of millions of rows. Instead, we clip to 200,000 (anecdotally
  where things start getting a bit laggy on the control), and allow
  advancing through sections of the buffer at a time.
This commit is contained in:
baldurk
2015-10-10 10:56:53 +02:00
parent 5a401cf541
commit 1b99bb3dfc
2 changed files with 165 additions and 119 deletions
+117 -98
View File
@@ -35,24 +35,24 @@
System.Windows.Forms.Label label3;
System.Windows.Forms.Label label5;
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(BufferViewer));
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin3 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin3 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient7 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient15 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin3 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient3 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient16 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient8 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient17 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient3 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient18 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient19 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient9 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient20 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient21 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
WeifenLuo.WinFormsUI.Docking.DockPanelSkin dockPanelSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPanelSkin();
WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin autoHideStripSkin1 = new WeifenLuo.WinFormsUI.Docking.AutoHideStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient1 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin dockPaneStripSkin1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripSkin();
WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient dockPaneStripGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient2 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient2 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient3 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient dockPaneStripToolWindowGradient1 = new WeifenLuo.WinFormsUI.Docking.DockPaneStripToolWindowGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient4 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient5 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.DockPanelGradient dockPanelGradient3 = new WeifenLuo.WinFormsUI.Docking.DockPanelGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient6 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
WeifenLuo.WinFormsUI.Docking.TabGradient tabGradient7 = new WeifenLuo.WinFormsUI.Docking.TabGradient();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
this.previewTable = new System.Windows.Forms.TableLayoutPanel();
this.tableLayoutPanel3 = new System.Windows.Forms.TableLayoutPanel();
this.render = new renderdocui.Controls.NoScrollPanel();
@@ -116,6 +116,7 @@
this.instSep = new System.Windows.Forms.ToolStripSeparator();
this.instLabel = new System.Windows.Forms.ToolStripLabel();
this.instanceIdxToolitem = new System.Windows.Forms.ToolStripTextBox();
this.largeBufferWarning = new System.Windows.Forms.Label();
this.gsOutBufferView = new System.Windows.Forms.DataGridView();
this.columnContextMenu = new System.Windows.Forms.ContextMenuStrip(this.components);
this.resetSelectedColumnsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
@@ -627,15 +628,15 @@
this.vsInBufferView.AllowUserToResizeRows = false;
this.vsInBufferView.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;
this.vsInBufferView.BackgroundColor = System.Drawing.Color.White;
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle7.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.vsInBufferView.DefaultCellStyle = dataGridViewCellStyle7;
this.vsInBufferView.Location = new System.Drawing.Point(12, 41);
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle1.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.vsInBufferView.DefaultCellStyle = dataGridViewCellStyle1;
this.vsInBufferView.Location = new System.Drawing.Point(12, 70);
this.vsInBufferView.Name = "vsInBufferView";
this.vsInBufferView.ReadOnly = true;
this.vsInBufferView.RowHeadersVisible = false;
@@ -643,7 +644,7 @@
this.vsInBufferView.ShowCellErrors = false;
this.vsInBufferView.ShowCellToolTips = false;
this.vsInBufferView.ShowEditingIcon = false;
this.vsInBufferView.Size = new System.Drawing.Size(246, 85);
this.vsInBufferView.Size = new System.Drawing.Size(246, 56);
this.vsInBufferView.TabIndex = 10;
this.vsInBufferView.VirtualMode = true;
this.vsInBufferView.CellMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.bufferView_MouseClick);
@@ -674,15 +675,15 @@
this.vsOutBufferView.AllowUserToResizeRows = false;
this.vsOutBufferView.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;
this.vsOutBufferView.BackgroundColor = System.Drawing.Color.White;
dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle8.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.vsOutBufferView.DefaultCellStyle = dataGridViewCellStyle8;
this.vsOutBufferView.Location = new System.Drawing.Point(264, 40);
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle2.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.vsOutBufferView.DefaultCellStyle = dataGridViewCellStyle2;
this.vsOutBufferView.Location = new System.Drawing.Point(264, 70);
this.vsOutBufferView.Name = "vsOutBufferView";
this.vsOutBufferView.ReadOnly = true;
this.vsOutBufferView.RowHeadersVisible = false;
@@ -690,7 +691,7 @@
this.vsOutBufferView.ShowCellErrors = false;
this.vsOutBufferView.ShowCellToolTips = false;
this.vsOutBufferView.ShowEditingIcon = false;
this.vsOutBufferView.Size = new System.Drawing.Size(206, 85);
this.vsOutBufferView.Size = new System.Drawing.Size(206, 55);
this.vsOutBufferView.TabIndex = 11;
this.vsOutBufferView.VirtualMode = true;
this.vsOutBufferView.CellMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.bufferView_MouseClick);
@@ -709,55 +710,55 @@
this.dockPanel.Dock = System.Windows.Forms.DockStyle.Fill;
this.dockPanel.DockBottomPortion = 0.5D;
this.dockPanel.DocumentStyle = WeifenLuo.WinFormsUI.Docking.DocumentStyle.DockingWindow;
this.dockPanel.Location = new System.Drawing.Point(3, 34);
this.dockPanel.Location = new System.Drawing.Point(3, 57);
this.dockPanel.Name = "dockPanel";
this.dockPanel.Size = new System.Drawing.Size(834, 462);
dockPanelGradient7.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient7.StartColor = System.Drawing.SystemColors.ControlLight;
autoHideStripSkin3.DockStripGradient = dockPanelGradient7;
tabGradient15.EndColor = System.Drawing.SystemColors.Control;
tabGradient15.StartColor = System.Drawing.SystemColors.Control;
tabGradient15.TextColor = System.Drawing.SystemColors.ControlDarkDark;
autoHideStripSkin3.TabGradient = tabGradient15;
autoHideStripSkin3.TextFont = new System.Drawing.Font("Tahoma", 8.25F);
dockPanelSkin3.AutoHideStripSkin = autoHideStripSkin3;
tabGradient16.EndColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient16.StartColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient16.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient3.ActiveTabGradient = tabGradient16;
dockPanelGradient8.EndColor = System.Drawing.SystemColors.Control;
dockPanelGradient8.StartColor = System.Drawing.SystemColors.Control;
dockPaneStripGradient3.DockStripGradient = dockPanelGradient8;
tabGradient17.EndColor = System.Drawing.SystemColors.ControlLight;
tabGradient17.StartColor = System.Drawing.SystemColors.ControlLight;
tabGradient17.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient3.InactiveTabGradient = tabGradient17;
dockPaneStripSkin3.DocumentGradient = dockPaneStripGradient3;
dockPaneStripSkin3.TextFont = new System.Drawing.Font("Tahoma", 8.25F);
tabGradient18.EndColor = System.Drawing.SystemColors.ActiveCaption;
tabGradient18.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient18.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
tabGradient18.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
dockPaneStripToolWindowGradient3.ActiveCaptionGradient = tabGradient18;
tabGradient19.EndColor = System.Drawing.SystemColors.Control;
tabGradient19.StartColor = System.Drawing.SystemColors.Control;
tabGradient19.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripToolWindowGradient3.ActiveTabGradient = tabGradient19;
dockPanelGradient9.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient9.StartColor = System.Drawing.SystemColors.ControlLight;
dockPaneStripToolWindowGradient3.DockStripGradient = dockPanelGradient9;
tabGradient20.EndColor = System.Drawing.SystemColors.InactiveCaption;
tabGradient20.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient20.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
tabGradient20.TextColor = System.Drawing.SystemColors.InactiveCaptionText;
dockPaneStripToolWindowGradient3.InactiveCaptionGradient = tabGradient20;
tabGradient21.EndColor = System.Drawing.Color.Transparent;
tabGradient21.StartColor = System.Drawing.Color.Transparent;
tabGradient21.TextColor = System.Drawing.SystemColors.ControlDarkDark;
dockPaneStripToolWindowGradient3.InactiveTabGradient = tabGradient21;
dockPaneStripSkin3.ToolWindowGradient = dockPaneStripToolWindowGradient3;
dockPanelSkin3.DockPaneStripSkin = dockPaneStripSkin3;
this.dockPanel.Skin = dockPanelSkin3;
this.dockPanel.Size = new System.Drawing.Size(834, 439);
dockPanelGradient1.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient1.StartColor = System.Drawing.SystemColors.ControlLight;
autoHideStripSkin1.DockStripGradient = dockPanelGradient1;
tabGradient1.EndColor = System.Drawing.SystemColors.Control;
tabGradient1.StartColor = System.Drawing.SystemColors.Control;
tabGradient1.TextColor = System.Drawing.SystemColors.ControlDarkDark;
autoHideStripSkin1.TabGradient = tabGradient1;
autoHideStripSkin1.TextFont = new System.Drawing.Font("Tahoma", 8.25F);
dockPanelSkin1.AutoHideStripSkin = autoHideStripSkin1;
tabGradient2.EndColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient2.StartColor = System.Drawing.SystemColors.ControlLightLight;
tabGradient2.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient1.ActiveTabGradient = tabGradient2;
dockPanelGradient2.EndColor = System.Drawing.SystemColors.Control;
dockPanelGradient2.StartColor = System.Drawing.SystemColors.Control;
dockPaneStripGradient1.DockStripGradient = dockPanelGradient2;
tabGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
tabGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
tabGradient3.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripGradient1.InactiveTabGradient = tabGradient3;
dockPaneStripSkin1.DocumentGradient = dockPaneStripGradient1;
dockPaneStripSkin1.TextFont = new System.Drawing.Font("Tahoma", 8.25F);
tabGradient4.EndColor = System.Drawing.SystemColors.ActiveCaption;
tabGradient4.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient4.StartColor = System.Drawing.SystemColors.GradientActiveCaption;
tabGradient4.TextColor = System.Drawing.SystemColors.ActiveCaptionText;
dockPaneStripToolWindowGradient1.ActiveCaptionGradient = tabGradient4;
tabGradient5.EndColor = System.Drawing.SystemColors.Control;
tabGradient5.StartColor = System.Drawing.SystemColors.Control;
tabGradient5.TextColor = System.Drawing.SystemColors.ControlText;
dockPaneStripToolWindowGradient1.ActiveTabGradient = tabGradient5;
dockPanelGradient3.EndColor = System.Drawing.SystemColors.ControlLight;
dockPanelGradient3.StartColor = System.Drawing.SystemColors.ControlLight;
dockPaneStripToolWindowGradient1.DockStripGradient = dockPanelGradient3;
tabGradient6.EndColor = System.Drawing.SystemColors.InactiveCaption;
tabGradient6.LinearGradientMode = System.Drawing.Drawing2D.LinearGradientMode.Vertical;
tabGradient6.StartColor = System.Drawing.SystemColors.GradientInactiveCaption;
tabGradient6.TextColor = System.Drawing.SystemColors.InactiveCaptionText;
dockPaneStripToolWindowGradient1.InactiveCaptionGradient = tabGradient6;
tabGradient7.EndColor = System.Drawing.Color.Transparent;
tabGradient7.StartColor = System.Drawing.Color.Transparent;
tabGradient7.TextColor = System.Drawing.SystemColors.ControlDarkDark;
dockPaneStripToolWindowGradient1.InactiveTabGradient = tabGradient7;
dockPaneStripSkin1.ToolWindowGradient = dockPaneStripToolWindowGradient1;
dockPanelSkin1.DockPaneStripSkin = dockPaneStripSkin1;
this.dockPanel.Skin = dockPanelSkin1;
this.dockPanel.TabIndex = 12;
//
// tableLayoutPanel1
@@ -765,11 +766,13 @@
this.tableLayoutPanel1.ColumnCount = 1;
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Controls.Add(this.flowLayoutPanel2, 0, 0);
this.tableLayoutPanel1.Controls.Add(this.dockPanel, 0, 1);
this.tableLayoutPanel1.Controls.Add(this.dockPanel, 0, 2);
this.tableLayoutPanel1.Controls.Add(this.largeBufferWarning, 0, 1);
this.tableLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill;
this.tableLayoutPanel1.Location = new System.Drawing.Point(0, 0);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 2;
this.tableLayoutPanel1.RowCount = 3;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle());
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(840, 499);
@@ -943,6 +946,21 @@
this.instanceIdxToolitem.Text = "0";
this.instanceIdxToolitem.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.instanceIdxToolitem_KeyPress);
//
// largeBufferWarning
//
this.largeBufferWarning.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.largeBufferWarning.AutoSize = true;
this.largeBufferWarning.BackColor = System.Drawing.Color.Gold;
this.largeBufferWarning.Location = new System.Drawing.Point(3, 31);
this.largeBufferWarning.Name = "largeBufferWarning";
this.largeBufferWarning.Padding = new System.Windows.Forms.Padding(5);
this.largeBufferWarning.Size = new System.Drawing.Size(834, 23);
this.largeBufferWarning.TabIndex = 13;
this.largeBufferWarning.Text = "This buffer is too large to show, displaying 200,000 rows. Click here to advance " +
"to the next part of the buffer.";
this.largeBufferWarning.Click += new System.EventHandler(this.largeBufferWarning_Click);
//
// gsOutBufferView
//
this.gsOutBufferView.AllowUserToAddRows = false;
@@ -950,15 +968,15 @@
this.gsOutBufferView.AllowUserToResizeRows = false;
this.gsOutBufferView.AutoSizeRowsMode = System.Windows.Forms.DataGridViewAutoSizeRowsMode.DisplayedCells;
this.gsOutBufferView.BackgroundColor = System.Drawing.Color.White;
dataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle9.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.gsOutBufferView.DefaultCellStyle = dataGridViewCellStyle9;
this.gsOutBufferView.Location = new System.Drawing.Point(476, 40);
dataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Window;
dataGridViewCellStyle3.Font = new System.Drawing.Font("Consolas", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
dataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.ControlText;
dataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.gsOutBufferView.DefaultCellStyle = dataGridViewCellStyle3;
this.gsOutBufferView.Location = new System.Drawing.Point(476, 70);
this.gsOutBufferView.Name = "gsOutBufferView";
this.gsOutBufferView.ReadOnly = true;
this.gsOutBufferView.RowHeadersVisible = false;
@@ -966,7 +984,7 @@
this.gsOutBufferView.ShowCellErrors = false;
this.gsOutBufferView.ShowCellToolTips = false;
this.gsOutBufferView.ShowEditingIcon = false;
this.gsOutBufferView.Size = new System.Drawing.Size(206, 85);
this.gsOutBufferView.Size = new System.Drawing.Size(206, 55);
this.gsOutBufferView.TabIndex = 14;
this.gsOutBufferView.VirtualMode = true;
this.gsOutBufferView.CellMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.bufferView_MouseClick);
@@ -1135,6 +1153,7 @@
private System.Windows.Forms.ToolStripMenuItem selectColumnAsPositionToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem selectColumnAsSecondaryToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem selectAlphaAsSecondaryToolStripMenuItem;
private System.Windows.Forms.Label largeBufferWarning;
}
}
+48 -21
View File
@@ -145,6 +145,8 @@ namespace renderdocui.Windows
}
}
private const int MaxRowCount = 200000;
// one UI state for each stage
private UIState m_VSIn = new UIState(MeshDataStage.VSIn);
private UIState m_VSOut = new UIState(MeshDataStage.VSOut);
@@ -226,6 +228,9 @@ namespace renderdocui.Windows
m_VSOut.m_GridView = vsOutBufferView;
m_GSOut.m_GridView = gsOutBufferView;
largeBufferWarning.Visible = false;
byteOffset.Enabled = false;
rowOffset.Font =
byteOffset.Font =
instanceIdxToolitem.Font =
@@ -518,6 +523,8 @@ namespace renderdocui.Windows
var draw = m_Core.CurDrawcall;
byteOffset.Enabled = false;
instanceIdxToolitem.Enabled = (draw != null && draw.numInstances > 1);
if (!instanceIdxToolitem.Enabled)
@@ -693,6 +700,9 @@ namespace renderdocui.Windows
input.BufferFormats = elems;
input.IndexOffset = 0;
largeBufferWarning.Visible = false;
byteOffset.Enabled = false;
m_VSIn.m_Input = input;
ShowFormatSpecifier();
@@ -882,9 +892,9 @@ namespace renderdocui.Windows
ret.Buffers = new byte[1][];
if(input.Buffers[0] != ResourceId.Null)
ret.Buffers[0] = r.GetBufferData(input.Buffers[0], 0, 0);
ret.Buffers[0] = r.GetBufferData(input.Buffers[0], ByteOffset, 0);
else if (input.Buffers[1] != ResourceId.Null)
ret.Buffers[0] = r.GetTextureData(input.Buffers[1], 0, 0);
ret.Buffers[0] = r.GetTextureData(input.Buffers[1], ByteOffset, 0);
ret.Indices = null;
ret.DataIndices = null;
@@ -1475,9 +1485,6 @@ namespace renderdocui.Windows
uint offs = input.Strides[bufferFormats[el].buffer] * instIdx + bufferFormats[el].offset;
if (!MeshView)
offs += ByteOffset;
bool outofBounds = false;
if (bytedata == null)
@@ -1599,10 +1606,14 @@ namespace renderdocui.Windows
}
bufView.RowCount = 0;
if(!MeshView) byteOffset.Enabled = true;
if (state.m_Rows != null)
{
bufView.RowCount = state.m_Rows.Length;
bufView.RowCount = Math.Min(state.m_Rows.Length, MaxRowCount);
if (state.m_Rows.Length > MaxRowCount)
largeBufferWarning.Visible = true;
ScrollToRow(bufView, RowOffset);
@@ -1776,9 +1787,6 @@ namespace renderdocui.Windows
uint offs = input.Strides[bufferFormats[el].buffer] * instIdx + bufferFormats[el].offset;
if (!MeshView)
offs += ByteOffset;
if (bytedata == null)
{
strm.Seek(0, SeekOrigin.Begin);
@@ -2919,22 +2927,41 @@ namespace renderdocui.Windows
}
}
private void SetByteOffset()
{
largeBufferWarning.Visible = false;
m_VSIn.m_GridView.RowCount = 0;
m_VSIn.m_Rows = null;
m_VSIn.m_GridView.RowCount = 1;
byteOffset.Enabled = false;
m_Core.Renderer.BeginInvoke((ReplayRenderer r) =>
{
var contents = RT_FetchBufferContents(MeshDataStage.VSIn, r, m_VSIn.m_Input);
this.BeginInvoke(new Action(() =>
{
if (m_VSIn.m_Input != null)
{
UI_SetRowsData(MeshDataStage.VSIn, contents, 0);
}
}));
});
}
private void largeBufferWarning_Click(object sender, EventArgs e)
{
byteOffset.Text = (ByteOffset + m_VSIn.m_Input.Strides[0]*MaxRowCount).ToString();
SetByteOffset();
}
private void byteOffset_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == '\n' || e.KeyChar == '\r')
{
m_Core.Renderer.BeginInvoke((ReplayRenderer r) =>
{
var contents = RT_FetchBufferContents(MeshDataStage.VSIn, r, m_VSIn.m_Input);
this.BeginInvoke(new Action(() =>
{
if (m_VSIn.m_Input != null)
{
UI_SetRowsData(MeshDataStage.VSIn, contents, 0);
}
}));
});
SetByteOffset();
}
}