feat(linux): add graphical platform services
This commit is contained in:
parent
1628d9f587
commit
66f114b258
28 changed files with 1328 additions and 155 deletions
|
|
@ -18,6 +18,7 @@ public sealed unsafe class TextureCache
|
|||
{
|
||||
private readonly GL _gl;
|
||||
private readonly IDatReaderWriter _dats;
|
||||
private readonly string _diagnosticsDirectory;
|
||||
// Handle and decoded dimensions are one atomic cache entry. Keeping them
|
||||
// in separate dictionaries allowed GetOrUpload(surfaceId) followed by the
|
||||
// sized overload to upload a second GL texture and orphan the first.
|
||||
|
|
@ -86,7 +87,15 @@ public sealed unsafe class TextureCache
|
|||
private bool _surfaceHistogramAlreadyDumped;
|
||||
|
||||
public TextureCache(GL gl, IDatReaderWriter dats, Wb.BindlessSupport? bindless = null)
|
||||
: this(gl, dats, bindless, ImmediateGpuResourceRetirementQueue.Instance)
|
||||
: this(
|
||||
gl,
|
||||
dats,
|
||||
bindless,
|
||||
ImmediateGpuResourceRetirementQueue.Instance,
|
||||
Path.Combine(
|
||||
Path.GetTempPath(),
|
||||
"acdream",
|
||||
"diagnostics"))
|
||||
{
|
||||
}
|
||||
|
||||
|
|
@ -95,12 +104,15 @@ public sealed unsafe class TextureCache
|
|||
IDatReaderWriter dats,
|
||||
Wb.BindlessSupport? bindless,
|
||||
IGpuResourceRetirementQueue retirementQueue,
|
||||
string diagnosticsDirectory,
|
||||
ResidencyBudgetOptions? budgets = null)
|
||||
{
|
||||
budgets ??= ResidencyBudgetOptions.Default;
|
||||
_gl = gl;
|
||||
_dats = dats;
|
||||
_bindless = bindless;
|
||||
ArgumentException.ThrowIfNullOrWhiteSpace(diagnosticsDirectory);
|
||||
_diagnosticsDirectory = diagnosticsDirectory;
|
||||
ArgumentNullException.ThrowIfNull(retirementQueue);
|
||||
if (bindless is not null)
|
||||
{
|
||||
|
|
@ -602,7 +614,8 @@ public sealed unsafe class TextureCache
|
|||
/// pulled in world content (not just sky/UI/font). The original
|
||||
/// frame-only gate fired during the login/handshake phase where
|
||||
/// OnRender ticks at GUI rates but no world has streamed in.
|
||||
/// Output goes to %LOCALAPPDATA%\acdream\n6-surfaces.txt. Zero cost
|
||||
/// Output goes to the host-provided portable diagnostics directory.
|
||||
/// Zero cost
|
||||
/// when off. See spec §5 in
|
||||
/// docs/superpowers/specs/2026-05-11-phase-n6-slice1-design.md.
|
||||
/// </summary>
|
||||
|
|
@ -638,10 +651,10 @@ public sealed unsafe class TextureCache
|
|||
|
||||
private void DumpSurfaceHistogramCore()
|
||||
{
|
||||
var localAppData = System.Environment.GetFolderPath(System.Environment.SpecialFolder.LocalApplicationData);
|
||||
var outDir = System.IO.Path.Combine(localAppData, "acdream");
|
||||
System.IO.Directory.CreateDirectory(outDir);
|
||||
var outPath = System.IO.Path.Combine(outDir, "n6-surfaces.txt");
|
||||
System.IO.Directory.CreateDirectory(_diagnosticsDirectory);
|
||||
var outPath = System.IO.Path.Combine(
|
||||
_diagnosticsDirectory,
|
||||
"n6-surfaces.txt");
|
||||
|
||||
var sb = new System.Text.StringBuilder();
|
||||
sb.AppendLine($"# acdream surface-format histogram — generated {DateTime.UtcNow:yyyy-MM-ddTHH:mm:ssZ}");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue