Re: Multiple Monitors

2004-03-02 Thread Thomas Winischhofer
Alan Hourihane wrote:
I prefer option 2 because of its fewer levels of SubSections.

What's the replacement for the metamodes option/concept? Will this survive?
 
No.
Hm.

In that case, I don't think this is a real step forward. It requires 
more configuration data instead of less:
 
Only for simple configurations... read on.

The current implementation (at least in the SiS driver, can't really 
speak for the others), the Modes in the Display subsection are the pool 
from which the meta modes are composed. All modes in that (yet single) 
Display subsection are checked against the specs of *both* output 
devices (which are the Monitor section for device 1, and specific 
options in the Device section for the second; in both cases unless we 
have DDC data). If they pass this check, they can be part of a meta mode.

Your modification forces the user, more or less, to enter the same data 
twice. I don't really see the advantage, except that it's maybe more 
intuitive to read the config file but that is assumingly not the goal.
 
The fact is, more and more video cards are getting multiple heads. Even
the Matrox Parhelia can drive 3 monitors. I know of others than can drive
4 monitors and it's just not user friendly/scalable with the current setup. 
No question. Agreed.

As all the drivers seem to have their own implementation (albeit similar) 
AFAIK only 3 open source drivers support mergedfb yet: Matrox, SiS and 
radeon (in the DRI trunk). Radeon's code is nearly if not entirely 
identical with the SiS code as Alex Deucher took my SiS code and 
inserted it into the radeon driver.

As regards pseudo-xinerama, I think the SiS driver is the only one 
currently (unsure if Alex took that over, too). The Matrox driver has no 
such feature. I don't think the OSX implementation is similar enough to 
make use of unified code but that's up the Apple folks to judge.

The options (and their names) of all three drivers supporting mergedfb 
are identical; they are, conceptwise, mostly even identical to the 
binary NVidia driver (except that the open source drivers don't support 
panning domains - however useful that is anyway).

(Hm, reading this might make one think that there already is something 
like a standard)

 it clutters up drivers with very very similar code too.

Agreed.

Yes, there might be more config to do in the config file, but the tools
to setup these up hide a lot of that already. Hell, I'll even make the
-configure option do the right thing too.
OK

In case you mean that the resolution changes in the same order the modes 
are given in these two Monitor sections, I find this far less easy to 
configure (one has to count the Modes to see which ones are being 
combined, etc.) And how are clone/zoom modes being configured?


I'm open to suggestions on how to deal with all this, and that's why
I brought it up. The current situation of 'let the driver deal with it'
is just ripe for getting out of control.
I am not against your idea at all, in case I made this impression. I 
just wanted to point out that just monitor configuration is by far not 
sufficient.

The following is meant to give a short overview and as a basis for 
comments for a new configuration implementation:

Summarized, the criteria for configuring mergedfb mode are

- monitors and their specs; that is what your proposal so far took care of,

- relative position = orientation (mon A left/right of/above/below mon 
B; that can be extended to 3 or 4 or whatever number of monitors easily: 
mon c above mon b, mon d above mon a etc) and clone/zoom (=both/all show 
the same image, possibly with a zoom facility)

- mode selection for each monitor (read: output device); there the 
problem starts. As I said, right now, the drivers use the (only) Modes 
list as the pool, and the MetaModes statement for combining these modes.

What I would find highly unpractical is leaving this out entirely and 
use the Modes given in the new Monitor Subsections as the modes the 
driver should use - in that order.

From my experience, users think more in a whole when configuring 
mergedfb mode. Meaning that the emphasis is on the respective modes used 
on each output device _at_the_same_time_ = metamode. A plain list of 
modes for each monitor (of which assumingly many will be skipped when 
they exceed the specs) makes server behavior highly uncomprehendable 
from a user's point of view: If one or the other mode is deleted from 
the list, the whole list is shifted, and hence the result is an entirely 
different one.

I find the MetaModes concept, even if perhaps not the most intuitive, 
but a very useful one. This, of course, cries for comments. (From 
anyone, that is. Alex? Mark?)

- virtual screen dimension: The user should not be forced to calculate 
anything. Hence, this must be done automcatically.

- DPI: Big problem, inherent to all multi-monitor implementations.

