v0.24.0 a261e52

rendering_env.go RawHistoryFolder

1// Package port defines interfaces for external dependencies.
2package port
3
4import "context"
5
6// GPUVendor identifies the GPU manufacturer for vendor-specific optimizations.
7type GPUVendor string
8
9const (
10	// GPUVendorAMD represents AMD/ATI GPUs (vendor ID 0x1002)
11	GPUVendorAMD GPUVendor = "amd"
12	// GPUVendorIntel represents Intel integrated/discrete GPUs (vendor ID 0x8086)
13	GPUVendorIntel GPUVendor = "intel"
14	// GPUVendorNVIDIA represents NVIDIA GPUs (vendor ID 0x10de)
15	GPUVendorNVIDIA GPUVendor = "nvidia"
16	// GPUVendorUnknown represents undetected or unsupported GPUs
17	GPUVendorUnknown GPUVendor = "unknown"
18)
19
20// RenderingEnvSettings contains all rendering-related environment settings.
21// This is a port-local type to avoid import cycles with config package.
22type RenderingEnvSettings struct {
23	// --- GStreamer settings (from MediaConfig) ---
24	// ForceVSync enables vertical sync for video playback.
25	ForceVSync bool
26	// GLRenderingMode controls OpenGL API selection: "auto", "gles2", "gl3", "none".
27	GLRenderingMode string
28	// GStreamerDebugLevel sets GStreamer debug verbosity (0-5).
29	GStreamerDebugLevel int
30
31	// --- WebKit compositor settings (from RenderingConfig) ---
32	DisableDMABufRenderer  bool
33	ForceCompositingMode   bool
34	DisableCompositingMode bool
35
36	// --- GTK/GSK settings (from RenderingConfig) ---
37	GSKRenderer    string
38	DisableMipmaps bool
39	PreferGL       bool
40
41	// --- Debug settings ---
42	ShowFPS      bool
43	SampleMemory bool
44	DebugFrames  bool
45
46	// --- Skia rendering thread settings (from PerformanceConfig) ---
47	// SkiaCPUPaintingThreads sets WEBKIT_SKIA_CPU_PAINTING_THREADS.
48	// 0 means unset (use WebKit default).
49	SkiaCPUPaintingThreads int
50	// SkiaGPUPaintingThreads sets WEBKIT_SKIA_GPU_PAINTING_THREADS.
51	// -1 means unset; 0 disables GPU tile painting.
52	SkiaGPUPaintingThreads int
53	// SkiaEnableCPURendering forces CPU rendering via WEBKIT_SKIA_ENABLE_CPU_RENDERING=1.
54	SkiaEnableCPURendering bool
55}
56
57// RenderingEnvManager configures rendering environment variables
58// for GStreamer, WebKit, and GTK/GSK.
59// Environment variables must be set BEFORE GTK/WebKit initialization.
60type RenderingEnvManager interface {
61	// DetectGPUVendor identifies the primary GPU vendor from system info.
62	// Uses /sys/class/drm/card*/device/vendor as primary detection method.
63	DetectGPUVendor(ctx context.Context) GPUVendor
64
65	// ApplyEnvironment sets all rendering environment variables.
66	// Must be called before any GTK/GStreamer initialization.
67	ApplyEnvironment(ctx context.Context, settings RenderingEnvSettings) error
68
69	// GetAppliedVars returns a map of environment variables that were set.
70	// Useful for logging and debugging.
71	GetAppliedVars() map[string]string
72}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 8

Tags 42

↑↓ moveenter openesc close