Re: radeon-pre-2

2004-09-11 Thread Michel Dänzer
On Sat, 2004-09-11 at 06:19 +0100, Dave Airlie wrote:
 
  You're probably right, but it still doesn't follow that this driver must
  include all the fbdev and DRM code as well. Both fbdev and the DRM could
  use that driver, e.g., just like ide_cd and ide_disk use the IDE driver.
 
 I think your wrong, look at drivers/video/aty/radeon* and tell me what in
 there is capable of being abstracted from the hardware, every file access
 lowlevel registers for something or other, be it mode setting or I2C, 

I'm not talking about abstracting much of anything, just moving
(arbitration of) actual hardware access to a common lowlevel driver. The
things you mentioned but snipped above, basically.

 now accessing lowlevels while the CP is running on a radeon is a one way
 express to the land of the lockups... 

No need to tell me that...

 (think mode setting a second head, while a 3d app is running on the first 
 head...), the lowlevel driver can provide a DRM and FB interface to fbcon 
 and 3d stuff, but the lowlevel driver needs all the code to do both...

I still haven't seen a complete logical chain leading to that
conclusion.

The lowlevel driver could provide all the necessary arbitration and
safety measures to prevent the two from stepping on each other's toes.


 The other thing I think some people are confusing is 2.4 fbdev and 2.6...

Again, not me.

 there is no console support in 2.6 fbdev drivers, it is all in the fbcon
 stuff, so the fbdev drivers are only doing 2d mode setting and monitor
 detection, [...]

Exactly. Why not leave it like that, and the DRM taking care of memory
management and rendering?


 1. It doesn't matter where the code lives, fbdev/DRM need to start talking
 about things

Agreed.

 2. A generic interface between the two is probably going to be impossible,

Probably true, I'm not talking about a generic interface (although some
parts might be generic, just like the DRM userspace interface).


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


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Vladimir Dergachev
I still haven't seen a complete logical chain leading to that
conclusion.
The lowlevel driver could provide all the necessary arbitration and
safety measures to prevent the two from stepping on each other's toes.
The thing is I know of no way to provide arbitration in such a way as to 
permit other code to access PLL registers directly.

One way or the other you will have to add please set mode X function to 
DRM and then the point of having a separate file for fb-con related 2d 
only is moot.

Additional argument for this is that DRM *NEEDS* to know about mode 
setting so that when it detects an engine lockup it is able to restore the 
card to a sane state without FB driver.

Right now there are two places where engine reset is handled: DRM driver
(where we reset the chip and leave it as is, with mode all screwed up) and
in Xserver (where we set the mode, but I have never seen this code path 
triggered).

Thus at the very least you would want to mandate the availability of mode 
setting part of FB when DRM is loaded - and they you can just as well link 
the relevant code together.

 best
 Vladimir Dergachev
---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Keith Whitwell
Dave Airlie wrote:
2D and 3D _are_ to most intents and purposes different functions. They
are as different as IDE CD and IDE disk if not more so.

stop saying this, it isn't true and hasn't been for years, for the mach64
type cards I'd agree, for something even like the i810 this isn't
true, most cards have two paths (at least), an unaccelerated 2D path via
programmed registers, and an accelerated path via some DMA mechanism, this
isn't a 2d/3d split, you have to use the DMA mechanism for doing some 2d
acceleration and you have to use it for all 3d acceleration normally,
Lots of X DDX drivers use the accelerator for 2d stuff, some fbs use it
for accelerating scrolling, the DRM uses it, this is wrong wrong wrong
wrong...X/DRM at least lock each other out, but the fb just tramps in
wearing its size nines.. so in summary the 2D/3D split exists in peoples
minds (graphics cards designers excepted...)
Yes, it is closest to the truth to believe there is one acceleration engine 
that does all drawing, and this should ideally have a single owner.

But that doesn't mean that mode-setting, etc, has to be moved into the DRM - 
for my money that stuff can stay where it is, provided there are some sensible 
interfaces put in place between the two components.

Keith
---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Keith Whitwell
Vladimir Dergachev wrote:
Alan,
  I would like to disagree with you.
On Fri, 10 Sep 2004, Alan Cox wrote:
On Gwe, 2004-09-10 at 23:19, Dave Airlie wrote:
If the kernel developers can address this point I would be most
interested, in fact I don't want to hear any more about sharing lowlevel
VGA device drivers until someone addresses why it is acceptable to have
two separate driver driving the same hardware for video and not for
anything else.. (remembering graphics cards are not-multifunction 
cards -
like Christoph used as an example before - 2d/3d are not separate
functions...)...

We've addressed this before. Zillions of drivers provide multiple
functions to multiple higher level subsystems. They don't all have to
be compiled together to make it work.
2D and 3D _are_ to most intents and purposes different functions. They
are as different as IDE CD and IDE disk if not more so.

Functions - yes, but they become such only at a higher level. 3d for 
example does not really exist in kernel in any form.

I would like to see unified fb (or the hardware-specific part of fb) and 
drm for one simple reason that I think you mentioned:

One driver per device. I.e. one driver per *physical* device.
Lastly, one point that you appear to have missed: DRM does DMA transfers
(among everything else). FB sets video modes - i.e. messes with PLL.
The problem is that there are configurations where messing with PLL 
while a DMA trasfer is active will lock up PCI (or AGP) bus hard.

For example, a video decoder can be clocked off pixel clock for video 
pass through mode. If we trasfer video data to main RAM at the same time 
and
FB gets a command instructing it to change resolution there would be a 
hard lockup.
I can see this being the case, but why can't fb just using existing drm 
interfaces to achieve device quiescence before touching the PLL's?

Keith
---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Keith Whitwell
Alan Cox wrote:
On Gwe, 2004-09-10 at 23:19, Dave Airlie wrote:
If the kernel developers can address this point I would be most
interested, in fact I don't want to hear any more about sharing lowlevel
VGA device drivers until someone addresses why it is acceptable to have
two separate driver driving the same hardware for video and not for
anything else.. (remembering graphics cards are not-multifunction cards -
like Christoph used as an example before - 2d/3d are not separate
functions...)...

We've addressed this before. Zillions of drivers provide multiple
functions to multiple higher level subsystems. They don't all have to
be compiled together to make it work. 

2D and 3D _are_ to most intents and purposes different functions. They
are as different as IDE CD and IDE disk if not more so.
This depends to a great deal what you mean by 2D.  The idea of a blitter or 
dedicated 2D acceleration engine is rapidly becoming history.  Several cards 
currently ship without one, and I expect to see that become the norm in future.

But if you define 2D to include things like mode setting, etc, and not any 
acceleration, then the split sortof works.

It might be better to call the components different names, like 
configuration and acceleration.

Keith


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Antonino A. Daplas
On Saturday 11 September 2004 13:19, Dave Airlie wrote:
 The other thing I think some people are confusing is 2.4 fbdev and 2.6...
 there is no console support in 2.6 fbdev drivers, it is all in the fbcon
 stuff, so the fbdev drivers are only doing 2d mode setting and monitor
 detection, some points I've considered are:

Correct.  fbdev is almost completely separate from fbcon. And you can
actually rip out fbdev and place it anywhere you want. As long as fbcon has
access to a pointer to framebuffer memory, and the characteristics of the
display such as depth, pitch, etc, then the framebuffer console will work.
Throw in a few functions, such as for buffer flipping, and fbcon will be happy. 

Hardware acceleration is entirely optional, and most drivers except for a few
(such as vga16fb or amiga) can use the cfb_* drawing functions.

There's also a recent change in the latest bk tree that changes the
intialization order of the framebuffer system. Previously, fbcon triggers
fbmem, then fbmem triggers each individual drivers.  This method requires
that a working fbdev is present, otherwise fbcon will fail (although you can
do a con2fbmap later, or modprobe a driver). With the change, the
order is reversed, driver-fbmem-fbcon.  This change is probably
significant because fbcon can wait until an active framebuffer activates.

In theory, one can have a process (kernel or userland) change the video
mode, then provide the in-kernel driver with the necessary information
about the layout of the framebuffer.  When this in-kernel driver gets the
necessary information, it can trigger fbcon. This in-kernel driver need not
know anything about the hardware (unless 2D acceleration is needed).

Tony




---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Mike Mestnik

--- Keith Whitwell [EMAIL PROTECTED] wrote:

 Vladimir Dergachev wrote:
  
  Alan,
I would like to disagree with you.
  
  On Fri, 10 Sep 2004, Alan Cox wrote:
  
  On Gwe, 2004-09-10 at 23:19, Dave Airlie wrote:
 
  If the kernel developers can address this point I would be most
  interested, in fact I don't want to hear any more about sharing
 lowlevel
  VGA device drivers until someone addresses why it is acceptable to
 have
  two separate driver driving the same hardware for video and not for
  anything else.. (remembering graphics cards are not-multifunction 
  cards -
  like Christoph used as an example before - 2d/3d are not separate
  functions...)...
 
 
  We've addressed this before. Zillions of drivers provide multiple
  functions to multiple higher level subsystems. They don't all have to
  be compiled together to make it work.
 
  2D and 3D _are_ to most intents and purposes different functions.
 They
  are as different as IDE CD and IDE disk if not more so.
  
  
  Functions - yes, but they become such only at a higher level. 3d for 
  example does not really exist in kernel in any form.
  
  I would like to see unified fb (or the hardware-specific part of fb)
 and 
  drm for one simple reason that I think you mentioned:
  
  One driver per device. I.e. one driver per *physical* device.
  
  Lastly, one point that you appear to have missed: DRM does DMA
 transfers
  (among everything else). FB sets video modes - i.e. messes with PLL.
  The problem is that there are configurations where messing with PLL 
  while a DMA trasfer is active will lock up PCI (or AGP) bus hard.
  
  For example, a video decoder can be clocked off pixel clock for video 
  pass through mode. If we trasfer video data to main RAM at the same
 time 
  and
  FB gets a command instructing it to change resolution there would be a
 
  hard lockup.
 
 I can see this being the case, but why can't fb just using existing drm 
 interfaces to achieve device quiescence before touching the PLL's?
 
I can see the problem here...

This happens with old(current) gatos and fglrx.  Where DRI sets up some
state in the card and then dosen't clear it after being unloaded.  This
leaves the card in an unknowen state that gatos or fglrx dosen't know any
thing about.

What will happen is that when the FB or DRM turns on a new feature the
other driver MAY need to be aware of the change.  This would imply that we
must now version as if there where an ABI.  The REAL problem is that the
ABI is all in hardware!  The bottom line is that nether of these drivers
SHOULD assume that the other won't change the way it uses the card, thus
forcing a bianary compatability issue.

 Keith
 
 
 ---
 This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
 Project Admins to receive an Apple iPod Mini FREE for your judgement on
 who ports your project to Linux PPC the best. Sponsored by IBM. 
 Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
 --
 ___
 Dri-devel mailing list
 [EMAIL PROTECTED]
 https://lists.sourceforge.net/lists/listinfo/dri-devel
 





