edcourtney@ observed that downscaling an HW overlays from 720x161 to 720x160 results in no scaling at all.
He also dug into the kernel and figured out the piece of code that readjusts the src rect to the same size as the crtc rect for this specific HW overlay configuration.
All the details of his investigations are here: https://bugs.chromium.org/p/chromium/issues/detail?id=754369#c14
In particular, the part that seems to change the src width to crtc width is this piece of code in drm/i915/intel_sprite.c:
/* Make the source viewport size an exact multiple of the scaling factors. */
drm_rect_adjust_size(&src,
drm_rect_width(&dst) * hscale - drm_rect_width(&src),
drm_rect_height(&dst) * vscale - drm_rect_height(&src));
Kristian, do you know why this is needed? Is it possible this is to avoid increasing the scanout bandwidth needed compared to when the plane pixel rate was computed, since the downscale amount used was truncated?
Comment 1 by dcasta...@chromium.org
, Aug 24 2017