mirror of
https://github.com/Ryujinx/Ryujinx.git
synced 2024-11-30 15:12:04 +00:00
b2b736abc2
* Fix typos * Remove unneeded using statements * Enforce var style more * Remove redundant qualifiers * Fix some indentation * Disable naming warnings on files with external enum names * Fix build * Mass find & replace for comments with no spacing * Standardize todo capitalization and for/if spacing
85 lines
3 KiB
C#
85 lines
3 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using OpenTK;
|
|
using OpenTK.Graphics.OpenGL;
|
|
|
|
namespace Ryujinx.Profiler.UI
|
|
{
|
|
public partial class ProfileWindow
|
|
{
|
|
private void DrawBars(float xOffset, float yOffset, float width)
|
|
{
|
|
if (_sortedProfileData.Count != 0)
|
|
{
|
|
long maxAverage;
|
|
long maxTotal;
|
|
|
|
int verticalIndex = 0;
|
|
float barHeight = (LineHeight - LinePadding) / 3.0f;
|
|
|
|
// Get max values
|
|
long maxInstant = maxAverage = maxTotal = 0;
|
|
foreach (KeyValuePair<ProfileConfig, TimingInfo> kvp in _sortedProfileData)
|
|
{
|
|
maxInstant = Math.Max(maxInstant, kvp.Value.Instant);
|
|
maxAverage = Math.Max(maxAverage, kvp.Value.AverageTime);
|
|
maxTotal = Math.Max(maxTotal, kvp.Value.TotalTime);
|
|
}
|
|
|
|
GL.Enable(EnableCap.ScissorTest);
|
|
GL.Begin(PrimitiveType.Triangles);
|
|
foreach (var entry in _sortedProfileData)
|
|
{
|
|
// Instant
|
|
GL.Color3(Color.Blue);
|
|
float bottom = GetLineY(yOffset, LineHeight, LinePadding, true, verticalIndex++);
|
|
float top = bottom + barHeight;
|
|
float right = (float)entry.Value.Instant / maxInstant * width + xOffset;
|
|
|
|
// Skip rendering out of bounds bars
|
|
if (top < 0 || bottom > Height)
|
|
continue;
|
|
|
|
GL.Vertex2(xOffset, bottom);
|
|
GL.Vertex2(xOffset, top);
|
|
GL.Vertex2(right, top);
|
|
|
|
GL.Vertex2(right, top);
|
|
GL.Vertex2(right, bottom);
|
|
GL.Vertex2(xOffset, bottom);
|
|
|
|
// Average
|
|
GL.Color3(Color.Green);
|
|
top += barHeight;
|
|
bottom += barHeight;
|
|
right = (float)entry.Value.AverageTime / maxAverage * width + xOffset;
|
|
|
|
GL.Vertex2(xOffset, bottom);
|
|
GL.Vertex2(xOffset, top);
|
|
GL.Vertex2(right, top);
|
|
|
|
GL.Vertex2(right, top);
|
|
GL.Vertex2(right, bottom);
|
|
GL.Vertex2(xOffset, bottom);
|
|
|
|
// Total
|
|
GL.Color3(Color.Red);
|
|
top += barHeight;
|
|
bottom += barHeight;
|
|
right = (float)entry.Value.TotalTime / maxTotal * width + xOffset;
|
|
|
|
GL.Vertex2(xOffset, bottom);
|
|
GL.Vertex2(xOffset, top);
|
|
GL.Vertex2(right, top);
|
|
|
|
GL.Vertex2(right, top);
|
|
GL.Vertex2(right, bottom);
|
|
GL.Vertex2(xOffset, bottom);
|
|
}
|
|
|
|
GL.End();
|
|
GL.Disable(EnableCap.ScissorTest);
|
|
}
|
|
}
|
|
}
|
|
}
|