Draft: protocol: allow subscale surface buffers

Joseph Burt requested to merge caseorum/wayland:subscale-buffers into main

This allows wl_surface.buffer_scale to use a negative value to indicate a denominator for the scalar instead. That is, while buffer_scale=2 still means that the buffer space is twice the size of the surface space, buffer_scale=-2 indicates a factor of 1/2, so the buffer is half the size of the surface.

When responding to wl_output.scale > 1, a client could intentionally let the compositor upscale the buffer by leaving buffer_scale=1. With wl_surface.scale_factor, it is no longer possible to specify a buffer smaller than the final output. This restores that functionality and expands it considerably. For example, even a single pixel may be multiplied by any integer factor and positioned exactly in the final output.

This is technically separate, but designed as a companion MR to !220 (merged) and !225 (closed).

Signed-off-by: Joseph Burt caseorum@gmail.com

Merge request reports