Sebastian Redl posted <[EMAIL PROTECTED]>, excerpted below, 
on Mon, 17 Oct 2005 14:13:27 +0200:

>>Oh...  Previously I was trying to run a separate "screen" config for each
>>monitor, thus, two per card since each card has two outputs.  I'm now
>>running xorg's merged framebuffer for Radeons, so it's actually possible
>>the problem will have disappeared when I actually try it again...
>>  
>>
> What exactly are the effects of this, and how do I do it? I have a 
> Radeon 9800 Pro with two monitors, and right now they're rather 
> disjointed. I'd like them to act as one, but I don't want maximized 
> windows being spread over both screens.

First, I know nothing at all about the closed ATI drivers, except that
they're closed so I won't run them, and that from what I read, they aren't
as easy to work with as Nvidia's closed drivers, which I used to use back
when I first switched from MSWormOS, because I had an NVidia card that
only ran Twinview mode with the non-free drivers.  (I had the foresight to
check whether the card had Linux drivers, and that they worked with
Twinview, since I was thinking about switching, when I bought it, but
didn't yet know that there was such as thing as proprietary Linux drivers,
so naturally didn't/couldn't check whether the /free/ drivers supported
twinview, since I didn't know there was a distinction.)

Therefore, what I know is the xorg "freedomware" Radeon drivers, which
unfortunately in current versions don't support beyond 9200s in 3D
accelerated mode.  Not that such would work all that well at 2048x3072
total resolution (2048x1536 x2, stacked) anyway, but...

Post 9200 has /experimental/ 3D support in the latest masked for testing
xorg-x11-6.8.99.x series, however, so you could see how that works.  Note
that the 6.8.99.15-rX snapshot is the last non-modular series.  The latest
snapshots are xorg-modular, which I tried installing but apparently
didn't get something merged correctly, so I went back to the 15 snapshots.
(I like testing so am running them even tho I have 9200s, which have full
support in current stable xorg.)

Anyway...  I believe the 9800 is supported by the free drivers in 2D mode,
which is all that works well with multi-monitor anyway, so if that's what
you are after, you should be fine.

Here's how it works.  There are multiple levels of integration choices
available to you.

>From your question, it appears you are currently running both monitors as
separate xorg "screens", without xinerama (regular or pseudo) activated. 
This effectively runs two xorg mini-sessions, each on its own screen.  You
can't move stuff (other than the mouse, and keyboard focus, of course)
directly between them.  Each has it's own session widgets, taskbar and the
like, if whatever environment you are running uses such things.

What you want is Xinerama mode (either real or pseudo).  How well it fits
what you want, in terms of controlling where windows maximize and the
like, depends on the windowing environment you run and its support for
xinerama.  KDE, my X environment of choice, supports xinerama rather well,
and has options for whether applications maximize to one screen or all,
and such things as window placement (on the mouse-focused screen or
either), window movement snap-to support, etc, with each feature
individually configurable to single monitor or entire desktop area.  (In
KDE 3.5 at least, yes, I'm running the betas of that too, these settings
are in the control panel under Peripherals/Display, not under
Desktop/Window-behavior, where one might otherwise look.)

Since you already have both screens running in non-xinerama mode, you've
already done the heavy work in xorg, configuring each monitor's separate
resolutions and the like. To activate xinerama (real X xinerama), simply
add the appropriate 

        Option "Xinerama"

line to your ServerFlags section.  That should be all you need to do for
X.  Other reconfiguration will be done in your window manager and X
environment of choice.  If you want to discuss KDE settings, I'm up for
that, otherwise, you'll need to look elsewhere for help with that, if you
need any.

The free Radeon driver also supports merged framebuffer mode, as I
mentioned earlier.  This will require a bit of additional reconfiguration
to your xorg.conf file, but you already have the data you need in your
current config, you just have to redo it a bit.

Basically, merged framebuffer uses a single instance of the driver (with
or without "PseudoXinerama" enabled) to manage the monitors connected to
both outputs of your video card, rather than using a separate instance of
the driver for each output.  This means there's less overhead and things
operate a bit more efficiently.  If 3D is supported by the driver on your
hardware (as I said, experimental support for post Radeon 9200s is in the
latest masked for testing xorg snapshots), you may even get full
accelerated 3D support, as long as the total resolution doesn't get too
high (I believe the maximum bounded area for merged framebuffer
accelerated 3D support is 2048x2048, so I can't run it anyway, since I run
2048x3072).

There are, however, a few drawbacks to merged framebuffer, as well. 
First, merged framebuffer operates as a single screen, so regardless of
whether xinerama is on or not, you get only the one session with one set
of windowing environment widgets, etc.  No dual independent mini-sessions!
Second, where xinerama isn't supported by your windowing environment,
flexibility on where things go will be limited, and windows will maximize
to the total screen (across monitors).  If xinerama is supported by your
windowing environment, of course, this isn't an issue to the degree you
can configure it  not to be, with the xinerama support.  Third, and the
thing I personally found most irritating at first, you lose the ability to
set each monitor's resolution independently.  Yes, the monitors CAN still
run at different resolutions, but rather than moving your mouse to the one
you want to set and hitting ALT-CTRL-NUMPLUS (or NUMMINUS) to cycle thru
each configured resolution on each screen independently, you have a single
set of configured resolutions for the merged framebuffer to cycle thru. 
If like me you have a whole series of resolutions configured for each
monitor, listing the permutations in a single combined list very quickly
becomes unwieldly!  So... with the exception of one special purpose (a
specific game) mode that's full size 2048x1536 on the top monitor and
640x400 on the bottom one, I settled for a series of equivalent
resolutions on each screen.  I'll list an example below so you can see
what I mean...  Combined with a variable strength image magnifier (KView),
that serves my purposes well enough, and I'm now running merged
framebuffer.

Xorg.conf changes for merged framebuffer:

The xorg.conf changes for merged framebuffer, compared to running two
separate instances of the driver, one for each output, all have to do with
the fact that instead of two separate screen configurations, one for each
monitor/graphics-card-output combo, you have only one, that has to contain
all the information from what was two different screen configs.  

The way the "primary" monitor and output are configured remains exactly
the same, with the exception of the previously mentioned single
resolutions sequence, and the single-instance version of that is ignored
in merged framebuffer mode, so you don't need to comment out anything from
your current  primary screen/device config.  All the new settings are
additional entries.

The original secondary screen/device config info is entirely ignored in
merged framebuffer mode, since all the necessary info is added as new
entries into the primary screen config.  Therefore, it too can remain.

Further, if merged framebuffer is deactivated, all the merged framebuffer
entries (save for the single activate/deactivate option) are ignored, so
can remain uncommented in the primary config.

This makes it very easy to switch between the two modes, merged
framebuffer vs separate screen configs, by switching a single "merged
framebuffer" activator entry.  Here, I actually comment a few additional
entries to make clear which ones are operational and which ones aren't,
but that's not necessary.  A single change is all that's needed to switch
merged framebuffer on or off and activate the appropriate entries.

Example time!  Keep in mind that the documentation for all these settings
are in the radeon manpage, if they're not xorg generic in the first place,
so that's where to look if you need to figure out what a setting does or
what other options are available.

Actually, all the changes are in the primary device section.  No screen
section changes necessary either!

Section "Device"
    Identifier "DevAgp.0"
    Driver "radeon"
    Screen 0
    BusID "PCI:5:0:0"
    Option "BusType" "AGP"
    Option "AGPMode" "4"
    Option "AGPFastWrite"
    Option "EnablePageFlip"
    Option "MonitorLayout" "CRT, CRT"

# The above are all standard xorg device section or radeon settings,
# nothing special there!  The below settings activate merged
# framebuffer and configure the second monitor

# This one's the activator switch.  Without an "on" or "off"
# after the option, it's  "on".
    Option "MergedFB"

# Position of the second monitor.  Self-evident.
    Option "CRT2Position" "Above"

# These are the hardware settings for the second monitor.
# Note again that the primary monitor settings are taken
# from the normal place, the monitor section specified
# in the screen section that also specifies this device
# section.
    Option "CRT2HSync" "30-110"
    Option "CRT2VRefresh" "50-180"

# This is that confounded resolutions line!  It's all one line, wrapped
# here for posting.  See what I mean about the permutations quickly
# becoming unmanageable!  If I listed each resolution against each
# resolution...  Note that as listed, the resolutions on each monitor
# are equal, save for the last one.  Also note the "-" connectors.  A "+"
# may also be used, but has a special meaning (clone mode, IRC).  Or
# a single resolution by itself may be listed.  See the radeon
# manpage for more.
    Option "MetaModes" "2048x1536-2048x1536 1792x1344-1792x1344
    1600x1200-1600x1200 1280x960-1280x960 1152x864-1152x864
    1024x768-1024x768 800x600-800x600 640x480-640x480 512x384-512x384
    400x300-400x300 640x400-2048x1536"

# Since xorg will otherwise have difficulty calculating the dot-per-inch
# settings, and the fonts will likely be way big or way small, if this
# setting isn't specified...  Note that this is another disadvantage of
# merged framebuffer.  If your monitors are physcally different sizes or
# "normal" operating resolution is different on each, with separate
# screens, you can specify separate DPIs.  Here, there's only one setting,
# so if the monitors use different ones, you gotta pick a compromise.
    Option "MergedDPI" "120 120"

# This one is a specific accel deactivator, here because of the
# comment in the ebuild...  I don't think it's used as I'm configured,
# because 3d accel is deactivated here anyway, due to 2048x3072, but
# I put it here anyway.  The radeon manpage says what it does...
    # ColorTiling off due to bug mentioned in xorg-6.8.99.15 ebuilds
    Option "ColorTiling" "off"
EndSection

A couple more notes...

In the serverlayout section, I comment the second screen section
reference.  I don't believe I have to do that because the Option MergedFB
should take care of it, but I've never tried it with both activated to see
which takes precedence, for sure.

PseudoXinerama...  is activated automatically with mergedFB, unless turned
off either because regular xinerama is on, or specifically set off.
PseudoXinerama works almost like regular xinerama would with separate
framebuffers.  Your windowing environment configurations and hooks should
apply just as they would to normal xinerama.

Thus, I have my xinerama activator line in the serverflags section
commented out, for use with mergedFB, because if it were on,
PseudoXinerama would deactivate itself.

Hope that's what you needed!

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman in
http://www.linuxdevcenter.com/pub/a/linux/2004/12/22/rms_interview.html


-- 
gentoo-amd64@gentoo.org mailing list

Reply via email to