I ran Xconfigurator for the following video card:
Bus 0, device 6, function 0:
VGA compatible controller: Chips & Technologies 65550 (rev 198).
Medium devsel. Fast back-to-back capable.
Non-prefetchable 32 bit memory at 0xc0000000 [0xc0000000].
00:06.0 VGA compatible controller: Chips and Technologies F65550 (rev c6)
This chip drives a laptop LCD screen. It is capable of 800x600 resolution
at 24 bits, and is supported by X 3.3.6.
I experienced a minor problem with Xconfigurator in the RC1 installer,
where I would select a custom monitor, then manually enter a frequence,
then Xconfigurator would simply throw me back to the monitor selection
screen, without any error message, and I eventually figured out that I
needed to select the offered choice of an LCD display, then I would be able
to complete the configuration.
With 4.3.48 I was able to generate a configuration after selecting the
custom monitor option, so I think that has been fixed.
However 4.3.48 still didn't give me the maximum video card resolution (this
was also true with the RC1 installer).
The first attachment will be the XF86Config that came out of Xconfigurator
4.3.48, the second attachment is the XF86Config I need to get my maximum
resolution of 800x600 with 24 bits per pixel. Basically, the Depth 24
section needs to be added to the svga driver section, as well as a
"DefaultColorDepth 24" directive.
Created attachment 2534 [details]
XF86Config generator by Xconfiguration 4.3.48
Created attachment 2535 [details]
This is the XF86Config that I need to get 800x600x24
Can it do 640x480 in 32bpp?
(I.e. is it "not enough memory to use 32 bpp" or "this chipset doesn't support
calling it 32, just 24 bit")
This chipset does, indeed, support 32bpp, however only at 640x480. If I jigger
XFree86 to start in 32bpp mode, it falls back to 640x480 due to an insufficient
clock rate, as the following attachment shows.
However, the native resolution of the LCD display is 800x600, and what happens
is that the hardware scales 640x480 up to 800x600, which looks absolutely awful.
So, although you could leave the 32bpp section in XF86Config, nobody will want
to use it. It's real bad. In Windows what happens is that the 640x480 does not
scale, but is centered in the middle of the screen, with a thick black border
making up the 800x600 difference. This does not involve scaling the display,
and looks much better, but I'm not sure why XFree86's 640x480 results in a
scaled display, instead of simply a smaller picture.
Created attachment 2582 [details]
XFree86 starting up in 32bpp mode.
Created attachment 2583 [details]
xdpyinfo output in 32bpp
So the fix is to just specify 24 instead of 32 bit? I've added code to write a
24 bpp section (just copy the 32 bpp ones), but there's no way to distinguish
between 24 and 32 bit from the driver. Most drivers will be very unhappy with
using 24 bpp as default in 32.
The confusion is due to the fact that Xconfigurator tries to shoehorn both 32bpp
and 24bpp together. In this case, both 32bpp and 24bpp are supported by this
driver. Other drivers may support only 24bpp or 32bpp exclusively.
Xconfigurator should present separate menus for 8bpp, 16bpp, 24bpp, and 32bpp,
as distinct and separate, instead of showing just 8bpp, 16bpp, and 24bpp, and
allow the user to pick available resolution for each color depth.
In the current Xconfigurator, for Chips and Technologies 16550, the best results
are obtained by generating identical 32 and 24 depth Sections is XF86Config, if
24bpp is selected in Xconfigurator, then adding DefaultColorDepth 24. Nobody
will want to use 640x480 with C&T 16550, because it looks ugly, and 800x600 is
only available in 8, 16, and 24bpp. If someone wanted 32bpp, for some reason,
they can just change DefaultColorDepth.
This C&T 16550 has only 2MB RAM, versions with more RAM probably support 800x600
Menus etc. have been frozen for a long time., so these can't be changed.