Updates from Philippe Houdoin.
authorBrian Paul <brian.paul@tungstengraphics.com>
Sat, 13 Dec 2003 01:26:14 +0000 (01:26 +0000)
committerBrian Paul <brian.paul@tungstengraphics.com>
Sat, 13 Dec 2003 01:26:14 +0000 (01:26 +0000)
docs/README.BEOS
src/glut/beos/Makefile
src/mesa/Makefile.BeOS [new file with mode: 0644]
src/mesa/drivers/beos/GLView.cpp
src/mesa/drivers/beos/GLView.h [new file with mode: 0644]

index 6d1e1f0..c08d6d8 100644 (file)
@@ -5,10 +5,11 @@
 
 * Introduction
 
-Mesa 4.1 features a driver for the BeOS.  The driver implements
-a clone of the BGLView class.  This class, derived from BView, allows
-OpenGL rendering into a BeOS window.
-The 4.1 BeOS driver is an update of Brian Paul's BeOS driver released in Mesa 3.1.
+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 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.
@@ -18,10 +19,9 @@ 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 Mesa-4.1/src/BeOS/ directory.
+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.
 
@@ -33,22 +33,22 @@ Requirements:
   - gcc version 2.95.3 for BeOS 
   You can find it here: http://www.bebits.com/app/2157
 
-Move to the Mesa-4.x src sub-directory and then type "make -f Makefile.BeOS-R5".
+Move to the src/mesa sub-directory and then type "make -f Makefile.BeOS".
 When it finishes the Mesa based libGL.so library for
-BeOS will be in the Mesa-4.x/src/obj.{x86|ppc}/ directory.
+BeOS will be in the src/mesa/src/obj.{x86|ppc}/ directory.
 
 To install it as Be's default libGL.so replacement, put it in your 
-/boot/home/config/lib/ directory. All your GL/GLUTapps will use 
+/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.
-Sorry, Mesa don't have ppc (Altivec) optimizations yet.
+For PowerPC BeOS flavor, sorry, Mesa don't have ppc (Altivec) optimizations yet.
 
 
 * Example Programs
 
-Look in the Mesa-4.x/BeOS/ directory for one or two BGLView demo
+Look in the progs/beos/ directory for one or two BGLView demo
 programs.  They should have been compiled along with the Mesa
 library.
 
@@ -106,9 +106,9 @@ 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, to my knowledge, as
+The Glide library hasn't been updated for BeOS R4 and newer, to my knowledge, as
 of February, 1999.
 
 
 ----------------------------------------------------------------------
-$Id: README.BEOS,v 1.7 2002/09/19 16:19:44 brianp Exp $
+$Id: README.BEOS,v 1.8 2003/12/13 01:26:14 brianp Exp $
index 5ce5354..1c740d0 100644 (file)
@@ -26,12 +26,35 @@ TYPE= SHARED
 #      if two source files with the same name (source.c or source.cpp)
 #      are included from different directories.  Also note that spaces
 #      in folder names do not work well with this makefile.
-SRCS= glut_util.cpp glutBlocker.cpp glutInit.cpp glutWindow.cpp \
-glutEvent.cpp glutCallback.cpp glutOverlay.cpp glutGet.cpp glutColor.cpp \
-glutCursor.cpp glutMenu.cpp glutDstr.cpp glut_bitmap.cpp glut_bwidth.cpp \
-glut_8x13.cpp glut_9x15.cpp glut_hel10.cpp glut_hel12.cpp glut_hel18.cpp \
-glut_tr10.cpp glut_tr24.cpp glut_mroman.cpp glut_roman.cpp glut_stroke.cpp \
-glut_swidth.cpp glut_shapes.cpp glut_teapot.cpp beos_x11.cpp
+SRCS= \
+       glut_util.cpp \
+       glutBlocker.cpp \
+       glutInit.cpp \
+       glutWindow.cpp \
+       glutEvent.cpp \
+       glutCallback.cpp \
+       glutOverlay.cpp \
+       glutGet.cpp \
+       glutColor.cpp \
+       glutCursor.cpp \
+       glutMenu.cpp \
+       glutDstr.cpp \
+       glut_bitmap.cpp \
+       glut_bwidth.cpp \
+       glut_8x13.cpp \
+       glut_9x15.cpp \
+       glut_hel10.cpp \
+       glut_hel12.cpp \
+       glut_hel18.cpp \
+       glut_tr10.cpp \
+       glut_tr24.cpp \
+       glut_mroman.cpp \
+       glut_roman.cpp \
+       glut_stroke.cpp \
+       glut_swidth.cpp \
+       glut_shapes.cpp \
+       glut_teapot.cpp \
+       beos_x11.cpp
 
 #      specify the resource files to use
 #      full path or a relative path to the resource file can be used.
