Starting with kernel 2.6.37_rc1, I noticed that the display was obviously "blurry", it looked like I was using a non-native res and the LCD was having to resize/interpolate. It's blurry as soon as KMS takes over, and stays blurry after xorg starts. I verified via dmesg, xrandr, xorg logs, & the LCD's own OSD that it was indeed using the native mode correctly. I'm going to see if I can find a camera good enough to see the problem. I did a git bisect on the kernel and traced it to commit e9e331a8abeece1565d383510ed985945132ffe3
Forgot to mention some possibly important details. It's Intel G41 video onboard a Dell Optiplex 380. The monitor is a Samsung 2494SW, connected via DVI. I have kernels built from the commits right before & after the breakage, let me know if you need info from either.
A camera would be good so that I know what type of artifact is being generate. Can you also grab an intel_reg_dumper with working/blurry kernel just to confirm that the registers are indeed the same and it is "merely" a timing issue whilst bringing the panel up.
Created attachment 40616 [details] photo of blurry vs crisp This is the best photo I can get for now. The top of the pic is the blurry/broken one, the bottom is working/crisp. You can see quite a difference on the words "login" and "ben" especially.
I don't see intel_reg_dumper anywhere after building intel-gpu-tools, is it still named the same? I do have intel_gpu_dump, and its output is identical on either kernel (confirmed via diff).
Horizontal sub-pixel interpolation. Looks like the panel-fitter is incorrectly programmed. intel_reg_dumper is not available in the tarball but can be found in the git repo: http://cgit.freedesktop.org/xorg/app/intel-gpu-tools Thanks.
Created attachment 40618 [details] intel_reg_dumper output from bad kernel
Created attachment 40619 [details] intel_reg_dumper output from good kernel $ diff intel_reg_dumper-bad.txt intel_reg_dumper-good.txt 44,45c44,45 < PFIT_CONTROL: 0x80000000 < PFIT_PGM_RATIOS: 0x10001000 --- > PFIT_CONTROL: 0x00000000 > PFIT_PGM_RATIOS: 0x0d551000
Ben, can you also add the output of xrandr? For gen4 hw we should not be touching pgm_ratios at all (so I presume the 1:1 scale-factor there is a residual value from the BIOS). The difference appears that we now always enable auto-scaling for gen4 with the aspect-preserving fullscreen mode.
Created attachment 40637 [details] [review] Disable pfitter for 1:1 scaling
$ xrandr Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 8192 x 8192 VGA1 disconnected (normal left inverted right x axis y axis) DVI1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 510mm x 287mm 1920x1080 60.0*+ 1280x1024 75.0 60.0 1152x864 75.0 1024x768 75.1 60.0 800x600 75.0 60.3 640x480 75.0 60.0 720x400 70.1
Sorry, actually wanted xrandr --verbose, so I can see which scaling mode is active for the panel.
Created attachment 40640 [details] [review] Disable pfitter for 1:1 scaling
/me slaps himself. I missed the obvious, there is no LVDS on these systems - the panel fitter should be disabled in these cases.
Created attachment 40642 [details] xrandr output xrandr output is the same on bad vs good kernels (except for 2 timestamp lines)
Created attachment 40643 [details] [review] Only use pfit with lvds
I'm not going to pretend to know what's going on in that last patch(0001-drm-i915-Clear-pfit-registers-when-not-used-by-any-o.patch), but it does seem to fix the problem for me, applied against vanilla 2.6.37-rc3
Ben, thanks a lot for the report and testing. I've queued the fix for upstream: commit c5d1b51d3559664920136b45f4d2366ed9a9e8be Author: Chris Wilson <chris@chris-wilson.co.uk> Date: Mon Nov 29 18:00:23 2010 +0000 drm/i915: Clear pfit registers when not used by any outputs ... otherwise the panel-fitter may be left enabled with random settings and cause unintended filtering (i.e. blurring of native modes on external panels). Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=31942 Reported-and-tested-by: Ben Kohler <bkohler@gmail.com> Tested-by: Ciprian Docan <docan@eden.rutgers.edu> Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> and will push as soon as kernel.org is up again.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.