On Wed, Feb 26, 2003 at 09:40:18AM -0800, Linus Torvalds wrote:
> 
> On Wed, 26 Feb 2003, Sven Luther wrote:
> > 
> > Yes, and you have to divide the fb memory in two, one for each head, or
> > something such, and each head will have its separate offscreen memory
> > manager, possibly using different screen strides.
> 
> Side note: I know that what people are mostly talking about is having two
> separate displays with different contents, but please, if you're thinking
> about this, try to make the solution generic enough that you can have two
> separate displays with the _same_ backing store content at different
> resolutions and different pointers.

Yes, this was the spirit of the proposal, see below for details. You
cannot have different depth modes though.

> Yeah, not all chips support this, but many do (and probably all that
> support multiview support this subset), and it's invaluable for having
> laptops that have small LCD's. In particular, it should be possible to
> have the pointer associated with the LCD, and scroll around on the LCD
> while the CRT output (ie usually a projector) shows the whole picture
> (obviously without scrolling or without any pointer).

See below.

> Right now, as far as I can tell, XFree86 can not do this sanely. You can 
> have two separate X servers for the different outputs, or you can have the 
> exact _same_ output on both CRT controllers, but you can't make the two 
> displays look like "separate windows into the same area".

Well, XFree86 Does not do it, and there is no way you can configure it,
but the drivers can be made to handle such things, even dynamically i
think. After all at least the matrox proprietary driver, and i hear the
nvidia one does already.

> And it really sounds like the DRI dual-head is not that conceptually 
> different from this. The only issue is whether you share the frame buffer 
> or not.

Yes, because the DRI is just rendering to the framebuffer, it doesn't
know if you are displaying it or not, and doesn't even care. The only
issue is with size limits of the 3D engine, like Michel said, with the
Radeon 3D engine being limited to 2Kx2K, which would mean a maximum
resolution of 1024x768 or 1280x1024 if you stapple the screen
vertically. I don't know the radeon specs, but i guess it should be
possible to work around this by changin the base address, at least in
the vertical stapling case, in the horizontal case, screen stride may
become a problem.

> So you have several cases:
>  - shared framebuffer, shared CRT control
>  - shared framebuffer, but separate CRT control (and "mouse focus" or 
>    whatnot)

Mmm, didn't think about mouse focus.

>  - separate framebuffers, and separate CRT control (and "mouse focus")

That is the traditional dual head, where the separate displayes can
later be joined via Xinerama.

> Is this what you call "mirrored viewports"?

Yes, sort of.

  o you can have the traditional dualhead, with two separate
    framebuffers each with only one viewport. This is what is currently
    used, and the only way to do dualhead with two single head graphic
    boards.

  o you can have shared framebuffer dual head, with two viewports on the
    same framebuffer, this is what was shown in the original diagram.

  o then you can choose to have one viewport be a mirror of the second.
    I believe most dual head cards boot into such modes. If one screen
    as a bigger resolution than the other (1024x768 LCD screen and
    800x600 video projector for example), then one of the modes (usually
    the bigger one) can be set to be a zoomed version of the other, if
    your hardware supports this.

  o finally you can have zoomed viewports, when one is the main
    viewport, and the second show a zoomed version of a windows (or
    subset) of the other. I think in the matrox window driver this can
    be set dynamically, where you select a window, and it get zoomed on
    the second head. I don't know, but i suppose that the second display
    follows, even if the window is redimensioned or something such.

The first is the current situation and cannot be emulated by the others,
but i think a more flexible framework could englobe all three others.
Basically, you would specify the framebuffer size, and the corresponding
viewports for each head separatedly and independently.

Also dynamic changing of viewports could be done by an extension of the
RandR extension maybe, which already does something such for resolution
swapping, but i did not look at it yet.

This would still only be somewhat hacky right now, but could be nicely
formalized for 5.0.

Was this what you had in mind, or do you need some other functionality.

Friendly,

Sven Luther




-------------------------------------------------------
This SF.net email is sponsored by: Scholarships for Techies!
Can't afford IT training? All 2003 ictp students receive scholarships.
Get hands-on training in Microsoft, Cisco, Sun, Linux/UNIX, and more.
www.ictp.com/training/sourceforge.asp
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to