mesa: Remove support for BeOS
authorIan Romanick <ian.d.romanick@intel.com>
Thu, 25 Aug 2011 15:25:09 +0000 (08:25 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Sat, 27 Aug 2011 06:31:23 +0000 (23:31 -0700)
Acked-by: Kristian Høgsberg <krh@bitplanet.net>
Acked-by: Marek Olšák <maraeo@gmail.com>
Acked-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Acked-by: Jakob Bornecrantz <jakob@vmware.com>
Acked-by: Dave Airlie <airlied@redhat.com>
Build-Tested-by: Jakob Bornecrantz <jakob@vmware.com>
Tested-by: Eugeni Dodonov <eugeni.dodonov@intel.com>
17 files changed:
Makefile
bin/mklib
configs/beos [deleted file]
docs/README.BEOS [deleted file]
docs/dispatch.html
docs/install.html
docs/systems.html
include/GL/osmesa.h
src/mapi/glapi/gen/gl_x86-64_asm.py
src/mapi/glapi/gen/gl_x86_asm.py
src/mapi/glapi/glapi_x86-64.S
src/mapi/glapi/glapi_x86.S
src/mapi/mapi/u_thread.c
src/mapi/mapi/u_thread.h
src/mesa/drivers/beos/GLView.cpp [deleted file]
src/mesa/drivers/beos/Makefile [deleted file]
src/mesa/drivers/x11/fxmesa.h

index 916c498416da51ad1bbc8b8978c2b99923fbcc84..d65d4c4968e71596ca5d830e9696cac12f1b5c60 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -82,7 +82,6 @@ aix-static \
 autoconf \
 bluegene-osmesa \
 bluegene-xlc-osmesa \
-beos \
 catamount-osmesa-pgi \
 darwin \
 darwin-fat-32bit \
index 2c7ed3880ae9f41e9b2dfdc51e1eab0d0de988f9..fd87aad420f2e5d8e35db55ccd7e2247acb34523 100755 (executable)
--- a/bin/mklib
+++ b/bin/mklib
@@ -802,22 +802,6 @@ case $ARCH in
         FINAL_LIBS=`make_ar_static_lib -ru 0 ${LIBNAME} ${OBJECTS}`
        ;;
 
-    'BeOS')
-        if [ $STATIC = 1 ] ; then
-            LIBNAME="lib${LIBNAME}.a"
-            echo "mklib: Making BeOS static library: " ${LIBNAME}
-            FINAL_LIBS=`make_ar_static_lib -cru 0 ${LIBNAME} ${OBJECTS}`
-        else
-           LIBNAME="lib${LIBNAME}.so"
-           echo "mklib: Making BeOS shared library: " ${LIBNAME}
-           gcc -nostart -Xlinker "-soname=${LIBNAME}" -L/Be/develop/lib/x86 -lbe ${DEPS} ${OBJECTS} -o "${LIBNAME}"
-           mimeset -f "${LIBNAME}"
-           # XXX remove the Mesa3D stuff here since mklib isn't mesa-specific.
-           setversion "${LIBNAME}" -app ${MAJOR} ${MINOR} ${PATCH} -short "Powered by Mesa3D!" -long "Powered by Mesa3D!"
-       fi
-       FINAL_LIBS=${LIBNAME}
-       ;;
-
     'QNX')
        LIBNAME="lib${LIBNAME}.a"
        echo "mklib: Making QNX library: " ${LIBNAME}
diff --git a/configs/beos b/configs/beos
deleted file mode 100644 (file)
index 91ea6f7..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-# Configuration for BeOS
-# Written by Philippe Houdoin
-
-include $(TOP)/configs/default
-
-CONFIG_NAME = beos
-
-
-DEFINES =      \
-       -DBEOS_THREADS 
-
-MACHINE=$(shell uname -m)
-ifeq ($(MACHINE), BePC)
-       CPU = x86
-else
-       CPU = ppc
-endif
-
-ifeq ($(CPU), x86)
-       # BeOS x86 settings
-
-       DEFINES += \
-               -DGNU_ASSEMBLER \
-               -DUSE_X86_ASM \
-               -DUSE_MMX_ASM \
-               -DUSE_3DNOW_ASM \
-               -DUSE_SSE_ASM
-       
-       MESA_ASM_SOURCES = $(X86_SOURCES)
-       GLAPI_ASM_SOURCES = $(X86_API)
-
-       CC = gcc
-       CXX = g++
-       LD = gcc
-       
-       CFLAGS = \
-               -Wall -Wno-multichar -Wno-ctor-dtor-privacy \
-               $(DEFINES)
-
-       CXXFLAGS = $(CFLAGS)
-
-       # Work around aliasing bugs - developers should comment this out
-       CFLAGS += -fno-strict-aliasing
-       CXXFLAGS += -fno-strict-aliasing
-
-       LDFLAGS += -Xlinker
-
-       ifdef DEBUG
-               CFLAGS   += -g -O0
-               LDFLAGS += -g
-               DEFINES += -DDEBUG
-       else
-               CFLAGS   += -O3
-       endif
-
-       GLUT_CFLAGS = -fexceptions
-
-else
-       # BeOS PPC settings
-
-       CC = mwcc
-       CXX = $(CC)
-       LD = mwldppc
-
-       CFLAGS = \
-               -w on -requireprotos \
-               $(DEFINES)
-
-       CXXFLAGS = $(CFLAGS)
-
-       LDFLAGS += \
-               -export pragma \
-               -init _init_routine_ \
-               -term _term_routine_ \
-               -lroot \
-               /boot/develop/lib/ppc/glue-noinit.a \
-               /boot/develop/lib/ppc/init_term_dyn.o \
-               /boot/develop/lib/ppc/start_dyn.o 
-
-       ifdef DEBUG
-               CFLAGS   += -g -O0
-               CXXFLAGS += -g -O0
-               LDFLAGS += -g
-       else
-               CFLAGS   += -O7
-               CXXFLAGS += -O7
-       endif
-
-       GLUT_CFLAGS = -fexceptions
-endif
-
-# Directories
-SRC_DIRS = gallium mesa glu
-GLU_DIRS = sgi
-DRIVER_DIRS = beos
-
-# Library/program dependencies
-GL_LIB_DEPS = 
-OSMESA_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
-GLU_LIB_DEPS =  
-APP_LIB_DEPS = -lbe -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -l$(GLUT_LIB)
-
diff --git a/docs/README.BEOS b/docs/README.BEOS
deleted file mode 100644 (file)
index efd84e8..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-
-                         Mesa / BeOS Information
-
-
-
-* Introduction
-
-Brian Paul added in Mesa 3.1 a driver for BeOS R4.5 operating system.
-This driver implements a clone of the BGLView class.  This class,
-derived from BView, allows OpenGL rendering into any BeOS window.  His
-driver was updated in Mesa 4.1 and again in version 6.1 by Philippe
-Houdoin, who's maintaining this driver since.
-
-Any application which uses the BGLView should be able to use Mesa
-instead of Be's OpenGL without changing any code.
-
-Since Be's OpenGL implementation (as of R5) is basically just the
-SGI sample implementation, it's pretty slow.  You'll see that Mesa
-is considerably faster.
-
-
-* Source Code
-
-The source code for the driver is in src/mesa/drivers/beos/ directory.
-It's not 100% finished at this time but many GLUT-based demos are
-working.  No optimizations have been made at this time.
-
-
-* Compiling
-
-Since Mesa 6.x, it can be build under BeOS with both the R5 builtin gcc version
-or more recent gcc versions available for BeOS, like this gcc version 2.95.3 for BeOS 
-you can find at http://www.bebits.com/app/2157.
-Anyway, keep in mind that to take full advantage of Mesa x86 optimizations, you better
-want to use gcc 2.95.3 or sooner versions...
-
-To build Mesa-powered BeOS libGL.so version, open an Terminal window,
-move to Mesa root folder and type this command:
-
-$ make beos
-
-Note that the "beos" argument is only needed the first time to setup build config.
-Next times, typing "make" will be enough.
-
-When it finishes the Mesa based libGL.so library for
-BeOS will be in the lib/ directory, along libglut.so library.
-Several demo/test programs should have been build too under progs/* folders.
-If it stop when building one of the progs/* programs, you may want to ignore it
-and force make to move on next target by adding the -k make option:
-
-$ cd progs
-$ make -k
-
-To install it as Be's default libGL.so replacement, put it in your 
-/boot/home/config/lib/ directory. All your GL/GLUT apps will use 
-the Mesa based then. 
-
-By default, it build a non-debug version library.
-The x86 (MMX, SSE and 3DNOW) optimizations are also supported for x86 target.
-For PowerPC BeOS flavor, sorry, Mesa don't have ppc (Altivec) optimizations
-yet.
-
-To build a DEBUG version, type instead this :
-
-$ DEBUG=1 make
-
-
-* Example Programs
-
-Look under progs/beos/ for some BGLView-based programs.
-You should find under progs/samples and progs/redbook directories GLUT-based programs too.
-They all should have been compiled along with the Mesa library.
-
-
-* GLUT
-
-A beta version of GLUT 3.7 port for BeOS, made by Jake Hamby, can be found at 
-http://anobject.com/jehamby/Code/Glut-3.7-x86.zip.
-This is the version currently included in Mesa source code, and
-build in lib/libglut.so.
-A previous 3.5 version of this GLUT BeOS port used to be available at
-http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip.
-
-They're special versions of GLUT for the BeOS platform.  I don't
-believe Mark Kilgard's normal GLUT distribution includes BeOS
-support.
-
-
-* Special Features
-
-Mesa's implementation of the BGLView class has an extra member
-function:  CopySubBufferMESA().  It basically works like SwapBuffers()
-but it only copies a sub region from the back buffer to the front
-buffer.  This is a useful optimization for some applications.
-If you use this method in your code be sure that you check at runtime
-that you're actually using Mesa (with glGetString) so you don't
-cause a fatal error when running with Be's OpenGL.
-
-
-* Work Left To Do
-
-- BDirectWindow single buffering support is not implemented yet.
-- Color index mode is not implemented yet.
-- Reading pixels from the front buffer not implemented yet.
-- There is also a BGLScreen class in BeOS for full-screen OpenGL rendering.
-  This should also be implemented for Mesa.
-- Multiple renderers add-ons support, first step toward hardware acceleration
-  support.
-
-* Other contributors to this BeOS port
-
-Jake Hamby                      jhamby <at> anobject <dot> com
-Marcin Konicki                  ahwayakchih <at> neoni <dot> net
-Francois Revol                  revol <at> free <dot> fr
-Nathan Whitehorn                nathanw <at> uchicago <dot> edu
-
-
-* Older BeOS Driver
-
-Mesa 2.6 had an earlier BeOS driver.  It was based on Mesa's Off-screen
-rendering interface, not BGLView.  If you're interested in the older
-driver you should get Mesa 2.6.
-
-
-* BeOS and Glide
-
-Mesa 3.0 supported the 3Dfx/Glide library on Beos.  Download Mesa 3.0
-if interested.  Ideally, the 3Dfx/Glide support should be updated to
-work with the new Mesa 3.1 BGLView implementation.
-
-The Glide library hasn't been updated for BeOS R4 and newer, to my knowledge,
-as of February, 1999.
-
-
-----------------------------------------------------------------------
index e5587c1a294ca8ebb7cc8375936ed8f0c2cd3c39..c3a33b90bf7ae91ed6f125e1e194da98f40deda6 100644 (file)
@@ -198,9 +198,7 @@ few preprocessor defines.</p>
 <ul>
 <li>If <tt>GLX_USE_TLS</tt> is defined, method #4 is used.</li>
 <li>If <tt>PTHREADS</tt> is defined, method #3 is used.</li>
-<li>If any of <tt>PTHREADS</tt>,
-<tt>WIN32_THREADS</tt>, or <tt>BEOS_THREADS</tt>
-is defined, method #2 is used.</li>
+<li>If <tt>WIN32_THREADS</tt> is defined, method #2 is used.</li>
 <li>If none of the preceeding are defined, method #1 is used.</li>
 </ul>
 
index 57e671b633fc7d5f32ce2660f0dda8cc664e2da1..228100ec731c8bc043bd3826bf9aea27ab43fb6f 100644 (file)
@@ -310,7 +310,6 @@ Documentation for other environments (some may be very out of date):
 <LI><A HREF="README.GGI">README.GGI</A> - GGI
 <LI><A HREF="README.3DFX">README.3DFX</A> - 3Dfx/Glide driver
 <LI><A HREF="README.AMIWIN">README.AMIWIN</A> - Amiga Amiwin
-<LI><A HREF="README.BEOS">README.BEOS</A> - BeOS
 <LI><A HREF="README.D3D">README.D3D</A> - Direct3D driver
 <LI><A HREF="README.DJ">README.DJ</A> - DJGPP
 <LI><A HREF="README.LYNXOS">README.LYNXOS</A> - LynxOS
index 5137b074e2855921153a93da95dd3590c4753a54..03db779a1aef79a244e571a7ef432681d5d77bee 100644 (file)
@@ -16,14 +16,13 @@ X development environment to use Mesa.
 
 <p>
 The DRI hardware drivers for the X.org server and XFree86 provide
-hardware accelerated rendering for chips from ATI, Intel, Matrox, 3dfx
-and others on Linux and FreeBSD.
+hardware accelerated rendering for chips from ATI, Intel, and NVIDIA
+on Linux and FreeBSD.
 </p>
 
 <p>
 Drivers for other assorted platforms include:
-the Amiga, Apple Macintosh, BeOS, NeXT, OS/2, MS-DOS, VMS, Windows
-9x/NT, and Direct3D.
+the Apple Macintosh and Windows.
 </p>
 
 <p>
@@ -51,7 +50,6 @@ They can be saved if someone steps up to help.
 <LI>3dfx/Glide <A HREF="README.3DFX">(README.3DFX)</A>
 <LI>GGI <A HREF="README.GGI">(README.GGI)</A>
 <LI>Amiga Amiwin <A HREF="README.AMIWIN">(README.AMIWIN)</A>
-<LI>BeOS <A HREF="README.BEOS">(README.BEOS)</A>
 <LI>Direct3D driver <A HREF="README.D3D">(README.D3D)</A>
 <LI>DJGPP <A HREF="README.DJ">(README.DJ)</A>
 <LI>LynxOS <A HREF="README.LYNXOS">(README.LYNXOS)</A>
index 56fa23ce81f812cfd956049050769647a3f1640e..304655e7c449e0653ac2c4e1150e2e1b99ea8690 100644 (file)
@@ -101,7 +101,7 @@ extern "C" {
 typedef struct osmesa_context *OSMesaContext;
 
 
-#if defined(__BEOS__) || defined(__QUICKDRAW__)
+#if defined(__QUICKDRAW__)
 #pragma export on
 #endif
 
@@ -275,12 +275,6 @@ OSMesaGetProcAddress( const char *funcName );
 GLAPI void GLAPIENTRY
 OSMesaColorClamp(GLboolean enable);
 
-
-#if defined(__BEOS__) || defined(__QUICKDRAW__)
-#pragma export off
-#endif
-
-
 #ifdef __cplusplus
 }
 #endif
index 11cd9af40618dbd075d95fd70da64679a04c8ec2..ef759bf7bf365c1495bf120844658974fae256b5 100644 (file)
@@ -138,7 +138,7 @@ class PrintGenericStubs(gl_XML.gl_print_base):
                print '#  define GL_PREFIX(n) GLNAME(CONCAT(gl,n))'
                print '# endif'
                print ''
-               print '#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)'
+               print '#if defined(PTHREADS) || defined(WIN32)'
                print '#  define THREADS'
                print '#endif'
                print ''
index 4ef4acb564e35cad76b1ef86400bc73c1e3f0409..b43b65dd8292405e652d1e80a622d18636ac880d 100644 (file)
@@ -78,7 +78,7 @@ class PrintGenericStubs(gl_XML.gl_print_base):
                print '#define GLOBL_FN(x) GLOBL x'
                print '#endif'
                print ''
-               print '#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)'
+               print '#if defined(PTHREADS) || defined(WIN32)'
                print '#  define THREADS'
                print '#endif'
                print ''
index ce54755c5441e6f44eb8475778658355ff5fb89f..0746eabc640bcac09908ca327e4cc665fc1681a8 100644 (file)
@@ -45,7 +45,7 @@
 #  define GL_PREFIX(n) GLNAME(CONCAT(gl,n))
 # endif
 
-#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)
+#if defined(PTHREADS) || defined(WIN32)
 #  define THREADS
 #endif
 
index 862dc92681fcf00fc7c8005e21493e48ae93ab98..ea30e99604a654548f03b33fdb3f24ed6dc0c966 100644 (file)
@@ -51,7 +51,7 @@
 #define GLOBL_FN(x) GLOBL x
 #endif
 
-#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)
+#if defined(PTHREADS) || defined(WIN32)
 #  define THREADS
 #endif
 
index 12e748fe8bac1b38177a22157b99e4f8aa8fea7f..7b52ca99b3a557df003ac746f4cfe1d1364a37ae 100644 (file)
@@ -169,45 +169,6 @@ u_tsd_set(struct u_tsd *tsd, void *ptr)
 
 #endif /* WIN32 */
 