@@ -60,7 +83,7 @@ LIBPATHS= ../lib
 #      additional paths to look for system headers
 #      thes use the form: #include <header>
 #      source file directories are NOT auto-included here
-SYSTEM_INCLUDE_PATHS = ../../include /boot/develop/headers/be/opengl
+SYSTEM_INCLUDE_PATHS = ../../../include /boot/develop/headers/be/opengl
 
 #      additional paths to look for local headers
 #      thes use the form: #include "header"
diff --git a/src/mesa/Makefile.BeOS b/src/mesa/Makefile.BeOS
new file mode 100644 (file)
index 0000000..d1ebaee
--- /dev/null
@@ -0,0 +1,303 @@
+# Mesa 3-D graphics library
+# Version:  5.1
+# 
+# Copyright (C) 1995-2003  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.
+#
+# BeOS driver makefile v1.0 for Mesa 5.1.x
+#
+#  Copyright (C) 2002-2003 - Philippe Houdoin
+#  Email : philippe.houdoin@free.fr
+#  Web   : http://philippe.houdoin.free.fr/phil/beos/index-en.html
+#
+# -------------------------------------------------------------------
+
+## BeOS Generic Makefile v2.0 ##
+
+## Fill in this file to specify the project being created, and the referenced
+## makefile-engine will do all of the hard work for you.  This handles both
+## Intel and PowerPC builds of the BeOS.
+
+## Application Specific Settings ---------------------------------------------
+
+# specify the name of the binary
+NAME= libGL.so
+
+# specify the type of binary
+#      APP:    Application
+#      SHARED: Shared library or add-on
+#      STATIC: Static library archive
+#      DRIVER: Kernel Driver
+TYPE= SHARED
+
+#      specify the source files to use
+#      full paths or paths relative to the makefile can be included
+#      all files, regardless of directory, will have their object
+#      files created in the common object directory.
+#      Note that this means this makefile will not work correctly
+#      if two source files with the same name (source.c or source.cpp)
+#      are included from different directories.  Also note that spaces
+#      in folder names do not work well with this makefile.
+
+
+include sources
+
+
+BEOS_DRIVER_SOURCES = \
+       drivers/beos/GLView.cpp
+               
+MESA_DEFINES =
+ASM_SOURCES =
+
+# To use GAS assembler, uncomment this line instead:
+MESA_DEFINES += GNU_ASSEMBLER
+# To use NASM assembler, uncomment this line instead:
+# MESA_DEFINES += NASM_ASSEMBLER
+# To build a DEBUG version of Mesa, uncomment this line instead:
+# MESA_DEFINES += DEBUG
+
+# x86-optimized code
+MACHINE=$(shell uname -m)
+ifeq ($(MACHINE), BePC)
+       MESA_DEFINES += USE_X86_ASM USE_SSE_ASM USE_MMX_ASM
+       MESA_DEFINES += USE_3DNOW_ASM
+       ASM_SOURCES = $(X86_SOURCES)
+else
+       # No assembly optimization for PowerPC...
+       # HAVE_ALTIVEC=1
+endif
+
+# FIXME: SI-GLU version support currently broken
+# USE_SI_GLU=1
+ifdef USE_SI_GLU
+       GLU_SOURCES = \
+       ../si-glu/libutil/error.c               \
+       ../si-glu/libutil/glue.c                \
+       ../si-glu/libutil/mipmap.c      \
+       ../si-glu/libutil/project.c     \
+       ../si-glu/libutil/quad.c                \
+       ../si-glu/libutil/registry.c    \
+       ../si-glu/libtess/dict.c                \
+       ../si-glu/libtess/geom.c                \
+       ../si-glu/libtess/memalloc.c    \
+       ../si-glu/libtess/mesh.c                \
+       ../si-glu/libtess/normal.c      \
+       ../si-glu/libtess/priorityq.c   \
+       ../si-glu/libtess/render.c      \
+       ../si-glu/libtess/sweep.c               \
+       ../si-glu/libtess/tess.c                \
+       ../si-glu/libtess/tessmono.c    \
+       ../si-glu/libnurbs/interface/bezierEval.cc              \
+       ../si-glu/libnurbs/interface/bezierPatch.cc             \
+       ../si-glu/libnurbs/interface/bezierPatchMesh.cc         \
+       ../si-glu/libnurbs/interface/glcurveval.cc              \
+       ../si-glu/libnurbs/interface/glinterface.cc             \
+       ../si-glu/libnurbs/interface/glrenderer.cc              \
+       ../si-glu/libnurbs/interface/glsurfeval.cc              \
+       ../si-glu/libnurbs/interface/incurveeval.cc             \
+       ../si-glu/libnurbs/interface/insurfeval.cc              \
+       ../si-glu/libnurbs/internals/arc.cc                     \
+       ../si-glu/libnurbs/internals/arcsorter.cc                       \
+       ../si-glu/libnurbs/internals/arctess.cc                 \
+       ../si-glu/libnurbs/internals/backend.cc                 \
+       ../si-glu/libnurbs/internals/basiccrveval.cc            \
+       ../si-glu/libnurbs/internals/basicsurfeval.cc           \
+       ../si-glu/libnurbs/internals/bin.cc                     \
+       ../si-glu/libnurbs/internals/bufpool.cc                 \
+       ../si-glu/libnurbs/internals/cachingeval.cc             \
+       ../si-glu/libnurbs/internals/ccw.cc                     \
+       ../si-glu/libnurbs/internals/coveandtiler.cc            \
+       ../si-glu/libnurbs/internals/curve.cc                   \
+       ../si-glu/libnurbs/internals/curvelist.cc                       \
+       ../si-glu/libnurbs/internals/curvesub.cc                        \
+       ../si-glu/libnurbs/internals/dataTransform.cc           \
+       ../si-glu/libnurbs/internals/displaylist.cc             \
+       ../si-glu/libnurbs/internals/flist.cc                   \
+       ../si-glu/libnurbs/internals/flistsorter.cc             \
+       ../si-glu/libnurbs/internals/hull.cc                    \
+       ../si-glu/libnurbs/internals/intersect.cc                       \
+       ../si-glu/libnurbs/internals/knotvector.cc              \
+       ../si-glu/libnurbs/internals/mapdesc.cc                 \
+       ../si-glu/libnurbs/internals/mapdescv.cc                        \
+       ../si-glu/libnurbs/internals/maplist.cc                 \
+       ../si-glu/libnurbs/internals/mesher.cc                  \
+       ../si-glu/libnurbs/internals/monoTriangulationBackend.cc        \
+       ../si-glu/libnurbs/internals/monotonizer.cc             \
+       ../si-glu/libnurbs/internals/mycode.cc                  \
+       ../si-glu/libnurbs/internals/nurbsinterfac.cc           \
+       ../si-glu/libnurbs/internals/nurbstess.cc                       \
+       ../si-glu/libnurbs/internals/patch.cc                   \
+       ../si-glu/libnurbs/internals/patchlist.cc                       \
+       ../si-glu/libnurbs/internals/quilt.cc                   \
+       ../si-glu/libnurbs/internals/reader.cc                  \
+       ../si-glu/libnurbs/internals/renderhints.cc             \
+       ../si-glu/libnurbs/internals/slicer.cc                  \
+       ../si-glu/libnurbs/internals/sorter.cc                  \
+       ../si-glu/libnurbs/internals/splitarcs.cc                       \
+       ../si-glu/libnurbs/internals/subdivider.cc              \
+       ../si-glu/libnurbs/internals/tobezier.cc                        \
+       ../si-glu/libnurbs/internals/trimline.cc                        \
+       ../si-glu/libnurbs/internals/trimregion.cc              \
+       ../si-glu/libnurbs/internals/trimvertpool.cc            \
+       ../si-glu/libnurbs/internals/uarray.cc                  \
+       ../si-glu/libnurbs/internals/varray.cc                  \
+       ../si-glu/libnurbs/nurbtess/directedLine.cc             \
+       ../si-glu/libnurbs/nurbtess/gridWrap.cc                 \
+       ../si-glu/libnurbs/nurbtess/monoChain.cc                        \
+       ../si-glu/libnurbs/nurbtess/monoPolyPart.cc             \
+       ../si-glu/libnurbs/nurbtess/monoTriangulation.cc                \
+       ../si-glu/libnurbs/nurbtess/partitionX.cc                       \
+       ../si-glu/libnurbs/nurbtess/partitionY.cc                       \
+       ../si-glu/libnurbs/nurbtess/polyDBG.cc                  \
+       ../si-glu/libnurbs/nurbtess/polyUtil.cc                 \
+       ../si-glu/libnurbs/nurbtess/primitiveStream.cc          \
+       ../si-glu/libnurbs/nurbtess/quicksort.cc                        \
+       ../si-glu/libnurbs/nurbtess/rectBlock.cc                        \
+       ../si-glu/libnurbs/nurbtess/sampleComp.cc                       \
+       ../si-glu/libnurbs/nurbtess/sampleCompBot.cc            \
+       ../si-glu/libnurbs/nurbtess/sampleCompRight.cc          \
+       ../si-glu/libnurbs/nurbtess/sampleCompTop.cc            \
+       ../si-glu/libnurbs/nurbtess/sampleMonoPoly.cc           \
+       ../si-glu/libnurbs/nurbtess/sampledLine.cc              \
+       ../si-glu/libnurbs/nurbtess/searchTree.cc
+else
+       GLU_SOURCES = \
+       ../glu/mesa/glu.c \
+       ../glu/mesa/mipmap.c \
+       ../glu/mesa/project.c \
+       ../glu/mesa/quadric.c \
+       ../glu/mesa/tess.c \
+       ../glu/mesa/tesselat.c \
+       ../glu/mesa/polytest.c \
+       ../glu/mesa/nurbs.c \
+       ../glu/mesa/nurbscrv.c \
+       ../glu/mesa/nurbssrf.c \
+       ../glu/mesa/nurbsutl.c
+endif
+
+MESA_SOURCES = $(CORE_SOURCES) $(ASM_SOURCES)
+
+SRCS =  $(MESA_SOURCES) $(GLU_SOURCES) $(BEOS_DRIVER_SOURCES) 
+               
+#      specify the resource files to use
+#      full path or a relative path to the resource file can be used.
+RSRCS = 
+
+#      specify additional libraries to link against
+#      there are two acceptable forms of library specifications
+#      -       if your library follows the naming pattern of:
+#              libXXX.so or libXXX.a you can simply specify XXX
+#              library: libbe.so entry: be
+#              
+#      -       if your library does not follow the standard library
+#              naming scheme you need to specify the path to the library
+#              and it's name
+#              library: my_lib.a entry: my_lib.a or path/my_lib.a
+LIBS = be
+               
+#      specify additional paths to directories following the standard
+#      libXXX.so or libXXX.a naming scheme.  You can specify full paths
+#      or paths relative to the makefile.  The paths included may not
+#      be recursive, so include all of the paths where libraries can
+#      be found.  Directories where source files are found are
+#      automatically included.
+LIBPATHS =
+
+#      additional paths to look for system headers
+#      thes use the form: #include <header>
+#      source file directories are NOT auto-included here
+SYSTEM_INCLUDE_PATHS = ../../include 
+
+ifdef USE_SI_GLU
+       SYSTEM_INCLUDE_PATHS += ../glu/sgi/include
+endif
+
+#      additional paths to look for local headers
+#      thes use the form: #include "header"
+#      source file directories are automatically included
+LOCAL_INCLUDE_PATHS = \
+       . \
+       ./main \
+       ./glapi \
+       ./math \
+       ./transform \
+       ./swrast \
+       ./swrast_setup \
+       ./tnl \
+       ./tnl_dd
+
+#      specify the level of optimization that you desire
+#      NONE, SOME, FULL
+OPTIMIZE = FULL
+
+#      specify any preprocessor symbols to be defined.  The symbols
+#      will be set to a value of 1.  For example specify DEBUG if you want
+#      DEBUG=1 to be set when compiling.
+DEFINES = $(MESA_DEFINES)
+
+#      specify special warning levels
+#      if unspecified default warnings will be used
+#      NONE = suppress all warnings
+#      ALL = enable all warnings
+WARNINGS = ALL
+
+#      specify whether image symbols will be created
+#      so that stack crawls in the debugger are meaningful
+#      if TRUE symbols will be created
+SYMBOLS = TRUE 
+
+#      specify debug settings
+#      if TRUE will allow application to be run from
+#      a source-level debugger
+# DEBUGGER = TRUE
+DEBUGGER = FALSE
+
+#      specify additional compiler flags for all files
+COMPILER_FLAGS = 
+
+#      specify additional linker flags
+LINKER_FLAGS =
+
+
+
+## include the makefile-engine
+include /boot/develop/etc/makefile-engine
+
+
+
+# x86/matypes.h include file is *generated*!
+# Rules to (re)generate it as needed:
+
+x86/common_x86_asm.S : x86/matypes.h
+
+x86/matypes.h : x86/gen_matypes.c
+       @echo "(Re-)Generating $@ ..."
+       $(CC) $< $(INCLUDES) $(CFLAGS)  -o x86/gen_matypes
+       x86/gen_matypes > $@
+       rm -f x86/gen_matypes
+
+## Add NASM support for assembly code compilation...
+# $(OBJ_DIR)/%.o : %.nasm
+#      nasm -f elf $(MESA_DEFINES) -o $@ $<
+
+$(OBJ_DIR)/%.o : %.S
+       gcc -c $< $(INCLUDES) $(CFLAGS) -o $@
+#      gcc $(INCLUDES) $(CFLAGS) -E $< | grep -v '^$$' > $(addsuffix .nasm, $(basename $<))
+#      nasm -f elf $(MESA_DEFINES) -o $@ $(addsuffix .nasm, $(basename $<))
+
index b6b8515..0c24b0f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: GLView.cpp,v 1.9 2003/03/30 15:49:01 brianp Exp $ */
+/* $Id: GLView.cpp,v 1.10 2003/12/13 01:26:14 brianp Exp $ */
 
 /*
  * Mesa 3-D graphics library
  */
 
 
