drawfs is a prototype kernel device and message protocol for a minimal graphics path:
- A userspace client writes framed messages to
/dev/draw - The kernel queues replies and events back to the same file descriptor via
read(2) - Shared pixel surfaces are exposed to userspace via an explicit
MAP_SURFACEioctl followed bymmap(2)
This repository is intended as a stepping stone for integrating a fast, predictable drawing path into SemaDraw.
- FreeBSD 15
- Python 3 (tests)
- Zig 0.15.2 (optional, for SemaDraw integration work)
This repo includes build.sh to install the kernel sources into /usr/src, build the module, and load it.
./build.sh install
./build.sh build
./build.sh load
./build.sh testThe test action runs the current end to end tests in tests/.
sys/dev/drawfs/kernel device implementationdrawfs.c- device operations, session lifecycle, message dispatchdrawfs_surface.c- surface management, mmap backingdrawfs_frame.c- frame validation and building
sys/modules/drawfs/kmod build gluetests/python and C tests (step based)drawfs_test.py- shared test helpers and protocol encodingdrawfs_dump.py- debug tool for decoding raw frames
docs/design and protocol documentation
See LICENSE.