According to my debug on X server and geode driver, I am more clear
about this part code(src/lx_output.c lx_output_mode_valid()).
In the X server function xf86ProbeOutputModes(), there are three types
of modes. They are conf_modes, output_modes, default_modes. 
1)The Modeline in xorg.conf is recorded in conf_modes(such as 1440x900),
then in output->probed_modes.
2)The Other modes are detected from monitor and recorded in
output_modes(such as 1024x768, 800x600).
3)The default_modes is NULL. 
All these modes are added to output->probed_modes with function
xf86ModesAdd(). Then these modes will be validated by driver's output
function mode_valid. For geode, it is lx_output_mode_valid().
For Intel, it is:
http://cgit.freedesktop.org/xorg/driver/xf86-video-intel/tree/src/intel_
display.c intel_output_mode_valid()
For ATI, it is:
http://cgit.freedesktop.org/xorg/driver/xf86-video-ati/tree/src/radeon_o
utput.c  radeon_mode_valid()

>From these code above(Intel&&ATI), we can conclude that the driver
should filter the modes that can not be supported. Most modes should be
returned with MODE_OK. Unfortunately, our driver now return MODE_BAD at
last. That will make the mode from xorg.conf be pruned. Function
Xf86PruneInvalidModes() will do that. And I can see the Xorg.0.log that
message "Not using mode '1440x900_60.00' (unknown reason)" returned.

So I suggest we follow the code in ATI&&Intel in mode_valid function to
let more modes to pass.

Conclusion: Modify the code to return MODE_OK instead of MODE_BAD in
lx_output_mode_valid(). 


Thanks,
Frank

_______________________________________________
[email protected]: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: http://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to