-/*
- * BeOS threads
- */
-#ifdef BEOS_THREADS
-
-unsigned long
-u_thread_self(void)
-{
-   return (unsigned long) find_thread(NULL);
-}
-
-void
-u_tsd_init(struct u_tsd *tsd)
-{
-   tsd->key = tls_allocate();
-   tsd->initMagic = INIT_MAGIC;
-}
-
-void *
-u_tsd_get(struct u_tsd *tsd)
-{
-   if (tsd->initMagic != (int) INIT_MAGIC) {
-      u_tsd_init(tsd);
-   }
-   return tls_get(tsd->key);
-}
-
-void
-u_tsd_set(struct u_tsd *tsd, void *ptr)
-{
-   if (tsd->initMagic != (int) INIT_MAGIC) {
-      u_tsd_init(tsd);
-   }
-   tls_set(tsd->key, ptr);
-}
-
-#endif /* BEOS_THREADS */
-
-
 
 #else  /* THREADS */
 
index 1cc8be3fa3f6c7651c0b90b9c9983db56f950a53..4405ec9c509f045afd4fea2c52839c2adb4ac5c7 100644 (file)
@@ -44,7 +44,7 @@
 
 #include "u_compiler.h"
 
-#if defined(PTHREADS) || defined(WIN32) || defined(BEOS_THREADS)
+#if defined(PTHREADS) || defined(WIN32)
 #ifndef THREADS
 #define THREADS
 #endif
@@ -107,62 +107,6 @@ typedef CRITICAL_SECTION u_mutex;
 #endif /* WIN32 */
 
 
