linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Jeff Garzik <jgarzik@pobox.com>
To: Timothy Miller <miller@techsource.com>
Cc: Alan Cox <alan@lxorguk.ukuu.org.uk>,
	Jon Smirl <jonsmirl@gmail.com>,
	Linux Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: HARDWARE: Open-Source-Friendly Graphics Cards -- Viable?
Date: Fri, 22 Oct 2004 14:47:47 -0400	[thread overview]
Message-ID: <417955D3.5020206@pobox.com> (raw)
In-Reply-To: <41793C94.3050909@techsource.com>

I've thought about this a bit already, and had some chip designers 
correct my thoughts on a few things.  Here are my comments, in no 
particular order:


1) I agree it probably wouldn't be cost effective without selling to 
OEMs in volume

2) AGP/PCI-Express is practically required, if you want OEM sales, IMO

3) Your main bottlenecks are video RAM bandwidth to/from the GPU, 
PCI/AGP bus bandwidth, and system RAM bandwidth.

4) I am a bit dubious that FPGA will perform at a useful clock speed.

5) Key question:  generic GPU or not?

 From what I've read in ARS Technica and other tech sites, ATI and 
NVIDIA chips are moving towards a more generic, programmable CPU model. 
  Presumably on current (or future?) chips, you will push bytecoded 
shaders direct to your video card.  Essentially some future GPUs will be 
highly specialized, yet generic, CPUs with their own ISA.

On the other hand, if you only support a small number of graphics 
operations, it may be easier for the first rev of your chip to do all 
the 2D operations in silicon.


6) My preference:  generic OpenGL programming interface.

I feel my own personal design for video hardware interface is better 
than ATI or NVIDIA:  present to the OS driver a generic, open, public 
OpenGL interface, that very rarely (if ever) changes.  This must be a 
simple interface:  only a few key operations, such as "transfer {display 
list | shader | texture | ...} data to card" or "execute display list" 
should be presented to the OS driver.

The interface should have a standard "fall back to software rendering" 
response message, for minimalist hardware.

If your hardware presents a standard GL interface to OS driver,

a) there is a high potential industry standardization, if it's done right

b) reduce complexity in the OS driver.

c) stop the "driver rat race".  After the OS driver is initially 
written, the only maintenance costs are keeping up to date with the 
latest OpenGL standards.  You have very low cross-hardware support 
costs, because all the hardware presents the same interface to the OS 
driver.

d) makes it possible to add value to your hardware without changing the 
OS driver

e) makes it possible for multiple video chip vendors to compete, without 
worrying about OS driver issues, or Linux support issues.

f) this isn't a terribly new idea :)  But it's a good one, IMHO.

g) even on minimalist 2D-only hardware, you can implement this interface


7) two-chip solution

One thing I have pondered, with regards to #6:  what about implementing 
a multi-core solution?  One core to handle the graphics operations and 
control the video, and one core a much more generic microcontroller that 
runs ucLinux, and handles the GL "slow path" stuff.  The advantage of 
this approach is

a) 100% of 2D and 3D GL is "done in hardware".  The portions of GL that 
are not handled by the GPU core are handled by the microcontroller core, 
which is running a generic firmware.

b) Since a microcontroller is included, you can upgrade the firmware 
quite easily to support new OpenGL features.

c) you don't necessarily have to follow my design of one purpose built 
GPU core, and one generic microcontroller core.  If your FPGA is big 
enough, you can have plenty of execution engines (that's the beauty of 
hardware, it's inherently parallel).

But OTOH, maybe a multi-core solution will add too much latency into the 
picture, I dunno.



8) I don't find an open source video BIOS terribly exciting.  Yes, I do 
think it should be open source, but the interest is largely theoretical. 
  A video BIOS only does a couple things...  implements VESA/etc. BIOS 
calls, and initializes the hardware based on characteristics specific to 
the video board (i.e. OEM not GPU details, such as video RAM setup and 
clocking, which video inputs are actually implemented on the board, 
...).  I don't see there being a big programmer or developer interest

Such a video BIOS would probably have to be BSD-licensed, since the 
video BIOS code may wind up being #included into an OEM's system BIOS.





  parent reply	other threads:[~2004-10-22 18:54 UTC|newest]

