Bug 18370

Summary: Monitor refresh rate not set correctly
Product: xorg Reporter: Tobias Rupf <trupf1>
Component: Driver/RadeonAssignee: xf86-video-ati maintainers <xorg-driver-ati>
Status: RESOLVED NOTABUG QA Contact: Xorg Project Team <xorg-team>
Severity: normal    
Priority: medium    
Version: 7.4 (2008.09)   
Hardware: x86 (IA32)   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Attachments:
Description Flags
Config an Log-fiels with odl and new version
none
Config an Log-files with odl and new version none

Description Tobias Rupf 2008-11-04 01:36:45 UTC
If I start xserver with resolution 1280x1024 I get now a refresh rate of 60 Hz, where with the old version it was 75 Hz. DDC is switched of in my config, and it specifies: 
Section "Monitor"
...
DisplaySize  340	270
HorizSync    30.0 - 80.0
VertRefresh  56.0 - 75.0
#VertRefresh  56.0 - 75.03
EndSection

This was (and still is) working with version 7.3. If I use the second VertRefresh I initially get 75 Hz, but if resolution is switched forth and back (e.g. through starting a game with less resolution, or via key combination CTRL-ALT-"+" and CTRL-ALT-"-"), then it goes back to 60Hz. Further more I get a kind of flickering while switching resolution or even starting a wine application, which was not the case before.
Comment 1 Tobias Rupf 2008-11-04 01:45:38 UTC
Created attachment 20037 [details]
Config an Log-fiels with odl and new version
Comment 2 Tobias Rupf 2008-11-04 01:45:58 UTC
Created attachment 20038 [details]
Config an Log-files with odl and new version
Comment 3 Tobias Rupf 2008-11-04 02:49:36 UTC
It also seems, that the NoDDC-Option is not working for the radeon driver in Ver. 7.4.2 and Modelines are ignored. If I activate Modelines in ver. 7.3 I can only switch between the activates modes, in 7.4 I still get all modes displayed in krandrtray (although only modes with 75 Hz refresh rate are activated) and can switch between them (even the ones with 75 Hz refresh rate, which should be preferred over the ones with slower refresh rates what actually is not the case)
Comment 4 Alex Deucher 2008-11-04 06:53:56 UTC
This is due to randr 1.2 support.  The newer version of the driver you are using supports randr 1.2 which allows you to dynamically reconfigure multiple displays on the fly.  As such some of the configuration has changed since it must now be able to deal with multiple monitors.  Take a look at this page for more:
http://wiki.debian.org/XStrikeForce/HowToRandR12
Comment 5 Tobias Rupf 2008-11-06 10:49:32 UTC
Sorry no success with it. Problems which I don't understand:

1. As discribed in the wiki, randr 1.2 support is already included in X.org 
ver. 1.3, which is working fine
2. Im not able to delete an unwanted mode with xrandr:
root@lisa:~# xrandr --delmode VGA-0 "1920x1200"
X Error of failed request:  BadAccess (attempt to access private resource 
denied)
  Major opcode of failed request:  156 (RANDR)
  Minor opcode of failed request:  19 ()
  Serial number of failed request:  15
  Current serial number in output stream:  16

3. with x.org ver.1.4.2 after every resoltion switch I get a default refresh 
rate of 60Hz (versus 75 Hz in ver. 1.3). I can change it to 75 Hz afterwards 
with xrandr, but that is not what I want.

