reassign 626013 linux-2.6 2.6.38-4 tag 626013 patch upstream fixed-upstream kthxbye
On Fri, Jul 29, 2011 at 09:25:37 -0500, J-Mag Guthrie wrote: > frombugzilla-dae...@freedesktop.org toj.mag.guth...@gmail.com > dateFri, Jul 29, 2011 at 4:04 AMsubject[Bug 38851] 1360x768 resolution > slants/wraps-around display in kernels newer than 2.6.32mailed-by > freedesktop.orgImportant mainly because of your interaction with messages in > the conversation. > hide details 4:04 AM (5 hours ago) > > https://bugs.freedesktop.org/show_bug.cgi?id=38851 > > Chris Wilson <ch...@chris-wilson.co.uk> changed: > > What |Removed |Added > ------------------------------ > ---------------------------------------------- > Status|NEW |RESOLVED > Resolution| |FIXED > > --- Comment #7 from Chris Wilson <ch...@chris-wilson.co.uk> 2011-07-29 > 02:04:34 PDT --- > I was waiting upon the attachments bugzilla kept stripping. Fortunately Adam > Jackson found the bug, and in drm-intel-fixes: > > > commit 302983e9059e9ef5de3ca7671918eeb237c5971e > Author: Adam Jackson <a...@redhat.com> > Date: Wed Jul 13 16:32:32 2011 -0400 > > drm/i915/pch: Fix integer math bugs in panel fitting > > 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. > > The problem is that you have an integer number of pixels, which means > it's usually impossible to upscale equally on both axes. 1360/768 is > 1.7708, 1600/900 is 1.7777. Since we're constrained on the one axis, > the other one wants to come out as an even number of pixels (the panel > is almost certainly even on both axes, and the x/y offsets will be > applied on both sides). In the math above, if 'width' comes out even, > rounding down is correct; if it's odd, you'd rather round up. So just > increment width/height in those cases. > > Tested on a Lenovo T500 (Ironlake). > > Signed-off-by: Adam Jackson <a...@redhat.com> > Tested-By: Daniel Manrique <daniel.manri...@canonical.com> > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=38851 > Reviewed-by: Chris Wilson <ch...@chris-wilson.co.uk> > Cc: sta...@kernel.org > Signed-off-by: Keith Packard <kei...@keithp.com> Moving to the kernel, this should make its way to Linus soon. Cheers, Julien -- To UNSUBSCRIBE, email to debian-bugs-dist-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org