Changing the viewport without surface/buffer damage does not repaint the surface
Clients could implement scrolling or zooming by using the wp_viewport
protocol, painting e.g. a whole website into a buffer and set a viewport to show the desired part of the page. This allows to avoid render work on the client site and IO between the client and the compositor.
Currently Mutter does not repaint surfaces when their viewport changes without buffer damage, although that should be totally valid by the protocol.