Wire EVE native program output contract
This commit is contained in:
parent
c5506e2fa7
commit
d7e39fe495
9 changed files with 232 additions and 2 deletions
|
|
@ -0,0 +1,64 @@
|
|||
namespace Mimir.Runtime.Synchronization;
|
||||
|
||||
public enum MimirEveProgramOutputTransport
|
||||
{
|
||||
D3D12SharedTextureHardwareEncode,
|
||||
SunshineMoonlightProbe,
|
||||
DesktopDuplicationDiagnostic
|
||||
}
|
||||
|
||||
public sealed record MimirEveProgramOutputConfiguration(
|
||||
string Id,
|
||||
string Description,
|
||||
string TargetHost,
|
||||
int TargetPort,
|
||||
string SharedTextureName,
|
||||
int TargetWidth,
|
||||
int TargetHeight,
|
||||
int TargetFramesPerSecond,
|
||||
MimirEveProgramOutputTransport Transport,
|
||||
bool UsesWebKit,
|
||||
bool DiagnosticOnly,
|
||||
string[] RequiredEnvironment,
|
||||
string Notes);
|
||||
|
||||
public static class MimirEveProgramOutputConfigurations
|
||||
{
|
||||
public const string DefaultSharedTextureName = "Global\\MimirFensalirProgramTexture";
|
||||
|
||||
public static MimirEveProgramOutputConfiguration NativeSharedTexture { get; } = new(
|
||||
"eve-native-d3d12-hardware-stream",
|
||||
"Production direction: Fensalir copies the completed D3D12 backbuffer into a named shared texture; a hardware encoder consumes that texture and EVE displays decoded frames natively.",
|
||||
"eve",
|
||||
44044,
|
||||
DefaultSharedTextureName,
|
||||
1920,
|
||||
1440,
|
||||
60,
|
||||
MimirEveProgramOutputTransport.D3D12SharedTextureHardwareEncode,
|
||||
UsesWebKit: false,
|
||||
DiagnosticOnly: false,
|
||||
RequiredEnvironment:
|
||||
[
|
||||
"FENSALIR_PROGRAM_OUTPUT_D3D12=1",
|
||||
$"FENSALIR_PROGRAM_OUTPUT_NAME={DefaultSharedTextureName}"
|
||||
],
|
||||
"EVE owns decode/composite only. It does not own layout, DOM, timing authority, or Chromium compatibility.");
|
||||
|
||||
public static MimirEveProgramOutputConfiguration MoonlightProbe { get; } = NativeSharedTexture with
|
||||
{
|
||||
Id = "eve-moonlight-probe",
|
||||
Description = "Latency probe only: Sunshine/Moonlight can validate network and decode budget before the custom encoder path is finished.",
|
||||
Transport = MimirEveProgramOutputTransport.SunshineMoonlightProbe,
|
||||
SharedTextureName = "",
|
||||
DiagnosticOnly = true,
|
||||
RequiredEnvironment = [],
|
||||
Notes = "This proves the EVE display/network budget, not Mimir's shared-texture authority."
|
||||
};
|
||||
|
||||
public static IReadOnlyList<MimirEveProgramOutputConfiguration> BuiltIn { get; } =
|
||||
[
|
||||
NativeSharedTexture,
|
||||
MoonlightProbe
|
||||
];
|
||||
}
|
||||
Loading…
Reference in a new issue