I'm kinda annoyed this is the case before the GBM/EGLStreams argument got resolved...
I've done some programming against GBM directly (wanted an OpenGL ES application to be in a "kiosk mode," didn't want to have to install X / a Wayland compositor + configure it), and the whole DRM+GBM stack is kinda _terrible_. Generously, one could call it barely documented; the majority of the useful and correct documentation I found was on Mesa contributors' blogs, and there were still edge cases in the API that were getting ironed out in the 5.9 kernel release.
I haven't needed to write against EGLStreams, but I might give it a try to see if it's as much of a pain or not; from the 1-page overview on the nvidia docs, I suspect not -- it sounds quite similar to the VK_KHR_swapchain extension.