-/*
- * BeOS threads. R5.x required.
- */
-#ifdef BEOS_THREADS
-
-/* Problem with OS.h and this file on haiku */
-#ifndef __HAIKU__
-#include <kernel/OS.h>
-#endif
-
-#include <support/TLS.h>
-
-/* The only two typedefs required here
- * this is cause of the OS.h problem
- */
-#ifdef __HAIKU__
-typedef int32 thread_id;
-typedef int32 sem_id;
-#endif
-
-struct u_tsd {
-   int32        key;
-   int          initMagic;
-};
-
-/* Use Benaphore, aka speeder semaphore */
-typedef struct {
-    int32   lock;
-    sem_id  sem;
-} benaphore;
-typedef benaphore u_mutex;
-
-#define u_mutex_declare_static(name) \
-   static u_mutex name = { 0, 0 }
-
-#define u_mutex_init(name) \
-   name.sem = create_sem(0, #name"_benaphore"), \
-   name.lock = 0
-
-#define u_mutex_destroy(name) \
-   delete_sem(name.sem), \
-   name.lock = 0
-
-#define u_mutex_lock(name) \
-   if (name.sem == 0) \
-      u_mutex_init(name); \
-   if (atomic_add(&(name.lock), 1) >= 1) \
-      acquire_sem(name.sem)
-
-#define u_mutex_unlock(name) \
-   if (atomic_add(&(name.lock), -1) > 1) \
-      release_sem(name.sem)
-
-#endif /* BEOS_THREADS */
-
-
 /*
  * THREADS not defined
  */
diff --git a/src/mesa/drivers/beos/GLView.cpp b/src/mesa/drivers/beos/GLView.cpp
deleted file mode 100644 (file)
index 57c4614..0000000
+++ /dev/null
@@ -1,1573 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.1
- * 
- * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#include <assert.h>
-#include <stdio.h>
-
-extern "C" {
-
-#include "glheader.h"
-#include "version.h"
-#include "buffers.h"
-#include "bufferobj.h"
-#include "context.h"
-#include "colormac.h"
-#include "depth.h"
-#include "extensions.h"
-#include "macros.h"
-#include "matrix.h"
-#include "mtypes.h"
-#include "texformat.h"
-#include "texobj.h"
-#include "teximage.h"
-#include "texstore.h"
-#include "vbo/vbo.h"
-#include "swrast/swrast.h"
-#include "swrast_setup/swrast_setup.h"
-#include "swrast/s_context.h"
-#include "swrast/s_depth.h"
-#include "swrast/s_lines.h"
-#include "swrast/s_triangle.h"
-#include "tnl/tnl.h"
-#include "tnl/t_context.h"
-#include "tnl/t_pipeline.h"
-
-#include "drivers/common/driverfuncs.h"
-
-}      // extern "C"
-
-#include <interface/Screen.h>
-#include <GLView.h>
-
-// BeOS component ordering for B_RGBA32 bitmap format
-#if B_HOST_IS_LENDIAN
-       #define BE_RCOMP 2
-       #define BE_GCOMP 1
-       #define BE_BCOMP 0
-       #define BE_ACOMP 3
-
-       #define PACK_B_RGBA32(color) (color[BCOMP] | (color[GCOMP] << 8) | \
-                                                       (color[RCOMP] << 16) | (color[ACOMP] << 24))
-
-       #define PACK_B_RGB32(color) (color[BCOMP] | (color[GCOMP] << 8) | \
-                                                       (color[RCOMP] << 16) | 0xFF000000)
-#else
-       // Big Endian B_RGBA32 bitmap format
-       #define BE_RCOMP 1
-       #define BE_GCOMP 2
-       #define BE_BCOMP 3
-       #define BE_ACOMP 0
-
-       #define PACK_B_RGBA32(color) (color[ACOMP] | (color[RCOMP] << 8) | \
-                                                       (color[GCOMP] << 16) | (color[BCOMP] << 24))
-
-       #define PACK_B_RGB32(color) ((color[RCOMP] << 8) | (color[GCOMP] << 16) | \
-                                                       (color[BCOMP] << 24) | 0xFF000000)
-#endif
-
-#define FLIP(coord) (LIBGGI_MODE(ggi_ctx->ggi_visual)->visible.y-(coord) - 1) 
-
-const char * color_space_name(color_space space);
-
-//
-// This object hangs off of the BGLView object.  We have to use
-// Be's BGLView class as-is to maintain binary compatibility (we
-// can't add new members to it).  Instead we just put all our data
-// in this class and use BGLVIew::m_gc to point to it.
-//
-class MesaDriver
-{
-friend class BGLView;
-public:
-       MesaDriver();
-       ~MesaDriver();
-       
-       void            Init(BGLView * bglview, struct gl_context * c, struct gl_config * v, struct gl_framebuffer * b);
-
-       void            LockGL();
-       void            UnlockGL();
-       void            SwapBuffers() const;
-       status_t        CopyPixelsOut(BPoint source, BBitmap *dest);
-       status_t        CopyPixelsIn(BBitmap *source, BPoint dest);
-
-       void CopySubBuffer(GLint x, GLint y, GLuint width, GLuint height) const;
-       void Draw(BRect updateRect) const;
-
-private:
-       MesaDriver(const MesaDriver &rhs);  // copy constructor illegal
-       MesaDriver &operator=(const MesaDriver &rhs);  // assignment oper. illegal
-
-       struct gl_context *     m_glcontext;
-       struct gl_config *              m_glvisual;
-       struct gl_framebuffer * m_glframebuffer;
-
-       BGLView *               m_bglview;
-       BBitmap *               m_bitmap;
-
-       GLchan                  m_clear_color[4];  // buffer clear color
-       GLuint                  m_clear_index;      // buffer clear color index
-       GLint                   m_bottom;           // used for flipping Y coords
-       GLuint                  m_width;
-       GLuint                  m_height;
-       
-   // Mesa Device Driver callback functions
-   static void                 UpdateState(struct gl_context *ctx, GLuint new_state);
-   static void                 ClearIndex(struct gl_context *ctx, GLuint index);
-   static void                 ClearColor(struct gl_context *ctx, const GLfloat color[4]);
-   static void                 Clear(struct gl_context *ctx, GLbitfield mask,
-                                GLboolean all, GLint x, GLint y,
-                                GLint width, GLint height);
-   static void                 ClearFront(struct gl_context *ctx, GLboolean all, GLint x, GLint y,
-                          GLint width, GLint height);
-   static void                 ClearBack(struct gl_context *ctx, GLboolean all, GLint x, GLint y,
-                         GLint width, GLint height);
-   static void                 Index(struct gl_context *ctx, GLuint index);
-   static void                 Color(struct gl_context *ctx, GLubyte r, GLubyte g,
-                     GLubyte b, GLubyte a);
-   static void                 SetBuffer(struct gl_context *ctx, struct gl_framebuffer *colorBuffer,
-                             GLenum mode);
-   static void                 GetBufferSize(struct gl_framebuffer * framebuffer, GLuint *width,
-                             GLuint *height);
-   static void         Error(struct gl_context *ctx);
-   static const GLubyte *      GetString(struct gl_context *ctx, GLenum name);
-   static void          Viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h);
-
-   // Front-buffer functions
-   static void                 WriteRGBASpanFront(const struct gl_context *ctx, GLuint n,
-                                  GLint x, GLint y,
-                                  CONST GLubyte rgba[][4],
-                                  const GLubyte mask[]);
-   static void                 WriteRGBSpanFront(const struct gl_context *ctx, GLuint n,
-                                 GLint x, GLint y,
-                                 CONST GLubyte rgba[][3],
-                                 const GLubyte mask[]);
-   static void                 WriteMonoRGBASpanFront(const struct gl_context *ctx, GLuint n,
-                                      GLint x, GLint y,
-                                      const GLchan color[4],
-                                      const GLubyte mask[]);
-   static void                 WriteRGBAPixelsFront(const struct gl_context *ctx, GLuint n,
-                                    const GLint x[], const GLint y[],
-                                    CONST GLubyte rgba[][4],
-                                    const GLubyte mask[]);
-   static void                 WriteMonoRGBAPixelsFront(const struct gl_context *ctx, GLuint n,
-                                        const GLint x[], const GLint y[],
-                                        const GLchan color[4],
-                                        const GLubyte mask[]);
-   static void                 WriteCI32SpanFront(const struct gl_context *ctx, GLuint n,
-                                  GLint x, GLint y,
-                                  const GLuint index[], const GLubyte mask[]);
-   static void                 WriteCI8SpanFront(const struct gl_context *ctx, GLuint n,
-                                 GLint x, GLint y,
-                                 const GLubyte index[], const GLubyte mask[]);
-   static void                 WriteMonoCISpanFront(const struct gl_context *ctx, GLuint n,
-                                    GLint x, GLint y,
-                                    GLuint colorIndex, const GLubyte mask[]);
-   static void                 WriteCI32PixelsFront(const struct gl_context *ctx,
-                                    GLuint n, const GLint x[], const GLint y[],
-                                    const GLuint index[], const GLubyte mask[]);
-   static void                 WriteMonoCIPixelsFront(const struct gl_context *ctx, GLuint n,
-                                      const GLint x[], const GLint y[],
-                                      GLuint colorIndex, const GLubyte mask[]);
-   static void                 ReadCI32SpanFront(const struct gl_context *ctx,
-                                 GLuint n, GLint x, GLint y, GLuint index[]);
-   static void                 ReadRGBASpanFront(const struct gl_context *ctx, GLuint n,
-                                 GLint x, GLint y,
-                                 GLubyte rgba[][4]);
-   static void                 ReadCI32PixelsFront(const struct gl_context *ctx,
-                                   GLuint n, const GLint x[], const GLint y[],
-                                   GLuint indx[], const GLubyte mask[]);
-   static void                 ReadRGBAPixelsFront(const struct gl_context *ctx,
-                                   GLuint n, const GLint x[], const GLint y[],
-                                   GLubyte rgba[][4], const GLubyte mask[]);
-
-   // Back buffer functions
-   static void                 WriteRGBASpanBack(const struct gl_context *ctx, GLuint n,
-                                  GLint x, GLint y,
-                                  CONST GLubyte rgba[][4],
-                                  const GLubyte mask[]);
-   static void                 WriteRGBSpanBack(const struct gl_context *ctx, GLuint n,
-                                 GLint x, GLint y,
-                                 CONST GLubyte rgba[][3],
-                                 const GLubyte mask[]);
-   static void                 WriteMonoRGBASpanBack(const struct gl_context *ctx, GLuint n,
-                                     GLint x, GLint y,
-                                     const GLchan color[4],
-                                     const GLubyte mask[]);
-   static void                 WriteRGBAPixelsBack(const struct gl_context *ctx, GLuint n,
-                                   const GLint x[], const GLint y[],
-                                   CONST GLubyte rgba[][4],
-                                   const GLubyte mask[]);
-   static void                 WriteMonoRGBAPixelsBack(const struct gl_context *ctx, GLuint n,
-                                       const GLint x[], const GLint y[],
-                                       const GLchan color[4],
-                                       const GLubyte mask[]);
-   static void                 WriteCI32SpanBack(const struct gl_context *ctx, GLuint n,
-                                 GLint x, GLint y,
-                                 const GLuint index[], const GLubyte mask[]);
-   static void                 WriteCI8SpanBack(const struct gl_context *ctx, GLuint n, GLint x, GLint y,
-                                const GLubyte index[], const GLubyte mask[]);
-   static void                 WriteMonoCISpanBack(const struct gl_context *ctx, GLuint n,
-                                   GLint x, GLint y, GLuint colorIndex,
-                                   const GLubyte mask[]);
-   static void                 WriteCI32PixelsBack(const struct gl_context *ctx,
-                                   GLuint n, const GLint x[], const GLint y[],
-                                   const GLuint index[], const GLubyte mask[]);
-   static void                 WriteMonoCIPixelsBack(const struct gl_context *ctx,
-                                     GLuint n, const GLint x[], const GLint y[],
-                                     GLuint colorIndex, const GLubyte mask[]);
-   static void                 ReadCI32SpanBack(const struct gl_context *ctx,
-                                GLuint n, GLint x, GLint y, GLuint index[]);
-   static void                 ReadRGBASpanBack(const struct gl_context *ctx, GLuint n,
-                                GLint x, GLint y,
-                                GLubyte rgba[][4]);
-   static void                 ReadCI32PixelsBack(const struct gl_context *ctx,
-                                  GLuint n, const GLint x[], const GLint y[],
-                                  GLuint indx[], const GLubyte mask[]);
-   static void                 ReadRGBAPixelsBack(const struct gl_context *ctx,
-                                  GLuint n, const GLint x[], const GLint y[],
-                                  GLubyte rgba[][4], const GLubyte mask[]);
-
-};
-
-//------------------------------------------------------------------
-// Public interface methods
-//------------------------------------------------------------------
-
-
-//
-// Input:  rect - initial rectangle
-//         name - window name
-//         resizingMode - example: B_FOLLOW_NONE
-//         mode - usually 0 ?
-//         options - Bitwise-OR of BGL_* tokens
-//
-BGLView::BGLView(BRect rect, char *name,
-                 ulong resizingMode, ulong mode,
-                 ulong options)
-   : BView(rect, name, B_FOLLOW_ALL_SIDES, mode | B_WILL_DRAW | B_FRAME_EVENTS) //  | B_FULL_UPDATE_ON_RESIZE)
-{
-       // We don't support single buffering (yet): double buffering forced.
-       options |= BGL_DOUBLE;
-
-   const GLboolean rgbFlag = ((options & BGL_INDEX) == 0);
-   const GLboolean alphaFlag = ((options & BGL_ALPHA) == BGL_ALPHA);
-   const GLboolean dblFlag = ((options & BGL_DOUBLE) == BGL_DOUBLE);
-   const GLboolean stereoFlag = false;
-   const GLint depth = (options & BGL_DEPTH) ? 16 : 0;
-   const GLint stencil = (options & BGL_STENCIL) ? 8 : 0;
-   const GLint accum = (options & BGL_ACCUM) ? 16 : 0;
-   const GLint index = (options & BGL_INDEX) ? 32 : 0;
-   const GLint red = rgbFlag ? 8 : 0;
-   const GLint green = rgbFlag ? 8 : 0;
-   const GLint blue = rgbFlag ? 8 : 0;
-   const GLint alpha = alphaFlag ? 8 : 0;
-
-       m_options = options | BGL_INDIRECT;
-
-   struct dd_function_table functions;
-   if (!rgbFlag) {
-      fprintf(stderr, "Mesa Warning: color index mode not supported\n");
-   }
-
-   // Allocate auxiliary data object
-   MesaDriver * md = new MesaDriver();
-
-   // examine option flags and create gl_context struct
-   struct gl_config * visual = _mesa_create_visual( dblFlag,
-                                            stereoFlag,
-                                            red, green, blue, alpha,
-                                            depth,
-                                            stencil,
-                                            accum, accum, accum, accum,
-                                            1
-                                            );
-
-       // Initialize device driver function table
-       _mesa_init_driver_functions(&functions);
-
-       functions.GetString     = md->GetString;
-       functions.UpdateState   = md->UpdateState;
-       functions.GetBufferSize = md->GetBufferSize;
-       functions.Clear                 = md->Clear;
-       functions.ClearIndex    = md->ClearIndex;
-       functions.ClearColor    = md->ClearColor;
-       functions.Error                 = md->Error;
-        functions.Viewport      = md->Viewport;
-
-       // create core context
-       struct gl_context *ctx = _mesa_create_context(API_OPENGL, visual,
-                                                      NULL, &functions, md);
-       if (! ctx) {
-         _mesa_destroy_visual(visual);
-         delete md;
-         return;
-      }
-   _mesa_enable_sw_extensions(ctx);
-   _mesa_enable_1_3_extensions(ctx);
-   _mesa_enable_1_4_extensions(ctx);
-   _mesa_enable_1_5_extensions(ctx);
-
-
-   // create core framebuffer
-   struct gl_framebuffer * buffer = _mesa_create_framebuffer(visual,
-                                              depth > 0 ? GL_TRUE : GL_FALSE,
-                                              stencil > 0 ? GL_TRUE: GL_FALSE,
-                                              accum > 0 ? GL_TRUE : GL_FALSE,
-                                              alphaFlag
-                                              );
-
-   /* Initialize the software rasterizer and helper modules.
-    */
-   _swrast_CreateContext(ctx);
-   _vbo_CreateContext(ctx);
-   _tnl_CreateContext(ctx);
-   _swsetup_CreateContext(ctx);
-   _swsetup_Wakeup(ctx);
-
-   md->Init(this, ctx, visual, buffer );
-
-   // Hook aux data into BGLView object
-   m_gc = md;
-
-   // some stupid applications (Quake2) don't even think about calling LockGL()
-   // before using glGetString and friends... so make sure there is at least a
-   // valid context.
-   if (!_mesa_get_current_context()) {
-      LockGL();
-      // not needed, we don't have a looper yet: UnlockLooper();
-   }
-
-}
-
-
-BGLView::~BGLView()
-{
-   // printf("BGLView destructor\n");
-   MesaDriver * md = (MesaDriver *) m_gc;
-   assert(md);
-   delete md;
-}
-
-void BGLView::LockGL()
-{
-   MesaDriver * md = (MesaDriver *) m_gc;
-   assert(md);
-   md->LockGL();
-}
-
-void BGLView::UnlockGL()
-{
-   MesaDriver * md = (MesaDriver *) m_gc;
-   assert(md);
-   md->UnlockGL();
-}
-
-void BGLView::SwapBuffers()
-{
-       SwapBuffers(false);
-}
-
-void BGLView::SwapBuffers(bool vSync)
-{
-       MesaDriver * md = (MesaDriver *) m_gc;
-       assert(md);
-       md->SwapBuffers();
-
-       if (vSync) {
-               BScreen screen(Window());
-               screen.WaitForRetrace();
-       }
-}
-
-
-#if 0
-void BGLView::CopySubBufferMESA(GLint x, GLint y, GLuint width, GLuint height)
-{
-   MesaDriver * md = (MesaDriver *) m_gc;
-   assert(md);
-   md->CopySubBuffer(x, y, width, height);
-}
-#endif
-
-BView *        BGLView::EmbeddedView()
-{
-       return NULL;
-}
-
-status_t BGLView::CopyPixelsOut(BPoint source, BBitmap *dest)
-{
-       if (! dest || ! dest->Bounds().IsValid())
-               return B_BAD_VALUE;
-
-       MesaDriver * md = (MesaDriver *) m_gc;
-       assert(md);
-       return md->CopyPixelsOut(source, dest);
-}
-
-status_t BGLView::CopyPixelsIn(BBitmap *source, BPoint dest)
-{
-       if (! source || ! source->Bounds().IsValid())
-               return B_BAD_VALUE;
-
-       MesaDriver * md = (MesaDriver *) m_gc;
-       assert(md);
-       return md->CopyPixelsIn(source, dest);
-}
-
-
-void BGLView::ErrorCallback(unsigned long errorCode) // Mesa's GLenum is not ulong but uint!
-{
-       char msg[32];
-       sprintf(msg, "GL: Error code $%04lx.", errorCode);
-       // debugger(msg);
-       fprintf(stderr, "%s\n", msg);
-       return;
-}
-
-void BGLView::Draw(BRect updateRect)
-{
-   // printf("BGLView::Draw()\n");
-   MesaDriver * md = (MesaDriver *) m_gc;
-   assert(md);
-   md->Draw(updateRect);
-}
-
-void BGLView::AttachedToWindow()
-{
-   BView::AttachedToWindow();
-
-   // don't paint window background white when resized
-   SetViewColor(B_TRANSPARENT_32_BIT);
-}
-
-void BGLView::AllAttached()
-{
-   BView::AllAttached();
-//   printf("BGLView AllAttached\n");
-}
-
-void BGLView::DetachedFromWindow()
-{
-   BView::DetachedFromWindow();
-}
-
-void BGLView::AllDetached()
-{
-   BView::AllDetached();
-//   printf("BGLView AllDetached");
-}
-
-void BGLView::FrameResized(float width, float height)
-{
-   return BView::FrameResized(width, height);
-}
-
-status_t BGLView::Perform(perform_code d, void *arg)
-{
-   return BView::Perform(d, arg);
-}
-
-
-status_t BGLView::Archive(BMessage *data, bool deep) const
-{
-   return BView::Archive(data, deep);
-}
-
-void BGLView::MessageReceived(BMessage *msg)
-{
-   BView::MessageReceived(msg);
-}
-
-void BGLView::SetResizingMode(uint32 mode)
-{
-   BView::SetResizingMode(mode);
-}
-
-void BGLView::Show()
-{
-   BView::Show();
-}
-
-void BGLView::Hide()
-{
-   BView::Hide();
-}
-
-BHandler *BGLView::ResolveSpecifier(BMessage *msg, int32 index,
-                                    BMessage *specifier, int32 form,
-                                    const char *property)
-{
-   return BView::ResolveSpecifier(msg, index, specifier, form, property);
-}
-
-status_t BGLView::GetSupportedSuites(BMessage *data)
-{
-   return BView::GetSupportedSuites(data);
-}
-
-void BGLView::DirectConnected( direct_buffer_info *info )
-{
-#if 0
-       if (! m_direct_connected && m_direct_connection_disabled) 
-               return; 
-
-       direct_info_locker->Lock(); 
-       switch(info->buffer_state & B_DIRECT_MODE_MASK) { 
-       case B_DIRECT_START: 
-               m_direct_connected = true;
-       case B_DIRECT_MODIFY: 
-               // Get clipping information 
-               if (m_clip_list)
-                       free(m_clip_list); 
-               m_clip_list_count = info->clip_list_count; 
-               m_clip_list = (clipping_rect *) malloc(m_clip_list_count*sizeof(clipping_rect)); 
-               if (m_clip_list) { 
-                       memcpy(m_clip_list, info->clip_list, m_clip_list_count*sizeof(clipping_rect));
-                       fBits = (uint8 *) info->bits; 
-                       fRowBytes = info->bytes_per_row; 
-                       fFormat = info->pixel_format; 
-                       fBounds = info->window_bounds; 
-                       fDirty = true; 
-               } 
-               break; 
-       case B_DIRECT_STOP: 
-               fConnected = false; 
-               break; 
-       } 
-       direct_info_locker->Unlock(); 
-#endif
-}
-
-void BGLView::EnableDirectMode( bool enabled )
-{
-   // TODO
-}
-
-
-//---- virtual reserved methods ----------
-
-void BGLView::_ReservedGLView1() {}
-void BGLView::_ReservedGLView2() {}
-void BGLView::_ReservedGLView3() {}
-void BGLView::_ReservedGLView4() {}
-void BGLView::_ReservedGLView5() {}
-void BGLView::_ReservedGLView6() {}
-void BGLView::_ReservedGLView7() {}
-void BGLView::_ReservedGLView8() {}
-
-#if 0
-// Not implemented!!!
-
-BGLView::BGLView(const BGLView &v)
-       : BView(v)
-{
-   // XXX not sure how this should work
-   printf("Warning BGLView::copy constructor not implemented\n");
-}
-
-BGLView &BGLView::operator=(const BGLView &v)
-{
-   printf("Warning BGLView::operator= not implemented\n");
-       return *this;
-}
-#endif
-
-void BGLView::dither_front()
-{
-   // no-op
-}
-
-bool BGLView::confirm_dither()
-{
-   // no-op
-   return false;
-}
-
-void BGLView::draw(BRect r)
-{
-   // XXX no-op ???
-}
-
-/* Direct Window stuff */
-void BGLView::drawScanline( int x1, int x2, int y, void *data )
-{
-   // no-op
-}
-
-void BGLView::scanlineHandler(struct rasStateRec *state,
-                              GLint x1, GLint x2)
-{
-   // no-op
-}
-
-void BGLView::lock_draw()
-{
-   // no-op
-}
-
-void BGLView::unlock_draw()
-{
-   // no-op
-}
-
-bool BGLView::validateView()
-{
-   // no-op
-   return true;
-}
-
-// #pragma mark -
-
-MesaDriver::MesaDriver()
-{
-   m_glcontext                 = NULL;
-   m_glvisual          = NULL;
-   m_glframebuffer     = NULL;
-   m_bglview           = NULL;
-   m_bitmap            = NULL;
-
-   m_clear_color[BE_RCOMP] = 0;
-   m_clear_color[BE_GCOMP] = 0;
-   m_clear_color[BE_BCOMP] = 0;
-   m_clear_color[BE_ACOMP] = 0;
-
-   m_clear_index = 0;
-}
-
-
-MesaDriver::~MesaDriver()
-{
-   _mesa_destroy_visual(m_glvisual);
-   _mesa_destroy_framebuffer(m_glframebuffer);
-   _mesa_destroy_context(m_glcontext);
-   
-   delete m_bitmap;
-}
-
-
-void MesaDriver::Init(BGLView * bglview, struct gl_context * ctx, struct gl_config * visual, struct gl_framebuffer * framebuffer)
-{
-       m_bglview               = bglview;
-       m_glcontext     = ctx;
-       m_glvisual              = visual;
-       m_glframebuffer = framebuffer;
-
-       MesaDriver * md = (MesaDriver *) ctx->DriverCtx;
-       struct swrast_device_driver * swdd = _swrast_GetDeviceDriverReference( ctx );
-       TNLcontext * tnl = TNL_CONTEXT(ctx);
-
-       assert(md->m_glcontext == ctx );
-       assert(tnl);
-       assert(swdd);
-
-       // Use default TCL pipeline
-       tnl->Driver.RunPipeline = _tnl_run_pipeline;
-       swdd->SetBuffer = this->SetBuffer;
-}
-
-
-void MesaDriver::LockGL()
-{
-       m_bglview->LockLooper();
-
-   UpdateState(m_glcontext, 0);
-   _mesa_make_current(m_glcontext, m_glframebuffer);
-}
-
-
-void MesaDriver::UnlockGL()
-{
-       if (m_bglview->Looper()->IsLocked())
-               m_bglview->UnlockLooper();
-   // Could call _mesa_make_current(NULL, NULL) but it would just
-   // hinder performance
-}
-
-
-void MesaDriver::SwapBuffers() const
-{
-    _mesa_notifySwapBuffers(m_glcontext);
-
-       if (m_bitmap) {
-               m_bglview->LockLooper();
-               m_bglview->DrawBitmap(m_bitmap);
-               m_bglview->UnlockLooper();
-       };
-}
-
-
-void MesaDriver::CopySubBuffer(GLint x, GLint y, GLuint width, GLuint height) const
-{
-   if (m_bitmap) {
-      // Source bitmap and view's bitmap are same size.
-      // Source and dest rectangle are the same.
-      // Note (x,y) = (0,0) is the lower-left corner, have to flip Y
-      BRect srcAndDest;
-      srcAndDest.left = x;
-      srcAndDest.right = x + width - 1;
-      srcAndDest.bottom = m_bottom - y;
-      srcAndDest.top = srcAndDest.bottom - height + 1;
-      m_bglview->DrawBitmap(m_bitmap, srcAndDest, srcAndDest);
-   }
-}
-
-status_t MesaDriver::CopyPixelsOut(BPoint location, BBitmap *bitmap)
-{
-       color_space scs = m_bitmap->ColorSpace();
-       color_space dcs = bitmap->ColorSpace();
-
-       if (scs != dcs && (scs != B_RGBA32 || dcs != B_RGB32)) {
-               printf("CopyPixelsOut(): incompatible color space: %s != %s\n",
-                       color_space_name(scs),
-                       color_space_name(dcs));
-               return B_BAD_TYPE;
-       }
-       
-       // debugger("CopyPixelsOut()");
-       
-       BRect sr = m_bitmap->Bounds();
-       BRect dr = bitmap->Bounds();
-
-       sr = sr & dr.OffsetBySelf(location);
-       dr = sr.OffsetByCopy(-location.x, -location.y); 
-       
-       uint8 *ps = (uint8 *) m_bitmap->Bits();
-       uint8 *pd = (uint8 *) bitmap->Bits();
-       uint32 *s, *d;
-       uint32 y;
-       for (y = (uint32) sr.top; y <= (uint32) sr.bottom; y++) {
-               s = (uint32 *) (ps + y * m_bitmap->BytesPerRow());
-               s += (uint32) sr.left;
-               
-               d = (uint32 *) (pd + (y + (uint32) (dr.top - sr.top)) * bitmap->BytesPerRow());
-               d += (uint32) dr.left;
-               
-               memcpy(d, s, dr.IntegerWidth() * 4);
-       }
-       return B_OK;
-}
-
-status_t MesaDriver::CopyPixelsIn(BBitmap *bitmap, BPoint location)
-{
-       color_space scs = bitmap->ColorSpace();
-       color_space dcs = m_bitmap->ColorSpace();
-
-       if (scs != dcs && (dcs != B_RGBA32 || scs != B_RGB32)) {
-               printf("CopyPixelsIn(): incompatible color space: %s != %s\n",
-                       color_space_name(scs),
-                       color_space_name(dcs));
-               return B_BAD_TYPE;
-       }
-       
-       // debugger("CopyPixelsIn()");
-
-       BRect sr = bitmap->Bounds();
-       BRect dr = m_bitmap->Bounds();
-
-       sr = sr & dr.OffsetBySelf(location);
-       dr = sr.OffsetByCopy(-location.x, -location.y); 
-       
-       uint8 *ps = (uint8 *) bitmap->Bits();
-       uint8 *pd = (uint8 *) m_bitmap->Bits();
-       uint32 *s, *d;
-       uint32 y;
-       for (y = (uint32) sr.top; y <= (uint32) sr.bottom; y++) {
-               s = (uint32 *) (ps + y * bitmap->BytesPerRow());
-               s += (uint32) sr.left;
-               
-               d = (uint32 *) (pd + (y + (uint32) (dr.top - sr.top)) * m_bitmap->BytesPerRow());
-               d += (uint32) dr.left;
-               
-               memcpy(d, s, dr.IntegerWidth() * 4);
-       }
-       return B_OK;
-}
-
-
-void MesaDriver::Draw(BRect updateRect) const
-{
-   if (m_bitmap)
-      m_bglview->DrawBitmap(m_bitmap, updateRect, updateRect);
-}
-
-
-void MesaDriver::Error(struct gl_context *ctx)
-{
-       MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-       if (md && md->m_bglview)
-               md->m_bglview->ErrorCallback((unsigned long) ctx->ErrorValue);
-}
-
-void MesaDriver::UpdateState( struct gl_context *ctx, GLuint new_state )
-{
-       struct swrast_device_driver *   swdd = _swrast_GetDeviceDriverReference( ctx );
-
-       _swrast_InvalidateState( ctx, new_state );
-       _swsetup_InvalidateState( ctx, new_state );
-       _vbo_InvalidateState( ctx, new_state );
-       _tnl_InvalidateState( ctx, new_state );
-
-       if (ctx->Color.DrawBuffer[0] == GL_FRONT) {
-      /* read/write front buffer */
-      swdd->WriteRGBASpan = MesaDriver::WriteRGBASpanFront;
-      swdd->WriteRGBSpan = MesaDriver::WriteRGBSpanFront;
-      swdd->WriteRGBAPixels = MesaDriver::WriteRGBAPixelsFront;
-      swdd->WriteMonoRGBASpan = MesaDriver::WriteMonoRGBASpanFront;
-      swdd->WriteMonoRGBAPixels = MesaDriver::WriteMonoRGBAPixelsFront;
-      swdd->WriteCI32Span = MesaDriver::WriteCI32SpanFront;
-      swdd->WriteCI8Span = MesaDriver::WriteCI8SpanFront;
-      swdd->WriteMonoCISpan = MesaDriver::WriteMonoCISpanFront;
-      swdd->WriteCI32Pixels = MesaDriver::WriteCI32PixelsFront;
-      swdd->WriteMonoCIPixels = MesaDriver::WriteMonoCIPixelsFront;
-      swdd->ReadRGBASpan = MesaDriver::ReadRGBASpanFront;
-      swdd->ReadRGBAPixels = MesaDriver::ReadRGBAPixelsFront;
-      swdd->ReadCI32Span = MesaDriver::ReadCI32SpanFront;
-      swdd->ReadCI32Pixels = MesaDriver::ReadCI32PixelsFront;
-   }
-   else {
-      /* read/write back buffer */
-      swdd->WriteRGBASpan = MesaDriver::WriteRGBASpanBack;
-      swdd->WriteRGBSpan = MesaDriver::WriteRGBSpanBack;
-      swdd->WriteRGBAPixels = MesaDriver::WriteRGBAPixelsBack;
-      swdd->WriteMonoRGBASpan = MesaDriver::WriteMonoRGBASpanBack;
-      swdd->WriteMonoRGBAPixels = MesaDriver::WriteMonoRGBAPixelsBack;
-      swdd->WriteCI32Span = MesaDriver::WriteCI32SpanBack;
-      swdd->WriteCI8Span = MesaDriver::WriteCI8SpanBack;
-      swdd->WriteMonoCISpan = MesaDriver::WriteMonoCISpanBack;
-      swdd->WriteCI32Pixels = MesaDriver::WriteCI32PixelsBack;
-      swdd->WriteMonoCIPixels = MesaDriver::WriteMonoCIPixelsBack;
-      swdd->ReadRGBASpan = MesaDriver::ReadRGBASpanBack;
-      swdd->ReadRGBAPixels = MesaDriver::ReadRGBAPixelsBack;
-      swdd->ReadCI32Span = MesaDriver::ReadCI32SpanBack;
-      swdd->ReadCI32Pixels = MesaDriver::ReadCI32PixelsBack;
-    }
-}
-
-
-void MesaDriver::ClearIndex(struct gl_context *ctx, GLuint index)
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   md->m_clear_index = index;
-}
-
-
-void MesaDriver::ClearColor(struct gl_context *ctx, const GLfloat color[4])
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   CLAMPED_FLOAT_TO_CHAN(md->m_clear_color[BE_RCOMP], color[0]);
-   CLAMPED_FLOAT_TO_CHAN(md->m_clear_color[BE_GCOMP], color[1]);
-   CLAMPED_FLOAT_TO_CHAN(md->m_clear_color[BE_BCOMP], color[2]);
-   CLAMPED_FLOAT_TO_CHAN(md->m_clear_color[BE_ACOMP], color[3]); 
-   assert(md->m_bglview);
-}
-
-
-void MesaDriver::Clear(struct gl_context *ctx, GLbitfield mask,
-                               GLboolean all, GLint x, GLint y,
-                               GLint width, GLint height)
-{
-   if (mask & DD_FRONT_LEFT_BIT)
-               ClearFront(ctx, all, x, y, width, height);
-   if (mask & DD_BACK_LEFT_BIT)
-               ClearBack(ctx, all, x, y, width, height);
-
-       mask &= ~(DD_FRONT_LEFT_BIT | DD_BACK_LEFT_BIT);
-       if (mask)
-               _swrast_Clear( ctx, mask, all, x, y, width, height );
-
-   return;
-}
-
-
-void MesaDriver::ClearFront(struct gl_context *ctx,
-                         GLboolean all, GLint x, GLint y,
-                         GLint width, GLint height)
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   BGLView *bglview = md->m_bglview;
-   assert(bglview);
-
-   bglview->SetHighColor(md->m_clear_color[BE_RCOMP],
-                         md->m_clear_color[BE_GCOMP],
-                         md->m_clear_color[BE_BCOMP],
-                         md->m_clear_color[BE_ACOMP]);
-   bglview->SetLowColor(md->m_clear_color[BE_RCOMP],
-                        md->m_clear_color[BE_GCOMP],
-                        md->m_clear_color[BE_BCOMP],
-                        md->m_clear_color[BE_ACOMP]);
-   if (all) {
-      BRect b = bglview->Bounds();
-      bglview->FillRect(b);
-   }
-   else {
-      // XXX untested
-      BRect b;
-      b.left = x;
-      b.right = x + width;
-      b.bottom = md->m_height - y - 1;
-      b.top = b.bottom - height;
-      bglview->FillRect(b);
-   }
-
-   // restore drawing color
-#if 0
-   bglview->SetHighColor(md->mColor[BE_RCOMP],
-                         md->mColor[BE_GCOMP],
-                         md->mColor[BE_BCOMP],
-                         md->mColor[BE_ACOMP]);
-   bglview->SetLowColor(md->mColor[BE_RCOMP],
-                        md->mColor[BE_GCOMP],
-                        md->mColor[BE_BCOMP],
-                        md->mColor[BE_ACOMP]);
-#endif
-}
-
-
-void MesaDriver::ClearBack(struct gl_context *ctx,
-                        GLboolean all, GLint x, GLint y,
-                        GLint width, GLint height)
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   BGLView *bglview = md->m_bglview;
-   assert(bglview);
-   BBitmap *bitmap = md->m_bitmap;
-   assert(bitmap);
-   GLuint *start = (GLuint *) bitmap->Bits();
-   const GLuint *clearPixelPtr = (const GLuint *) md->m_clear_color;
-   const GLuint clearPixel = B_LENDIAN_TO_HOST_INT32(*clearPixelPtr);
-
-   if (all) {
-      const int numPixels = md->m_width * md->m_height;
-      if (clearPixel == 0) {
-         memset(start, 0, numPixels * 4);
-      }
-      else {
-         for (int i = 0; i < numPixels; i++) {
-             start[i] = clearPixel;
-         }
-      }
-   }
-   else {
-      // XXX untested
-      start += y * md->m_width + x;
-      for (int i = 0; i < height; i++) {
-         for (int j = 0; j < width; j++) {
-            start[j] = clearPixel;
-         }
-         start += md->m_width;
-      }
-   }
-}
-
-
-void MesaDriver::SetBuffer(struct gl_context *ctx, struct gl_framebuffer *buffer,
-                            GLenum mode)
-{
-   /* TODO */
-       (void) ctx;
-       (void) buffer;
-       (void) mode;
-}
-
-void MesaDriver::GetBufferSize(struct gl_framebuffer * framebuffer, GLuint *width,
-                            GLuint *height)
-{
-   GET_CURRENT_CONTEXT(ctx);
-   if (!ctx)
-               return;
-
-   MesaDriver * md = (MesaDriver *) ctx->DriverCtx;
-   BGLView *bglview = md->m_bglview;
-   assert(bglview);
-
-   BRect b = bglview->Bounds();
-   *width = (GLuint) b.IntegerWidth() + 1; // (b.right - b.left + 1);
-   *height = (GLuint) b.IntegerHeight() + 1; // (b.bottom - b.top + 1);
-   md->m_bottom = (GLint) b.bottom;
-
-   if (ctx->Visual.doubleBufferMode) {
-      if (*width != md->m_width || *height != md->m_height) {
-         // allocate new size of back buffer bitmap
-         if (md->m_bitmap)
-            delete md->m_bitmap;
-         BRect rect(0.0, 0.0, *width - 1, *height - 1);
-         md->m_bitmap = new BBitmap(rect, B_RGBA32);
-      }
-   }
-   else
-   {
-      md->m_bitmap = NULL;
-   }
-
-   md->m_width = *width;
-   md->m_height = *height;
-}
-
-
-void MesaDriver::Viewport(struct gl_context *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
-{
-   /* poll for window size change and realloc software Z/stencil/etc if needed */
-   _mesa_ResizeBuffersMESA();
-}
-
-
-const GLubyte *MesaDriver::GetString(struct gl_context *ctx, GLenum name)
-{
-   switch (name) {
-      case GL_RENDERER:
-         return (const GLubyte *) "Mesa " MESA_VERSION_STRING " powered BGLView (software)";
-      default:
-         // Let core library handle all other cases
-         return NULL;
-   }
-}
-
-
-// Plot a pixel.  (0,0) is upper-left corner
-// This is only used when drawing to the front buffer.
-inline void Plot(BGLView *bglview, int x, int y)
-{
-   // XXX There's got to be a better way!
-   BPoint p(x, y), q(x+1, y);
-   bglview->StrokeLine(p, q);
-}
-
-
-void MesaDriver::WriteRGBASpanFront(const struct gl_context *ctx, GLuint n,
-                                 GLint x, GLint y,
-                                 CONST GLubyte rgba[][4],
-                                 const GLubyte mask[])
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   BGLView *bglview = md->m_bglview;
-   assert(bglview);
-   int flippedY = md->m_bottom - y;
-   if (mask) {
-      for (GLuint i = 0; i < n; i++) {
-         if (mask[i]) {
-            bglview->SetHighColor(rgba[i][0], rgba[i][1], rgba[i][2], rgba[i][3]);
-            Plot(bglview, x++, flippedY);
-         }
-      }
-   }
-   else {
-      for (GLuint i = 0; i < n; i++) {
-         bglview->SetHighColor(rgba[i][0], rgba[i][1], rgba[i][2], rgba[i][3]);
-         Plot(bglview, x++, flippedY);
-      }
-   }
-}
-
-void MesaDriver::WriteRGBSpanFront(const struct gl_context *ctx, GLuint n,
-                                GLint x, GLint y,
-                                CONST GLubyte rgba[][3],
-                                const GLubyte mask[])
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   BGLView *bglview = md->m_bglview;
-   assert(bglview);
-   int flippedY = md->m_bottom - y;
-   if (mask) {
-      for (GLuint i = 0; i < n; i++) {
-         if (mask[i]) {
-            bglview->SetHighColor(rgba[i][0], rgba[i][1], rgba[i][2]);
-            Plot(bglview, x++, flippedY);
-         }
-      }
-   }
-   else {
-      for (GLuint i = 0; i < n; i++) {
-         bglview->SetHighColor(rgba[i][0], rgba[i][1], rgba[i][2]);
-         Plot(bglview, x++, flippedY);
-      }
-   }
-}
-
-void MesaDriver::WriteMonoRGBASpanFront(const struct gl_context *ctx, GLuint n,
-                                     GLint x, GLint y,
-                                     const GLchan color[4],
-                                     const GLubyte mask[])
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   BGLView *bglview = md->m_bglview;
-   assert(bglview);
-   int flippedY = md->m_bottom - y;
-   bglview->SetHighColor(color[RCOMP], color[GCOMP], color[BCOMP]);
-   if (mask) {
-      for (GLuint i = 0; i < n; i++) {
-         if (mask[i]) {
-            Plot(bglview, x++, flippedY);
-         }
-      }
-   }
-   else {
-      for (GLuint i = 0; i < n; i++) {
-         Plot(bglview, x++, flippedY);
-      }
-   }
-}
-
-void MesaDriver::WriteRGBAPixelsFront(const struct gl_context *ctx,
-                                   GLuint n, const GLint x[], const GLint y[],
-                                   CONST GLubyte rgba[][4],
-                                   const GLubyte mask[] )
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   BGLView *bglview = md->m_bglview;
-   assert(bglview);
-   if (mask) {
-      for (GLuint i = 0; i < n; i++) {
-         if (mask[i]) {
-            bglview->SetHighColor(rgba[i][0], rgba[i][1], rgba[i][2]);
-            Plot(bglview, x[i], md->m_bottom - y[i]);
-         }
-      }
-   }
-   else {
-      for (GLuint i = 0; i < n; i++) {
-         bglview->SetHighColor(rgba[i][0], rgba[i][1], rgba[i][2]);
-         Plot(bglview, x[i], md->m_bottom - y[i]);
-      }
-   }
-}
-
-
-void MesaDriver::WriteMonoRGBAPixelsFront(const struct gl_context *ctx, GLuint n,
-                                       const GLint x[], const GLint y[],
-                                       const GLchan color[4],
-                                       const GLubyte mask[])
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   BGLView *bglview = md->m_bglview;
-   assert(bglview);
-   // plot points using current color
-   bglview->SetHighColor(color[RCOMP], color[GCOMP], color[BCOMP]);
-   if (mask) {
-      for (GLuint i = 0; i < n; i++) {
-         if (mask[i]) {
-            Plot(bglview, x[i], md->m_bottom - y[i]);
-         }
-      }
-   }
-   else {
-      for (GLuint i = 0; i < n; i++) {
-         Plot(bglview, x[i], md->m_bottom - y[i]);
-      }
-   }
-}
-
-
-void MesaDriver::WriteCI32SpanFront( const struct gl_context *ctx, GLuint n, GLint x, GLint y,
-                             const GLuint index[], const GLubyte mask[] )
-{
-       printf("WriteCI32SpanFront() not implemented yet!\n");
-   // TODO
-}
-
-void MesaDriver::WriteCI8SpanFront( const struct gl_context *ctx, GLuint n, GLint x, GLint y,
-                            const GLubyte index[], const GLubyte mask[] )
-{
-       printf("WriteCI8SpanFront() not implemented yet!\n");
-   // TODO
-}
-
-void MesaDriver::WriteMonoCISpanFront( const struct gl_context *ctx, GLuint n,
-                                    GLint x, GLint y,
-                                    GLuint colorIndex, const GLubyte mask[] )
-{
-       printf("WriteMonoCISpanFront() not implemented yet!\n");
-   // TODO
-}
-
-
-void MesaDriver::WriteCI32PixelsFront( const struct gl_context *ctx, GLuint n,
-                                    const GLint x[], const GLint y[],
-                                    const GLuint index[], const GLubyte mask[] )
-{
-       printf("WriteCI32PixelsFront() not implemented yet!\n");
-   // TODO
-}
-
-void MesaDriver::WriteMonoCIPixelsFront( const struct gl_context *ctx, GLuint n,
-                                      const GLint x[], const GLint y[],
-                                      GLuint colorIndex, const GLubyte mask[] )
-{
-       printf("WriteMonoCIPixelsFront() not implemented yet!\n");
-   // TODO
-}
-
-
-void MesaDriver::ReadCI32SpanFront( const struct gl_context *ctx,
-                                 GLuint n, GLint x, GLint y, GLuint index[] )
-{
-       printf("ReadCI32SpanFront() not implemented yet!\n");
-  // TODO
-}
-
-
-void MesaDriver::ReadRGBASpanFront( const struct gl_context *ctx, GLuint n,
-                                 GLint x, GLint y, GLubyte rgba[][4] )
-{
-       printf("ReadRGBASpanFront() not implemented yet!\n");
-   // TODO
-}
-
-
-void MesaDriver::ReadCI32PixelsFront( const struct gl_context *ctx,
-                                   GLuint n, const GLint x[], const GLint y[],
-                                   GLuint indx[], const GLubyte mask[] )
-{
-       printf("ReadCI32PixelsFront() not implemented yet!\n");
-   // TODO
-}
-
-
-void MesaDriver::ReadRGBAPixelsFront( const struct gl_context *ctx,
-                                   GLuint n, const GLint x[], const GLint y[],
-                                   GLubyte rgba[][4], const GLubyte mask[] )
-{
-       printf("ReadRGBAPixelsFront() not implemented yet!\n");
-   // TODO
-}
-
-
-
-
-void MesaDriver::WriteRGBASpanBack(const struct gl_context *ctx, GLuint n,
-                                 GLint x, GLint y,
-                                 CONST GLubyte rgba[][4],
-                                 const GLubyte mask[])
-{
-       MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-       BBitmap *bitmap = md->m_bitmap;
-
-       assert(bitmap);
-
-       int row = md->m_bottom - y;
-       uint8 * ptr = (uint8 *) bitmap->Bits() + (row * bitmap->BytesPerRow()) + x * 4;
-       uint32 * pixel = (uint32 *) ptr;
-       
-       if (mask) {
-               while(n--) {
-                       if (*mask++)
-                               *pixel = PACK_B_RGBA32(rgba[0]);
-                       pixel++;
-                       rgba++;
-               };
-       } else {
-               while(n--) {
-                       *pixel++ = PACK_B_RGBA32(rgba[0]);
-                       rgba++;
-               };
-       };
- }
-
-
-void MesaDriver::WriteRGBSpanBack(const struct gl_context *ctx, GLuint n,
-                                GLint x, GLint y,
-                                CONST GLubyte rgb[][3],
-                                const GLubyte mask[])
-{
-       MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-       BBitmap *bitmap = md->m_bitmap;
-
-       assert(bitmap);
-
-       int row = md->m_bottom - y;
-       uint8 * ptr = (uint8 *) bitmap->Bits() + (row * bitmap->BytesPerRow()) + x * 4;
-       uint32 * pixel = (uint32 *) ptr;
-       
-       if (mask) {
-               while(n--) {
-                       if (*mask++)
-                               *pixel = PACK_B_RGB32(rgb[0]);
-                       pixel++;
-                       rgb++;
-               };
-       } else {
-               while(n--) {
-                       *pixel++ = PACK_B_RGB32(rgb[0]);
-                       rgb++;
-               };
-       };
-}
-
-
-
-
-void MesaDriver::WriteMonoRGBASpanBack(const struct gl_context *ctx, GLuint n,
-                                    GLint x, GLint y,
-                                    const GLchan color[4], const GLubyte mask[])
-{
-       MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-       BBitmap *bitmap = md->m_bitmap;
-
-       assert(bitmap);
-
-       int row = md->m_bottom - y;
-       uint8 * ptr = (uint8 *) bitmap->Bits() + (row * bitmap->BytesPerRow()) + x * 4;
-       uint32 * pixel = (uint32 *) ptr;
-       uint32 pixel_color = PACK_B_RGBA32(color);
-       
-       if (mask) {
-               while(n--) {
-                       if (*mask++)
-                               *pixel = pixel_color;
-                       pixel++;
-               };
-       } else {
-               while(n--) {
-                       *pixel++ = pixel_color;
-               };
-       };
-}
-
-
-void MesaDriver::WriteRGBAPixelsBack(const struct gl_context *ctx,
-                                   GLuint n, const GLint x[], const GLint y[],
-                                   CONST GLubyte rgba[][4],
-                                   const GLubyte mask[] )
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   BBitmap *bitmap = md->m_bitmap;
-
-       assert(bitmap);
-#if 0
-       while(n--) {
-               if (*mask++) {
-                       int row = md->m_bottom - *y;
-                       uint8 * pixel = (uint8 *) bitmap->Bits() + (row * bitmap->BytesPerRow()) + *x * 4;
-                       *((uint32 *) pixel) = PACK_B_RGBA32(rgba[0]);
-               };
-               x++;
-               y++;
-               rgba++;
-       };
-#else
-   if (mask) {
-      for (GLuint i = 0; i < n; i++) {
-         if (mask[i]) {
-            GLubyte *pixel = (GLubyte *) bitmap->Bits()
-            + ((md->m_bottom - y[i]) * bitmap->BytesPerRow()) + x[i] * 4;
-            pixel[BE_RCOMP] = rgba[i][RCOMP];
-            pixel[BE_GCOMP] = rgba[i][GCOMP];
-            pixel[BE_BCOMP] = rgba[i][BCOMP];
-            pixel[BE_ACOMP] = rgba[i][ACOMP];
-         }
-      }
-   }
-   else {
-      for (GLuint i = 0; i < n; i++) {
-         GLubyte *pixel = (GLubyte *) bitmap->Bits()
-            + ((md->m_bottom - y[i]) * bitmap->BytesPerRow()) + x[i] * 4;
-         pixel[BE_RCOMP] = rgba[i][RCOMP];
-         pixel[BE_GCOMP] = rgba[i][GCOMP];
-         pixel[BE_BCOMP] = rgba[i][BCOMP];
-         pixel[BE_ACOMP] = rgba[i][ACOMP];
-      }
-   }
-#endif
-}
-
-
-void MesaDriver::WriteMonoRGBAPixelsBack(const struct gl_context *ctx, GLuint n,
-                                      const GLint x[], const GLint y[],
-                                      const GLchan color[4],
-                                      const GLubyte mask[])
-{
-       MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-       BBitmap *bitmap = md->m_bitmap;
-
-       assert(bitmap);
-
-       uint32 pixel_color = PACK_B_RGBA32(color);
-#if 0  
-       while(n--) {
-               if (*mask++) {
-                       int row = md->m_bottom - *y;
-                       uint8 * pixel = (uint8 *) bitmap->Bits() + (row * bitmap->BytesPerRow()) + *x * 4;
-
-                       *((uint32 *) pixel) = pixel_color;
-               };
-               x++;
-               y++;
-       };
-#else
-   if (mask) {
-      for (GLuint i = 0; i < n; i++) {
-         if (mask[i]) {
-               GLubyte * ptr = (GLubyte *) bitmap->Bits()
-               + ((md->m_bottom - y[i]) * bitmap->BytesPerRow()) + x[i] * 4;
-            *((uint32 *) ptr) = pixel_color;
-         }
-      }
-   }
-   else {
-         for (GLuint i = 0; i < n; i++) {
-               GLubyte * ptr = (GLubyte *) bitmap->Bits()
-                       + ((md->m_bottom - y[i]) * bitmap->BytesPerRow()) + x[i] * 4;
-       *((uint32 *) ptr) = pixel_color;
-      }
-   }
-#endif
-}
-
-
-void MesaDriver::WriteCI32SpanBack( const struct gl_context *ctx, GLuint n,
-                                 GLint x, GLint y,
-                                 const GLuint index[], const GLubyte mask[] )
-{
-       printf("WriteCI32SpanBack() not implemented yet!\n");
-   // TODO
-}
-
-void MesaDriver::WriteCI8SpanBack( const struct gl_context *ctx, GLuint n,
-                                GLint x, GLint y,
-                                const GLubyte index[], const GLubyte mask[] )
-{
-       printf("WriteCI8SpanBack() not implemented yet!\n");
-  // TODO
-}
-
-void MesaDriver::WriteMonoCISpanBack( const struct gl_context *ctx, GLuint n,
-                                   GLint x, GLint y,
-                                   GLuint colorIndex, const GLubyte mask[] )
-{
-       printf("WriteMonoCISpanBack() not implemented yet!\n");
-   // TODO
-}
-
-
-void MesaDriver::WriteCI32PixelsBack( const struct gl_context *ctx, GLuint n,
-                                   const GLint x[], const GLint y[],
-                                   const GLuint index[], const GLubyte mask[] )
-{
-       printf("WriteCI32PixelsBack() not implemented yet!\n");
-   // TODO
-}
-
-void MesaDriver::WriteMonoCIPixelsBack( const struct gl_context *ctx, GLuint n,
-                                     const GLint x[], const GLint y[],
-                                     GLuint colorIndex, const GLubyte mask[] )
-{
-       printf("WriteMonoCIPixelsBack() not implemented yet!\n");
-   // TODO
-}
-
-
-void MesaDriver::ReadCI32SpanBack( const struct gl_context *ctx,
-                                GLuint n, GLint x, GLint y, GLuint index[] )
-{
-       printf("ReadCI32SpanBack() not implemented yet!\n");
-   // TODO
-}
-
-
-void MesaDriver::ReadRGBASpanBack( const struct gl_context *ctx, GLuint n,
-                                GLint x, GLint y, GLubyte rgba[][4] )
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   const BBitmap *bitmap = md->m_bitmap;
-   assert(bitmap);
-   int row = md->m_bottom - y;
-   const GLubyte *pixel = (GLubyte *) bitmap->Bits()
-                        + (row * bitmap->BytesPerRow()) + x * 4;
-
-   for (GLuint i = 0; i < n; i++) {
-      rgba[i][RCOMP] = pixel[BE_RCOMP];
-      rgba[i][GCOMP] = pixel[BE_GCOMP];
-      rgba[i][BCOMP] = pixel[BE_BCOMP];
-      rgba[i][ACOMP] = pixel[BE_ACOMP];
-      pixel += 4;
-   }
-}
-
-
-void MesaDriver::ReadCI32PixelsBack( const struct gl_context *ctx,
-                                   GLuint n, const GLint x[], const GLint y[],
-                                   GLuint indx[], const GLubyte mask[] )
-{
-       printf("ReadCI32PixelsBack() not implemented yet!\n");
-   // TODO
-}
-
-
-void MesaDriver::ReadRGBAPixelsBack( const struct gl_context *ctx,
-                                  GLuint n, const GLint x[], const GLint y[],
-                                  GLubyte rgba[][4], const GLubyte mask[] )
-{
-   MesaDriver *md = (MesaDriver *) ctx->DriverCtx;
-   const BBitmap *bitmap = md->m_bitmap;
-   assert(bitmap);
-
-   if (mask) {
-      for (GLuint i = 0; i < n; i++) {
-         if (mask[i]) {
-            GLubyte *pixel = (GLubyte *) bitmap->Bits()
-            + ((md->m_bottom - y[i]) * bitmap->BytesPerRow()) + x[i] * 4;
-                rgba[i][RCOMP] = pixel[BE_RCOMP];
-            rgba[i][GCOMP] = pixel[BE_GCOMP];
-                rgba[i][BCOMP] = pixel[BE_BCOMP];
-                rgba[i][ACOMP] = pixel[BE_ACOMP];
-         };
-      };
-   } else {
-      for (GLuint i = 0; i < n; i++) {
-         GLubyte *pixel = (GLubyte *) bitmap->Bits()
-            + ((md->m_bottom - y[i]) * bitmap->BytesPerRow()) + x[i] * 4;
-         rgba[i][RCOMP] = pixel[BE_RCOMP];
-         rgba[i][GCOMP] = pixel[BE_GCOMP];
-         rgba[i][BCOMP] = pixel[BE_BCOMP];
-         rgba[i][ACOMP] = pixel[BE_ACOMP];
-      };
-   };
-}
-
-const char * color_space_name(color_space space)
-{
-#define C2N(a) case a: return #a
-
-       switch (space) {
-       C2N(B_RGB24);
-       C2N(B_RGB32);
-       C2N(B_RGBA32);
-       C2N(B_RGB32_BIG);
-       C2N(B_RGBA32_BIG);
-       C2N(B_GRAY8);
-       C2N(B_GRAY1);
-       C2N(B_RGB16);
-       C2N(B_RGB15);
-       C2N(B_RGBA15);
-       C2N(B_CMAP8);
-       default:
-               return "Unknown!";
-       };
-
-#undef C2N
-};
-
-
diff --git a/src/mesa/drivers/beos/Makefile b/src/mesa/drivers/beos/Makefile
deleted file mode 100644 (file)
index c79dd24..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-# src/mesa/drivers/beos/Makefile
-
-TOP = ../../../..
-include $(TOP)/configs/current
-
-include $(TOP)/src/mesa/sources
-
-MESA_MODULES = $(TOP)/src/mesa/mesa.a
-# To switch back to old Mesa GLU implementation (but why do
-# you want this!), uncomment this next line:
-
-# GLU_DIR      = $(TOP)/src/glu/mesa
-ifeq ($(GLU_DIR),)
-# By default, we build the SGI GLU implementation
-       GLU_DIR = $(TOP)/src/glu/sgi
-endif
-
-ifeq ($(GLU_DIR), $(TOP)/src/glu/mesa)
-       GLU_MODULES = \
-               $(GLU_DIR)/glu.o \
-               $(GLU_DIR)/mipmap.o \
-               $(GLU_DIR)/nurbs.o \
-               $(GLU_DIR)/nurbscrv.o \
-               $(GLU_DIR)/nurbssrf.o \
-               $(GLU_DIR)/nurbsutl.o \
-               $(GLU_DIR)/polytest.o \
-               $(GLU_DIR)/project.o \
-               $(GLU_DIR)/quadric.o \
-               $(GLU_DIR)/tess.o \
-               $(GLU_DIR)/tesselat.o
-else
-       GLU_MODULES = \
-               $(GLU_DIR)/libutil/error.o \
-               $(GLU_DIR)/libutil/glue.o \
-               $(GLU_DIR)/libutil/mipmap.o     \
-               $(GLU_DIR)/libutil/project.o \
-               $(GLU_DIR)/libutil/quad.o \
-               $(GLU_DIR)/libutil/registry.o \
-               $(GLU_DIR)/libtess/dict.o \
-               $(GLU_DIR)/libtess/geom.o \
-               $(GLU_DIR)/libtess/memalloc.o \
-               $(GLU_DIR)/libtess/mesh.o \
-               $(GLU_DIR)/libtess/normal.o     \
-               $(GLU_DIR)/libtess/priorityq.o \
-               $(GLU_DIR)/libtess/render.o     \
-               $(GLU_DIR)/libtess/sweep.o \
-               $(GLU_DIR)/libtess/tess.o \
-               $(GLU_DIR)/libtess/tessmono.o \
-               $(GLU_DIR)/libnurbs/interface/bezierEval.o              \
-               $(GLU_DIR)/libnurbs/interface/bezierPatch.o             \
-               $(GLU_DIR)/libnurbs/interface/bezierPatchMesh.o         \
-               $(GLU_DIR)/libnurbs/interface/glcurveval.o              \
-               $(GLU_DIR)/libnurbs/interface/glinterface.o             \
-               $(GLU_DIR)/libnurbs/interface/glrenderer.o              \
-               $(GLU_DIR)/libnurbs/interface/glsurfeval.o              \
-               $(GLU_DIR)/libnurbs/interface/incurveeval.o             \
-               $(GLU_DIR)/libnurbs/interface/insurfeval.o              \
-               $(GLU_DIR)/libnurbs/internals/arc.o                     \
-               $(GLU_DIR)/libnurbs/internals/arcsorter.o                       \
-               $(GLU_DIR)/libnurbs/internals/arctess.o                 \
-               $(GLU_DIR)/libnurbs/internals/backend.o                 \
-               $(GLU_DIR)/libnurbs/internals/basiccrveval.o            \
-               $(GLU_DIR)/libnurbs/internals/basicsurfeval.o           \
-               $(GLU_DIR)/libnurbs/internals/bin.o                     \
-               $(GLU_DIR)/libnurbs/internals/bufpool.o                 \
-               $(GLU_DIR)/libnurbs/internals/cachingeval.o             \
-               $(GLU_DIR)/libnurbs/internals/ccw.o                     \
-               $(GLU_DIR)/libnurbs/internals/coveandtiler.o            \
-               $(GLU_DIR)/libnurbs/internals/curve.o                   \
-               $(GLU_DIR)/libnurbs/internals/curvelist.o                       \
-               $(GLU_DIR)/libnurbs/internals/curvesub.o                        \
-               $(GLU_DIR)/libnurbs/internals/dataTransform.o           \
-               $(GLU_DIR)/libnurbs/internals/displaylist.o             \
-               $(GLU_DIR)/libnurbs/internals/flist.o                   \
-               $(GLU_DIR)/libnurbs/internals/flistsorter.o             \
-               $(GLU_DIR)/libnurbs/internals/hull.o                    \
-               $(GLU_DIR)/libnurbs/internals/intersect.o                       \
-               $(GLU_DIR)/libnurbs/internals/knotvector.o              \
-               $(GLU_DIR)/libnurbs/internals/mapdesc.o                 \
-               $(GLU_DIR)/libnurbs/internals/mapdescv.o                        \
-               $(GLU_DIR)/libnurbs/internals/maplist.o                 \
-               $(GLU_DIR)/libnurbs/internals/mesher.o                  \
-               $(GLU_DIR)/libnurbs/internals/monoTriangulationBackend.o        \
-               $(GLU_DIR)/libnurbs/internals/monotonizer.o             \
-               $(GLU_DIR)/libnurbs/internals/mycode.o                  \
-               $(GLU_DIR)/libnurbs/internals/nurbsinterfac.o           \
-               $(GLU_DIR)/libnurbs/internals/nurbstess.o                       \
-               $(GLU_DIR)/libnurbs/internals/patch.o                   \
-               $(GLU_DIR)/libnurbs/internals/patchlist.o                       \
-               $(GLU_DIR)/libnurbs/internals/quilt.o                   \
-               $(GLU_DIR)/libnurbs/internals/reader.o                  \
-               $(GLU_DIR)/libnurbs/internals/renderhints.o             \
-               $(GLU_DIR)/libnurbs/internals/slicer.o                  \
-               $(GLU_DIR)/libnurbs/internals/sorter.o                  \
-               $(GLU_DIR)/libnurbs/internals/splitarcs.o                       \
-               $(GLU_DIR)/libnurbs/internals/subdivider.o              \
-               $(GLU_DIR)/libnurbs/internals/tobezier.o                        \
-               $(GLU_DIR)/libnurbs/internals/trimline.o                        \
-               $(GLU_DIR)/libnurbs/internals/trimregion.o              \
-               $(GLU_DIR)/libnurbs/internals/trimvertpool.o            \
-               $(GLU_DIR)/libnurbs/internals/uarray.o                  \
-               $(GLU_DIR)/libnurbs/internals/varray.o                  \
-               $(GLU_DIR)/libnurbs/nurbtess/directedLine.o             \
-               $(GLU_DIR)/libnurbs/nurbtess/gridWrap.o                 \
-               $(GLU_DIR)/libnurbs/nurbtess/monoChain.o                        \
-               $(GLU_DIR)/libnurbs/nurbtess/monoPolyPart.o             \
-               $(GLU_DIR)/libnurbs/nurbtess/monoTriangulation.o                \
-               $(GLU_DIR)/libnurbs/nurbtess/partitionX.o                       \
-               $(GLU_DIR)/libnurbs/nurbtess/partitionY.o                       \
-               $(GLU_DIR)/libnurbs/nurbtess/polyDBG.o                  \
-               $(GLU_DIR)/libnurbs/nurbtess/polyUtil.o                 \
-               $(GLU_DIR)/libnurbs/nurbtess/primitiveStream.o          \
-               $(GLU_DIR)/libnurbs/nurbtess/quicksort.o                        \
-               $(GLU_DIR)/libnurbs/nurbtess/rectBlock.o                        \
-               $(GLU_DIR)/libnurbs/nurbtess/sampleComp.o                       \
-               $(GLU_DIR)/libnurbs/nurbtess/sampleCompBot.o            \
-               $(GLU_DIR)/libnurbs/nurbtess/sampleCompRight.o          \
-               $(GLU_DIR)/libnurbs/nurbtess/sampleCompTop.o            \
-               $(GLU_DIR)/libnurbs/nurbtess/sampleMonoPoly.o           \
-               $(GLU_DIR)/libnurbs/nurbtess/sampledLine.o              \
-               $(GLU_DIR)/libnurbs/nurbtess/searchTree.o
-endif
-
-INCLUDES = \
-       -I../common \
-       -I$(TOP)/src/mesa \
-       -I$(TOP)/src/mesa/array_cache \
-       -I$(TOP)/src/mesa/main \
-       -I$(TOP)/src/mesa/glapi \
-       -I$(TOP)/src/mesa/math \
-       -I$(TOP)/src/mesa/shader \
-       -I$(TOP)/src/mesa/swrast \
-       -I$(TOP)/src/mesa/swrast_setup \
-       -I$(TOP)/src/mesa/tnl \
-       -I$(TOP)/src/mesa/tnl_dd \
-       -I$(TOP)/src/mesa/x86 \
-       -I. \
-       -I- \
-       -I$(TOP)/include
-
-DRIVER_SOURCES = \
-       GLView.cpp \
-       ../common/driverfuncs.c \
-       $(addprefix ../../, $(GLAPI_SOURCES))
-
-ifeq ($(CPU), x86)
-       DRIVER_SOURCES += $(addprefix ../../, $(X86_API))
-else
-# No GL API PPC optimization yet
-endif 
-
-DRIVER_OBJECTS = $(DRIVER_SOURCES:.c=.o)
-DRIVER_OBJECTS := $(DRIVER_OBJECTS:.S=.o)
-
-OBJECTS := $(DRIVER_OBJECTS:.cpp=.o)
-
-
-# Rules
-
-.c.o:
-       $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
-
-.cpp.o:
-       $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
-
-.S.o:
-       $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
-
-
-default: depend $(TOP)/$(LIB_DIR) $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME)
-
-# XXX FIXME: mesa.a might be libmesa.a now
-$(MESA_MODULES):
-       cd $(TOP)/src/mesa && $(MAKE) mesa.a ;
-       mimeset -f "$@"
-
-$(GLU_MODULES):
-       cd $(GLU_DIR) && $(MAKE) $(subst $(GLU_DIR)/,,$(GLU_MODULES)) ;
-
-$(TOP)/$(LIB_DIR):
-       mkdir $(TOP)/$(LIB_DIR)
-
-$(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) $(MESA_MODULES) $(GLU_MODULES)
-       @$(MKLIB) -o $(GL_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
-               -major $(MESA_MAJOR) -minor $(MESA_MINOR) -patch $(MESA_TINY) \
-               -install $(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) $(GL_LIB_DEPS) \
-               $(OBJECTS) $(MESA_MODULES) $(GLU_MODULES)
-
-# $(GLU_OBJECTS):
-#      cd $(GLU_DIR) && $(MAKE) $< ;
-
-depend: $(DRIVER_SOURCES) $(GLU_SOURCES)
-       touch depend
-       $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(DRIVER_SOURCES) $(GLU_SOURCES) > /dev/null 
-
-clean:
-       -rm -f depend depend.bak $(OBJECTS)
-
-include depend
index f8e9661f9ccd601406c082050742fda957604190..7df65cf9a253c202ee52a9271adab9799214fe0b 100644 (file)
@@ -59,11 +59,6 @@ extern "C" {
 typedef struct tfxMesaContext *fxMesaContext;
 
 
-#if defined (__BEOS__)
-#pragma export on
-#endif
-
-
 GLAPI fxMesaContext GLAPIENTRY fxMesaCreateContext(GLuint win, GrScreenResolution_t,
                                                  GrScreenRefresh_t,
                                                  const GLint attribList[]);
@@ -89,12 +84,6 @@ GLAPI void GLAPIENTRY fxCloseHardware(void);
 
 GLAPI void GLAPIENTRY fxGetScreenGeometry (GLint *w, GLint *h);
 
-
-#if defined (__BEOS__)
-#pragma export off
-#endif
-
-
 #ifdef __cplusplus
 }
 #endif