021a2261f6
The §6.1 presenter↔console-UI contract lands: pf-presenter exposes its device (SharedDevice) and composites at most one premultiplied-alpha quad per frame (new overlay.frag + LOAD render pass over the swapchain; zero cost while the overlay returns None). pf-console-ui implements it with skia-safe on the shared VkDevice: DirectContext via the ash dispatch chain, a ring of two offscreen render targets (one-frame-in- flight safe), damage-driven redraws — the OSD re-renders at 1 Hz, the hint on capture toggles, nothing per-frame. Skia never touches the swapchain. The session binary carries it behind the default ui feature: 4.9 MB stripped without, 10 MB with (measured). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
16 lines
507 B
GLSL
16 lines
507 B
GLSL
// The overlay composite: one premultiplied-alpha RGBA texture (the console UI's
|
|
// offscreen image) sampled over the swapchain. Blending happens in fixed function
|
|
// (src ONE, dst ONE_MINUS_SRC_ALPHA — Skia surfaces are premultiplied).
|
|
//
|
|
// Regenerate: shaders/build.sh (committed .spv, no build-time toolchain).
|
|
#version 450
|
|
|
|
layout(location = 0) in vec2 v_uv;
|
|
layout(location = 0) out vec4 frag;
|
|
|
|
layout(set = 0, binding = 0) uniform sampler2D u_tex;
|
|
|
|
void main() {
|
|
frag = texture(u_tex, v_uv);
|
|
}
|