mirror of
https://github.com/webadderallorg/Recordly.git
synced 2026-09-24 23:05:49 +00:00
67 lines
1.5 KiB
TypeScript
67 lines
1.5 KiB
TypeScript
export interface GpuSwitches {
|
|
useAngle?: string;
|
|
useGl?: string;
|
|
disableFeatures?: string[];
|
|
}
|
|
|
|
function normalizeLinuxWindowSystem(value: string | undefined): "wayland" | "x11" | null {
|
|
const normalized = value?.trim().toLowerCase();
|
|
if (normalized === "wayland" || normalized === "x11") {
|
|
return normalized;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
function getForcedLinuxWindowSystem(env: NodeJS.ProcessEnv): "wayland" | "x11" | null {
|
|
return (
|
|
normalizeLinuxWindowSystem(env.OZONE_PLATFORM) ??
|
|
normalizeLinuxWindowSystem(env.ELECTRON_OZONE_PLATFORM_HINT)
|
|
);
|
|
}
|
|
|
|
export function shouldForceLinuxEgl(env: NodeJS.ProcessEnv): boolean {
|
|
const forcedWindowSystem = getForcedLinuxWindowSystem(env);
|
|
if (forcedWindowSystem === "wayland") {
|
|
return false;
|
|
}
|
|
if (forcedWindowSystem === "x11") {
|
|
return true;
|
|
}
|
|
|
|
const sessionType = env.XDG_SESSION_TYPE?.toLowerCase();
|
|
if (sessionType === "wayland") {
|
|
return false;
|
|
}
|
|
if (sessionType === "x11") {
|
|
return true;
|
|
}
|
|
|
|
return !env.WAYLAND_DISPLAY;
|
|
}
|
|
|
|
export function getGpuSwitches(
|
|
platform: NodeJS.Platform,
|
|
env: NodeJS.ProcessEnv = process.env,
|
|
): GpuSwitches {
|
|
if (platform === "darwin") {
|
|
return {
|
|
useAngle: "metal",
|
|
disableFeatures: ["MacCatapLoopbackAudioForScreenShare"],
|
|
};
|
|
}
|
|
|
|
if (platform === "win32") {
|
|
return { useAngle: "d3d11" };
|
|
}
|
|
|
|
if (platform === "linux") {
|
|
return {
|
|
useGl: shouldForceLinuxEgl(env) ? "egl" : undefined,
|
|
disableFeatures: ["VaapiVideoDecoder", "VaapiVideoEncoder"],
|
|
};
|
|
}
|
|
|
|
return {};
|
|
}
|