On Sat, Mar 01, 2003 at 03:11:06PM -0800, Linus Torvalds wrote:
| 
|                                           ... you have to understand a 
| wide range of different issues (you can't just understand hardware, you 
| also have to have some understanding of OpenGL).
| ...
| Look at the size of a 3D driver today, and _especially_ look at how it 
| actually needs at least three totally separate parts - the generic OpenGL 
| part, the card-specific part, and the kernel part. None of which are in 
| any way independent from each other (the generic OpenGL part should be, 
| but as can be seen from what both Nvidia and ATI have done, it ends up 
| being tied into the low-level driver _anyway_ because of issues like 
| feature reporting).

This is largely because there's a *much* greater emphasis on performance
in the 3D world than in the 2D world.  There's too much competitive
advantage to be gained by exposing hardware peculiarities and by
avoiding certain kinds of abstraction.

For example, it's usually too expensive (in terms of call overhead and
data transfer/reformatting) to use layering as technique for driver
implementation.  3D systems tend to have "vertical" modules rather than
layers -- selected execution paths are mapped as closely to the hardware
as possible.  This means that there's a lot of device-dependent code
starting right underneath the API, and consequently less code shared
between drivers.

Graphics programmability eliminates layering altogether and moves
application logic very close to the hardware, at least until the Wheel
of Reincarnation spins again.  :-)

| A simpler, more direct, infrastructure to the low-level driver might help. 
| I suspect that is why MS started doing D3D in the first place...

There were two key factors that led to D3D:  A lack of technical
understanding of 3D (leading some people at MS to claim that OpenGL
could never be used for games), and a business model that required
monopoly control of the API (in order to force the hardware to be
commoditized).

As Microsoft learned what it was doing wrong technically, D3D rapidly
appropriated features and design concepts from OpenGL.  Around DX7 it
reached parity on the things that were necessary for gaming, and started
to diverge rather than converge.

D3D adopted programmability more quickly than OpenGL.  There were many
reasons for this, but a couple of interesting ones are (1) once D3D no
longer had a target to copy, it was less clear which special-purpose
functionality should be put into the API, so general-purpose
programmability offered a way forward; and (2) Microsoft's business is
based on product differentiation in software rather than in hardware.

Once you get rid of the legacy stuff in OpenGL, drivers are pretty much
the same level of complexity for OpenGL as for D3D.  Which is one reason
why several groups are able to use OpenGL subsets for embedded apps.

Allen


-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Welcome to geek heaven.
http://thinkgeek.com/sf
_______________________________________________
Dri-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/dri-devel

Reply via email to