- automatic configuration (in case the user does not give all the above 
with options; such as 

Re: Multiple Monitors

2004-03-02 Thread Dr Andrew C Aitchison
On Tue, 2 Mar 2004, Alan Hourihane wrote:

 I mentioned in a reply to Alex, that maybe the ScreenLayout section should
 use Monitor's rather than Screens. I think that should fix the orientation
 issues, as the ScreenLayout is really describing the monitor positions.

I didn't spot this the first time around.
At present there is no need for two monitor sections when you have
two identical monitors, as each Screen can use the same Monitor.
Don't know whether that change is important.

 So you'd only use the modes for the second monitor that is described for 
 the primary monitor ? 

I'm not keen on that. Some people will have two very different monitors,
and many of the Matrox cards support more modes (RAMdac bandwidth 
limits) on one head than the other.

-- 
Dr. Andrew C. Aitchison Computer Officer, DPMMS, Cambridge
[EMAIL PROTECTED]   http://www.dpmms.cam.ac.uk/~werdna

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread Alex Deucher
--- Thomas Winischhofer [EMAIL PROTECTED] wrote:
 Alan Hourihane wrote:
 
 I prefer option 2 because of its fewer levels of SubSections.
 
 What's the replacement for the metamodes option/concept? Will this
 survive?
  
   
  No.
 
 Hm.
 
 In that case, I don't think this is a real step forward. It
 requires 
 more configuration data instead of less:
   
  Only for simple configurations... read on.
  
 The current implementation (at least in the SiS driver, can't
 really 
 speak for the others), the Modes in the Display subsection are the
 pool 
 from which the meta modes are composed. All modes in that (yet
 single) 
 Display subsection are checked against the specs of *both* output 
 devices (which are the Monitor section for device 1, and specific 
 options in the Device section for the second; in both cases unless
 we 
 have DDC data). If they pass this check, they can be part of a meta
 mode.
 
 Your modification forces the user, more or less, to enter the same
 data 
 twice. I don't really see the advantage, except that it's maybe
 more 
 intuitive to read the config file but that is assumingly not
 the goal.
  
   
  The fact is, more and more video cards are getting multiple heads.
 Even
  the Matrox Parhelia can drive 3 monitors. I know of others than can
 drive
  4 monitors and it's just not user friendly/scalable with the
 current setup. 
 
 No question. Agreed.
 
  As all the drivers seem to have their own implementation (albeit
 similar) 
 
 AFAIK only 3 open source drivers support mergedfb yet: Matrox, SiS
 and 
 radeon (in the DRI trunk). Radeon's code is nearly if not entirely 
 identical with the SiS code as Alex Deucher took my SiS code and 
 inserted it into the radeon driver.
 
 As regards pseudo-xinerama, I think the SiS driver is the only one 
 currently (unsure if Alex took that over, too). The Matrox driver has
 no 
 such feature. I don't think the OSX implementation is similar enough
 to 
 make use of unified code but that's up the Apple folks to judge.
 

Yup, I ported pseudo-xinerama over to radeon as well.  I also plan to
bring the mga driver up to speed with the other drivers as time allows,
pending ryan's re-work of the dualhead/dvi stuff.

 The options (and their names) of all three drivers supporting
 mergedfb 
 are identical; they are, conceptwise, mostly even identical to the 
 binary NVidia driver (except that the open source drivers don't
 support 
 panning domains - however useful that is anyway).
 
 (Hm, reading this might make one think that there already is
 something 
 like a standard)
 
   it clutters up drivers with very very similar code too.
 
 Agreed.
 
  Yes, there might be more config to do in the config file, but the
 tools
  to setup these up hide a lot of that already. Hell, I'll even make
 the
  -configure option do the right thing too.
 
 OK
 
 In case you mean that the resolution changes in the same order the
 modes 
 are given in these two Monitor sections, I find this far less easy
 to 
 configure (one has to count the Modes to see which ones are being 
 combined, etc.) And how are clone/zoom modes being configured?
  
  
  I'm open to suggestions on how to deal with all this, and that's
 why
  I brought it up. The current situation of 'let the driver deal with
 it'
  is just ripe for getting out of control.
 
 I am not against your idea at all, in case I made this impression. I 
 just wanted to point out that just monitor configuration is by far
 not 
 sufficient.
 
 The following is meant to give a short overview and as a basis for 
 comments for a new configuration implementation:
 
 Summarized, the criteria for configuring mergedfb mode are
 
 - monitors and their specs; that is what your proposal so far took
 care of,
 
 - relative position = orientation (mon A left/right of/above/below
 mon 
 B; that can be extended to 3 or 4 or whatever number of monitors
 easily: 
 mon c above mon b, mon d above mon a etc) and clone/zoom (=both/all
 show 
 the same image, possibly with a zoom facility)
 
 - mode selection for each monitor (read: output device); there the 
 problem starts. As I said, right now, the drivers use the (only)
 Modes 
 list as the pool, and the MetaModes statement for combining these
 modes.
 
 What I would find highly unpractical is leaving this out entirely and
 
 use the Modes given in the new Monitor Subsections as the modes the 
 driver should use - in that order.
 
  From my experience, users think more in a whole when configuring 
 mergedfb mode. Meaning that the emphasis is on the respective modes
 used 
 on each output device _at_the_same_time_ = metamode. A plain list of 
 modes for each monitor (of which assumingly many will be skipped when
 
 they exceed the specs) makes server behavior highly uncomprehendable 
 from a user's point of view: If one or the other mode is deleted from
 
 the list, the whole list is shifted, and hence the result is an
 entirely 
 different one.
 
 I find the MetaModes concept, even if 

RE: XAA2 namespace?

2004-03-02 Thread Torgeir Veimo
On Mon, 2004-03-01 at 18:58 -0800, Mark Vojkovich wrote:

 On Mon, 1 Mar 2004, Sottek, Matthew J wrote:
 
   Will there be open discussion of what makes up Xaa? I know
  you have already have a working design but rather than accept
  major changes wholesale can we discuss the finer points before
  they become defacto-accepted.
  
  -Matt
 
It depends what you'd like to discuss.  I already have a
 working implementation.  It does not preclude usage of the
 old XAA.  A driver can use either one.  Nobody has to
 touch old drivers if they don't want to.

Anything you can post here? Would an XAA2 driver be more easily usable
in other scenarios than XFree86, eg SkyOs etc?


 The goals of XAA2 are:
 
 1) Smaller.  It's currently about one fifth the XAA size.  There
was too much benchmark rigging in XAA.  It's not justified.
 
 2) Following from #1, all of the optimizations for hardware with 
MMIO interfaces has been removed.  XAA spent alot of code
on CPU/GPU interleaving.  Command buffer-based engines don't
care about this.  XAA2 will be slower in x11perf on MMIO
engines but about the same as XAA for command buffer engines.
 
 3) No assumptions about offscreen memory usage.  Leave it entirely
up to the driver.  I'll provide a sample linear heap manager.
You can use whatever you want.
 
 4) Messy stuff like the triple-bits and rgb-equal in XAA will