__
Do you Yahoo!?
New and Improved Yahoo! Mail - 100MB free storage!
http://promotions.yahoo.com/new_mail 


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Christoph Hellwig
 If the kernel developers can address this point I would be most
 interested, in fact I don't want to hear any more about sharing lowlevel
 VGA device drivers until someone addresses why it is acceptable to have
 two separate driver driving the same hardware for video and not for
 anything else.. (remembering graphics cards are not-multifunction cards -
 like Christoph used as an example before - 2d/3d are not separate
 functions...)...

Well, Alan's proposal gets things back into a working shape with both
fbdev and get additional benefits like hotplug and autloading without
a major revamp of everything.  The major rework will have to happen sooner
or later anyway, but by fixing the obvious problems we face now first it
can be done in small pieces and with far less pressure.


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Mike Mestnik

--- Christoph Hellwig [EMAIL PROTECTED] wrote:

  If the kernel developers can address this point I would be most
  interested, in fact I don't want to hear any more about sharing
 lowlevel
  VGA device drivers until someone addresses why it is acceptable to
 have
  two separate driver driving the same hardware for video and not for
  anything else.. (remembering graphics cards are not-multifunction
 cards -
  like Christoph used as an example before - 2d/3d are not separate
  functions...)...
 
 Well, Alan's proposal gets things back into a working shape with both
 fbdev and get additional benefits like hotplug and autloading without
 a major revamp of everything.  The major rework will have to happen
 sooner
 or later anyway, but by fixing the obvious problems we face now first it
 can be done in small pieces and with far less pressure.
 
Not to step on toes, but...  From what I can tell the idea is to add code
into FB that calles functions in the DRM and vice vers.  This would seam
to  add another ABI.  Unless the code gets linked into one module, this
idea has been flamed and killed already.

I would be willing to bet that if some one did this, into one module, it
would be exepted by all.  However I don't see why we can't add multi-head
support, posibly at the same time? -Since Joe seams so willing to do this,
why not let him.

 
 ---
 This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
 Project Admins to receive an Apple iPod Mini FREE for your judgement on
 who ports your project to Linux PPC the best. Sponsored by IBM. 
 Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
 --
 ___
 Dri-devel mailing list
 [EMAIL PROTECTED]
 https://lists.sourceforge.net/lists/listinfo/dri-devel
 




__
Do you Yahoo!?
Yahoo! Mail - 50x more storage than other providers!
http://promotions.yahoo.com/new_mail


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


[ dri-Bugs-1026326 ] MESA_ycbcr not working correctly with radeon (M9000)

2004-09-11 Thread SourceForge.net
Bugs item #1026326, was opened at 2004-09-11 13:39
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detailatid=100387aid=1026326group_id=387

Category: None
Group: None
Status: Open
Priority: 5
Submitted By: Stefan Brüns (stefanbr)
Assigned to: Nobody/Anonymous (nobody)
Summary: MESA_ycbcr not working correctly with radeon (M9000)

Initial Comment:
Trying to use YUV on Radeon Mobility 9000 results in the right  
texture with wrong colors.  
  
Seems like the color components dont get calculated correctly, the  
colors are the same as one would set Y=G;Cb=B;Cr=R. Or written 
in Matrix form:  
  
|R| | 0  0  1 | | Y  |  
|G| = | 1  0  0 | * | Cb  |  
|B| | 0  1  0 | | Cr |  
  
Correct Matrix would be 
 
| 1.00 0.00 1.40 | 
| 1.00 -.34 -.71 | 
| 1.00 1.77 0.00 | 
 
Seems to be a bug in the radeon driver, mga and mesasoft work. 
 
Tested with the MESA yuvrect and yuvsquare examples. 

--

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detailatid=100387aid=1026326group_id=387


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: locate of drm.h

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 00:25, Jon Smirl wrote:
 I need a major number for the VGA device. 

Use one of the experimental ones (see Documentation/devices.txt). As and
if the driver becomes mainstream kernel material apply for one via
LANANA. I don't know what the *BSD procedures are.



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: New version of dyn-minor.patch

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 00:36, Jon Smirl wrote:
 inter_module can't be removed until we move to the drm_core design
 with personality modules

Of course it can go. You just fix up the DRI to start using
try_module_get(). Actually when you have the video class driver layer it
all comes for free anyway.

 The DRM(probe) macro is there for the same reason. Without the macro
 if you link two DRM drivers into the kernel you'll get symbol

Then I don't see why you've suddenely made it required undoing cleanup
that had been done ? Why does the minors patch suddenely introduce this
specific requirement ?

Alan



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: locate of drm.h

2004-09-11 Thread Simon 'corecode' Schubert
On 11.09.2004, at 14:50, Alan Cox wrote:
On Sad, 2004-09-11 at 00:25, Jon Smirl wrote:
I need a major number for the VGA device.
Use one of the experimental ones (see Documentation/devices.txt). As 
and
if the driver becomes mainstream kernel material apply for one via
LANANA. I don't know what the *BSD procedures are.
different. i mean, within the BSDs :) just use one. i'd say somebody 
will fix it if the major is already used somewhere else.

cheers
  simon
--
/\
\ /
 \ ASCII Ribbon Campaign
/ \  Against HTML Mail and News


PGP.sig
Description: This is a digitally signed message part


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 00:24, Dave Airlie wrote:
 stop saying this, it isn't true and hasn't been for years, for the mach64
 type cards I'd agree, for something even like the i810 this isn't

Its true. Its still true whether you demand people stop saying it or
not.

 true, most cards have two paths (at least), an unaccelerated 2D path via
 programmed registers, and an accelerated path via some DMA mechanism, this
 isn't a 2d/3d split, you have to use the DMA mechanism for doing some 2d
 acceleration and you have to use it for all 3d acceleration normally,

And a CD ROM is a round thing with removable optical media, while a hard
disk has a different command set and is magnetic. They are juat as
different. Its simple a matter of correct architecture.

 Lots of X DDX drivers use the accelerator for 2d stuff, some fbs use it
 for accelerating scrolling, the DRM uses it, this is wrong wrong wrong
 wrong...X/DRM at least lock each other out, but the fb just tramps in
 wearing its size nines.. so in summary the 2D/3D split exists in peoples
 minds (graphics cards designers excepted...)

Thats a different issue. IDE has to stop the CD and disk drivers from
stomping on each other over a shared bus. This is the problem of them
knowing each other exist and interacting. This is the point you need to
be able to find DRI from FB and vice versa. The point they need to know
about each other being loaded.

Multiple registrations on the same object is exactly what the class code
in the kernel is for. 

You end up with a VGA class driver that knows all the video devices. 
That has the usual match/install functions to allow the frame buffer to
attach, but can also have other sets for attaching different client
classes.




---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 01:47, Vladimir Dergachev wrote:
  One driver per device. I.e. one driver per *physical* device.

This is a religion the kernel doesn't follow. Its a pointless
religion

 Lastly, one point that you appear to have missed: DRM does DMA transfers
 (among everything else). FB sets video modes - i.e. messes with PLL.
 The problem is that there are configurations where messing with PLL while 
 a DMA trasfer is active will lock up PCI (or AGP) bus hard.

Yes its a co-ordination issue. If the IDE disk writes to the bus the
same moment as the IDE CD shit also happens.

 For example, a video decoder can be clocked off pixel clock for video pass 
 through mode. If we trasfer video data to main RAM at the same time and
 FB gets a command instructing it to change resolution there would be a 
 hard lockup.

Gosh, just like if the IDE disk driver changes the bus clocking during
an IDE CD transfer.

You need co-ordination not some horrible glue it all together and pray
hack. Thats always going to be true, and since you can do it without
glueing it all together you might get somewhere by keeping them apart,
otherwise I see no future. Most DRI users don't want FB, most FB users
don't care about DRI or want to control the DRI from the fb side.

Alan



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 01:50, Dave Airlie wrote:
 So the IDE-CD driver and IDE-disk drivers both program registers on the
 IDE controller directly.. oh no the ide driver seems to do that.. this is
 FUD,

Its a shame the DRI people having nothing better to do than tell folks
to shut up or mutter FUD about things they don't grasp. You've almost
got the point by now at least.

The IDE CD and IDE disk drivers do both write to registers on the IDE
controller directly - often the same registers. The reason it doesn't
end up in a nasty heap is because the core IDE code does co-ordination. 
Two drivers, independant drivers, an access protocol an the ability for
some entity to co-ordinate them and lo - it all works.

  a graphics card is a device, singular one device, it requires one
 device driver,

That appears to be the pet religion but repeating bullshit doesn't make
it true.

 I can't write a user space IDE driver and still expect the kernel one to
 be happy, I can't write a second IDE driver for a chipset for formatting
 disks and expect the normal kernel driver to stay working with it, why do
 people think graphics driver are meant to be different..

Because they are not different, and you can write such a formatting
driver providing it follows the IDE access protocols in the core code.
You won't have to modify existing IDE drivers either. It works because
the co-ordination layer is there.

 Alan, I agree with how you want to proceed with this, and keep things
 stable, but anything short of a single card-specific driver looking after
 the registers and DMA queueing and locking is going to have deficiencies
 and the DRM has a better basis than the fb drivers,

I want to own it, mine mine. Pathetic really isn't it. The FB writers
I've no doubt think they should own it and their code is better too.
They also support a lot more hardware than you do of course, and on
platforms that DRI doesn't support.

What is actually so hard about driver code that instead looks like


my_fb_attach_notify(struct vga_dev *dev, int type)
{
if(type == TYPE_DRI)
{
me-fb_ops = dri_ops;
my_fb_dri_init(dev);
return 0;
}
if(type == TYPE_OVERLAY  dev-rev  0xC4) /* Errata */
return -EINVAL; /* Refuse overlays in fb mode */
}

or

down(dev-lock);
vga_quiesce_all_drivers(dev);
do nasty non parallel stuff
up(dev-lock);

This is essentially what the IDE layer does, although its closer to

queue_this_function_and_args_to_list(dev, callback, args);
if(!doing_stuff);
begin_queue_run(dev);

Either model works



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: UT2004 freeze when shooting with Shock Rifle

