Red Hat Bugzilla – Bug 80557
(neomagic) X uses more memory than before, laptops unhappy
Last modified: 2007-04-18 12:49:20 EDT
Description of problem:
The X config with Redhat 8.0 uses more graphics memory than earlier versions.
This results in programs like ogle (dvd player) not being able to run on laptops
unless you crank down the video resolution. The error from X is "BadAlloc".
Version-Release number of selected component (if applicable):
latest ogle: 0.8.5
Steps to Reproduce:
1. Install latest ogle on your laptop
2. Run ogle, choose "Open Disc"
3. Watch ogle crash
4. Edit /etc/X11/XF86Config-4 to eliminate all display modes but 640x400
5. Run ogle, choose "Open Disc", watch it work
If you look at /var/log/XFree86.0.log you will see that you need 2 mb
of off-screen memory to successfully run ogle. My video chipset is a bit
old (NeoMagic 256, Sony Vaio PCG-F430).
If you need 2Mb of offscreen memory, that is for an overlay surface. That
means that you must run in a resolution that is lower that doesn't consume
all video memory. If there is no free video memory because it is completely
consumed by the 2D framebuffer, pixmap cache, hardware mouse cursors, etc.
and there is not 2Mb free, but 2Mb is required, then of course it is not
going to work as expected. There should be absolutely no difference between
XFree86 4.2.0 in Red Hat Linux 8.0 and 4.2.0 in 7.3 in this regard.
What video mode and depth did you use in XFree86 before, and what video
mode and depth are you using right now?
I was using 1024x768x16 then and now. I'm not sure if
I tried it under RH 7.3. I figured out how to reduce the pixmap
cache but not how to reduce the font cache. The ogle guys said that
they use 512k or 1024k; all XFree86 tells me in the logfile is the
starting memory, not how much is left after the pixmap and font caches.
font cache has nothing to do with video memory at all, so reducing or even
removing font caching altogether will result in zero change in video memory
Please attach your /var/log/XFree86.0.log and X config file uncompressed
as individual file attachments using the link below.
Created attachment 89141 [details]
XFree86-4 as generated by Anaconda
I've added some commented out entries for the config that did let me play DVDs
Created attachment 89142 [details]
The attached config files show that the default configuration does
not leave enough video memory available to permit video playback.
This is normal expected operation on a system with very small amount
of video memory.
In this case, the video driver doesn't have a lot of choice, since
there isn't very much video memory. It could either limit the max
resolution to a lower res, to ensure there is free memory available
for video playback and other hardware features, in which case you'd
be guaranteed to be able to play video, but you'd be stuck with a
hard coded max resolution.
The other option, is for the driver to permit the user to configure
whichever resolution is desired that the hardware can display, and
then to disable features that are incompatible with the chosen
resolution. This is what the driver is essentially doing right now,
which is probably the most sensible default, as more users are likely
to want to be able to use higher resolution than will want to
give up high res entirely to guarantee they can always run video
The benefit of the current driver operation, is that both types of
users can essentially configure the X server to the choice they
prefer. The downside, is that the video driver and X server can't
guess which of the two possible configurations a given user will
prefer by default. If it defaults to low res plus video, users who
want working video support by default will perhaps prefer this
setup, however users expect high res to be available by default will
likely consider it a bug. There's no way to have 2 defaults of
course, and having high res working by default is more likely the
This type of issue generally isn't a problem in OSs like Windows,
as Windows has the ability to dynamically resize the video framebuffer
on the fly, and to reallocate framebuffer resources as needed without
restarting. This allows a Windows video playback application to
switch the framebuffer to a lower resolution and recover memory
with which to utilize the video accel engines on a given chipset
while viewing video fullscreen.
In newer releases of XFree86, it does have the capability to
resize the visible framebuffer on-screen, but unfortunately it
does not resize the amount of allocated framebuffer memory
internally yet. This is a feature which will likely be implemented
in a future release of X.Org X11 (the XFree86 replacement we use
in our current Fedora Core release), however that is likely
a few years off. Ironically, by the time such feature exists in X,
it is possible nobody will be using hardware with such limitations
Closing issue as 'NOTABUG' for now, as this is a hardware and
software limitation rather than a bug.