not be supported except as a complete fallback to software at
GC validation time.  There is no per-primitive GC validation like 
there was in XAA because apps just don't work that way.  They
trash validation so much that it needs to be lightweight. 
 
 
   Mark.
 
  
  
  -Original Message-
  From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
  Of Mark Vojkovich
  Sent: Monday, March 01, 2004 4:19 PM
  To: [EMAIL PROTECTED]
  Subject: XAA2 namespace?
  
  
The current XAA has functions starting with XAA and header files
  starting with xaa.  To avoid namespace pollution, the second 
  implementation of XAA will need a different namespace.  It seems 
  good to avoid calling it anything with a '2' in the name.  I'm
  leaning towards Xaa for the functions and header files.  Any
  concerns?
  
  
  Mark. 
  
  ___
  Devel mailing list
  [EMAIL PROTECTED]
  http://XFree86.Org/mailman/listinfo/devel
  
  ___
  Devel mailing list
  [EMAIL PROTECTED]
  http://XFree86.Org/mailman/listinfo/devel
  
 
 ___
 Devel mailing list
 [EMAIL PROTECTED]
 http://XFree86.Org/mailman/listinfo/devel
-- 
Torgeir Veimo [EMAIL PROTECTED]

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread Thomas Winischhofer
Alex Deucher wrote:
I agree.   I think metamodes are kind of klunky, but I don't know what
a better solution would be off hand.  Another thing about the proposed
solution is that in many drivers certain configurations are assumed,
which can be confusing in the screen setup.  For instance in the radeon
driver, the DVI/lvds port is always primary. 
What's the primary?

Since I can put the devices left-right or right-left, primary is IMHO 
only relevant for Xinerama and/or applications drawing fixed conclusions.

(And for the record: The SiS driver needs to treat CRT2 as some sort of 
primary as well, due to order-of-init reasons required by the 
hardware. CRT2 can be TV, LCD=DVI-D or VGA2=DVI-A. CRT1 can only be VGA. 
I also need to know all about the configuration for CRT2 before I can 
eg. calculate the maximum pixel clocks for CRT1, etc etc etc)

It might almost be a better idea to work the other way around. 
standardize the mergedfb backend stuff (pseudo-xinerama, metamode
parsing, pointermoded(), etc.) and then just standardize on options for
the drivers.  Maybe instead of messing with the monitors in the screen
section, allow the user to specify them in the device section like Alan
mentioned earlier, something like:

option crt2monitor Monitor1
That is an alternative, indeed. And it would be much easier to implement 
since there is no old version-style and new-version-style XF86Config 
then (which I wouldn't know how to distinguish between).

The disadvantage is that you blast the chain of

   / Monitor
Screen ---x
   \-Device
by directly linking the Device and Monitor section. Dogmatically that 
isn't really beautiful.

Thomas

--
Thomas Winischhofer
Vienna/Austria
thomas AT winischhofer DOT net *** http://www.winischhofer.net
twini AT xfree86 DOT org
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread Ryan Underwood

On Tue, Mar 02, 2004 at 05:56:01AM -0800, Alex Deucher wrote:
  As regards pseudo-xinerama, I think the SiS driver is the only one 
  currently (unsure if Alex took that over, too). The Matrox driver has
  no 
  such feature. I don't think the OSX implementation is similar enough
  to 
  make use of unified code but that's up the Apple folks to judge.
  
 
 Yup, I ported pseudo-xinerama over to radeon as well.  I also plan to
 bring the mga driver up to speed with the other drivers as time allows,
 pending ryan's re-work of the dualhead/dvi stuff.

Yeah, I need to get back to that.  I got sidetracked with studies and
the last weekend was eaten trying to beat some sense into the rendition
driver.  Did you ever get your G550?  I have two systems now, one with
DH G400 and one with SH G400 + a millenium II.  So hopefully I can at
least verify that me stuff is working on at least one DH card and at
least one multi-mga configuration.

-- 
Ryan Underwood, [EMAIL PROTECTED]


signature.asc
Description: Digital signature


Re: Multiple Monitors

2004-03-02 Thread David Dawes
On Mon, Mar 01, 2004 at 10:10:40PM +, Alan Hourihane wrote:
I'm looking to enhance the parser in XFree86 so that a lot of redundant
code in the current drivers that implement the 'mergedfb' mode can
be eliminated such that they don't have to do all the monitor munging
in the driver.

So here's two variants of the modifications to the XF86Config I'm
thinking of, and both would remove the current 'Monitor' keyword from
the Screen Section, in favour of the SubSection keyword being the actual
monitor it's referencing.

I've already started poking around the parser to implement this, but
I thought I'd ask for comments first before taking it too far, and
to ask for possible enhancements that others can think of too.

The approach I was following up a while ago but never finished was
something like this:

Section Screen
Identifier Screen0
Device Videocard0
Monitor 0 Monitor0
Monitor 1 Monitor1 RightOf Monitor0
DefaultDepth 24
SubSection Display
Depth 16
Virtual 0 1600 1200
Virtual 1 1024 768
Modes 0 1600x1200 1280x1024 1024x768
Modes 1 1024x768 800x600 640x480
EndSubSetion
SubSection Display
Depth 24
Virtual 0 1600 1200
Virtual 1 1024 768
Modes 0 1600x1200 1280x1024 1024x768
Modes 1 1024x768 800x600 640x480
EndSubSetion
EndSection

Explicitly tying numbers to the monitor entries would be optional, as
would supplying per-monitor parameters in the Display subsections.

The idea of MetaModes (i.e., mode combinations) that I think Andy Ritger
mentioned a while back would be useful too.

Figuring out how the configuration information is represented will be useful
in working out how to represent the information internally for the drivers.
As much as possible should be auto-configured by default though.

I got the parser changes, and the data structure changes done, and had
made a start on the other pieces.  Allowing a high level of flexibility
in the configuration syntax was complicating the implementation though.
It might be that a different method would simplify that, which would
definitely be a good thing.


Option 1

Section Screen
   Identifier Screen0
   Device Videocard0
   DefaultDepth 24
   SubSection Monitor0
   SubSection Display
   Depth 16
   Modes1024x768 800x600 640x480
   EndSubSection
   SubSection Display
   Depth 24
   Modes1024x768 800x600 640x480
   EndSubSection
   EndSubSection
   SubSection Monitor1
   SubSection Display
   Depth 16
   Modes1024x768 800x600 640x480
   EndSubSection
   SubSection Display
   Depth 24
   Modes1024x768 800x600 640x480
   EndSubSection
   EndSubSection
EndSection

Or, Option 2.

Section Screen
   Identifier Screen0
   Device Videocard0
   DefaultDepth 24
   SubSection Monitor0
   Depth 16
   Modes1024x768 800x600 640x480
   EndSubSection
   SubSection Monitor0
   Depth 24
   Modes1024x768 800x600 640x480
   EndSubSection
   SubSection Monitor1
   Depth 24
   Modes1024x768 800x600 640x480
   EndSubSection
EndSection

I'd prefer option 2 out of these because of the reduced redundancy.  If
we want to handle meta modes, perhaps they could be handled via a regular
Display subsection.  You then need a method for specifying the monitor
layout.  I chose an approach analogous to how we specify the layout of
multiple screens, and that should work here too.

Additional things come up, like how the monitor view port moves within
the logical screen, how the mode switching hot keys work, etc.

I'd suggest we come up with something that can cope with the types of
things we expect to need, get the basics implemented first, then get
into the nitty gritty details of some of the fancier stuff.

David
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: XAA2 namespace?

2004-03-02 Thread Knut J Bjuland
Is the Nvidia closed source driver based on a early version off Xaa2?

Mark Vojkovich wrote:

On Mon, 1 Mar 2004, Sottek, Matthew J wrote:

 

Will there be open discussion of what makes up Xaa? I know
you have already have a working design but rather than accept
major changes wholesale can we discuss the finer points before
they become defacto-accepted.
-Matt
   

  It depends what you'd like to discuss.  I already have a
working implementation.  It does not preclude usage of the
old XAA.  A driver can use either one.  Nobody has to
touch old drivers if they don't want to.
The goals of XAA2 are:

1) Smaller.  It's currently about one fifth the XAA size.  There
  was too much benchmark rigging in XAA.  It's not justified.