2004-09-11 Thread Marcello Maggioni
On Fri, 10 Sep 2004 19:52:55 +0200, Marcello Maggioni [EMAIL PROTECTED] wrote:
 Hi all ,
 
 I've posted for AA few days ago, and I'm here again :)
 
 Now the problem is with UT2004 .
 
 My card is a 3D prophet Radeon 8500LE with R200 ,My drivers are the
 lastest taken yesterday from CVS.
 
 I've downloaded the demo , and the game seemed to run fine  at
 least until I tried to shoot with a Shock Rifle .
 
 Just after the laser beam started to run from my rifle to the target
 the system simply freezed .
 
 I've tried all the sort of workarounds , disable all effects, running
 at 640x480 at 16bit , disable TCL , disable Texture Units etc etc ...
 no way.
 
 I've enabled the NMI Watchdog and after that I can SSH into the system
 and try to reboot (the system doesn't reboot, but seem that the
 filesystems are umounted anyway) .
 
 It's a pity, because the game runs fine until the player or a BOT try
 to shoot with the Shock Rifle .
 
 Thanks for your work :)
 
 Bye
 
 Marcello
 
 Here my GLXINFO:
 
 [EMAIL PROTECTED]:~$ glxinfo -l
 name of display: :0.0
 Mesa: software DXTn compression/decompression available
 
 display: :0  screen: 0
 direct rendering: Yes
 server glx vendor string: SGI
 server glx version string: 1.2
 server glx extensions:
 GLX_ARB_multisample, GLX_EXT_visual_info, GLX_EXT_visual_rating,
 GLX_EXT_import_context, GLX_OML_swap_method, GLX_SGI_make_current_read,
 GLX_SGIS_multisample, GLX_SGIX_fbconfig
 client glx vendor string: SGI
 client glx version string: 1.4
 client glx extensions:
 GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
 GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
 GLX_MESA_swap_control, GLX_MESA_swap_frame_usage, GLX_OML_swap_method,
 GLX_OML_sync_control, GLX_SGI_make_current_read, GLX_SGI_swap_control,
 GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig,
 GLX_SGIX_pbuffer, GLX_SGIX_visual_select_group
 GLX extensions:
 GLX_ARB_get_proc_address, GLX_ARB_multisample, GLX_EXT_import_context,
 GLX_EXT_visual_info, GLX_EXT_visual_rating, GLX_MESA_allocate_memory,
 GLX_MESA_swap_control, GLX_MESA_swap_frame_usage, GLX_OML_swap_method,
 GLX_SGI_video_sync, GLX_SGIS_multisample, GLX_SGIX_fbconfig
 OpenGL vendor string: Tungsten Graphics, Inc.
 OpenGL renderer string: Mesa DRI R200 20040906 AGP 1x x86/MMX+/3DNow!+/SSE TCL
 OpenGL version string: 1.3 Mesa 6.2
 OpenGL extensions:
 GL_ARB_imaging, GL_ARB_multisample, GL_ARB_multitexture,
 GL_ARB_texture_border_clamp, GL_ARB_texture_compression,
 GL_ARB_texture_cube_map, GL_ARB_texture_env_add,
 GL_ARB_texture_env_combine, GL_ARB_texture_env_dot3,
 GL_ARB_texture_mirrored_repeat, GL_ARB_texture_rectangle,
 GL_ARB_transpose_matrix, GL_ARB_vertex_buffer_object,
 GL_ARB_vertex_program, GL_ARB_window_pos, GL_EXT_abgr, GL_EXT_bgra,
 GL_EXT_blend_color, GL_EXT_blend_equation_separate,
 GL_EXT_blend_func_separate, GL_EXT_blend_minmax, GL_EXT_blend_subtract,
 GL_EXT_clip_volume_hint, GL_EXT_compiled_vertex_array, GL_EXT_convolution,
 GL_EXT_copy_texture, GL_EXT_draw_range_elements, GL_EXT_histogram,
 GL_EXT_packed_pixels, GL_EXT_polygon_offset, GL_EXT_rescale_normal,
 GL_EXT_secondary_color, GL_EXT_separate_specular_color,
 GL_EXT_stencil_wrap, GL_EXT_subtexture, GL_EXT_texture, GL_EXT_texture3D,
 GL_EXT_texture_compression_s3tc, GL_EXT_texture_edge_clamp,
 GL_EXT_texture_env_add, GL_EXT_texture_env_combine,
 GL_EXT_texture_env_dot3, GL_EXT_texture_filter_anisotropic,
 GL_EXT_texture_lod_bias, GL_EXT_texture_mirror_clamp,
 GL_EXT_texture_object, GL_EXT_texture_rectangle, GL_EXT_vertex_array,
 GL_APPLE_packed_pixels, GL_ATI_blend_equation_separate,
 GL_ATI_texture_env_combine3, GL_ATI_texture_mirror_once,
 GL_IBM_rasterpos_clip, GL_IBM_texture_mirrored_repeat,
 GL_INGR_blend_func_separate, GL_MESA_pack_invert, GL_MESA_ycbcr_texture,
 GL_MESA_window_pos, GL_NV_blend_square, GL_NV_light_max_exponent,
 GL_NV_texture_rectangle, GL_NV_texgen_reflection, GL_SGI_color_matrix,
 GL_SGI_color_table, GL_SGIS_generate_mipmap, GL_SGIS_texture_border_clamp,
 GL_SGIS_texture_edge_clamp, GL_SGIS_texture_lod, GL_S3_s3tc
 OpenGL limits:
 GL_MAX_ATTRIB_STACK_DEPTH = 16
 GL_MAX_CLIENT_ATTRIB_STACK_DEPTH = 16
 GL_MAX_CLIP_PLANES = 6
 GL_MAX_COLOR_MATRIX_STACK_DEPTH = 4
 GL_MAX_ELEMENTS_VERTICES = 3000
 GL_MAX_ELEMENTS_INDICES = 3000
 GL_MAX_EVAL_ORDER = 30
 GL_MAX_LIGHTS = 8
 GL_MAX_LIST_NESTING = 64
 GL_MAX_MODELVIEW_STACK_DEPTH = 32
 GL_MAX_NAME_STACK_DEPTH = 64
 GL_MAX_PIXEL_MAP_TABLE = 256
 GL_MAX_PROJECTION_STACK_DEPTH = 32
 GL_MAX_TEXTURE_STACK_DEPTH = 10
 GL_MAX_TEXTURE_SIZE = 1024
 GL_MAX_3D_TEXTURE_SIZE = 64
 GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB = 256
 GL_MAX_RECTANGLE_TEXTURE_SIZE_NV = 1024
 GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB = 7
 GL_MAX_TEXTURE_UNITS_ARB = 6
   

Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 06:19, Dave Airlie wrote:
 1. It doesn't matter where the code lives, fbdev/DRM need to start talking
 about things

It matters immensely what the divison is because people talking doesn't
scale ..

 I'm interested in seeing what Alan comes up with, even in a non-working
 form .. I much prefer the evolution of these things than complete new
 solutions... but I also think linking the fb and drm code together will
 remove alot of the headaches and result in a more maintainable system
 longterm, even if shortterm there are some ugly hacks..

What I'm trying to end up with is this

drv.type = TYPE_FB0;/* Head 0 */
/* Rest much like PCI */
vga_register_driver(drv)

drv.type = TYPE_DRI;
vga_register_driver(drv)

all working like the PCI API, so you get add/remove notifications, you
also don't need to modify the video and DRI drivers much. Unlike the
pci_register it allows multiple claims for each device (one memory
manager, one dri driver, up to four heads for now - multihead needs
more pondering perhaps)

Each of these gets notified when the others are added/removed and can
veto such an add or remove. They can also provide whatever methods it
turns out are appropriate to each other for co-ordination.

For example I can see the radeon DRM driver providing

-queue_commands()
-quiesce()

to the 2D driver. And the 2D driver providing

-define_fb_layout()  for DRI to provide to X

That way it is only these calls between drivers you and the fb authors
have to argue about the functionality and interfaces between. (eg who
saves registers, which registers)

Alan





---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 08:11, Vladimir Dergachev wrote:
 The thing is I know of no way to provide arbitration in such a way as to 
 permit other code to access PLL registers directly.

This arises solely because the DRM and framebuffer drivers cannot find
each other and have no shared structures. The moment you have that it
becomes

down(dev-foo-pll_lock);

 Thus at the very least you would want to mandate the availability of mode 
 setting part of FB when DRM is loaded - and they you can just as well link 
 the relevant code together.

You are making a generic assumption for a single card specific problem
in a specific situation. That leads to bad decisions for embedded. It
does argue for mode setting and fb to be separate too.

(Remember for most embedded devices mode setting code is trivial)



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Vladimir Dergachev
anything else.. (remembering graphics cards are not-multifunction cards -
like Christoph used as an example before - 2d/3d are not separate
functions...)...

We've addressed this before. Zillions of drivers provide multiple
functions to multiple higher level subsystems. They don't all have to
be compiled together to make it work.
2D and 3D _are_ to most intents and purposes different functions. They
are as different as IDE CD and IDE disk if not more so.

Functions - yes, but they become such only at a higher level. 3d for 
example does not really exist in kernel in any form.

I would like to see unified fb (or the hardware-specific part of fb) and 
drm for one simple reason that I think you mentioned:

One driver per device. I.e. one driver per *physical* device.
Lastly, one point that you appear to have missed: DRM does DMA transfers
(among everything else). FB sets video modes - i.e. messes with PLL.
The problem is that there are configurations where messing with PLL while a 
DMA trasfer is active will lock up PCI (or AGP) bus hard.

For example, a video decoder can be clocked off pixel clock for video pass 
through mode. If we trasfer video data to main RAM at the same time and
FB gets a command instructing it to change resolution there would be a hard 
lockup.
I can see this being the case, but why can't fb just using existing drm 
interfaces to achieve device quiescence before touching the PLL's?
Video decoder is not part of 3d engine. In fact if we are not transferring 
data via DMA into system RAM the video decoder will be running 
continuously and none of currently examined for quiescence flags would 
show it.

To do all this properly there should be a piece of code that knows all 
about currrent state of the card - which clocks are connected to what, 
which transfers are running and which parts of the engine are busy.

Btw, it would also be nice if that code received interrupts that can occur 
when user hotplugs monitors.

 best
Vladimir Dergachev

---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 10:20, Antonino A. Daplas wrote:
 In theory, one can have a process (kernel or userland) change the video
 mode, then provide the in-kernel driver with the necessary information
 about the layout of the framebuffer.  When this in-kernel driver gets the
 necessary information, it can trigger fbcon. This in-kernel driver need not
 know anything about the hardware (unless 2D acceleration is needed).

Thats great because one of the things X wants to tell DRI to tell the
kernel eventually is by the way the area visible is laid out like this
shoudl you want to panic on it.

(Jon wants to move the mode setting out of X eventually and that follows
the same line of requirement nicely).



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: New version of dyn-minor.patch

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 13:53:41 +0100, Alan Cox [EMAIL PROTECTED] wrote:
 On Sad, 2004-09-11 at 00:36, Jon Smirl wrote:
  inter_module can't be removed until we move to the drm_core design
  with personality modules
 
 Of course it can go. You just fix up the DRI to start using
 try_module_get(). Actually when you have the video class driver layer it
 all comes for free anyway.

I haven't used try_mode_get(); not sure what the BSD impacts are. The
inter_module stuff has been in DRM since it was originally written. I
just moved the exisiting code around a little.

  The DRM(probe) macro is there for the same reason. Without the macro
  if you link two DRM drivers into the kernel you'll get symbol
 
 Then I don't see why you've suddenely made it required undoing cleanup
 that had been done ? Why does the minors patch suddenely introduce this
 specific requirement ?

