backends: refactor direct scanout and dmabuf feedback
This moves some of the responsbilities up in the stack, which simplifies the backends and opens up some future possibilities like making direct scanout work for non-surface items
This moves some of the responsbilities up in the stack, which simplifies the backends and opens up some future possibilities like making direct scanout work for non-surface items