2) Following from #1, all of the optimizations for hardware with 
  MMIO interfaces has been removed.  XAA spent alot of code
  on CPU/GPU interleaving.  Command buffer-based engines don't
  care about this.  XAA2 will be slower in x11perf on MMIO
  engines but about the same as XAA for command buffer engines.

3) No assumptions about offscreen memory usage.  Leave it entirely
  up to the driver.  I'll provide a sample linear heap manager.
  You can use whatever you want.
4) Messy stuff like the triple-bits and rgb-equal in XAA will
  not be supported except as a complete fallback to software at
  GC validation time.  There is no per-primitive GC validation like 
  there was in XAA because apps just don't work that way.  They
  trash validation so much that it needs to be lightweight. 

			Mark.

 

-Original Message-
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf
Of Mark Vojkovich
Sent: Monday, March 01, 2004 4:19 PM
To: [EMAIL PROTECTED]
Subject: XAA2 namespace?
 The current XAA has functions starting with XAA and header files
starting with xaa.  To avoid namespace pollution, the second 
implementation of XAA will need a different namespace.  It seems 
good to avoid calling it anything with a '2' in the name.  I'm
leaning towards Xaa for the functions and header files.  Any
concerns?

			Mark. 

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel
   

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


 



___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


RE: XAA2 namespace?

2004-03-02 Thread Sottek, Matthew J
  Will there be open discussion of what makes up Xaa? I know
 you have already have a working design but rather than accept
 major changes wholesale can we discuss the finer points before
 they become defacto-accepted.
 
 -Matt

   It depends what you'd like to discuss.  I already have a
working implementation.  It does not preclude usage of the
old XAA.  A driver can use either one.  Nobody has to
touch old drivers if they don't want to.

 I'd like to discuss the design details. Why don't you send the
relevant parts of the header to the list for discussion before
you commit it? Lets face it, once the code is committed there
is not going to be as much room for change. If Xaa is being
replaced then it seems fitting that everyone have a chance to
review and comment on the design before it is committed.

1) Smaller.  It's currently about one fifth the XAA size.  There
   was too much benchmark rigging in XAA.  It's not justified.

Smaller is good, but can you give an example of benchmark
rigging?

3) No assumptions about offscreen memory usage.  Leave it entirely
   up to the driver.  I'll provide a sample linear heap manager.
   You can use whatever you want.

So is the new design surface based? i.e. blits are coordinates
relative to a surface (off-screen or on-screen). If so, this is
good. The rectangular memory single surface Xaa is not a very
good match for modern hardware.

Also, I would like to make sure that the new design has a much
improved syncing mechanism. Syncing should be, at a minimum,
on a per-surface basis. Perhaps even a bounded region of a
surface is justified. As GUI's become more media rich the
amount of data coming from the CPU to the graphics engine is
increasing. This means more puts and consequently lots of syncing
for many hardware types. The current global sync design waits
too long and forces idle time unnecessarily. Other driver models
abandoned the single sync a long time back.

I think we should also address the setup for...subsequent
design concept. Seems like most designs would be better fit
with a single entry point that provides all the information,
perhaps with an n option to indicate how many such calls are
expected with the same setup data. Command engines could then
batch commands together, or a driver could send a batch of
commands to a kernel driver. In my opinion it is more useful to
know how many similar commands are being sent (or at least know
when the last one is sent) than the current method.

Currently:
setup_for_foo()
while(i--) {
   subsequent_foo()
}

could be

while(i--) {
   do_foo(i);
}

or alternatively (if you can't know how many until you are done)

while(i--) {
   do_foo();
}
last_foo();

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread David Dawes
On Mon, Mar 01, 2004 at 11:09:23PM +, Alan Hourihane wrote:
On Mon, Mar 01, 2004 at 02:57:50PM -0800, Alex Deucher wrote:
 --- Alan Hourihane [EMAIL PROTECTED] wrote:
  I'm looking to enhance the parser in XFree86 so that a lot of
  redundant
  code in the current drivers that implement the 'mergedfb' mode can
  be eliminated such that they don't have to do all the monitor munging
  in the driver.
  
  So here's two variants of the modifications to the XF86Config I'm
  thinking of, and both would remove the current 'Monitor' keyword from
  the Screen Section, in favour of the SubSection keyword being the
  actual
  monitor it's referencing.
  
  I've already started poking around the parser to implement this, but
  I thought I'd ask for comments first before taking it too far, and
  to ask for possible enhancements that others can think of too.
  
 
 
 I like Option 1.  but either is ok with me.  Also, FWIW, a lot of the
 other mergedfb code could/should be moved into a general mergedfb lib. 
 Stuff like pseudo-xinerama could be folded into the real xinerama
 extension.  some of this work may already be done for the OSX port.

Indeed. So I'd let to get this first step of modifying the config file
out of the way so all the other pieces can drop into place.

 Also how would clone modes and head orientation be handled in this
 model?  Perhaps a clone mode of each supportable res on each monitor
 would be automatically added?  I'm not sure what the best way to handle
 that is.

Actually, you bring up a good point with orientation, and it's making
me rethink a little. Maybe we need to be a little more radical with
the changes and change the ServerLayout to accept Monitor configurations
instead of Screen sections as essentially that's how it's really tied
down.

You don't have the same freedom with placement of monitors as you do
with screens.  For example, you can't have the screen of a second card
placed in between two monitors of the first card.

David
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread David Dawes
On Mon, Mar 01, 2004 at 04:11:02PM -0800, Mark Vojkovich wrote:
On Mon, 1 Mar 2004, Alan Hourihane wrote:

 I'm looking to enhance the parser in XFree86 so that a lot of redundant
 code in the current drivers that implement the 'mergedfb' mode can
 be eliminated such that they don't have to do all the monitor munging
 in the driver.
 
 So here's two variants of the modifications to the XF86Config I'm
 thinking of, and both would remove the current 'Monitor' keyword from
 the Screen Section, in favour of the SubSection keyword being the actual
 monitor it's referencing.
 
 I've already started poking around the parser to implement this, but
 I thought I'd ask for comments first before taking it too far, and
 to ask for possible enhancements that others can think of too.
 
 Option 1
 
 Section Screen
  Identifier Screen0
  Device Videocard0
  DefaultDepth 24
  SubSection Monitor0
  SubSection Display
  Depth 16
  Modes1024x768 800x600 640x480
  EndSubSection
  SubSection Display
  Depth 24
  Modes1024x768 800x600 640x480
  EndSubSection
  EndSubSection
  SubSection Monitor1
  SubSection Display
  Depth 16
  Modes1024x768 800x600 640x480
  EndSubSection
  SubSection Display
  Depth 24
  Modes1024x768 800x600 640x480
  EndSubSection
  EndSubSection
 EndSection

   I prefer #1.  You might want to look into NVIDIA's TwinView
options.  That is, stuff like orientation and panning domains.
And please don't break binary compatibility with drivers who
parse the current Monitor info in the ScrnInfoRec.

When I was looking at this, I was adding the new fields at the end,
and filling in the current fields with the first monitor's data
for compatibility with drivers that don't look beyond that.

David
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


RE: XAA2 namespace?

2004-03-02 Thread Alex Deucher
--- Sottek, Matthew J [EMAIL PROTECTED] wrote:
   Will there be open discussion of what makes up Xaa? I know
  you have already have a working design but rather than accept
  major changes wholesale can we discuss the finer points before
  they become defacto-accepted.
  
  -Matt
 
It depends what you'd like to discuss.  I already have a
 working implementation.  It does not preclude usage of the
 old XAA.  A driver can use either one.  Nobody has to
 touch old drivers if they don't want to.
 
  I'd like to discuss the design details. Why don't you send the
 relevant parts of the header to the list for discussion before
 you commit it? Lets face it, once the code is committed there
 is not going to be as much room for change. If Xaa is being
 replaced then it seems fitting that everyone have a chance to
 review and comment on the design before it is committed.
 

good alpha channel support would be nice too, although that might
require some other changes.

Alex

[snip]


__
Do you Yahoo!?
Yahoo! Search - Find what you’re looking for faster
http://search.yahoo.com
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread David Dawes
On Tue, Mar 02, 2004 at 01:18:20AM +0100, Thomas Winischhofer wrote:
Alex Deucher wrote:
 
 I like Option 1.  but either is ok with me.  Also, FWIW, a lot of the
 other mergedfb code could/should be moved into a general mergedfb lib. 
 Stuff like pseudo-xinerama could be folded into the real xinerama
 extension.  some of this work may already be done for the OSX port.

AFAIK, the OSX port uses the same pseudo stuff that we use.

 Also how would clone modes and head orientation be handled in this
 model?  Perhaps a clone mode of each supportable res on each monitor
 would be automatically added?  

At what place in the list? Confusing the user is the least we want, 
especially with that already quite complicated concept of mergedfb.

I think the goal here is provide a simpler and more regular method of
handling this stuff, but with a basis that is flexible enough to handle
expected needs without going through this again in the near future.
Clone and zoom are all special cases of a more general monitor layout
mechanism, which is really all about how you postion the multiple view
ports into the single screen and how you handle mode switching.  Allowing
these things to be changed/configured on the fly makes it even more
interesting, and will go some way to simplifying real-world configuration.

Open question: does the newly (or nearly?) standardised Xinerama extension
allow for the physical screen layout to be changed at runtime?  It needs
to for a least this pseudo Xinerama case.

David
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread David Dawes
On Tue, Mar 02, 2004 at 12:32:08PM +, Dr Andrew C Aitchison wrote:
On Tue, 2 Mar 2004, Alan Hourihane wrote:

 I mentioned in a reply to Alex, that maybe the ScreenLayout section should
 use Monitor's rather than Screens. I think that should fix the orientation
 issues, as the ScreenLayout is really describing the monitor positions.

I didn't spot this the first time around.
At present there is no need for two monitor sections when you have
two identical monitors, as each Screen can use the same Monitor.
Don't know whether that change is important.

That is an important point.  Now that you mention it, I ran into the
same issue in handling the monitor layout with the method I was looking
at.  It makes referring to monitors by Id alone ambiguous.

David
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread Sven Luther
On Tue, Mar 02, 2004 at 12:59:52PM -0500, David Dawes wrote:
  Section Screen
 Identifier Screen0
 Device Videocard0
 DefaultDepth 24
 SubSection Monitor0
 SubSection Display
 Depth 16
 Modes1024x768 800x600 640x480
 EndSubSection
 SubSection Display
 Depth 24
 Modes1024x768 800x600 640x480
 EndSubSection
 EndSubSection
 SubSection Monitor1
 SubSection Display
 Depth 16
 Modes1024x768 800x600 640x480
 EndSubSection
 SubSection Display
 Depth 24
 Modes1024x768 800x600 640x480
 EndSubSection
 EndSubSection
  EndSection
 
I prefer #1.  You might want to look into NVIDIA's TwinView
 options.  That is, stuff like orientation and panning domains.
 And please don't break binary compatibility with drivers who
 parse the current Monitor info in the ScrnInfoRec.
 
 When I was looking at this, I was adding the new fields at the end,
 and filling in the current fields with the first monitor's data
 for compatibility with drivers that don't look beyond that.

BTW, while we are at it, please let's add support for depth independent
modelines. Something like : 

   SubSection Display
Depth 16 24
Modes1024x768 800x600 640x480
   EndSubSection
 
Or even : 

   SubSection Display
Modes1024x768 800x600 640x480
   EndSubSection

Which would use the modes for all depth. I doubt newer cards have per
depth modes limitations anymore.

Friendly,

Sven Luther
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: XAA2 namespace?

2004-03-02 Thread Mark Vojkovich
On Tue, 2 Mar 2004, [ISO-8859-1] Frank Gießler wrote:

 Mark Vojkovich wrote:
 We don't care what the filenames are except for the header files.
  The only reason why we care about header files is that a driver
  might include support for both and may need both include paths.
  There's only one exported header file.  I'd like to name it Xaa.h
  to match the namespace.  Is it really going to be relevant on 
  case-unaware systems?  Which ones are those BTW?
 
 There is already xaa.h. Having Xaa.h included at the same time is a 
 no-op for OS/2, for which there are already binaries for 4.4.0 available 
 (I would therefore consider this a well supported platform).
 

   Well, then I guess I could call the header file xaa2.h

Mark.


___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: XAA2 namespace?

2004-03-02 Thread Mark Vojkovich
On Tue, 2 Mar 2004, Knut J Bjuland wrote:

 Is the Nvidia closed source driver based on a early version off Xaa2?

  The NVIDIA binary driver has a stripped-down and slightly hacked up
version of XAA2 in it.


Mark.

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: XAA2 namespace?

2004-03-02 Thread David Dawes
On Tue, Mar 02, 2004 at 10:57:04AM -0800, Mark Vojkovich wrote:
On Tue, 2 Mar 2004, [ISO-8859-1] Frank Gießler wrote:

 Mark Vojkovich wrote:
 We don't care what the filenames are except for the header files.
  The only reason why we care about header files is that a driver
  might include support for both and may need both include paths.
  There's only one exported header file.  I'd like to name it Xaa.h
  to match the namespace.  Is it really going to be relevant on 
  case-unaware systems?  Which ones are those BTW?
 
 There is already xaa.h. Having Xaa.h included at the same time is a 
 no-op for OS/2, for which there are already binaries for 4.4.0 available 
 (I would therefore consider this a well supported platform).
 

   Well, then I guess I could call the header file xaa2.h

Not to be too picky, but won't this be the third version of XAA, not the
second?

David
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread David Dawes
On Tue, Mar 02, 2004 at 07:18:37PM +0100, Sven Luther wrote:
On Tue, Mar 02, 2004 at 12:59:52PM -0500, David Dawes wrote:
  Section Screen
Identifier Screen0
Device Videocard0
DefaultDepth 24
SubSection Monitor0
SubSection Display
Depth 16
Modes1024x768 800x600 640x480
EndSubSection
SubSection Display
Depth 24
Modes1024x768 800x600 640x480
EndSubSection
EndSubSection
SubSection Monitor1
SubSection Display
Depth 16
Modes1024x768 800x600 640x480
EndSubSection
SubSection Display
Depth 24
Modes1024x768 800x600 640x480
EndSubSection
EndSubSection
  EndSection
 
I prefer #1.  You might want to look into NVIDIA's TwinView
 options.  That is, stuff like orientation and panning domains.
 And please don't break binary compatibility with drivers who
 parse the current Monitor info in the ScrnInfoRec.
 
 When I was looking at this, I was adding the new fields at the end,
 and filling in the current fields with the first monitor's data
 for compatibility with drivers that don't look beyond that.

BTW, while we are at it, please let's add support for depth independent
modelines. Something like : 

   SubSection Display
   Depth 16 24
   Modes1024x768 800x600 640x480
   EndSubSection
 
Or even : 

   SubSection Display
   Modes1024x768 800x600 640x480
   EndSubSection

Which would use the modes for all depth. I doubt newer cards have per
depth modes limitations anymore.

I already did the latter for 4.4.0 as part of the auto-configuration work.
The Display subsection and Monitor sections are entirely optional too.

David
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: XAA2 namespace?

2004-03-02 Thread Mark Vojkovich
On Tue, 2 Mar 2004, David Dawes wrote:

 On Tue, Mar 02, 2004 at 10:57:04AM -0800, Mark Vojkovich wrote:
 On Tue, 2 Mar 2004, [ISO-8859-1] Frank Gießler wrote:
 
  Mark Vojkovich wrote:
  We don't care what the filenames are except for the header files.
   The only reason why we care about header files is that a driver
   might include support for both and may need both include paths.
   There's only one exported header file.  I'd like to name it Xaa.h
   to match the namespace.  Is it really going to be relevant on 
   case-unaware systems?  Which ones are those BTW?
  
  There is already xaa.h. Having Xaa.h included at the same time is a 
  no-op for OS/2, for which there are already binaries for 4.4.0 available 
  (I would therefore consider this a well supported platform).
  
 
Well, then I guess I could call the header file xaa2.h
 
 Not to be too picky, but won't this be the third version of XAA, not the
 second?

   Yes, it's actually the third.  Harm's was the first.  I think we
even advertised XFree86 4.x's XAA as 2.0.  Would you prefer xaa3.h ?


Mark.


___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: Multiple Monitors

2004-03-02 Thread Thomas Winischhofer
David Dawes wrote:
On Tue, Mar 02, 2004 at 01:18:20AM +0100, Thomas Winischhofer wrote:

Alex Deucher wrote:

I like Option 1.  but either is ok with me.  Also, FWIW, a lot of the
other mergedfb code could/should be moved into a general mergedfb lib. 
Stuff like pseudo-xinerama could be folded into the real xinerama
extension.  some of this work may already be done for the OSX port.
AFAIK, the OSX port uses the same pseudo stuff that we use.


Also how would clone modes and head orientation be handled in this
model?  Perhaps a clone mode of each supportable res on each monitor
would be automatically added?  
At what place in the list? Confusing the user is the least we want, 
especially with that already quite complicated concept of mergedfb.


I think the goal here is provide a simpler and more regular method of
handling this stuff, but with a basis that is flexible enough to handle
expected needs without going through this again in the near future.
Clone and zoom are all special cases of a more general monitor layout
mechanism, which is really all about how you postion the multiple view
ports into the single screen and how you handle mode switching.  Allowing
these things to be changed/configured on the fly makes it even more
interesting, and will go some way to simplifying real-world configuration.
Open question: does the newly (or nearly?) standardised Xinerama extension
allow for the physical screen layout to be changed at runtime?  It needs
to for a least this pseudo Xinerama case.
Exactly. However, since I found that changing it run-time either has no 
effect (so with kde) or seriously confuses apps (many examples) I don't 
do it now. I just calculate a basic setup (based on the orientation and 
the meta modes) and use this through out the session.

It's no problem with Xinerama, it's a problem with the apps. (Or, well, 
perhaps Xinerama, too, in case it lacks a facility to notify clients of 
changes which I don't remember)

Thomas

--
Thomas Winischhofer
Vienna/Austria
thomas AT winischhofer DOT net  http://www.winischhofer.net/
twini AT xfree86 DOT org
___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: XAA2 namespace?

2004-03-02 Thread Michel Dänzer
On Tue, 2004-03-02 at 21:06, Mark Vojkovich wrote:
 On Tue, 2 Mar 2004, David Dawes wrote:
 
  On Tue, Mar 02, 2004 at 10:57:04AM -0800, Mark Vojkovich wrote:
  
 Well, then I guess I could call the header file xaa2.h
  
  Not to be too picky, but won't this be the third version of XAA, not the
  second?
 
Yes, it's actually the third.  Harm's was the first.  I think we
 even advertised XFree86 4.x's XAA as 2.0.  Would you prefer xaa3.h ?

As everyone knows, counting starts at 0, so xaa2 in fact denotes the
third XAA. :)


-- 
Earthling Michel Dnzer  | Debian (powerpc), X and DRI developer
Libre software enthusiast|   http://svcs.affero.net/rm.php?r=daenzer

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


RE: XAA2 namespace?

2004-03-02 Thread Mark Vojkovich
On Tue, 2 Mar 2004, Sottek, Matthew J wrote:

It's currently global because the hardware I work on doesn't
 have to fall back to software very often.  Bookkeeping on a per-
 surface basis is a simple modification and one I will add.  This
 precludes using XAA2 with hardware that doesn't support concurrent
 SW and HW access to the framebuffer, but that's OK since that
 stuff is old and we're trying to move forward here.  HW that sucks
 can use the old XAA.
 
 It shouldn't preclude this from working. You just need the call
 to look like sync(xaa_surface_t *surface) and let old hardware
 sync the whole engine regardless of the input. It helps those
 who can use it and is the same as what you have now for everyone
 else.

  I don't understand your reasoning.

  The difference with per-surface as opposed to global sync state 
is that you don't have to sync when CPU rendering to a surface that
has no previously unsynced GPU rendering.  The point of this is
to ALLOW concurrent CPU and GPU rendering into video ram except
in the case where both want to render to the same surface.  There
are old hardware that allow no concurrent CPU and GPU rendering
at all.

  Even with Sync() passing the particular surface which is necessitating
the sync, I would expect all drivers to be syncing the whole chip
without caring what the surface was.  Most hardware allow you to
do checkpointing in the command stream so you can tell how far
along the execution is, but a Sync can happen at any time.  Are
you really going to be checkpointing EVERY 2D operation? 


 I still contend that it would be a benefit to know how many
 rects associated with the same state are going to be sent
 (even if you send those in multiple batches for array size
 limitations) this allows a driver to batch things up as it
 sees fit.

   I don't know the amount of data coming.  The old XAA (and
cfb for that matter) allocated the pathelogical case: number
of rects times number of clip rects.  It doesn't know how many
there are until it's done computing them, but it knows the
upper bounds.  I have seen this be over 8 Meg!  The new XAA
has a preallocated scratch space (currently a #define for the 
size).  When the scratch buffer is full, it flushes it out to
the driver.   If XAA is configured to run with minimal memory,
the maximum batch size will be small.

 Currently a driver cannot batch things efficiently
 because there is no way to know when the end of the batch
 should happen. An array of rects is a good start but not a
 complete solution.

   It's the best we can do.  I'm not going to compute the
clips in two passes: one to find out how many rects there 
end up being, and one to store the rects.

 
 I also have some questions regarding the memory management.
 Who is responsible for system memory surfaces (and any
 migration to/from video memory)?

   System memory pixmaps are handled by fb as always.  XAA2
holds the migration logic.  

  
 Who is responsible for populating surfaces? Does X get a virtual
 address (or offset from base), width, height, pitch and populate
 the surface itself or does the driver have to handle cpu_to_screen
 to do it?  What about unknown surface types? (compressed?)

  XAA doesn't care about surface particulars.  It asks the driver 
if it could stick this pixmap in videoram for it because the migration
logic says it should go in videoram.  The driver can refuse or can
accept by returning an XAASurface for it.  XAA passes that surface
back to you in the SetupFor function.  To XAA, it's just a device
independent structure.  The driver has private storage in the
XAASurface.


 
 How does X tell the driver what the surface will be used for? A
 RENDER surface could have different alignment or tiling properties
 than a 2d only surface. That information would be needed at allocation
 time.
 

   There's no such thing as a RENDER surface.  Pictures are merely 
X-drawables with extra state associated with them.  Any drawable can 
eventually be used as a picture.  You will need to keep that in mind
just as you do now. 

Mark.

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


how to get correct image after switch to other terminal