The probe function was static before. Now it is a different file and
requires the DRM() macro. I did it that was to minimize the diffs, if
I move the functions around I would triple the size of the diffs.

 
 Alan
 
 



-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Vladimir Dergachev

Thus at the very least you would want to mandate the availability of mode
setting part of FB when DRM is loaded - and they you can just as well link
the relevant code together.
You are making a generic assumption for a single card specific problem
in a specific situation. That leads to bad decisions for embedded. It
does argue for mode setting and fb to be separate too.
(Remember for most embedded devices mode setting code is trivial)
Alan,
My point was that you would want to have DRM working on Radeon cards,
right ? And there are complexities of current Radeon hardware that one 
would have to deal with, no matter how simple it might be to do the same 
thing for embedded.

Lastly, I am not saying you have to put all the code in the same file.
All I am saying we can mandate that all Radeon HW specific code is linked
in one module - and this would make things easier for developers.
Alternatively, you can have a complicated scheme whereby you load FB 
and DRM drivers in any order. But DRM would want FB (or part of it) to be 
present anyway so it should be able to recover from engine lockup.

I would agree that this can be coded as well - but why bother ? Or is 
it done and working already ?

best
  Vladimir Dergachev
---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 13:27:27 +0100, Christoph Hellwig [EMAIL PROTECTED] wrote:
  If the kernel developers can address this point I would be most
  interested, in fact I don't want to hear any more about sharing lowlevel
  VGA device drivers until someone addresses why it is acceptable to have
  two separate driver driving the same hardware for video and not for
  anything else.. (remembering graphics cards are not-multifunction cards -
  like Christoph used as an example before - 2d/3d are not separate
  functions...)...
 
 Well, Alan's proposal gets things back into a working shape with both
 fbdev and get additional benefits like hotplug and autloading without
 a major revamp of everything.  The major rework will have to happen sooner
 or later anyway, but by fixing the obvious problems we face now first it
 can be done in small pieces and with far less pressure.
 
The resource reservation conflicts are already solved in the current
DRM code. Most of the changes are in kernel and the rest are in the
pipeline.  DRM loads in two modes, primary where it behaves like a
normal Linux driver and stealth where it uses the resources without
telling the kernel. Stealth/primary mode is a transition tool until
things get fixed. Once everything is sorted out stealth mode can be
removed.

Think of this as having the shared resource platform code in the DRM
driver. This shared platform knows how to load DRM. The next step is
to teach it how to load fbcon. Final step is to integrate the chip
specific code from DRM and fbdev.

I believe this method is less disruptive that simultaneously tearing
up vesafb, fbdev and DRM. The end result will be the same.



-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 17:20:38 +0800, Antonino A. Daplas
[EMAIL PROTECTED] wrote:
 On Saturday 11 September 2004 13:19, Dave Airlie wrote:
  The other thing I think some people are confusing is 2.4 fbdev and 2.6...
  there is no console support in 2.6 fbdev drivers, it is all in the fbcon
  stuff, so the fbdev drivers are only doing 2d mode setting and monitor
  detection, some points I've considered are:
 
 Correct.  fbdev is almost completely separate from fbcon. And you can
 actually rip out fbdev and place it anywhere you want. As long as fbcon has
 access to a pointer to framebuffer memory, and the characteristics of the
 display such as depth, pitch, etc, then the framebuffer console will work.
 Throw in a few functions, such as for buffer flipping, and fbcon will be happy.

The intention of the DRM work is to reuse fbcon without change if
possible or minimize the changes needed.

 Hardware acceleration is entirely optional, and most drivers except for a few
 (such as vga16fb or amiga) can use the cfb_* drawing functions.

No code has been written for this, but part of the plan is to split
the console function into two pieces: boot and user. The boot console
would be non-accelerated and use fbcon for drawing. It's goal is to be
as reliable as possible and to work in all environments including
interrupt time. Booting in single user mode would use boot console. So
would OOPs and initial boot.

Another major console use is for normal users doing things like
editing and command line stuff. This console would be implemented in
user space. User space console can call into DRM and achieve full
acceleration. This would also allow consoles in Asian and Indic
languages.

 There's also a recent change in the latest bk tree that changes the
 intialization order of the framebuffer system. Previously, fbcon triggers
 fbmem, then fbmem triggers each individual drivers.  This method requires
 that a working fbdev is present, otherwise fbcon will fail (although you can
 do a con2fbmap later, or modprobe a driver). With the change, the
 order is reversed, driver-fbmem-fbcon.  This change is probably
 significant because fbcon can wait until an active framebuffer activates.
 
 In theory, one can have a process (kernel or userland) change the video
 mode, then provide the in-kernel driver with the necessary information
 about the layout of the framebuffer.  When this in-kernel driver gets the
 necessary information, it can trigger fbcon. This in-kernel driver need not
 know anything about the hardware (unless 2D acceleration is needed).

The plan for mode setting is to move as much as possible of it to user
space via a hotplug event. The driver would then be informed of the
information it needs like framebuffer location, dimensions, mode
register values, etc.

 
 Tony
 
 



-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Christoph Hellwig
On Sat, Sep 11, 2004 at 12:11:13PM -0400, Jon Smirl wrote:
 The resource reservation conflicts are already solved in the current
 DRM code. Most of the changes are in kernel and the rest are in the
 pipeline.  DRM loads in two modes, primary where it behaves like a
 normal Linux driver and stealth where it uses the resources without
 telling the kernel. Stealth/primary mode is a transition tool until
 things get fixed. Once everything is sorted out stealth mode can be
 removed.

Not, it's not been solved.  You hacked around the most common symptoms.



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Christoph Hellwig
On Sat, Sep 11, 2004 at 05:49:30AM -0700, Mike Mestnik wrote:
 Not to step on toes, but...  From what I can tell the idea is to add code
 into FB that calles functions in the DRM and vice vers.  This would seam
 to  add another ABI.  Unless the code gets linked into one module, this
 idea has been flamed and killed already.

in-kernel ABIs are absolutely not an issue for Linux.



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 15:33:43 +0100, Alan Cox [EMAIL PROTECTED] wrote:
 For example I can see the radeon DRM driver providing
 
 -queue_commands()
 -quiesce()
 
 to the 2D driver. And the 2D driver providing
 
 -define_fb_layout()  for DRI to provide to X
 
 That way it is only these calls between drivers you and the fb authors
 have to argue about the functionality and interfaces between. (eg who
 saves registers, which registers)
 

Take a system with two simultaneous users on two heads of a dual head
card. The kernel will be process swapping between these two users as
needed.

User 1 is playing a 3D game. 
User 2 is editing with emacs on fbdev

User 1's game queues up 20ms of 3D drawing commands.
Process swap to user 2.  -quiesce() is going to take 20ms. 
User 2's timeslice expires and we go back to user 1.
User 1 queues up another 20ms.

User 2's editor is never going to function.

The correct solution is to leave the chip in 3D mode and merge DMA
command streams. User 2 wouldn't have problems if it's console driver
queued 3D commands instead of stopping the 3D coprocessor, changing
the chip mode, executing a host based 2D command, and then restarting
the coprocessor.

-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Linus Torvalds


On Sat, 11 Sep 2004, Jon Smirl wrote:

 The resource reservation conflicts are already solved in the current
 DRM code. Most of the changes are in kernel and the rest are in the
 pipeline.  DRM loads in two modes, primary where it behaves like a
 normal Linux driver and stealth where it uses the resources without
 telling the kernel. Stealth/primary mode is a transition tool until
 things get fixed. Once everything is sorted out stealth mode can be
 removed.

I _think_ Alan's argument is that this isn't about the resource 
reservation conflicts. In many ways resource reservations don't much
matter, since for PCI devices the kernel can (and does) make sure that 
nobody else stomps on that particular IO range anyway.

So to some degree the real issue is not so much about who owns the 
device: clearly nobody _can_ own it, as there are multiple drivers that 
do want to access it. So the real issue is about how to serialize the 
existing multiple owners.

At least this is where I _think_ Alan is coming from. You're been an 
argumentative bunch, it's hard to tell in between all the flamage ;)

 Think of this as having the shared resource platform code in the DRM
 driver. This shared platform knows how to load DRM. The next step is
 to teach it how to load fbcon. Final step is to integrate the chip
 specific code from DRM and fbdev.

Again, I think you're thinking about the problem from two fundamentally 
different standpoints. 

Jon, you want to get to that Final step is to integrate the chip specific
code from DRM and fbdev. Alan doesn't even want to get there. I think 
Alan just wants some simple infrastructure to let everybody play together.

(Hey, at this point everybody will jump at me and tell me I'm taking
lessons from Hans, and that I'm totally misrepresenting what people want.  
Bring it on, as those stupid US politicians would say).

So look at this another way: maybe we do _not_ want to integrate any code. 
It's ok to have fbdev/fbcon/X/DRM all sharing the same device. The only 
thing we need is something to serialize the damn things with.

My personal preference for this whole mess has always been the silly 
driver that isn't even hardware-specific, and really does _nothing_ on 
its own. This one would be the only thing that actually reserves the IO 
regions and owns the card from the respect of the resources. EVERYBODY 
else would be a stealth driver. Not just DRM.

And the drivers would never become non-stealth. They'd stay as stealth 
drivers, and just use the silly hardware-independent thing as a way to 
serialize themselves.

So what does the hw-independent thing need to do?

 - locking. This is the first-order problem, and maybe it never even needs 
   to go beyond this stage. If DRM can say I want to own the 
   accelerator, and others will wait for it, then that's already a big 
   step forward.

   Implementation: have a data structure with n different pointers to
   locks, for each independent function you can think of that somebody
   would want exclusive access over. accelerator modeswitch 
   framebuffer memory alloc whatever.

   Now, the reason why these things are _pointers_ to locks rather than 
   locks themselves is that maybe some hardware ends up sharing resources 
   between these things (maybe modeswitch needs the accelerator to 
   work), and then they have to use the same lock. Fine - just make the
   pointer point to that lock. The hardware-independent part doesn't even 
   need to _know_ about this: it just sets up all n locks as being
   independent, and then the low-level drivers can move the lock pointers 
   around since _they_ know what the rules are.

   Or something like this.

 - memory allocation. Many of these issues really are generic, and once 
   you have the locking setup done, maybe you can have a generic memory
   allocation layer for splitting up AGP memory or whatever. See the 
   dma_declare_coherent_memory() interfaces that James Bottomley did for 
   some SCSI devices that have on-board memory that they want to let the 
   kernel allocate as DMA'able.

   In fact, maybe the existing _general_ dma_declare_coherent_memory() 
   interfaces can be enhanced enough that the drivers can just use that
   directly. See Documentation/DMA-API.txt for some docs (it's very 
   limited right now, because nobody _needs_ any more, but it already has 
   support for if you can't find memory directly on the card, allocate
   some from system RAM instead kind of operations).

