Files
RobustToolbox/Robust.Client/UserInterface/DevWindow/DevWindowTabRenderer.xaml.cs
2023-05-29 16:37:06 +02:00

91 lines
4.6 KiB
C#

using Robust.Client.AutoGenerated;
using Robust.Client.Graphics;
using Robust.Client.Graphics.Clyde.Rhi;
using Robust.Client.UserInterface.Controls;
using Robust.Client.UserInterface.XAML;
using Robust.Shared.IoC;
using Robust.Shared.Maths;
namespace Robust.Client.UserInterface;
[GenerateTypedNameReferences]
public sealed partial class DevWindowTabRenderer : Control
{
public DevWindowTabRenderer()
{
RobustXamlLoader.Load(this);
var clyde = IoCManager.Resolve<IClyde>();
var rhi = clyde.Rhi;
LoadLimits(rhi.DeviceLimits);
LoadProperties(rhi);
TabContainer.SetTabTitle(TabProperties, "Properties");
TabContainer.SetTabTitle(TabLimits, "Limits");
}
private void LoadProperties(RhiBase rhi)
{
Add("RHI description", rhi.Description);
var adapter = rhi.AdapterProperties;
Add("Adapter name", adapter.Name);
Add("Adapter vendor", $"{adapter.VendorName} ({adapter.VendorID})");
Add("Adapter driver", $"{adapter.Driver}");
Add("Adapter architecture", $"{adapter.Architecture}");
Add("Adapter backend", $"{adapter.BackendType}");
Add("Adapter type", $"{adapter.AdapterType}");
void Add<T>(string name, T field) where T : notnull
{
PropertiesGrid.AddChild(new Label { Text = name, Margin = new Thickness(0, 0, 8, 0) });
PropertiesGrid.AddChild(new Label { Text = field.ToString() });
}
}
private void LoadLimits(RhiLimits limits)
{
// @formatter:off
Add("MaxTextureDimension1D", limits.MaxTextureDimension1D);
Add("MaxTextureDimension2D", limits.MaxTextureDimension2D);
Add("MaxTextureDimension3D", limits.MaxTextureDimension3D);
Add("MaxTextureArrayLayers", limits.MaxTextureArrayLayers);
Add("MaxBindGroups", limits.MaxBindGroups);
Add("MaxBindingsPerBindGroup", limits.MaxBindingsPerBindGroup);
Add("MaxDynamicUniformBuffersPerPipelineLayout", limits.MaxDynamicUniformBuffersPerPipelineLayout);
Add("MaxDynamicStorageBuffersPerPipelineLayout", limits.MaxDynamicStorageBuffersPerPipelineLayout);
Add("MaxSampledTexturesPerShaderStage", limits.MaxSampledTexturesPerShaderStage);
Add("MaxSamplersPerShaderStage", limits.MaxSamplersPerShaderStage);
Add("MaxStorageBuffersPerShaderStage", limits.MaxStorageBuffersPerShaderStage);
Add("MaxStorageTexturesPerShaderStage", limits.MaxStorageTexturesPerShaderStage);
Add("MaxUniformBuffersPerShaderStage", limits.MaxUniformBuffersPerShaderStage);
Add("MaxUniformBufferBindingSize", limits.MaxUniformBufferBindingSize);
Add("MaxStorageBufferBindingSize", limits.MaxStorageBufferBindingSize);
Add("MinUniformBufferOffsetAlignment", limits.MinUniformBufferOffsetAlignment);
Add("MinStorageBufferOffsetAlignment", limits.MinStorageBufferOffsetAlignment);
Add("MaxVertexBuffers", limits.MaxVertexBuffers);
Add("MaxBufferSize", limits.MaxBufferSize);
Add("MaxVertexAttributes", limits.MaxVertexAttributes);
Add("MaxVertexBufferArrayStride", limits.MaxVertexBufferArrayStride);
Add("MaxInterStageShaderComponents", limits.MaxInterStageShaderComponents);
Add("MaxInterStageShaderVariables", limits.MaxInterStageShaderVariables);
Add("MaxColorAttachments", limits.MaxColorAttachments);
Add("MaxColorAttachmentBytesPerSample", limits.MaxColorAttachmentBytesPerSample);
Add("MaxComputeWorkgroupStorageSize", limits.MaxComputeWorkgroupStorageSize);
Add("MaxComputeInvocationsPerWorkgroup", limits.MaxComputeInvocationsPerWorkgroup);
Add("MaxComputeWorkgroupSizeX", limits.MaxComputeWorkgroupSizeX);
Add("MaxComputeWorkgroupSizeY", limits.MaxComputeWorkgroupSizeY);
Add("MaxComputeWorkgroupSizeZ", limits.MaxComputeWorkgroupSizeZ);
Add("MaxComputeWorkgroupsPerDimension", limits.MaxComputeWorkgroupsPerDimension);
// @formatter:on
void Add<T>(string name, T field) where T : notnull
{
LimitsGrid.AddChild(new Label { Text = name, Margin = new Thickness(0, 0, 8, 0) });
LimitsGrid.AddChild(new Label { Text = field.ToString() });
}
}
}