2004-03-02 Thread wjd
Hi All,

I wrote a X11 application to get image of some window by XGetImage(),but after 
i switch to other terminal by Ctrl+Alt+F2,my application can't get correct image of 
windows.Are there any idea to fix this problem? or how can X11 application to know if 
desktop has been switch to another terminal? Thanks!


wjd



___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


RE: XAA2 namespace?

2004-03-02 Thread Mark Vojkovich
On Tue, 2 Mar 2004, Sottek, Matthew J wrote:

  Also, I would like to make sure that the new design has a much
  improved syncing mechanism. Syncing should be, at a minimum,
  on a per-surface basis. Perhaps even a bounded region of a
  surface is justified. As GUI's become more media rich the
  amount of data coming from the CPU to the graphics engine is
  increasing. This means more puts and consequently lots of syncing
  for many hardware types. The current global sync design waits
  too long and forces idle time unnecessarily. Other driver models
  abandoned the single sync a long time back.

   Ummm... which other models are you refering to?  I'm told that
Windows does it globally.  Having per-surface syncing may mean
you end up syncing more often.  Eg.  Render with HW to one surface
then to another, then if you render to SW to both of those surfaces,
two syncs happen.  Doing it globally would have resulted in only
one sync call.

   Unless you can truely checkpoint every rendering operation,
anything other than global syncing is going to result in more
sync calls.  The more I think about going away from global syncing,
the more this sounds like a bad idea.


Mark.

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel


Re: how to get correct image after switch to other terminal

2004-03-02 Thread Mark Vojkovich
On Wed, 3 Mar 2004, wjd wrote:

 Hi All,
 
   I wrote a X11 application to get image of some window by XGetImage(),but after 
 i switch to other terminal by Ctrl+Alt+F2,my application can't get correct image of 
 windows.Are there any idea to fix this problem? or how can X11 application to know 
 if desktop has been switch to another terminal? Thanks!
   

  There is no image when you are switched away.  I'm not sure
about how to figure out how to tell when switched away.  I thought
there was something in the XFree86-VidModeExtension, but it
looks like there isn't.  Certainly, you could monitor the visibility
events on the window you are grabbing.  If it's fully obscured, there's
nothing to see.

MArk.   

___
Devel mailing list
[EMAIL PROTECTED]
http://XFree86.Org/mailman/listinfo/devel