Anyway, please stop the flamage. It all sounds like you're arguing across 
each other. Now you can flame me instead, but please try to direct the 
flamage to specific points so that I don't get the feeling that you're 
talking about something else..

Linus


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux 

Re: radeon-pre-2

2004-09-11 Thread Vladimir Dergachev

On Sat, 11 Sep 2004, Alan Cox wrote:
On Sad, 2004-09-11 at 16:53, Vladimir Dergachev wrote:
 Lastly, I am not saying you have to put all the code in the same file.
All I am saying we can mandate that all Radeon HW specific code is linked
in one module - and this would make things easier for developers.
And if I want dri but not frame buffer, or vice versa, as the majority
of current users do
You are missing my point - I do not say we need to *activate* the 
framebuffer, just link the mode setting (and other hardware dependent 
code) into DRM driver.

This is kinda like vesafb driver is doing now - if I don't pass vga=XX 
parameter on the command line it does not touch the graphics card.

Thus, even if framebuffer support is not compiled into the kernel the DRM 
driver is able to reinitialize the card into a sane state.


 I would agree that this can be coded as well - but why bother ? Or is
it done and working already ?
Splitting the modules up is the easy bit. The API is the hard bit so you
might as well formalize it. It also gives the users the ability to not
load huge radeon modules.
This is a good point - if we don't need DMA or 3d acceleration we can 
reduce memory footprint. This would seem that current DRM driver would 
need to be dependent on whatever driver contains the mode setting code.

What do you think ?
  best
Vladimir Dergachev
---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
Coprocessor 3D mode is deeply pipelined
2D mode is immediate

How can you build a system that process swaps between these two modes?
The 3D pipeline has to be emptied before you can enter 2D immediate
mode.

My solution is to leave the coprocessor always running and convert
everything to use the DMA based commands.


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 18:02, Linus Torvalds wrote:
 My personal preference for this whole mess has always been the silly 
 driver that isn't even hardware-specific, and really does _nothing_ on 
 its own. This one would be the only thing that actually reserves the IO 
 regions and owns the card from the respect of the resources. EVERYBODY 
 else would be a stealth driver. Not just DRM.

How do you plan to deal with hot plug. At the point the silly driver
(in my case this is the vga class driver) claims the PCI device and
propogates things onwards hotplug seems to work.

The second fun bit is that Jon is right that in some cases the fb driver
for a card may want to use the DRI layer if loaded - but only some and
only in a controlled manner. Sometimes the drivers want to co-operate
sometimes they just want to avoid beating each other senseless.

