Whilst some interfaces that are double-buffered against the wl_surface
are proxied through SurfaceInterface, some are not, most notably
XdgShell.
We need some low level signal to know when the surface has been
committed which doesn't rely on their being a damaged buffer.