Thread overview: 165+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-10-20 22:02 HARDWARE: Open-Source-Friendly Graphics Cards -- Viable? Timothy Miller
2004-10-20 22:17 ` Andre Eisenbach
2004-10-21  1:31   ` Jon Valvatne
2004-10-21 16:09     ` Timothy Miller
2004-10-24 19:47     ` Pavel Machek
2004-10-20 22:19 ` HARDWARE: Open-Source-Friendly Graphics Cards -- Viable? [u] Martin Schlemmer [c]
2004-10-24  8:24   ` Tonnerre
2004-10-24 14:26     ` Martin Schlemmer [c]
2004-10-20 22:26 ` HARDWARE: Open-Source-Friendly Graphics Cards -- Viable? David Lang
2004-10-21 14:46   ` Timothy Miller
2004-10-21 17:25     ` David Lang
2004-10-21 18:15       ` Timothy Miller
2004-10-21 18:32         ` Antonio Vargas
2004-10-22  9:53       ` Raphael Jacquot
2004-10-24  9:03       ` Tonnerre
2004-10-25  1:33         ` Stephen Wille Padnos
2004-10-25  1:48           ` Stephen Wille Padnos
2004-10-25  2:29           ` Gene Heskett
2004-10-22 10:16     ` Christian Leber
2004-10-22 17:31       ` Timothy Miller
2004-10-21 19:30   ` Kendall Bennett
2004-10-22 17:05     ` Tobias Diedrich
2004-10-22 17:12     ` Timothy Miller
2004-10-26  2:36     ` Dave Airlie
2004-10-26  3:55       ` Jon Smirl
2004-10-20 22:28 ` Jim Nelson
2004-10-21 14:51   ` Timothy Miller
2004-10-21 22:03     ` Jim Nelson
2004-10-20 22:29 ` Kasper Sandberg
2004-10-21 14:53   ` Timothy Miller
2004-10-21 15:06     ` Simon Braunschmidt
2004-10-21 18:00       ` Timothy Miller
2004-10-20 23:10 ` Alan Cox
2004-10-21 15:10   ` Timothy Miller
2004-10-21 15:25     ` Jon Smirl
2004-10-21 18:03       ` Timothy Miller
2004-10-21 15:32     ` Alan Cox
2004-10-21 19:30   ` Kendall Bennett
2004-10-22 17:15     ` Timothy Miller
2004-10-21  1:08 ` Jon Smirl
2004-10-21  1:11   ` Jon Smirl
2004-10-21  2:00     ` Stephen Wille Padnos
2004-10-21 16:08       ` Timothy Miller
2004-10-21 16:34         ` Stephen Wille Padnos
2004-10-21 23:38           ` Jan Knutar
2004-10-22  4:30             ` Jan Rychter
2004-10-22 17:00             ` Timothy Miller
2004-10-22 17:00               ` Chris Friesen
2004-10-22 18:47               ` Jeff Garzik [this message]
2004-10-22 19:22                 ` Timothy Miller
2004-10-22 19:33                   ` Jeff Garzik
2004-10-22 19:56                     ` Timothy Miller
2004-10-22 20:43                       ` Jeff Garzik
2004-10-22 20:27                         ` Alan Cox
2004-10-23 17:20                           ` Francois Romieu
2004-10-23 21:17                             ` Alan Cox
2004-10-24  0:06                               ` Francois Romieu
2004-10-22 20:51                       ` Jeff Garzik
2004-10-22 19:32                 ` Roland Dreier
2004-10-24 10:40               ` Helge Hafting
2004-10-25 15:39                 ` Timothy Miller
2004-10-21 21:57         ` J.A. Magallon
2004-10-22  9:48         ` Raphael Jacquot
2004-10-21 20:23       ` "Fernando O. Korndörfer"
2004-10-22  9:02       ` Raphael Jacquot
2004-10-21 15:13   ` Timothy Miller
2004-10-21 15:36     ` Shaun Kruger
2004-10-21 18:05       ` Timothy Miller
2004-10-21 19:30   ` Kendall Bennett
2004-10-22  8:49     ` Adrian Cox
2004-10-22 20:10       ` Geert Uytterhoeven
2004-10-23 13:17         ` Adrian Cox
2004-10-22 20:10   ` Geert Uytterhoeven
2004-10-22 22:07     ` Timothy Miller
2004-10-24 10:45       ` Helge Hafting
2004-10-25 15:47         ` Timothy Miller
2004-10-28  9:07           ` Helge Hafting
2004-10-29 16:00             ` Timothy Miller
2004-10-21  1:48 ` HARDWARE:Graphics Cards or TOE? Nuno Silva
2004-10-26 20:50   ` Timothy Miller
2004-10-21  2:29 ` HARDWARE: Open-Source-Friendly Graphics Cards -- Viable? Kurt Wall
2004-10-21 16:10   ` Timothy Miller
2004-10-21 16:22     ` Pascal Patry
2004-10-21 12:20 ` Adrian Bunk
2004-10-21 13:14   ` Simon Braunschmidt
2004-10-21 17:34     ` Jurriaan
2004-10-21 16:26   ` Timothy Miller
2004-10-21 17:42     ` Alan Cox
2004-10-21 19:09       ` Timothy Miller
2004-10-21 17:53 ` Tobias Diedrich
2004-10-21 23:02 ` Florian Schmidt
2004-10-24  1:04   ` Lee Revell
2004-10-22  1:08 ` Rene Herman
2004-10-23  5:40   ` Kevin Puetz
2004-10-23 17:02     ` Rene Herman
2004-10-23 22:19       ` Lee Revell
2004-10-24 11:10         ` Rene Herman
2004-10-22 10:57 ` Helge Hafting
2004-10-22 19:47   ` Giuseppe Bilotta
2004-10-22 20:15     ` Giuseppe Bilotta
2004-10-25 15:29   ` Tonnerre
2004-10-25 15:53     ` Timothy Miller
2004-10-25 16:32       ` Giuliano Pochini
2004-10-28  9:37         ` Helge Hafting
2004-10-28 11:40           ` Geert Uytterhoeven
2004-10-28 12:21           ` David Greaves
2004-10-29 16:04           ` Timothy Miller
2004-10-22 22:27 ` Clemens Schwaighofer
2004-10-23 14:36 ` Markus   Törnqvist
2004-10-24  8:18 ` Tonnerre
2004-10-25 11:54 ` Stuart Longland
2004-10-25 16:38 ` Lars Roland
2004-10-25 17:08   ` Timothy Miller
2004-10-26 21:02     ` Helge Hafting
2004-10-26 21:38       ` Timothy Miller
2004-10-25 22:52   ` Tonnerre
  -- strict thread matches above, loose matches on Subject: below --
2004-10-20 23:48 Timothy Miller
2004-10-21  0:30 ` J.A. Magallon
2004-10-21  0:47   ` Timothy Miller
2004-10-22 20:09   ` Geert Uytterhoeven
2004-10-21  1:25 ` Zan Lynx
2004-10-21 15:52   ` Timothy Miller
2004-10-21  4:48 Albert Cahalan
2004-10-21 16:19 ` Timothy Miller
2004-10-21 15:54 John Ripley
2004-10-21 18:09 ` Timothy Miller
2004-10-21 21:32   ` Baruch Even
2004-10-25 23:30     ` Werner Almesberger
2004-10-21 17:08 Greg Buchholz
2004-10-22  2:18 ` Tim Connors
2004-10-21 17:44 John Ripley
2004-10-21 18:26 ` Timothy Miller
2004-10-21 21:36   ` Greg Buchholz
2004-10-21 22:40     ` Timothy Miller
2004-10-21 23:25       ` Jon Smirl
2004-10-21 23:40       ` Greg Buchholz
2004-10-22 16:48         ` Timothy Miller
2004-10-22 16:50           ` Chris Friesen
2004-10-22 17:41             ` Timothy Miller
2004-10-25 23:10             ` Tonnerre
2004-10-26  0:32     ` Werner Almesberger
2004-10-22 15:59   ` Troy Benjegerdes
2004-10-22  3:47 Roy Butler
2004-10-22 17:04 ` Timothy Miller
2004-10-24 18:17   ` Mail Lists
2004-10-25 12:17     ` Bernd Eckenfels
2004-10-22 10:31 John Ripley
2004-10-22 12:58 ` Moritz Muehlenhoff
2004-10-22 17:33 ` Timothy Miller
2004-10-22 17:15 Stephen Lewis
2004-10-23  4:45 ` Gene Heskett
2004-10-23  7:06   ` Stephen Lewis
2004-10-23 19:06 Bodo Eggert
2004-10-25  1:44 ` Stephen Wille Padnos
2004-10-25  8:23   ` Vojtech Pavlik
     [not found] <6.1.2.0.1.20041026082223.0231edd8@mail.javagear.com>
2004-10-26 15:44 ` Timothy Miller
2004-10-26 16:35   ` Jesper Juhl
2004-10-26 16:57     ` Jeff Garzik
2004-10-26 21:14   ` Helge Hafting
2004-10-26 21:41     ` Timothy Miller
2004-11-17 14:35 Sid Boyce
2004-11-17 14:46 ` Chris Wedgwood
2004-11-23 13:47 ` Karel Kulhavy
2004-11-23 22:48 ` Timothy Miller
2004-11-24  1:22   ` Sid Boyce

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=417955D3.5020206@pobox.com \
    --to=jgarzik@pobox.com \
    --cc=alan@lxorguk.ukuu.org.uk \
    --cc=jonsmirl@gmail.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=miller@techsource.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).