It should be possible to implement WLR_SCENE_NODE_SURFACE purely using WLR_SCENE_NODE_BUFFER.
There are some special cases we need to take care of though, for instance wlr_scene_node_at takes the surface's input region into account and there's no way to set the input region of a buffer node yet.
wlroots has migrated to gitlab.freedesktop.org. This issue has been moved to:
https://gitlab.freedesktop.org/wlroots/wlroots/-/issues/3277