A simple test with video framebuffer, composed of just: 1. open("/dev/fb0", ...) 2. mmap(...) on the file descriptor 3. memset(buf, ...) over any portion of the framebuffer area, is very slow, compared to Linux Debian on the same board. While the above test operates within a blink of an eye on Linux, its execution on FreeBSD 13.x runs in apparently constant, but very low speed - taking about 2s to fill the whole framebuffer of reasonable size (whether 1280x1024 or 1024x768). Such timings make the whole concept of framebuffer somewhat useless. While the test runs, the main console also displays a number of messages as already reported in: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=241428 It looks as if there is some checking/monitoring/etc. of every single write while they traverse through the VM layers. Or, perhaps, a misconfigured orchestration with the underlying hardware (framer DMA, etc.).
My first guess is the frame buffer is mapped as simple device memory. Frame buffers should use what x86 calls write combining memory, or possibly write-through cached in the case of a dumb frame buffer.