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 // VideoBufferSizeMB sets buffer size in megabytes for video streaming.
31 VideoBufferSizeMB int
32 // QueueBufferTimeSec sets queue buffer time in seconds for prebuffering.
33 QueueBufferTimeSec int
34
35 // --- WebKit compositor settings (from RenderingConfig) ---
36 DisableDMABufRenderer bool
37 ForceCompositingMode bool
38 DisableCompositingMode bool
39
40 // --- GTK/GSK settings (from RenderingConfig) ---
41 GSKRenderer string
42 DisableMipmaps bool
43 PreferGL bool
44
45 // --- Debug settings ---
46 ShowFPS bool
47 SampleMemory bool
48 DebugFrames bool
49
50 // --- Skia rendering thread settings (from PerformanceConfig) ---
51 // SkiaCPUPaintingThreads sets WEBKIT_SKIA_CPU_PAINTING_THREADS.
52 // 0 means unset (use WebKit default).
53 SkiaCPUPaintingThreads int
54 // SkiaGPUPaintingThreads sets WEBKIT_SKIA_GPU_PAINTING_THREADS.
55 // -1 means unset; 0 disables GPU tile painting.
56 SkiaGPUPaintingThreads int
57 // SkiaEnableCPURendering forces CPU rendering via WEBKIT_SKIA_ENABLE_CPU_RENDERING=1.
58 SkiaEnableCPURendering bool
59}
60
61// RenderingEnvManager configures rendering environment variables
62// for GStreamer, WebKit, and GTK/GSK.
63// Environment variables must be set BEFORE GTK/WebKit initialization.
64type RenderingEnvManager interface {
65 // DetectGPUVendor identifies the primary GPU vendor from system info.
66 // Uses /sys/class/drm/card*/device/vendor as primary detection method.
67 DetectGPUVendor(ctx context.Context) GPUVendor
68
69 // ApplyEnvironment sets all rendering environment variables.
70 // Must be called before any GTK/GStreamer initialization.
71 ApplyEnvironment(ctx context.Context, settings RenderingEnvSettings) error
72
73 // GetAppliedVars returns a map of environment variables that were set.
74 // Useful for logging and debugging.
75 GetAppliedVars() map[string]string
76}