Bug 19784 - [855GM] dither bit no longer set correctly
Summary: [855GM] dither bit no longer set correctly
Status: RESOLVED FIXED
Alias: None
Product: xorg
Classification: Unclassified
Component: Driver/intel (show other bugs)
Version: 7.4 (2008.09)
Hardware: x86 (IA32) OpenBSD
: medium normal
Assignee: Jesse Barnes
QA Contact: Xorg Project Team
URL:
Whiteboard:
Keywords: NEEDINFO, regression
Depends on:
Blocks:
 
Reported: 2009-01-28 09:21 UTC by Matthieu Herrb
Modified: 2009-06-03 14:55 UTC (History)
2 users (show)

See Also:
i915 platform:
i915 features:


Attachments
register dump with 2.6.1 (7.79 KB, text/plain)
2009-01-29 09:11 UTC, Matthieu Herrb
no flags Details
register dump with 2.4.3 (working correctly) (7.79 KB, text/plain)
2009-01-29 09:12 UTC, Matthieu Herrb
no flags Details

Description Matthieu Herrb 2009-01-28 09:21:25 UTC
I'm using a vertical gradient as my background. Using intel driver 2.6.1 it started displaying horizontal steps, as if the resolution of the DAC has lowered from 6 to 4 or 5 bits.

Taking a snapshot confirms that the picture is intact. It's only a DAC problem
Comment 1 Jesse Barnes 2009-01-28 09:55:08 UTC
Sounds like the LVDS dithering bit didn't get set correctly... a register dump comparing a working driver to the broken one would make that easy to spot.
Comment 2 Matthieu Herrb 2009-01-29 09:11:40 UTC
Created attachment 22357 [details]
register dump with 2.6.1
Comment 3 Matthieu Herrb 2009-01-29 09:12:26 UTC
Created attachment 22358 [details]
register dump with 2.4.3 (working correctly)
Comment 4 Jesse Barnes 2009-02-06 08:58:51 UTC
I guess your VBIOS doesn't have dithering info (or we're not getting at it), does this make it work for you?


diff --git a/src/i830_bios.c b/src/i830_bios.c
index 6baacd4..5fe5796 100644
--- a/src/i830_bios.c
+++ b/src/i830_bios.c
@@ -91,7 +91,7 @@ parse_panel_data(I830Ptr pI830, struct bdb_header *bdb)
     unsigned char *timing_ptr;

     /* Defaults if we can't find VBT info */
-    pI830->lvds_dither = 0;
+    pI830->lvds_dither = 1;

     lvds_options = find_section(bdb, BDB_LVDS_OPTIONS);
     if (!lvds_options)
Comment 5 Matthieu Herrb 2009-02-06 09:45:53 UTC
(In reply to comment #4)
> I guess your VBIOS doesn't have dithering info (or we're not getting at it),
> does this make it work for you?
> 
> 
> diff --git a/src/i830_bios.c b/src/i830_bios.c
> index 6baacd4..5fe5796 100644
> --- a/src/i830_bios.c
> +++ b/src/i830_bios.c
> @@ -91,7 +91,7 @@ parse_panel_data(I830Ptr pI830, struct bdb_header *bdb)
>      unsigned char *timing_ptr;
> 
>      /* Defaults if we can't find VBT info */
> -    pI830->lvds_dither = 0;
> +    pI830->lvds_dither = 1;
> 
>      lvds_options = find_section(bdb, BDB_LVDS_OPTIONS);
>      if (!lvds_options)
> 

Sorry ,but no. No visible change. with this patch.
Comment 6 Jesse Barnes 2009-02-06 10:07:25 UTC
Well maybe your VBIOS is just wrong... this should force dithering on regardless.

diff --git a/src/i830_lvds.c b/src/i830_lvds.c
index 027bb5d..250d986 100644
--- a/src/i830_lvds.c
+++ b/src/i830_lvds.c
@@ -663,8 +663,7 @@ i830_lvds_mode_fixup(xf86OutputPtr output, DisplayModePtr mo
     xf86SetModeCrtc(adjusted_mode, INTERLACE_HALVE_V);

     /* Make sure pre-965s set dither correctly */
-    if (!IS_I965G(pI830) && pI830->lvds_dither)
-       pfit_control |= PANEL_8TO6_DITHER_ENABLE;
+    pfit_control |= PANEL_8TO6_DITHER_ENABLE;

     /* Native modes don't need fitting */
     if (adjusted_mode->HDisplay == mode->HDisplay &&
Comment 7 Matthieu Herrb 2009-02-06 11:13:03 UTC
(In reply to comment #6)
> Well maybe your VBIOS is just wrong... this should force dithering on
> regardless.
> 

Yes that works. 
Comment 8 Jesse Barnes 2009-02-13 15:03:32 UTC
Is there any way to capture a copy of your VBIOS on this machine?  There's a tool in src/bios_reader to do it, but I'm not sure if it'll work on BSD.
Comment 9 Matthieu Herrb 2009-06-03 14:55:21 UTC
While porting the tools to read the BIOS, it was found the OpenBSD code in libpciaccess to do that was wrong. Now with this fixed, the intel driver works ok.

Thanks for your patience. Closing the bug.


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.