-#include "glheader.h"
-
 #include <assert.h>
 #include <stdio.h>
 
 extern "C" {
 
+#include "glheader.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 "mmath.h"
 #include "mtypes.h"
 #include "texformat.h"
+#include "texobj.h"
+#include "teximage.h"
 #include "texstore.h"
 #include "array_cache/acache.h"
 #include "swrast/swrast.h"
@@ -56,7 +58,7 @@ extern "C" {
 
 }      // extern "C"
 
-#include <GLView.h>
+#include "GLView.h"
 
 // BeOS component ordering for B_RGBA32 bitmap format
 #define BE_RCOMP 2
@@ -277,6 +279,17 @@ BGLView::BGLView(BRect rect, char *name,
    // create core context
    GLcontext * ctx = _mesa_create_context(visual, NULL, md, GL_FALSE);
 
+   ctx->Driver.NewTextureObject = _mesa_new_texture_object;
+   ctx->Driver.DeleteTexture = _mesa_delete_texture_object;
+
+   _mesa_initialize_context(ctx, visual, NULL, md, GL_FALSE);
+
+   _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
    GLframebuffer * buffer = _mesa_create_framebuffer(visual,
@@ -286,10 +299,6 @@ BGLView::BGLView(BRect rect, char *name,
                                               alphaFlag
                                               );
 
-   _mesa_enable_sw_extensions(ctx);
-   _mesa_enable_1_3_extensions(ctx);
-   _mesa_enable_1_4_extensions(ctx);
-
    /* Initialize the software rasterizer and helper modules.
     */
    _swrast_CreateContext(ctx);
@@ -578,19 +587,23 @@ void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, GLvisual * visual, GLf
 
        assert(md->m_glcontext == ctx );
 
+       // Use default TCL pipeline
+       tnl->Driver.RunPipeline = _tnl_run_pipeline;
+
        ctx->Driver.GetString = MesaDriver::GetString;
        ctx->Driver.UpdateState = MesaDriver::UpdateState;
-       ctx->Driver.GetBufferSize = MesaDriver::GetBufferSize;
        ctx->Driver.ResizeBuffers = _swrast_alloc_buffers;
+       ctx->Driver.GetBufferSize = MesaDriver::GetBufferSize;
 
        ctx->Driver.Accum = _swrast_Accum;
        ctx->Driver.Bitmap = _swrast_Bitmap;
-       ctx->Driver.ClearIndex = MesaDriver::ClearIndex;
-       ctx->Driver.ClearColor = MesaDriver::ClearColor;
        ctx->Driver.Clear = MesaDriver::Clear;
+       // ctx->Driver.ClearIndex = MesaDriver::ClearIndex;
+       // ctx->Driver.ClearColor = MesaDriver::ClearColor;
        ctx->Driver.CopyPixels = _swrast_CopyPixels;
        ctx->Driver.DrawPixels = _swrast_DrawPixels;
        ctx->Driver.ReadPixels = _swrast_ReadPixels;
+       ctx->Driver.DrawBuffer = _swrast_DrawBuffer;
 
        ctx->Driver.ChooseTextureFormat = _mesa_choose_tex_format;
        ctx->Driver.TexImage1D = _mesa_store_teximage1d;
@@ -601,7 +614,14 @@ void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, GLvisual * visual, GLf
        ctx->Driver.TexSubImage3D = _mesa_store_texsubimage3d;
        ctx->Driver.TestProxyTexImage = _mesa_test_proxy_teximage;
 
-       ctx->Driver.CopyTexImage1D = _swrast_copy_teximage1d;
+    ctx->Driver.CompressedTexImage1D = _mesa_store_compressed_teximage1d;
+    ctx->Driver.CompressedTexImage2D = _mesa_store_compressed_teximage2d;
+       ctx->Driver.CompressedTexImage3D = _mesa_store_compressed_teximage3d;
+       ctx->Driver.CompressedTexSubImage1D = _mesa_store_compressed_texsubimage1d;
+       ctx->Driver.CompressedTexSubImage2D = _mesa_store_compressed_texsubimage2d;
+       ctx->Driver.CompressedTexSubImage3D = _mesa_store_compressed_texsubimage3d;
+
+       ctx->Driver.CopyTexImage1D = _swrast_copy_teximage1d;
        ctx->Driver.CopyTexImage2D = _swrast_copy_teximage2d;
        ctx->Driver.CopyTexSubImage1D = _swrast_copy_texsubimage1d;
        ctx->Driver.CopyTexSubImage2D = _swrast_copy_texsubimage2d;
@@ -610,19 +630,8 @@ void MesaDriver::Init(BGLView * bglview, GLcontext * ctx, GLvisual * visual, GLf
        ctx->Driver.CopyColorSubTable = _swrast_CopyColorSubTable;
        ctx->Driver.CopyConvolutionFilter1D = _swrast_CopyConvolutionFilter1D;
        ctx->Driver.CopyConvolutionFilter2D = _swrast_CopyConvolutionFilter2D;
-
-        ctx->Driver.CompressedTexImage1D = _mesa_store_compressed_teximage1d;
-        ctx->Driver.CompressedTexImage2D = _mesa_store_compressed_teximage2d;
-        ctx->Driver.CompressedTexImage3D = _mesa_store_compressed_teximage3d;
-        ctx->Driver.CompressedTexSubImage1D = _mesa_store_compressed_texsubimage1d;
-        ctx->Driver.CompressedTexSubImage2D = _mesa_store_compressed_texsubimage2d;
-        ctx->Driver.CompressedTexSubImage3D = _mesa_store_compressed_texsubimage3d;
-
        swdd->SetBuffer = MesaDriver::SetBuffer;
-
-       tnl->Driver.RunPipeline = _tnl_run_pipeline;
-
-       _swsetup_Wakeup(ctx);
 }
 
 
@@ -898,7 +907,7 @@ const GLubyte *MesaDriver::GetString(GLcontext *ctx, GLenum name)
 
 // Plot a pixel.  (0,0) is upper-left corner
 // This is only used when drawing to the front buffer.
-static void Plot(BGLView *bglview, int x, int y)
+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);
diff --git a/src/mesa/drivers/beos/GLView.h b/src/mesa/drivers/beos/GLView.h
new file mode 100644 (file)
index 0000000..595000b
--- /dev/null
@@ -0,0 +1,196 @@
+/*******************************************************************************
+/
+/      File:           GLView.h
+/
+/      Copyright 1993-98, Be Incorporated, All Rights Reserved.
+/
+*******************************************************************************/
+
+#ifndef BGLVIEW_H
+#define BGLVIEW_H
+
+// added by Brian Paul:
+#ifndef BGL_RGB
+#define BGL_RGB                        0
+#define BGL_INDEX              1 
+#define BGL_SINGLE             0
+#define BGL_DOUBLE             2
+#define BGL_DIRECT             0
+#define BGL_INDIRECT           4
+#define BGL_ACCUM              8
+#define BGL_ALPHA              16
+#define BGL_DEPTH              32
+#define BGL_OVERLAY            64
+#define BGL_UNDERLAY           128
+#define BGL_STENCIL            512
+#endif
+
+
+#include <GL/gl.h>
+#include <AppKit.h>
+#include <interface/Window.h>
+#include <interface/View.h>
+#include <interface/Bitmap.h>
+#include <game/WindowScreen.h>
+#include <game/DirectWindow.h>
+
+class BGLView : public BView {
+public:
+
+       BGLView(BRect rect, char *name,
+                       ulong resizingMode, ulong mode,
+                       ulong options);
+       virtual ~BGLView();
+
+       void            LockGL();
+       void            UnlockGL();
+       void            SwapBuffers();
+
+        // Added for Mesa (can't be virtual!)
+        void CopySubBufferMESA(GLint x, GLint y, GLuint width, GLuint height);
+
+       BView *     EmbeddedView();
+       status_t    CopyPixelsOut(BPoint source, BBitmap *dest);
+       status_t    CopyPixelsIn(BBitmap *source, BPoint dest);
+
+       virtual void        ErrorCallback(unsigned long errorCode); // GLenum errorCode);
+               
+       virtual void            Draw(BRect updateRect);
+
+       virtual void            AttachedToWindow();
+       virtual void        AllAttached();
+       virtual void        DetachedFromWindow();
+       virtual void        AllDetached();
+       virtual void            FrameResized(float width, float height);
+       virtual status_t    Perform(perform_code d, void *arg);
+
+       /* The public methods below, for the moment,
+          are just pass-throughs to BView */
+
+       virtual status_t    Archive(BMessage *data, bool deep = true) const;
+
+       virtual void        MessageReceived(BMessage *msg);
+       virtual void        SetResizingMode(uint32 mode);
+
+       virtual void        Show();
+       virtual void        Hide();
+
+       virtual BHandler   *ResolveSpecifier(BMessage *msg, int32 index,
+                                                       BMessage *specifier, int32 form,
+                                                       const char *property);
+       virtual status_t    GetSupportedSuites(BMessage *data);
+
+       /* New public functions */
+       void            DirectConnected( direct_buffer_info *info );
+       void            EnableDirectMode( bool enabled );
+
+private:
+
+       virtual void        _ReservedGLView1();
+       virtual void        _ReservedGLView2(); 
+       virtual void        _ReservedGLView3(); 
+       virtual void        _ReservedGLView4(); 
+       virtual void        _ReservedGLView5(); 
+       virtual void        _ReservedGLView6(); 
+       virtual void        _ReservedGLView7(); 
+       virtual void        _ReservedGLView8(); 
+
+    BGLView(const BGLView &);
+    BGLView     &operator=(const BGLView &);
+
+       void        dither_front();
+       bool        confirm_dither();
+       void        draw(BRect r);
+               
+       void *          m_gc;
+       uint32          m_options;
+       uint32      m_ditherCount;
+       BLocker         m_drawLock;
+       BLocker     m_displayLock;
+#if OLD_GLVIEW
+       BView *         m_embeddedFront;
+       BView *     m_embeddedBack;
+#else
+       void *          m_clip_info;
+       void *          _reserved1;
+#endif
+       BBitmap *   m_ditherMap;
+       BRect       m_bounds;
+       int16 *     m_errorBuffer[2];
+       uint64      _reserved[8];
+
+       /* Direct Window stuff */
+private:       
+       void drawScanline( int x1, int x2, int y, void *data );
+       static void scanlineHandler(struct rasStateRec *state, GLint x1, GLint x2);
+       void            lock_draw();
+       void            unlock_draw();
+       bool            validateView();
+};
+
+
+
+class BGLScreen : public BWindowScreen {
+public:
+       BGLScreen(char *name,
+                       ulong screenMode, ulong options,
+                       status_t *error, bool debug=false);
+       ~BGLScreen();
+
+       void            LockGL();
+       void            UnlockGL();
+       void            SwapBuffers();
+       virtual void        ErrorCallback(GLenum errorCode);
+
+       virtual void            ScreenConnected(bool connected);
+       virtual void            FrameResized(float width, float height);
+       virtual status_t    Perform(perform_code d, void *arg);
+
+       /* The public methods below, for the moment,
+          are just pass-throughs to BWindowScreen */
+
+       virtual status_t    Archive(BMessage *data, bool deep = true) const;
+       virtual void        MessageReceived(BMessage *msg);
+
+       virtual void        Show();
+       virtual void        Hide();
+
+       virtual BHandler   *ResolveSpecifier(BMessage *msg,
+                        int32 index,
+                                               BMessage *specifier,
+                                               int32 form,
+                                               const char *property);
+       virtual status_t    GetSupportedSuites(BMessage *data);
+
+private:
+
+       virtual void        _ReservedGLScreen1();
+       virtual void        _ReservedGLScreen2();
+       virtual void        _ReservedGLScreen3();
+       virtual void        _ReservedGLScreen4();
+       virtual void        _ReservedGLScreen5();
+       virtual void        _ReservedGLScreen6();
+       virtual void        _ReservedGLScreen7();
+       virtual void        _ReservedGLScreen8(); 
+
+       BGLScreen(const BGLScreen &);
+       BGLScreen   &operator=(const BGLScreen &);
+
+       void *          m_gc;
+       long            m_options;
+       BLocker         m_drawLock;
+               
+       int32           m_colorSpace;
+       uint32          m_screen_mode;
+               
+       uint64      _reserved[7];
+};
+
+
+#endif
+
+
+
+
+