Build the full end-to-end zero-copy encoder, validated on Intel/VAAPI: - render_nv12: fragment-shader RGBA->NV12 that renders luma/chroma into the imported R8/RG8 plane render targets (compute storage can't write the DMA-BUF-backed planes; render attachments can). - dmabuf: import_raw imports an NV12 DMA-BUF by explicit layout; the two plane images + shared memory are now destroyed by wgpu via texture_from_raw drop callbacks (Arc MemoryGuard frees the memory once both images are gone, in wgpu's wait-idle'd deferred pass) -- fixes the teardown segfault. - encoder::ZeroCopyEncoder: renders an RGBA texture straight into a pooled VAAPI surface (imports cached by VASurface id) and encodes with h264_vaapi. encode_rgba + finish; the caller renders on device(). Tests: real-frame render into the surface matches the CPU NV12 reference, and a 30-frame encode produces valid H.264 (ffprobe-verified) with clean teardown. Not yet wired into the editor. |
||
|---|---|---|
| .. | ||
| src | ||
| tests | ||
| Cargo.toml | ||