4. for every xrandr-command i get two short flickerings of my monitor (black 
monitor) with ver. 1.4.2. (not with 1.3), this also happens for every change 
of monitor resolution or at start of a wine application. I guess, my monitor 
does ist, while it is accesed with DDC. Thats why I want to disable DDC 
completely an use my hard coded modes, but the DDC-modes are still there in 
ver. 1.4.2 (working in 1.3) and it seems, that the monitor capabilities are 
verified via DDC for every change of resulution in ver. 1.4.2. (that's why 
the black screen??). Is it somehow possible to disable DDC completely? 
(settings in xorg.conf don't seem to work any longer in ver. 1.4.2)
Comment 6 Alex Deucher 2008-11-06 12:44:30 UTC
(In reply to comment #5)
> Sorry no success with it. Problems which I don't understand:
> 
> 1. As discribed in the wiki, randr 1.2 support is already included in X.org 
> ver. 1.3, which is working fine

yes, but the version of the radeon driver you are using with xserver 1.3 is not xrandr 1.2 aware.  It's an older version of the driver that does not support xrandr 1.2.

> 2. Im not able to delete an unwanted mode with xrandr:
> root@lisa:~# xrandr --delmode VGA-0 "1920x1200"
> X Error of failed request:  BadAccess (attempt to access private resource 
> denied)
>   Major opcode of failed request:  156 (RANDR)
>   Minor opcode of failed request:  19 ()
>   Serial number of failed request:  15
>   Current serial number in output stream:  16

You probably have an old version of the xrandr utility or the xrandr headers from before --delmode was added.

> 
> 3. with x.org ver.1.4.2 after every resoltion switch I get a default refresh 
> rate of 60Hz (versus 75 Hz in ver. 1.3). I can change it to 75 Hz afterwards 
> with xrandr, but that is not what I want.

Since you monitor does not provide an edid there is no way to know what it's "Preferred" mode is so the xserver guesses based on the sync ranges and mode in your screen section.  See the "Forcing a preferred mode" section of this page for info on how to specify your preferred mode with randr 1.2:
http://wiki.debian.org/XStrikeForce/HowToRandR12

> 
> 4. for every xrandr-command i get two short flickerings of my monitor (black 
> monitor) with ver. 1.4.2. (not with 1.3), this also happens for every change 
> of monitor resolution or at start of a wine application. I guess, my monitor 
> does ist, while it is accesed with DDC. Thats why I want to disable DDC 
> completely an use my hard coded modes, but the DDC-modes are still there in 
> ver. 1.4.2 (working in 1.3) and it seems, that the monitor capabilities are 
> verified via DDC for every change of resulution in ver. 1.4.2. (that's why 
> the black screen??). Is it somehow possible to disable DDC completely? 
> (settings in xorg.conf don't seem to work any longer in ver. 1.4.2)
> 

It's not DDC that's causing the flickering, it's load detection.  Dynamic reconfiguration only came along with xrandr 1.2 compatible versions of the driver.  Unfortunately, your monitor does not provide an edid, so ddc doesn't work.  As such the driver falls back to using load detection to detect if a monitor is attached or not.  This is required in your case as the monitor does not seem to have an edid.

This didn't happen with older version of the driver since, they did not support dynamic reconfiguration.  In the old version, the driver detected the attached displays once at start up and that was it.  Once the driver was up there way no way to dynamically turn an output on or off, etc.

Comment 7 Tobias Rupf 2008-11-07 02:21:29 UTC
Thanks a lot, it is now working. I can not more use CTRL-ALT"+" and -"-" to change resolution, but I can live with that. That point was, that I had to comment out the Option "NoDDC" in the Device section for my driver. It seems that this entry was blocking the EDID information from my monitor, but DDC was used anyways. The EDID is now reported by xrandr. I did also delete the HorizSync and VertRefresh entries and the Modelines completely (not required to delete, but also not more necessary).

Still I don't understand, that the prefeered mode as shown by xrandr ist not generally used after resolution changes, for example from a game, without the EDID information. The preferred mode got only used at X startup. See below:

after x startup:
trupf@lisa:~$ xrandr
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1200
VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1280x1024      75.0*+   59.9
   1280x960       75.0     72.0
   1280x800       60.0
   1152x864       75.0     60.0     60.0
   1280x768       60.0
   1024x768       75.1     60.0     59.9
   832x624        59.8
   800x600        72.2     75.0     60.3     59.9
   768x576        75.0     72.0     60.1
   640x480        75.0     76.6     75.0     76.6     63.1     59.9     59.4
   720x400        59.6
DVI-0 disconnected (normal left inverted right x axis y axis)

after running a game:
trupf@lisa:~$ xrandr
Screen 0: minimum 320 x 200, current 1280 x 1024, maximum 1280 x 1200
VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1280x1024      75.0 +   59.9*
   1280x960       75.0     72.0
   1280x800       60.0
   1152x864       75.0     60.0     60.0
   1280x768       60.0
   1024x768       75.1     60.0     59.9
   832x624        59.8
   800x600        72.2     75.0     60.3     59.9
   768x576        75.0     72.0     60.1
   640x480        75.0     76.6     75.0     76.6     63.1     59.9     59.4
   720x400        59.6
DVI-0 disconnected (normal left inverted right x axis y axis)

I think, this should be fixed and I would also suggest to implement a way to turn of DDC completely.

But thanks again, for me it is working now, with EDID supplied through the driver, the preferred mode is correctly selected after running a game too and i also got rid of the flickering.
Comment 8 Alex Deucher 2008-11-07 06:47:36 UTC
(In reply to comment #7)
> Thanks a lot, it is now working. I can not more use CTRL-ALT"+" and -"-" to
> change resolution, but I can live with that. That point was, that I had to
> comment out the Option "NoDDC" in the Device section for my driver. It seems
> that this entry was blocking the EDID information from my monitor, but DDC was
> used anyways. The EDID is now reported by xrandr. I did also delete the
> HorizSync and VertRefresh entries and the Modelines completely (not required to
> delete, but also not more necessary).

I'm not sure I follow why you want to block DDC.  DDC is the method by which the EDID from your monitor is obtained. The "NoDDC" option works as expected which is why the driver was not able to get an EDID for your monitor.

> 
> Still I don't understand, that the prefeered mode as shown by xrandr ist not
> generally used after resolution changes, for example from a game, without the
> EDID information. The preferred mode got only used at X startup. See below:

This sounds like a bug in the xserver, not the driver.  The driver just does what the xserver tells it to do.

> I think, this should be fixed and I would also suggest to implement a way to
> turn of DDC completely.

That's what "NoDDC" does.  You said it yourself, with "NoDDC" in your config DDC didn't happen and the driver was not able to get an EDID from your monitor.

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.