haiku/docs/develop/opengl
2014-08-19 10:39:23 -04:00
..
accelerant-interfaces docs: opengl. Add some great documentation provided by Roudolf. 2014-08-19 10:28:53 -04:00
openGLkit_Jan-2013.png doc: Add some OpenGL kit documentation 2013-01-27 16:46:09 -06:00
readme docs: Update opengl readme info 2014-08-19 10:39:23 -04:00

Haiku OpenGL kit developers introduction

The Haiku OpenGL kit is made up of the folwing pieces:

* The "OpenGL Kit" aka libGL.so and supporting libraries.
  This is what the user applications interact with.

* The "OpenGL Add-ons" (which do the real work)
  These are chosen by the OpenGL kit and utilized

In the traditional BeOS sense, the OpenGL Add-ons are the
vendor provided OpenGL drivers. This actually doesn't
mesh well with the current open source OpenGL stack.

Our "OpenGL Add-ons" are really self contained Mesa and
Gallium renderers. On the old Mesa side of the house,
swrast is a bunch of wrapper code. On the Gallium side,
swpipe is a Gallium target.

Mesa drivers are the classical Mesa software rasterizers,
Gallium drivers are the new-school software and hardware
drivers.


**********
Mesa versions

The Haiku project uses two different versions of Mesa.

 * Mesa 7.9.2 for gcc2 OpenGL Add-ons
 * Mesa 10.2.0+ for gcc4 OpenGL Add-ons.

The reasoning behind this is that any version of Mesa
above 7.9.2 will require a *massive* porting effort to
make it compile under gcc2.  Given this fact, it makes
sense to bump the gcc2 version of Mesa as far as it will
go and set it there statically.  Think of Mesa 7.9.2
as the "stable" version Haiku R1 will use :)

Hardware 3D rendering and llvm-based software rendering
will never work for legacy gcc2 applications. Period.

However!  If you're running a gcc2 hybrid version of
Haiku, llvm or hardware based rendering should be possible
on gcc4 applications.

It's essential someone from the Haiku project keeps up
with the upstream Mesa changes pushing build fixes to
upstream Mesa to keep Haiku relevant.



**********
The packages

Haiku has several packages for Mesa:

mesa-x.x.x-x-x86.hpkg        Core Mesa package, provides libGL
mesa_devel-x.x.x-x-x86.hpkg  Provides development headers and "OpenGL kit"
mesa_swrast-x.x.x-x-x86.hpkg Mesa "Software Rasterization" renderer
mesa_swpipe-x.x.x-x-x86.hpkg Gallium "Software pipe" LLVM enhanced renderer

Future :3
mesa_radeonhd-x.x.x-x-x86.hpkg Gallium "Radeon HD" hardware renderer
mesa_intel-x.x.x-x-x86.hpkg Gallium "Intel" hardware renderer
mesa_nvidia-x.x.x-x-x86.hpkg Gallium "nVidia" hardware renderer (unlikely)