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
