[package] name = "pf-presenter" description = "The Vulkan session presenter — SDL3 window, ash swapchain, frame present, input capture; the stage-2 presenter of punktfunk-planning linux-client-rearchitecture.md" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true authors.workspace = true repository.workspace = true # Same Linux+Windows gating as the rest of the client stack (dmabuf import is the one # Linux-only module — see lib.rs). [target.'cfg(any(target_os = "linux", windows))'.dependencies] pf-client-core = { path = "../pf-client-core" } # AVVkFrame access (Vulkan Video frames: live sync state under the frames lock). pf-ffvk = { path = "../pf-ffvk" } punktfunk-core = { path = "../punktfunk-core", features = ["quic"] } # `loaded` dlopens libvulkan at runtime (no link-time dependency — GPU-less boxes still # start and fail into a clean error; on Windows vulkan-1.dll is a GPU-driver component). # `ash` on sdl3 types SDL_Vulkan_CreateSurface with ash 0.38 handles so the surface # hands over without transmutes. ash = { version = "0.38", features = ["loaded"] } async-channel = "2" anyhow = "1" tracing = "0.1" # Linux links the system SDL3; Windows builds it from source (same choice as the rest # of the workspace's Windows SDL consumers). [target.'cfg(target_os = "linux")'.dependencies] sdl3 = { version = "0.18", features = ["hidapi", "ash"] } [target.'cfg(windows)'.dependencies] sdl3 = { version = "0.18", features = ["hidapi", "ash", "build-from-source"] } # Window branding only (win32.rs): the exe-embedded icon onto the SDL window's title # bar/taskbar (WM_SETICON) and the shared AppUserModelID for unpackaged runs, so the # shell and the session window group as ONE taskbar app across the visibility handoff. windows-sys = { version = "0.61", features = [ "Win32_Foundation", "Win32_Storage_Packaging_Appx", "Win32_System_LibraryLoader", "Win32_UI_Shell", "Win32_UI_WindowsAndMessaging", ] }