There should probably be a user space layer that abstracts over direct kernel graphics APIs. There’s no reason GPM vs EGLStreams shouldn’t be an implementation detail.
Another note, a window manager author shouldn’t have to deal with these sorts of issues. Puts into question the “wayland way.” I guess this is what wlc and wlroots are for but seems like those approaches have flaws given there was a need for wlroots to even exist in the first place.