On Wed, 13 Jul 2011 16:32:32 -0400, Adam Jackson <a...@redhat.com> wrote: > Consider a 1600x900 panel, upscaling a 1360x768 mode, full-aspect. The > old math would give you: > > scaled_width = 1600 * 768; /* 1228800 */ > scaled_height = 1360 * 900; /* 1224000 */ > if (scaled_width > scaled_height) { /* pillarbox, and true */ > width = 1224000 / 768; /* int(1593.75) = 1593 */ > x = (1600 - 1593 + 1) / 2; /* 4 */ > y = 0; > height = 768; > } /* ... */ > > This is broken. The total width of scanout would then be 1593 + 4 + 4, > or 1601, which is wider than the panel itself. The hardware very > dutifully implements this, and you end up with a black 45° diagonal from > the top-left corner to the bottom edge of the screen. It's a cool > effect and all, but not what you wanted. Similar things happen for the > letterbox case.
I'm going to show my ignorance but why did the hw apply the offset to both sides of the output and generate a new mode line? That's probably inherent in the nature of the hblanks, I guess? The entirety of the description I have is that the position is simply the origin of the top-left pixel of the fitted window. So a comment here is necessary, but otherwise: Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38851 Reviewed-by: Chris Wilson <ch...@chris-wilson.co.uk> And a big thank you. -Chris -- Chris Wilson, Intel Open Source Technology Centre
_______________________________________________ Intel-gfx mailing list Intel-gfx@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/intel-gfx