Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 17 additions & 16 deletions tools/everlive/everlive_viewer.py
Original file line number Diff line number Diff line change
Expand Up @@ -1595,22 +1595,6 @@ def _start_vfio_duo(self, fullscreen: bool, vsync: bool,
if self.hw_info.get("pci"):
cmd.append(self.hw_info["pci"])

# lsfg-vk frame generation. This is deliberately passed
# in headless mode too: the engine keeps LSFG idle while the window is
# closed and activates Vulkan + LSFG as soon as mode.set("gaming")
# opens it, so a Studio -> Gaming switch needs no restart. The V4L2
# loopback keeps receiving the raw capture path independently.
if framegen not in FRAMEGEN_KEYS:
framegen = FRAMEGEN_ALIASES.get(str(framegen).lower(), "off")
if framegen in FRAMEGEN_KEYS and framegen != "off":
cmd.extend(["--framegen", framegen])
# Flow/perf/latency are passed even in mode OFF so a later live toggle
# (hotkey or IPC) starts from the Hub's saved values, not defaults.
cmd.extend(["--fg-flow-scale",
f"{max(0.5, min(1.0, float(fg_flow_scale))):.2f}"])
cmd.append("--fg-perf" if fg_perf_mode else "--no-fg-perf")
cmd.append("--fg-low-latency" if fg_low_latency else "--no-fg-low-latency")

if headless:
cmd.append("--headless")
# Studio/streamer mode publishes a clean OBS feed without OSD.
Expand Down Expand Up @@ -1803,6 +1787,23 @@ def _start_vfio(self, fullscreen: bool = False, vsync: bool = False,
cmd.extend(["--scale", scale])
cmd.extend(["--volume", f"{volume:.2f}"])

# lsfg-vk frame generation. Passed in headless mode too: the engine
# keeps LSFG idle while the window is closed and activates Vulkan +
# LSFG as soon as mode.set("gaming") opens it, so a Studio -> Gaming
# switch needs no restart. The V4L2 loopback keeps receiving the
# raw capture path independently. The GC570D engine has no
# LSFG path; those flags stay on this GC573 command line only.
if framegen not in FRAMEGEN_KEYS:
framegen = FRAMEGEN_ALIASES.get(str(framegen).lower(), "off")
if framegen in FRAMEGEN_KEYS and framegen != "off":
cmd.extend(["--framegen", framegen])
# Flow/perf/latency are passed even in mode OFF so a later live toggle
# (hotkey or IPC) starts from the Hub's saved values, not defaults.
cmd.extend(["--fg-flow-scale",
f"{max(0.5, min(1.0, float(fg_flow_scale))):.2f}"])
cmd.append("--fg-perf" if fg_perf_mode else "--no-fg-perf")
cmd.append("--fg-low-latency" if fg_low_latency else "--no-fg-low-latency")

if v4l2_device:
cmd.extend(["--v4l2", v4l2_device])
if audio_tap:
Expand Down
5 changes: 4 additions & 1 deletion tools/opengc570d-userd/99-gc570d-vfio.rules
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# SPDX-License-Identifier: GPL-2.0-only
# Bind AVerMedia GC570D (1461:0054) to signed stock vfio-pci and grant seat/video access
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x1461", ATTR{device}=="0x0054", RUN+="/usr/local/libexec/gc570d-vfio-bind.sh"
# /dev/vfio/vfio is the shared control node; scope only the group nodes to
# AVerMedia PCI IDs so other VFIO assignments keep their own policy.
SUBSYSTEM=="vfio", KERNEL=="vfio", GROUP="video", MODE="0660", TAG+="uaccess"
SUBSYSTEM=="vfio", KERNEL=="[0-9]*", GROUP="video", MODE="0660", TAG+="uaccess"
SUBSYSTEM=="vfio", KERNEL=="[0-9]*", ATTRS{vendor}=="0x1461", ATTRS{device}=="0x0054", GROUP="video", MODE="0660", TAG+="uaccess"
SUBSYSTEM=="vfio", KERNEL=="[0-9]*", ATTRS{vendor}=="0x1461", ATTRS{device}=="0x0055", GROUP="video", MODE="0660", TAG+="uaccess"
Loading
Loading