diff options
author | Ian Romanick <ian.d.romanick@intel.com> | 2011-08-25 08:25:09 -0700 |
---|---|---|
committer | Ian Romanick <ian.d.romanick@intel.com> | 2011-08-26 23:31:23 -0700 |
commit | 93db12a721ec2a68d99d68ea7fb9a471c2af23a0 (patch) | |
tree | 51e8ee5066aeec847a96365c94d7c9edcb90225d | |
parent | c30181c7c33f75d527c2c4dd1d77744027fc3ec6 (diff) |
mesa: Remove support for BeOS
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>
-rw-r--r-- | Makefile | 1 | ||||
-rwxr-xr-x | bin/mklib | 16 | ||||
-rw-r--r-- | configs/beos | 102 | ||||
-rw-r--r-- | docs/README.BEOS | 136 | ||||
-rw-r--r-- | docs/dispatch.html | 4 | ||||
-rw-r--r-- | docs/install.html | 1 | ||||
-rw-r--r-- | docs/systems.html | 8 | ||||
-rw-r--r-- | include/GL/osmesa.h | 8 | ||||
-rw-r--r-- | src/mapi/glapi/gen/gl_x86-64_asm.py | 2 | ||||
-rw-r--r-- | src/mapi/glapi/gen/gl_x86_asm.py | 2 | ||||
-rw-r--r-- | src/mapi/glapi/glapi_x86-64.S | 2 | ||||
-rw-r--r-- | src/mapi/glapi/glapi_x86.S | 2 | ||||
-rw-r--r-- | src/mapi/mapi/u_thread.c | 39 | ||||
-rw-r--r-- | src/mapi/mapi/u_thread.h | 58 | ||||
-rw-r--r-- | src/mesa/drivers/beos/GLView.cpp | 1573 | ||||
-rw-r--r-- | src/mesa/drivers/beos/Makefile | 199 | ||||
-rw-r--r-- | src/mesa/drivers/x11/fxmesa.h | 11 |
17 files changed, 10 insertions, 2154 deletions
@@ -82,7 +82,6 @@ aix-static \ autoconf \ bluegene-osmesa \ bluegene-xlc-osmesa \ -beos \ catamount-osmesa-pgi \ darwin \ darwin-fat-32bit \ @@ -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 index 91ea6f7688..0000000000 --- a/configs/beos +++ /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 index efd84e888c..0000000000 --- a/docs/README.BEOS +++ /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. - - ----------------------------------------------------------------------- diff --git a/docs/dispatch.html b/docs/dispatch.html index e5587c1a29..c3a33b90bf 100644 --- a/docs/dispatch.html +++ b/docs/dispatch.html @@ -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> diff --git a/docs/install.html b/docs/install.html index 57e671b633..228100ec73 100644 --- a/docs/install.html +++ b/docs/install.html @@ -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 diff --git a/docs/systems.html b/docs/systems.html index 5137b074e2..03db779a1a 100644 --- a/docs/systems.html +++ b/docs/systems.html @@ -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> diff --git a/include/GL/osmesa.h b/include/GL/osmesa.h index 56fa23ce81..304655e7c4 100644 --- a/include/GL/osmesa.h +++ b/include/GL/osmesa.h @@ -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 diff --git a/src/mapi/glapi/gen/gl_x86-64_asm.py b/src/mapi/glapi/gen/gl_x86-64_asm.py index 11cd9af406..ef759bf7bf 100644 --- a/src/mapi/glapi/gen/gl_x86-64_asm.py +++ b/src/mapi/glapi/gen/gl_x86-64_asm.py @@ -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 '' diff --git a/src/mapi/glapi/gen/gl_x86_asm.py b/src/mapi/glapi/gen/gl_x86_asm.py index 4ef4acb564..b43b65dd82 100644 --- a/src/mapi/glapi/gen/gl_x86_asm.py +++ b/src/mapi/glapi/gen/gl_x86_asm.py @@ -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 '' diff --git a/src/mapi/glapi/glapi_x86-64.S b/src/mapi/glapi/glapi_x86-64.S index ce54755c54..0746eabc64 100644 --- a/src/mapi/glapi/glapi_x86-64.S +++ b/src/mapi/glapi/glapi_x86-64.S @@ -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 diff --git a/src/mapi/glapi/glapi_x86.S b/src/mapi/glapi/glapi_x86.S index 862dc92681..ea30e99604 100644 --- a/src/mapi/glapi/glapi_x86.S +++ b/src/mapi/glapi/glapi_x86.S @@ -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 diff --git a/src/mapi/mapi/u_thread.c b/src/mapi/mapi/u_thread.c index 12e748fe8b..7b52ca99b3 100644 --- a/src/mapi/mapi/u_thread.c +++ b/src/mapi/mapi/u_thread.c @@ -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 */ diff --git a/src/mapi/mapi/u_thread.h b/src/mapi/mapi/u_thread.h index 1cc8be3fa3..4405ec9c50 100644 --- a/src/mapi/mapi/u_thread.h +++ b/src/mapi/mapi/u_thread.h @@ -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 @@ -108,62 +108,6 @@ typedef CRITICAL_SECTION u_mutex; /* - * 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 */ #ifndef THREADS diff --git a/src/mesa/drivers/beos/GLView.cpp b/src/mesa/drivers/beos/GLView.cpp deleted file mode 100644 index 57c4614f32..0000000000 --- a/src/mesa/drivers/beos/GLView.cpp +++ /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 index c79dd24c39..0000000000 --- a/src/mesa/drivers/beos/Makefile +++ /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 diff --git a/src/mesa/drivers/x11/fxmesa.h b/src/mesa/drivers/x11/fxmesa.h index f8e9661f9c..7df65cf9a2 100644 --- a/src/mesa/drivers/x11/fxmesa.h +++ b/src/mesa/drivers/x11/fxmesa.h @@ -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 |