
Engineering a zero-copy Vulkan interop pipeline for VLC's libplacebo renderer
I'm spending the summer with VideoLAN fixing a bottleneck in VLC. Right now, even when a video is decoded on the GPU, VLC copies the frames down to system memory and back up again just to draw them on the libplacebo video output through Vulkan. My project is to build a zero-copy hardware interop.
Starting Google Summer of Code 2026 with VideoLAN, teaching VLC to draw GPU-decoded frames without copying them through the CPU first. The series opener: who I am and the round-trip I'm here to delete.
Read this partWeek 1 of my GSoC with VideoLAN: a first patch that changes nothing on purpose, an assumption that fell apart once I read the source.
Read this partBefore porting NVDEC to Vulkan, I got it playing zero-copy through OpenGL first, so I have a known-good reference to compare against. Then a long time reading my mentor's branch.
Read this part