the interface doesn't have to remain a file if that's not suitable.
rendering to a texture (an image) then displaying the image is what window compositors do, and what some games do. plan9 has a file you can write to which just dumps the image to the window/screen. there is no reason this could not work for Plan9. And if you don't want to open a file, write to it, then close it every frame, don't. implement a faster system. writing syscalls for plan9 is not difficult.
The first thing window compositors that care about performace do, is use shared memory, then there are a couple of other tricks that don't fit into everything is a file with a stream of bytes.
Try to imagine how a Vulkan driver could be done on top of a plain file system interface.
Not one that kind of works, one that can match the performance of existing implementations.