Now, the reason why these things are _pointers_ to locks rather than 
locks themselves is that maybe some hardware ends up sharing resources 
between these things (maybe modeswitch needs the accelerator to 

How do you deal with making sure the lock doesn't get freed and knowing
who needs it still ? I ended up with locks in the shared area itself
because I couldn't figure that one out ?

  - memory allocation. Many of these issues really are generic, and once 
you have the locking setup done, maybe you can have a generic memory
allocation layer for splitting up AGP memory or whatever. See the 
dma_declare_coherent_memory() interfaces that James Bottomley did for 
some SCSI devices that have on-board memory that they want to let the 
kernel allocate as DMA'able.

I think allocation is genuinely a hard problem in the 3D card case. Some
devices have the most wonderful restrictions on layout that range
from the frame buffer is here to I want 2Mb, 1Mb aligned within a 4Mb
range and you can free this stuff if you notify me but its not
textures. Multihead really makes this interesting and DRI itself
doesn't really address this problem either.

Linus let me run what I have now past you for comment (the code isnt
working yet since I've been having a fight with the class code)

The vga_class module registers itself as the owner of every VGA class
device on the PCI bus. The PCI layer duely gives it all the video
hotplug events.

On creation it creates a set of (currently 3) vga bus objects for each
card. So if we find say a Voodoo 3, we will create vga bus objects

Voodoo 3 memory manager
Voodoo 3 DRI
Voodoo 3 Frame buffer 0

(for now. Quite possibly mode management is separate, maybe memory 
 manager eventually will or will not be)

and stick them onto global and per vga router lists.

vga_register_driver works like PCI register driver but also takes a 
type field and will attach to the appropriate one of the 3 objects,
detach on hotplug and all the rest as the base/* code provides.

When you attach or detach you get a notifier to the other members that
are loaded.

Finally there is a shared structure between the different vga bus
objects for each video card which allows you to find one function from
another (maybe the notifiers should pass these) and also a semaphore.




---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 18:10, Vladimir Dergachev wrote:
 This is a good point - if we don't need DMA or 3d acceleration we can 
 reduce memory footprint. This would seem that current DRM driver would 
 need to be dependent on whatever driver contains the mode setting code.
 
 What do you think ?

Jon wants to get mode setting into a seperate piece of functionality -
preferably in user space for many cards. I'd dearly love to see hotplug
handing all but some emergency pre-computed mode settings.

Alan



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 17:46, Jon Smirl wrote:
 User 1's game queues up 20ms of 3D drawing commands.
 Process swap to user 2.  -quiesce() is going to take 20ms. 
 User 2's timeslice expires and we go back to user 1.
 User 1 queues up another 20ms.
 
 User 2's editor is never going to function.

If you implement it wrongly sure. If you implemented it right then
this occurs.

User 1 queues 20 ms of 3D commands
User 1 is pre-empted
User 2 wants the 2D engine
User 2 beings wait for 2D
User 2 sleeps
User 1 wakes
User 1 beings wait for 3D but discovers a claim is in progress
User 1 sleeps
User 2 wakes, runs commands

If you have DRI loaded then as you rightly say the obvious desired
outcome is that the fb engine either turns acceleration off or switches
to using the DRI layer. 

But this is a pretty obscure case, and one we can't even begin to
support yet anyway.





---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 18:13, Jon Smirl wrote:
 Coprocessor 3D mode is deeply pipelined
 2D mode is immediate

Card dependant.

 How can you build a system that process swaps between these two modes?
 The 3D pipeline has to be emptied before you can enter 2D immediate
 mode.
 My solution is to leave the coprocessor always running and convert
 everything to use the DMA based commands.

On such a card when DRI is available that is probably the right path,
especially if it has the can't software touch the frame buffer while
the engine runs design flaw.

If DRI isn't loaded, or isn't running you can carry on unaccelerated.



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 17:46, Jon Smirl wrote:
 User 1's game queues up 20ms of 3D drawing commands.
 Process swap to user 2.  -quiesce() is going to take 20ms. 
 User 2's timeslice expires and we go back to user 1.
 User 1 queues up another 20ms.
 
 User 2's editor is never going to function.

If you implement it wrongly sure. If you implemented it right then
this occurs.

User 1 queues 20 ms of 3D commands
User 1 is pre-empted
User 2 wants the 2D engine
User 2 beings wait for 2D
User 2 sleeps
User 1 wakes
User 1 beings wait for 3D but discovers a claim is in progress
User 1 sleeps
User 2 wakes, runs commands

If you have DRI loaded then as you rightly say the obvious desired
outcome is that the fb engine either turns acceleration off or switches
to using the DRI layer. 

But this is a pretty obscure case, and one we can't even begin to
support yet anyway.





---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 17:21:22 +0100, Alan Cox [EMAIL PROTECTED] wrote:
 On Sad, 2004-09-11 at 17:46, Jon Smirl wrote:
  User 1's game queues up 20ms of 3D drawing commands.
  Process swap to user 2.  -quiesce() is going to take 20ms.
  User 2's timeslice expires and we go back to user 1.
  User 1 queues up another 20ms.
 
  User 2's editor is never going to function.
 
 If you implement it wrongly sure. If you implemented it right then
 this occurs.
 
 User 1 queues 20 ms of 3D commands
 User 1 is pre-empted
 User 2 wants the 2D engine
 User 2 beings wait for 2D
 User 2 sleeps
 User 1 wakes
 User 1 beings wait for 3D but discovers a claim is in progress
 User 1 sleeps
 User 2 wakes, runs commands

This model destroys the parallel processing between the main CPU and the GPU.

 
 If you have DRI loaded then as you rightly say the obvious desired
 outcome is that the fb engine either turns acceleration off or switches
 to using the DRI layer.
 
 But this is a pretty obscure case, and one we can't even begin to
 support yet anyway.
 
 

-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Linus Torvalds


On Sat, 11 Sep 2004, Jon Smirl wrote:

 Coprocessor 3D mode is deeply pipelined
 2D mode is immediate

Now it is _you_ who confuse 3D mode and 2D mode.

THERE IS NO SUCH THING.

There is only hardware.

 How can you build a system that process swaps between these two modes?

You don't switch between the two non-existent modes. You serialize on 
hardware accesses.

If the 2D graphics driver uses the accelerator, it takes the accelerator 
lock.

If the 2D graphics just uses the framebufferm it takes the framebuffer 
lock.

If there are hardware dependencies on the accelerator and the framebuffer, 
then the two lock pointers point to the same lock.

The locks themselves need to have a release mechanism, of course, the same 
way we already have stateful locks for X interactions where something 
needs to be done when a lock is given to another person. So the locks 
can't just be regular spinlocks or semaphores, they need to be slightly 
more complicated things where each user has an ID cookie.

This way:
 - the hardware-independent part really _is_ hardware-independent. It 
   literally hass _no_ clue what the different users do.
 - the hardware-independent part makes no policy at all. It just has a set 
   of lock pointers, and a generic locking mechanism which basically looks 
   something like

/*
 * Generic release lock
 */
typedef struct release_lock_struct {
struct semaphore sem;
void *cookie;
void (*releasefn)(release_lock_t *, void *);
} release_lock_t;

/*
 * get a lock. Return 1 if the resource had been owned by
 * somebody else in the meantime. We may need to re-initialize
 * hw state if so..
 *
 * Otherwise, just return 0, to let the caller know that it
 * didn't have anybody else screw with its state in between.
 *
 * (The caller could just keep this information by tracking
 * it's releasefn() calls, of course, since if another
 * locker came in, we would have asked it to release the
 * info. The return value is just a convenient interface).
 */
int get_lock(release_lock_t *lock, void *cookie,
 void (*releasefn)(release_lock_t *, void *))
{
down(lock-sem);

/* Same old owner? Coolio.. */
if (lock-cookie == cookie)
return 0;

/* Tell the previous lock owner to clean up */
lock-releasefn(lock, lock-cookie);

/* We now have a new owner */
lock-releasefn = releasefn;
lock-cookie = cookie;
return 1;
}


/*
 * Release the lock
 */
void put_lock(release_lock_t *lock, void *cookie)
{
/*
 * People screw up all the time. Only let the owner
 * release the lock. Complain loudly when somebody gets
 * mixed up.
 */
BUG_ON(lock-cookie != cookie);
up(lock-sem);
}

Notice? There's _zero_ hardware knowledge here. This can work for 
video-cards, but it can work for anything else too.

And yes, maybe you need more complicated locks than the above, but hey,
they probably don't need to be _much_ more complicated.

So how would you use the above? Just combine it with the graphics 
subsystem specific list of locks, which you attach to each device some 
way (so that each driver that _shares_ the hardware device can find it):

struct gfx_lock_ptr {
release_lock_t *accelerator;
release_lock_t *framebuffer;
release_lock_t *memorymanager;
..
};

struct gfx_data {
struct gfx_lock_ptr ptr;
release_lock_t locks[MAXLOCKS];
};

and then the code just does

 - hw-independent gfx code initializes the locks to defaults:

gfx_data-ptr.accelerator = gfx_data-locks + 0;
gfx_data-ptr.framebuffer = gfx_data-locks + 1;
gfx_data-ptr.memorymanager = gfx_data-locks + 2;
...
dev-gfx_data = gfx_data;

 - the _low_level_ drivers at their initialization will know what hardware 
   structures are shared, so they do (when _they_ init, and notice how 
   this doesn't actually matter in which order they loaded - they can both
   do this thing without knowing about each other):

/* This chip can't access the frame buffer when the accelerator is busy */
gfx_data-ptr.accelerator = gfx_data-ptr.framebuffer;

 - then the low-level drivers just do

/* execute command */
if (get_lock(gfx_data-ptr.accelerator, mydev, myrelease)) {
/*
 * Somebody else used the accelerator earlier, need to
 * re-load my cached pointers:
 */
   

Re: radeon-pre-2

2004-09-11 Thread Linus Torvalds


On Sat, 11 Sep 2004, Alan Cox wrote:

 On Sad, 2004-09-11 at 18:02, Linus Torvalds wrote:
  My personal preference for this whole mess has always been the silly 
  driver that isn't even hardware-specific, and really does _nothing_ on 
  its own. This one would be the only thing that actually reserves the IO 
  regions and owns the card from the respect of the resources. EVERYBODY 
  else would be a stealth driver. Not just DRM.
 
 How do you plan to deal with hot plug. At the point the silly driver
 (in my case this is the vga class driver) claims the PCI device and
 propogates things onwards hotplug seems to work.

Since the users would have to use the locking methods, they'd all be
dependent on it, so it would either be compiled in, or modprobe would 
just automagically load it.

And yes, it would just attach directly to any VGA class device on PCI (and 
have some other way to detect any other kind of graphics devices).

If we make it small, simple and generic enough (serialization isn't really
a gfx-only thing), we could frigging attach it to _every_ device in the
system, at which point it doesn't even need to attach any more. It would 
just be there. That obviously requires that it really only do a _very_ 
generic set of minimal locks.

 The second fun bit is that Jon is right that in some cases the fb driver
 for a card may want to use the DRI layer if loaded - but only some and
 only in a controlled manner. Sometimes the drivers want to co-operate
 sometimes they just want to avoid beating each other senseless.

They can put whatever data they want in the shared data area (called
gfx_data in my previous pseudo-code-posting). They'd need to know about
each other if they want to cooperate, of course. The silly driver never 
uses the data area itself, really. It just contains a few predefined 
things, like the lock pointers, but the silly driver doesn't really even 
access them, it's up to the low-level drivers to pass in the proper lock 
to the silly driver.

 Now, the reason why these things are _pointers_ to locks rather than 
 locks themselves is that maybe some hardware ends up sharing resources 
 between these things (maybe modeswitch needs the accelerator to 
 
 How do you deal with making sure the lock doesn't get freed and knowing
 who needs it still ? I ended up with locks in the shared area itself
 because I couldn't figure that one out ?

That's exactly what I would do. See the example I sent out.

 Linus let me run what I have now past you for comment (the code isnt
 working yet since I've been having a fight with the class code)

Please realize that I have not a _frigging_ clue what I'm talking about. 
I'm just listening in to the flame war, and throwing out suggestions in 
the middle to try to get the discussion going _forward_. I hate seeing 
hundreds of emails in my mailbox that don't seem to actually make any 
_progress_.

So my comments are likely worthless.

Linus


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Vladimir Dergachev

On Sat, 11 Sep 2004, Alan Cox wrote:
On Sad, 2004-09-11 at 18:10, Vladimir Dergachev wrote:
This is a good point - if we don't need DMA or 3d acceleration we can
reduce memory footprint. This would seem that current DRM driver would
need to be dependent on whatever driver contains the mode setting code.
What do you think ?
Jon wants to get mode setting into a seperate piece of functionality -
preferably in user space for many cards. I'd dearly love to see hotplug
handing all but some emergency pre-computed mode settings.
I think there is a misunderstanding.
My view was that PLL setting (and setting of a fixed mode) would be done 
in DRM driver. This way it would be able to restore previous settings 
after a lockup or respond to FB request to change modes.

However the decision of which mode to set, as well as where the 
framebuffer is located is done in user-space. (So that subtleties of
layout of offscreen memory are not in the kernel).

Jon - did I understand you correctly ?
best
  Vladimir Dergachev
---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 10:02:57 -0700 (PDT), Linus Torvalds
[EMAIL PROTECTED] wrote:
 Jon, you want to get to that Final step is to integrate the chip specific
 code from DRM and fbdev. Alan doesn't even want to get there. I think
 Alan just wants some simple infrastructure to let everybody play together.

This is the core problem. I want to get to a point where there is a
single, integrated piece of code controlling the complex functions of
the 3D hardware.

I want to get away from the model of I just got control of the chip,
who knows what the state of it is, I better reset everything. I also
want to get away from now I want to use this register, i need to
inspect every over driver and piece of user space code to make sure
they don't stomp it. Or I didn't even know your code existed, sorry
about stomping that critical register and causing 100 bug reports. Or
why don't we just split the VRAM in half so we don't have to share
memory management.  Or suspend code that restores 2D mode and ignores
3D.

The problem with everyone playing together in separate code bases
assumes that everyone knows what everyone else is doing and that's
never the case. A single card specific code base collects everything
to a single place where it can be monitored.

A good example of this is switching the GPU between 2D and 3D mode on
every process swap.

In general the current X design only has a single 3D client. With a
composited display and pbuffer background drawing we are going to have
one 3D client for every top level window. This is going to require
complicated code to smoothly multitask the 3D drawing streams. The
last thing we need is something in the middle of this switching the
chip in and out of 2D mode.

-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Michel Dänzer
On Sat, 2004-09-11 at 13:13 -0400, Jon Smirl wrote:
 Coprocessor 3D mode is deeply pipelined
 2D mode is immediate

Have you looked at the radeon X driver acceleration code in the last
couple of years?


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


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 13:49:34 -0400 (EDT), Vladimir Dergachev
[EMAIL PROTECTED] wrote:
 On Sat, 11 Sep 2004, Alan Cox wrote:
 
  On Sad, 2004-09-11 at 18:10, Vladimir Dergachev wrote:
  This is a good point - if we don't need DMA or 3d acceleration we can
  reduce memory footprint. This would seem that current DRM driver would
  need to be dependent on whatever driver contains the mode setting code.
 
  What do you think ?
 
  Jon wants to get mode setting into a seperate piece of functionality -
  preferably in user space for many cards. I'd dearly love to see hotplug
  handing all but some emergency pre-computed mode settings.
 
 I think there is a misunderstanding.
 
 My view was that PLL setting (and setting of a fixed mode) would be done
 in DRM driver. This way it would be able to restore previous settings
 after a lockup or respond to FB request to change modes.
 
 However the decision of which mode to set, as well as where the
 framebuffer is located is done in user-space. (So that subtleties of
 layout of offscreen memory are not in the kernel).
 
 Jon - did I understand you correctly ?

All register writes would occur in the driver. There is nothing
stopping the code that computes those register values from running in
user space.

A example mode setting IO would take:
  display buffer offset
  width, height, stride, etc - for fbcon to use
  register values to set the mode

Mode setting needs to be serialized. It may be better to do the
serialization before the hotplug event, in that case the mode setting
IOCTL would be implicitly serialized and not need a separate lock.

-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


R300 progress/help wanted

2004-09-11 Thread Vladimir Dergachev
Hi all,
   I have made some moderate progress in getting R300 3d to play nicely,
you can see the results at
   http://volodya-project.sf.net/R300.php
   So people with Radeon R300 or later cards that want to experiment with
their powerful GPUs can try out the code and mess with it at the level 
fairly close to hardware, but not so close as to require a register manual
(which we don't have).

   In particular two tools are now available:
glxtest - allows to exercise any 3d driver and dump contents
  of memory maps produced by 3d drawing commands.
  There is a small utility to pretty print
  Radeon command stream and autogenerate C code
  based on it.
drmtest - paints a triangle and a square using RV350 GPU,
   In order to better understand what is going on it helps to go to
   Microsoft site and read up on DirectX 9.0 - these cards were meant
   to work with it and thus many formats (and calls) are accepted as is.
   In essense, description of DirectX 9.0 programmable shaders is a
   high-level description of the hardware - which is not that high, more
   like knee-level.
   Also you might find examining the sources (or, at least, register
   headers) of Radeon drivers (Xorg, DRI, DRM, etc) useful.
 have fun !
  Vladimir Dergachev
---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Vladimir Dergachev

On Sat, 11 Sep 2004, Jon Smirl wrote:
My view was that PLL setting (and setting of a fixed mode) would be done
in DRM driver. This way it would be able to restore previous settings
after a lockup or respond to FB request to change modes.
However the decision of which mode to set, as well as where the
framebuffer is located is done in user-space. (So that subtleties of
layout of offscreen memory are not in the kernel).
Jon - did I understand you correctly ?
All register writes would occur in the driver. There is nothing
stopping the code that computes those register values from running in
user space.
A example mode setting IO would take:
 display buffer offset
 width, height, stride, etc - for fbcon to use
 register values to set the mode
Mode setting needs to be serialized. It may be better to do the
serialization before the hotplug event, in that case the mode setting
IOCTL would be implicitly serialized and not need a separate lock.
Just to clear up things - do you plan to retain the knowledge of last mode 
set in the DRM driver ?

   best
 Vladimir Dergachev

--
Jon Smirl
[EMAIL PROTECTED]

---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 14:05:54 -0400 (EDT), Vladimir Dergachev
[EMAIL PROTECTED] wrote:
  All register writes would occur in the driver. There is nothing
  stopping the code that computes those register values from running in
  user space.
 
  A example mode setting IO would take:
   display buffer offset
   width, height, stride, etc - for fbcon to use
   register values to set the mode
 
  Mode setting needs to be serialized. It may be better to do the
  serialization before the hotplug event, in that case the mode setting
  IOCTL would be implicitly serialized and not need a separate lock.
 
 Just to clear up things - do you plan to retain the knowledge of last mode
 set in the DRM driver ?

Yes, you have to do that for fbcon and suspend/restore to work.

-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Linus Torvalds


On Sat, 11 Sep 2004, Jon Smirl wrote:

 On Sat, 11 Sep 2004 10:02:57 -0700 (PDT), Linus Torvalds
 [EMAIL PROTECTED] wrote:
  Jon, you want to get to that Final step is to integrate the chip specific
  code from DRM and fbdev. Alan doesn't even want to get there. I think
  Alan just wants some simple infrastructure to let everybody play together.
 
 This is the core problem. I want to get to a point where there is a
 single, integrated piece of code controlling the complex functions of
 the 3D hardware.

I think you can get there without having to merge the two.

How about just accepting the fact that there might be other people 
accessing your hardware, and then trying to make it _rare_?

 I want to get away from the model of I just got control of the chip,
 who knows what the state of it is, I better reset everything. I also
 want to get away from now I want to use this register, i need to
 inspect every over driver and piece of user space code to make sure
 they don't stomp it. Or I didn't even know your code existed, sorry
 about stomping that critical register and causing 100 bug reports. Or
 why don't we just split the VRAM in half so we don't have to share
 memory management.  Or suspend code that restores 2D mode and ignores
 3D.

Well, what _I_ want to get away from is a I'm the only game in town 
mentality. 

I want people to be able to play with other things, without having one 
driver that has to know about it all. I also want to avoid flag-days, ie 
I'd like to be able to have a gradual transition.

And I don't think your model really has the option for a gradual 
transition, and other people doing their thing. 

So I'd much rather see the hey, somebody else might have stolen my 
hardware, and now I need to re-initialize as the _basic_ model. That just 
allows others to do their own thing, and play well together. More 
importantly, it allows the existing status quo, which means that if we 
take that as the basic approach, we _never_ have to make a complete flag 
day when we switch over to _this_ driver does everything. See?

HOWEVER, I do realize that that is horribly inefficient as a common thing
to happen, which is why I have the cunning plan (always steal good ideas 
from others and call them your cunning plans) to have the locking that 
allows for caching over locks. That means that _if_ you get to the point 
where your driver does everything, you'll never really have to worry about 
performance, because you'll never see the bad cases.

Or maybe you'll only see the bad cases when the kernel oopses, and decides 
that it _has_ to write to the screen and screw your model. See what I'm 
saying? Having a model that allows for that is a _good_ thing.

And you can do it. Basically, if you build on top of the silly driver  
locks, your DRM layer would have _one_ cookie (per hw device, of course)
that it ever uses, and it would point to your basic device descriptor. 
You'd then do the X cookies within that decide descriptor, ie they'd never 
change the silly driver cookie, and thus you'd never see a conflict. 
You'd take care of the existing DRM locking methods yourself, you wouldn't 
try to shoe-horn them into the silly driver locks.

So what I'm saying is that you _can_ get to your ideal world, without 
taking the option away from others to decide that they prefer having two 
(or three, or fifteen) drivers all accessing the same hardware. For 
example, the single-driver approach might be good for some hadrware. It 
might not be so good for others (think vendor drivers etc).

 A good example of this is switching the GPU between 2D and 3D mode on
 every process swap.
 
 In general the current X design only has a single 3D client. With a
 composited display and pbuffer background drawing we are going to have
 one 3D client for every top level window.

But if you make your DRM thing be the master of these different 3D
client contexts, then you _can_ handle that without ever having to lose
your hardware lock. See what I'm saying? You do two-level locking:

 - the hardware level is the silly driver one. It's the one that allows 
   multiple kinds of subsystems to play together, be it DRM of fbcon. When 
   you get a release event for this one, you basically have to serialize
   _everything_, because this level of release means that you literally
   don't know what happened (with the exception of mode switching, I 
   really think that one has to be a totally separate class of events).

 - you have your _own_ DRM level context lock, which is the one the 3D 
   clients from X actually interface to. That one also has to reset _some_ 
   client state, of course, when you switch between clients, but now it's
   only state that _you_ know about.

You can have your cake and eat it too. I don't think these things are 
incompatible.

Linus


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an 

Re: radeon-pre-2

2004-09-11 Thread Vladimir Dergachev

On Sat, 11 Sep 2004, Jon Smirl wrote:
On Sat, 11 Sep 2004 10:02:57 -0700 (PDT), Linus Torvalds
[EMAIL PROTECTED] wrote:
Jon, you want to get to that Final step is to integrate the chip specific
code from DRM and fbdev. Alan doesn't even want to get there. I think
Alan just wants some simple infrastructure to let everybody play together.
This is the core problem. I want to get to a point where there is a
single, integrated piece of code controlling the complex functions of
the 3D hardware.
Jon,
  Alan did have a valid point about the current size of DRM driver.
  Would it not be possible to separate parts that assist 3d acceleration -
like DRM ioctls to submit textures etc and the code to validate the 
command stream submitted from userspace ? This should cut down the size
considerably.

  best
 Vladimir Dergachev
I want to get away from the model of I just got control of the chip,
who knows what the state of it is, I better reset everything. I also
want to get away from now I want to use this register, i need to
inspect every over driver and piece of user space code to make sure
they don't stomp it. Or I didn't even know your code existed, sorry
about stomping that critical register and causing 100 bug reports. Or
why don't we just split the VRAM in half so we don't have to share
memory management.  Or suspend code that restores 2D mode and ignores
3D.
The problem with everyone playing together in separate code bases
assumes that everyone knows what everyone else is doing and that's
never the case. A single card specific code base collects everything
to a single place where it can be monitored.
A good example of this is switching the GPU between 2D and 3D mode on
every process swap.
In general the current X design only has a single 3D client. With a
composited display and pbuffer background drawing we are going to have
one 3D client for every top level window. This is going to require
complicated code to smoothly multitask the 3D drawing streams. The
last thing we need is something in the middle of this switching the
chip in and out of 2D mode.
--
Jon Smirl
[EMAIL PROTECTED]
---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM.
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Eric Anholt
On Sat, 2004-09-11 at 10:13, Jon Smirl wrote:
 Coprocessor 3D mode is deeply pipelined
 2D mode is immediate
 
 How can you build a system that process swaps between these two modes?
 The 3D pipeline has to be emptied before you can enter 2D immediate
 mode.
 
 My solution is to leave the coprocessor always running and convert
 everything to use the DMA based commands.

Now, I'll admit that I've only really worked on three sets of hardware
(SiS 300-series, Radeon, Rage 128), but they don't have any 3d mode
and 2d mode concept.  On SiS both 3d and 2d go through a FIFO, so for
switching between clients you just have to check how much free space
there is in the fifo.  For Radeon and Rage 128 you can send rendering
commands either through the CP/CCE (DMA) or an MMIO FIFO.  You can do 2d
and 3d commands both ways.  In fact, you can send DMA commands through
an MMIO aperture as well.  But there is nothing immediate about 2d. 
It goes through the FIFO or the CP just like 3d rendering.  If I'm not
mistaken about other hardware I've poked at (3dfx, mach64), they don't
have any 2d mode and 3d mode either.

To summarize, there is no 2d mode and 3d mode.  Please stop
referring to it.  If you were actually trying to talk about
synchronization for MMIO vs DMA command submission (which is and would
be a very rare case anyway), well, I don't see why that can't be done
using Linus' example, which seemed like what Alan Cox has been driving
toward for a long time.

If you want to avoid idling to switch from DMA to MMIO in that rare
case, then have whatever client in question write all commands into a
DMA buffer, then dispatch it through either the DRM or decoding into
MMIO writes.  Xati is an example of doing just that, and it's not that
hard.   Or, you could go the route that the XFree86 X Server has and
just have two sets of your acceleration functions, generated through
macros, which write to MMIO or write DMA buffers depending on which has
been set up.

But I see nothing in this issue that requires all the drivers live in
one module together, which would only make life a little more convenient
for some developers, at the expense of all the users who don't want all
of those drivers necessarily.

-- 
Eric Anholt[EMAIL PROTECTED]  
http://people.freebsd.org/~anholt/ [EMAIL PROTECTED]




---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
Alan, if you will commit Redhat to implementing all of the features
referenced in this message:
http://lkml.org/lkml/2004/8/2/111
then I'll back off and go work on the X server.

Use whatever mechanism you want, but implement all of the features. 

There are two main goals:

#1) Get mesa-solo running with superbuffers, this means memory
allocation and mode setting have to be fixed. This will be the base
platform for X on GL.

#2) Support independent users logged into each head. One using the
console with fbdev and the other X and a 3D game.

-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Christoph Hellwig
On Sat, Sep 11, 2004 at 05:02:36PM -0400, Jon Smirl wrote:
 Alan, if you will commit Redhat to implementing all of the features
 referenced in this message:

You definitly start sounding like Hans ;-)



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Hamie
Alan Cox wrote:
On Sad, 2004-09-11 at 17:46, Jon Smirl wrote:
 

User 1's game queues up 20ms of 3D drawing commands.
Process swap to user 2.  -quiesce() is going to take 20ms. 
User 2's timeslice expires and we go back to user 1.
User 1 queues up another 20ms.

User 2's editor is never going to function.
   

If you implement it wrongly sure. If you implemented it right then
this occurs.
User 1 queues 20 ms of 3D commands
User 1 is pre-empted
User 2 wants the 2D engine
User 2 beings wait for 2D
User 2 sleeps
User 1 wakes
User 1 beings wait for 3D but discovers a claim is in progress
User 1 sleeps
User 2 wakes, runs commands
If you have DRI loaded then as you rightly say the obvious desired
outcome is that the fb engine either turns acceleration off or switches
to using the DRI layer. 

But this is a pretty obscure case, and one we can't even begin to
support yet anyway.
 

What about if you want to use fb when in text mode (Because you get 
200x75 on a 1600x1200 screen) AND run DRI because the rest of the time 
you want to run fast 3D. Plus you want to be able to CTRL-ALT-F1/F2/F7 
back  forth between X  fb... (i.e. how I currently use it but with 
unaccelerated x.org radeon drivers, becaus ethe 3D ones WON'T play nicely).

Currently this fails to work... Presumably because the fb  DRI code 
(fglrx here BTW) don't talk to each other  so the display gets garbled 
if you're lucky... Lockup if you're not.

Although I didn't like (Understand?) Jon's suggestion at first, I have 
to admit, that his scheme would let this work... because the low level 
driver would know what mode was in place, and you'd call the low-level 
driver to change between 3D  fb mode... 

Although Linus' suggestion works for memory allocation... I don't 
believe it addresses two competing drivers wanting to play with the same 
screen... Even when it's serialised like that. And unfortunately 
although Alan's probably works for DRI  fb on separate heads, how does 
it guarantee that the chipset is all setup the same way for each process 
on different heads... (When they have to share some of the hardware). Or 
is that necessary?


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 22:06:14 +0100, Christoph Hellwig [EMAIL PROTECTED] wrote:
 On Sat, Sep 11, 2004 at 05:02:36PM -0400, Jon Smirl wrote:
  Alan, if you will commit Redhat to implementing all of the features
  referenced in this message:
 
 You definitly start sounding like Hans ;-)

Getting the Linux display subsystem to a point where it can compete
with Longhorn/Mac is a very complicated problem. It is going to take
several years of work and the cooperation of a lot of people. It's a
pyramid problem with lot's of layers.

Of course Linux can choose not to build a display system based on 3D
hardware. But I've seen the
current Longhorn/Mac implementations and they are way, way better than
X. If Linux ignores 3D mode it is going to be very visible on the
desktop.

I've tried to follow the Linux model for proposing the changes. The
plan has been circulated to all relevant lists: fbdev, dri, xorg, lkml
for over six months. Three sessions at OLS talked about various parts
of the plan. Nothing has been kept secret, there must be 5,000
messages in the archive on this subject.

But since I've written most of the code so far I get to pick the
details of the implementation. If Alan would instead like to pick the
details I've offered to withdraw if he'll write the code needed to
implement the major points of the plan. Of course if Redhat wants to
send me a check for a couple of hundred thousand dollars I'll write
whatever they want, but they haven't done that.

-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 13:29:33 -0700, Eric Anholt [EMAIL PROTECTED] wrote:
 To summarize, there is no 2d mode and 3d mode.  Please stop
 referring to it.  If you were actually trying to talk about
 synchronization for MMIO vs DMA command submission (which is and would

You are right on all of this, I'm just using 2D and 3D as shorthand
for GPU coprocessor/DMA vs CPU/registers. Don't take this as literally
meaning 2D vs 3D.

-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: UT2004 freeze when shooting with Shock Rifle

2004-09-11 Thread Roland Scheidegger
Marcello Maggioni wrote:
My card is a 3D prophet Radeon 8500LE with R200 ,My drivers are the
lastest taken yesterday from CVS.
I've downloaded the demo , and the game seemed to run fine  at
least until I tried to shoot with a Shock Rifle .
Just after the laser beam started to run from my rifle to the target
the system simply freezed .
No one has ideas or info about this?
I think some time ago it was suggested to create a small, empty room and 
fire the shock rifle in that (and log the commands submitted to the gpu) 
to see what's going on. I'll might just do that if I find some time, 
though the fact that the lockup doesn't happen on anything else than 
real R200 and not the derivative chips doesn't really help (and it 
does not only not lockup on rv250, but actually looks correct too).

Roland
---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: UT2004 freeze when shooting with Shock Rifle

2004-09-11 Thread Marcello Maggioni
On Sun, 12 Sep 2004 00:34:01 +0200, Roland Scheidegger
[EMAIL PROTECTED] wrote:
 
 
 Marcello Maggioni wrote:
 My card is a 3D prophet Radeon 8500LE with R200 ,My drivers are the
 lastest taken yesterday from CVS.
 
 I've downloaded the demo , and the game seemed to run fine  at
 least until I tried to shoot with a Shock Rifle .
 
 Just after the laser beam started to run from my rifle to the target
 the system simply freezed .
  No one has ideas or info about this?
 
 I think some time ago it was suggested to create a small, empty room and
 fire the shock rifle in that (and log the commands submitted to the gpu)
 to see what's going on. I'll might just do that if I find some time,
 though the fact that the lockup doesn't happen on anything else than
 real R200 and not the derivative chips doesn't really help (and it
 does not only not lockup on rv250, but actually looks correct too).
 
 Roland
 

Hi . I've heard of this . I can do those test if you can tell me how
to catch the commands submitted to the GPU into a file or in some
other ways .

Thanks for your work

Marcello


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: New version of dyn-minor.patch

2004-09-11 Thread Jon Smirl
On Sat, 11 Sep 2004 11:54:49 -0400, Jon Smirl [EMAIL PROTECTED] wrote:
 On Sat, 11 Sep 2004 13:53:41 +0100, Alan Cox [EMAIL PROTECTED] wrote:
  On Sad, 2004-09-11 at 00:36, Jon Smirl wrote:
   inter_module can't be removed until we move to the drm_core design
   with personality modules
 
  Of course it can go. You just fix up the DRI to start using
  try_module_get(). Actually when you have the video class driver layer it
  all comes for free anyway.
 
 I haven't used try_module_get(); not sure what the BSD impacts are. The
 inter_module stuff has been in DRM since it was originally written. I
 just moved the exisiting code around a little.

I just looked at try_module_get(), it only works if you know what
module you are trying to find. This would work for the drm_core case
where each personality is trying to find the core. I don't see how it
helps the current case where the personalities need to find each other
and they can have arbitrary module names.

We know how to remove the DRM() macros and inter_module stuff by
switching to a drm_core library model. DaveA has already coded up a
prototype. We aren't switching because people are objecting to the
change. I'm not sure what the status of the objections is, Dave knows
more about this. The objection is something along the lines of what if
I have drm_core linked into my kernel and I want to update to drivers
that use a different drm_core.

-- 
Jon Smirl
[EMAIL PROTECTED]


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
 What about if you want to use fb when in text mode (Because you get 
 200x75 on a 1600x1200 screen) AND run DRI because the rest of the time 
 you want to run fast 3D. Plus you want to be able to CTRL-ALT-F1/F2/F7 
 back  forth between X  fb... (i.e. how I currently use it but with 
 unaccelerated x.org radeon drivers, becaus ethe 3D ones WON'T play nicely).

Thats actually the easy case. We don't care if it takes another 30th of
a second to flip console. The hard one Jon was trying to point out is
a dual head card. Head 0 has someone running bzflag, head 1 has someone
editing an open office document. You have one accelerator set for both
heads. At that point you do care about the switch over, but the drivers
can co-operate for it. So it would always work, but it would work better
with friendly drivers when there is a need to do so.

 Currently this fails to work... Presumably because the fb  DRI code 
 (fglrx here BTW) don't talk to each other  so the display gets garbled 
 if you're lucky... Lockup if you're not.

fglrx stomps blindly on everything including your AGP. Not much we can
do about it.

 although Alan's probably works for DRI  fb on separate heads, how does 
 it guarantee that the chipset is all setup the same way for each process 
 on different heads... (When they have to share some of the hardware). Or 
 is that necessary?

You assume someone else crapped on the hardware. That is how DRI works
for example. You have multiple rendering clients each of which when it
takes the lock finds out if it was the last user (thats one thing Linus
sketch lacked but is easy to add).

My code ends up looking like

lock
if(someone_else_used_it)
restore_my_state()
blah 
unlock



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Alan Cox
On Sad, 2004-09-11 at 22:37, Jon Smirl wrote:
 But since I've written most of the code so far I get to pick the
 details of the implementation. 

Umm thats what happened to ruby and thats what happened to KGI.

 If Alan would instead like to pick the
 details I've offered to withdraw if he'll write the code needed to
 implement the major points of the plan.

I'll try and debug the vga generic (Linus stupid driver as he calls
it). That'll provide the framework to plug the other bits in. That needs
doing anyway to get hotplugging and all the other sane stuff right (oh
and probably sysfs but someone else can do that).

I was using much simpler lock ideas than Linus but I'll have a poke at
that too, something more like a dri lock that knows who had it last.

Alan



---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Linus Torvalds


On Sat, 11 Sep 2004, Jon Smirl wrote:

 On Sat, 11 Sep 2004 11:13:17 -0700 (PDT), Linus Torvalds
 [EMAIL PROTECTED] wrote:
  So I'd much rather see the hey, somebody else might have stolen my
  hardware, and now I need to re-initialize as the _basic_ model. That just
  allows others to do their own thing, and play well together. More
  importantly, it allows the existing status quo, which means that if we
  take that as the basic approach, we _never_ have to make a complete flag
  day when we switch over to _this_ driver does everything. See?
 
 We already have a mechanism for this: suspend/resume.

Jon, you're not making sense any more.

This discussion is just ridiculous, and I don't think it's worth cc'ing me 
if people can't try to work together, since I'm sadly not going to have 
time to actually implement any of this myself.

If you are claiming that we should suspend/resume the whole chip just 
because two different programs want to access it, you're just crazy. 

We clearly _do_ have different subsystems already working together 
accessign the same chip, and they are _not_ doing stupid things like you 
are suggesting. They _work_. Today. No suspend/resume involved.

That interaction has some troubles, and we're trying to _fix_ them. We're 
not trying to make idiotic statments.

Yours was a singularly idiotic statment.

Linus


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: radeon-pre-2

2004-09-11 Thread Mike Mestnik

--- Alan Cox [EMAIL PROTECTED] wrote:

 On Sad, 2004-09-11 at 16:53, Vladimir Dergachev wrote:
   Lastly, I am not saying you have to put all the code in the same
 file.
  All I am saying we can mandate that all Radeon HW specific code is
 linked
  in one module - and this would make things easier for developers.
 
 And if I want dri but not frame buffer, or vice versa, as the majority
 of current users do 
 
Hopefully any change to the kernel will allow building FB without DRM. 
This is a trivial seperation of code, that I might add has allready been
done, a good point that we should keep it this way.  Yes, there will be
some new memory mngmt code, posibly optonal as well, that is needed for
multi-headed setups.

   I would agree that this can be coded as well - but why bother ?
 Or is 
  it done and working already ?
 
 Splitting the modules up is the easy bit. The API is the hard bit so you
 might as well formalize it. It also gives the users the ability to not
 load huge radeon modules.
 
 
 
 ---
 This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
 Project Admins to receive an Apple iPod Mini FREE for your judgement on
 who ports your project to Linux PPC the best. Sponsored by IBM. 
 Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
 --
 ___
 Dri-devel mailing list
 [EMAIL PROTECTED]
 https://lists.sourceforge.net/lists/listinfo/dri-devel
 




___
Do you Yahoo!?
Express yourself with Y! Messenger! Free. Download now. 
http://messenger.yahoo.com


---
This SF.Net email is sponsored by: YOU BE THE JUDGE. Be one of 170
Project Admins to receive an Apple iPod Mini FREE for your judgement on
who ports your project to Linux PPC the best. Sponsored by IBM. 
Deadline: Sept. 13. Go here: http://sf.net/ppc_contest.php
--
___
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel


Re: New version of dyn-minor.patch

2004-09-11 Thread Simon 'corecode' Schubert
On 12.09.2004, at 01:58, Jon Smirl wrote:
We know how to remove the DRM() macros and inter_module stuff by
switching to a drm_core library model. DaveA has already coded up a
prototype. We aren't switching because people are objecting to the
change. I'm not sure what the status of the objections is, Dave knows
more about this. The objection is something along the lines of what if
I have drm_core linked into my kernel and I want to update to drivers
that use a different drm_core.
Is there a way to enforce both drm_core and personality (linked 
together, not exporting symbols maybe) to be in core or none (which 
would mean both being modules and thus no problem)?

cheers
  simon
--
/\
\ /
 \ ASCII Ribbon Campaign
/ \  Against HTML Mail and News


PGP.sig
Description: This is a digitally signed message part