From ea28139d8429cbad6103a5fb95beb2d8540cc7b3 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Tue, 19 Aug 2014 10:34:33 -0400 Subject: [PATCH] docs: Update opengl readme info --- docs/develop/opengl/readme | 104 +++++++++---------------------------- 1 file changed, 25 insertions(+), 79 deletions(-) diff --git a/docs/develop/opengl/readme b/docs/develop/opengl/readme index 96dd321c7a..87b00d62cf 100644 --- a/docs/develop/opengl/readme +++ b/docs/develop/opengl/readme @@ -12,23 +12,14 @@ 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 wrappers around Mesa -and Gallium code. We gain greater OS control of OpenGL -rendering with the drawback of increased work overall. -The OpenGL Add-ons call private Mesa functions, thus -we get no compatibility saftey net between Mesa versions. +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. -Our Gallium connecting Add-ons could actually fit into -the upstream Mesa / Gallium project, however this would -cause complications in the build process (linking in -OpenGL and all of it's libraries into a small number of -shared libraries is not really what the Mesa project -designs it's stack for. Several symbol collisions exist -when trying to link libmesa and libgallium together for -example) - -Mesa drivers are the classical Mesa software rasterizers -Gallium drivers are the new-school software drivers. +Mesa drivers are the classical Mesa software rasterizers, +Gallium drivers are the new-school software and hardware +drivers. ********** @@ -36,14 +27,14 @@ Mesa versions The Haiku project uses two different versions of Mesa. - * Mesa 7.8.2 for gcc2 OpenGL Add-ons - * Mesa 9.0.1+ for gcc4 OpenGL Add-ons. + * 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.8.2 will require a *massive* porting effort to +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.8.2 +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 @@ -53,68 +44,23 @@ However! If you're running a gcc2 hybrid version of Haiku, llvm or hardware based rendering should be possible on gcc4 applications. -It is *essential* to upgrade our build Mesa packages -with the latest release Mesa versions. If we fall too -far behind the update gets extremely tricky as functions -inside Mesa and Gallium change at a fast pace. +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. + ********** -gcc2 OpenGL kit +The packages -The following process occurs in order to generate the -gcc2 (Mesa 7.8.2) OpenGL kit: +Haiku has several packages for Mesa: -* Some kind soul compiles a Mesa optional package on a - gcc2 Haiku system with the bep on haikuports. This - gets uploaded to Haiku-files and the package name - / version gets updated as in the BuildFeatures jam - build script. +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 - - The bep generally applies a few minimal patches to - Mesa 7.8.2 and compiles it. Then it rounds up all of - the headers and static libraries and throws them into - a .zip for the build - -* Someone starts a gcc2 Haiku build. The build process pulls - down the Mesa optional package above and links the needed - parts into libGL and the swrast_legacy OpenGL add-on - - -********** -gcc4 OpenGL kit - -The following process occurs in order to generate the -gcc4 (Mesa 9.0.1+) OpenGL kit: - -* Some kind soul compiles a Mesa optional package on a - gcc4 Haiku system with the bep on haikuports. This - gets uploaded to Haiku-files and the package name - / version gets updated as in the BuildFeatures jam - build script. - - - The kind soul also needs to install the LLVM Optional - build package on his build machine *before* compiling - the Mesa bep. (unless he or she doesn't want llvmpipe - rendering) - - - The bep for Mesa 9.0.1+ doesn't apply too many patches as - Haiku build fixes are accepted upstream. - - - The bep rounds up all of the headers and static - libraries and throws them into a .zip for the build - -* Someone starts a gcc4 Haiku build. The build process pulls - down the Mesa optional package above and links the needed - parts into libGL and OpenGL add-ons. - - - If the user didn't link in LLVM, he can disable the LLVM - dependencies in the OpenGL kit Jamfile. swpipe will - automagically fall back to softpipe rendering - - - The build system will download the LLVM optional package - and link it into any OpenGL add-ons that need it. - - !! The LLVM optional package needs to match the LLVM - binaries on the machine which compiled Mesa - !! +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)