Updated BeOS support (Philippe Houdoin)
This commit is contained in:
parent
cbc1fb0a9a
commit
473e51f2fb
|
@ -3,61 +3,71 @@
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Introduction
|
* Introduction
|
||||||
|
|
||||||
Mesa 3.1 features a new driver for the BeOS. The new driver implements
|
Mesa 4.1 features a driver for the BeOS. The driver implements
|
||||||
a clone of the BGLView class. This class, derived from BView, allows
|
a clone of the BGLView class. This class, derived from BView, allows
|
||||||
OpenGL rendering into a BeOS window.
|
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.
|
||||||
|
|
||||||
Any application which uses the BGLView should be able to use Mesa
|
Any application which uses the BGLView should be able to use Mesa
|
||||||
instead of Be's OpenGL without changing any code.
|
instead of Be's OpenGL without changing any code.
|
||||||
|
|
||||||
Since Be's OpenGL implementation (as of R4) is basically just the
|
Since Be's OpenGL implementation (as of R5) is basically just the
|
||||||
SGI sample implementation, it's pretty slow. You'll see that Mesa
|
SGI sample implementation, it's pretty slow. You'll see that Mesa
|
||||||
is considerably faster.
|
is considerably faster.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Source Code
|
* Source Code
|
||||||
|
|
||||||
The source code for the driver is in Mesa-3.1/src/BeOS/GLView.cpp
|
The source code for the driver is in Mesa-4.1/src/BeOS/ directory.
|
||||||
It's not 100% finished at this time but many GLUT-based demos are
|
It's not 100% finished at this time but many GLUT-based demos are
|
||||||
working. No optimizations have been made at this time.
|
working. No optimizations have been made at this time.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Compiling
|
* Compiling
|
||||||
|
|
||||||
In the Mesa-3.x directory type "make -f Makefile.X11 beos-r4".
|
Requirements:
|
||||||
When it finishes the libMesaGL.so and libMesaGLU.so libraries for
|
- gcc version 2.95.3 for BeOS
|
||||||
BeOS will be in the Mesa-3.x/lib/ directory.
|
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".
|
||||||
|
When it finishes the Mesa based libGL.so library for
|
||||||
|
BeOS will be in the Mesa-4.x/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
|
||||||
|
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.
|
||||||
|
|
||||||
|
|
||||||
|
* Example Programs
|
||||||
|
|
||||||
Example Programs
|
Look in the Mesa-4.x/BeOS/ directory for one or two BGLView demo
|
||||||
|
|
||||||
Look in the Mesa-3.x/BeOS/ directory for one or two BGLView demo
|
|
||||||
programs. They should have been compiled along with the Mesa
|
programs. They should have been compiled along with the Mesa
|
||||||
library.
|
library.
|
||||||
|
|
||||||
|
|
||||||
|
* GLUT
|
||||||
|
|
||||||
GLUT
|
A beta version of GLUT 3.7 port for BeOS can be found at
|
||||||
|
http://anobject.com/jehamby/Code/Glut-3.7-x86.zip.
|
||||||
|
|
||||||
A version of GLUT 2.5 for BeOS can be found in src-glut.beos/.
|
There's is a 2.5 version in src-glut.beos/, too.
|
||||||
The original distribution can be obtained from
|
The original distribution can be obtained from
|
||||||
http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip
|
http://home.beoscentral.com/jehamby/Glut-3.5-x86.zip
|
||||||
|
|
||||||
This is a special version of GLUT adapted for the BeOS. I don't
|
They are special version of GLUT adapted for the BeOS. I don't
|
||||||
believe Mark Kilgard's normal GLUT distribution includes BeOS
|
believe Mark Kilgard's normal GLUT distribution includes BeOS
|
||||||
support.
|
support.
|
||||||
|
|
||||||
It seems that you have to recompile GLUT with libMesaGL.so instead
|
|
||||||
of libGL.so in order for everything to work. I'm not sure why.
|
|
||||||
|
|
||||||
|
* Special Features
|
||||||
|
|
||||||
Special Features
|
|
||||||
|
|
||||||
Mesa's implementation of the BGLView class has an extra member
|
Mesa's implementation of the BGLView class has an extra member
|
||||||
function: CopySubBufferMESA(). It basically works like SwapBuffers()
|
function: CopySubBufferMESA(). It basically works like SwapBuffers()
|
||||||
|
@ -69,7 +79,9 @@ cause a fatal error when running with Be's OpenGL.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Work Left To Do
|
* Work Left To Do
|
||||||
|
|
||||||
|
BDirectWindow single buffering support is not implemented yet.
|
||||||
|
|
||||||
Color index mode is not implemented yet.
|
Color index mode is not implemented yet.
|
||||||
|
|
||||||
|
@ -80,7 +92,7 @@ rendering. This should also be implemented for Mesa.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Old BeOS Driver
|
* Old BeOS Driver
|
||||||
|
|
||||||
Mesa 2.6 had an earlier BeOS driver. It was based on Mesa's Off-screen
|
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
|
rendering interface, not BGLView. If you're interested in the older
|
||||||
|
@ -88,7 +100,7 @@ driver you should get Mesa 2.6.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BeOS and Glide
|
* BeOS and Glide
|
||||||
|
|
||||||
Mesa 3.0 supported the 3Dfx/Glide library on Beos. Download Mesa 3.0
|
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
|
if interested. Ideally, the 3Dfx/Glide support should be updated to
|
||||||
|
@ -99,4 +111,4 @@ of February, 1999.
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
$Id: README.BEOS,v 1.6 1999/11/27 01:40:40 brianp Exp $
|
$Id: README.BEOS,v 1.7 2002/09/19 16:19:44 brianp Exp $
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: gl.h,v 1.69 2002/09/06 02:52:23 brianp Exp $ */
|
/* $Id: gl.h,v 1.70 2002/09/19 16:19:45 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
|
@ -63,6 +63,10 @@
|
||||||
# define GLAPIENTRY
|
# define GLAPIENTRY
|
||||||
#endif /* WIN32 / CYGWIN bracket */
|
#endif /* WIN32 / CYGWIN bracket */
|
||||||
|
|
||||||
|
#if (defined(__BEOS__) && defined(__POWERPC__)) || defined(__QUICKDRAW__)
|
||||||
|
# define PRAGMA_EXPORT_SUPPORTED 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP) && !defined(__CYGWIN__)
|
#if defined(_WIN32) && !defined(_WINGDI_) && !defined(_GNU_H_WINDOWS32_DEFINES) && !defined(OPENSTEP) && !defined(__CYGWIN__)
|
||||||
#include <gl/mesa_wgl.h>
|
#include <gl/mesa_wgl.h>
|
||||||
#endif
|
#endif
|
||||||
|
@ -79,10 +83,10 @@
|
||||||
#define signed
|
#define signed
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(PRAGMA_EXPORT_SUPPORTED)
|
||||||
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
|
||||||
#pragma export on
|
#pragma export on
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* End system-specific stuff.
|
* End system-specific stuff.
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
@ -726,6 +730,7 @@ typedef double GLclampd; /* double precision float in [0,1] */
|
||||||
#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
|
#define GL_CLIENT_ALL_ATTRIB_BITS 0xFFFFFFFF
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Miscellaneous
|
* Miscellaneous
|
||||||
*/
|
*/
|
||||||
|
@ -2593,7 +2598,7 @@ GLAPI void GLAPIENTRY glTracePointerRangeMESA( const GLvoid* first, const GLvoid
|
||||||
/**********************************************************************
|
/**********************************************************************
|
||||||
* Begin system-specific stuff
|
* Begin system-specific stuff
|
||||||
*/
|
*/
|
||||||
#if defined(__BEOS__) || defined(__QUICKDRAW__)
|
#if defined(PRAGMA_EXPORT_SUPPORTED)
|
||||||
#pragma export off
|
#pragma export off
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ class SampleGLWindow : public BWindow
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SampleGLWindow(BRect frame, uint32 type);
|
SampleGLWindow(BRect frame, uint32 type);
|
||||||
virtual bool QuitRequested() { return true; }
|
virtual bool QuitRequested() { be_app->PostMessage(B_QUIT_REQUESTED); return true; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
SampleGLView *theView;
|
SampleGLView *theView;
|
||||||
|
@ -135,7 +135,7 @@ void SampleGLView::gInit(void)
|
||||||
use_stipple_mode = GL_FALSE;
|
use_stipple_mode = GL_FALSE;
|
||||||
use_smooth_mode = GL_TRUE;
|
use_smooth_mode = GL_TRUE;
|
||||||
linesize = 2;
|
linesize = 2;
|
||||||
pointsize = 4;
|
pointsize = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -147,35 +147,46 @@ void SampleGLView::gDraw(void)
|
||||||
glClear(GL_COLOR_BUFFER_BIT);
|
glClear(GL_COLOR_BUFFER_BIT);
|
||||||
glLineWidth(linesize);
|
glLineWidth(linesize);
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
if (use_stipple_mode) {
|
if (use_stipple_mode) {
|
||||||
glEnable(GL_LINE_STIPPLE);
|
glEnable(GL_LINE_STIPPLE);
|
||||||
} else {
|
} else {
|
||||||
glDisable(GL_LINE_STIPPLE);
|
glDisable(GL_LINE_STIPPLE);
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
glDisable(GL_POINT_SMOOTH);
|
||||||
|
|
||||||
if (use_smooth_mode) {
|
|
||||||
glEnable(GL_LINE_SMOOTH);
|
|
||||||
glEnable(GL_BLEND);
|
|
||||||
} else {
|
|
||||||
glDisable(GL_LINE_SMOOTH);
|
|
||||||
glDisable(GL_BLEND);
|
|
||||||
}
|
|
||||||
|
|
||||||
glPushMatrix();
|
glPushMatrix();
|
||||||
|
|
||||||
|
glPointSize(pointsize); // Set size for point
|
||||||
|
|
||||||
for (i = 0; i < 360; i += 5) {
|
for (i = 0; i < 360; i += 5) {
|
||||||
glRotatef(5.0, 0,0,1); // Rotate right 5 degrees
|
glRotatef(5.0, 0,0,1); // Rotate right 5 degrees
|
||||||
|
|
||||||
|
if (use_smooth_mode) {
|
||||||
|
glEnable(GL_LINE_SMOOTH);
|
||||||
|
glEnable(GL_BLEND);
|
||||||
|
} else {
|
||||||
|
glDisable(GL_LINE_SMOOTH);
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
}
|
||||||
|
|
||||||
glColor3f(1.0, 1.0, 0.0); // Set color for line
|
glColor3f(1.0, 1.0, 0.0); // Set color for line
|
||||||
glBegin(GL_LINE_STRIP); // And create the line
|
glBegin(GL_LINE_STRIP); // And create the line
|
||||||
glVertex3fv(pntA);
|
glVertex3fv(pntA);
|
||||||
glVertex3fv(pntB);
|
glVertex3fv(pntB);
|
||||||
glEnd();
|
glEnd();
|
||||||
|
|
||||||
glPointSize(pointsize); // Set size for point
|
glDisable(GL_POINT_SMOOTH);
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
|
||||||
glColor3f(0.0, 1.0, 0.0); // Set color for point
|
glColor3f(0.0, 1.0, 0.0); // Set color for point
|
||||||
glBegin(GL_POINTS);
|
glBegin(GL_POINTS);
|
||||||
glVertex3fv(pntA); // Draw point at one end
|
glVertex3fv(pntA); // Draw point at one end
|
||||||
glVertex3fv(pntB); // Draw point at other end
|
glVertex3fv(pntB); // Draw point at other end
|
||||||
glEnd();
|
glEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,452 @@
|
||||||
|
# Mesa 3-D graphics library
|
||||||
|
# Version: 4.1
|
||||||
|
#
|
||||||
|
# Copyright (C) 1995-2002 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 4.1
|
||||||
|
#
|
||||||
|
# Copyright (C) 2002 - 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.
|
||||||
|
|
||||||
|
MESA_CORE_SRCS = \
|
||||||
|
api_arrayelt.c \
|
||||||
|
api_loopback.c \
|
||||||
|
api_noop.c \
|
||||||
|
api_validate.c \
|
||||||
|
accum.c \
|
||||||
|
attrib.c \
|
||||||
|
blend.c \
|
||||||
|
buffers.c \
|
||||||
|
clip.c \
|
||||||
|
colortab.c \
|
||||||
|
context.c \
|
||||||
|
convolve.c \
|
||||||
|
debug.c \
|
||||||
|
depth.c \
|
||||||
|
dispatch.c \
|
||||||
|
dlist.c \
|
||||||
|
drawpix.c \
|
||||||
|
enable.c \
|
||||||
|
enums.c \
|
||||||
|
eval.c \
|
||||||
|
extensions.c \
|
||||||
|
feedback.c \
|
||||||
|
fog.c \
|
||||||
|
get.c \
|
||||||
|
glapi.c \
|
||||||
|
glthread.c \
|
||||||
|
hash.c \
|
||||||
|
hint.c \
|
||||||
|
histogram.c \
|
||||||
|
image.c \
|
||||||
|
imports.c \
|
||||||
|
light.c \
|
||||||
|
lines.c \
|
||||||
|
matrix.c \
|
||||||
|
mem.c \
|
||||||
|
mmath.c \
|
||||||
|
pixel.c \
|
||||||
|
points.c \
|
||||||
|
polygon.c \
|
||||||
|
rastpos.c \
|
||||||
|
state.c \
|
||||||
|
stencil.c \
|
||||||
|
texformat.c \
|
||||||
|
teximage.c \
|
||||||
|
texobj.c \
|
||||||
|
texstate.c \
|
||||||
|
texstore.c \
|
||||||
|
texutil.c \
|
||||||
|
varray.c \
|
||||||
|
vpexec.c \
|
||||||
|
vpparse.c \
|
||||||
|
vpstate.c \
|
||||||
|
vtxfmt.c \
|
||||||
|
math/m_debug_clip.c \
|
||||||
|
math/m_debug_norm.c \
|
||||||
|
math/m_debug_xform.c \
|
||||||
|
math/m_eval.c \
|
||||||
|
math/m_matrix.c \
|
||||||
|
math/m_translate.c \
|
||||||
|
math/m_vector.c \
|
||||||
|
math/m_xform.c \
|
||||||
|
array_cache/ac_context.c \
|
||||||
|
array_cache/ac_import.c \
|
||||||
|
swrast/s_aaline.c \
|
||||||
|
swrast/s_aatriangle.c \
|
||||||
|
swrast/s_accum.c \
|
||||||
|
swrast/s_alpha.c \
|
||||||
|
swrast/s_alphabuf.c \
|
||||||
|
swrast/s_bitmap.c \
|
||||||
|
swrast/s_blend.c \
|
||||||
|
swrast/s_buffers.c \
|
||||||
|
swrast/s_copypix.c \
|
||||||
|
swrast/s_context.c \
|
||||||
|
swrast/s_depth.c \
|
||||||
|
swrast/s_drawpix.c \
|
||||||
|
swrast/s_feedback.c \
|
||||||
|
swrast/s_fog.c \
|
||||||
|
swrast/s_histogram.c \
|
||||||
|
swrast/s_imaging.c \
|
||||||
|
swrast/s_lines.c \
|
||||||
|
swrast/s_logic.c \
|
||||||
|
swrast/s_masking.c \
|
||||||
|
swrast/s_pixeltex.c \
|
||||||
|
swrast/s_points.c \
|
||||||
|
swrast/s_readpix.c \
|
||||||
|
swrast/s_span.c \
|
||||||
|
swrast/s_stencil.c \
|
||||||
|
swrast/s_texture.c \
|
||||||
|
swrast/s_texstore.c \
|
||||||
|
swrast/s_triangle.c \
|
||||||
|
swrast/s_zoom.c \
|
||||||
|
swrast_setup/ss_context.c \
|
||||||
|
swrast_setup/ss_triangle.c \
|
||||||
|
swrast_setup/ss_vb.c \
|
||||||
|
tnl/t_array_api.c \
|
||||||
|
tnl/t_array_import.c \
|
||||||
|
tnl/t_context.c \
|
||||||
|
tnl/t_eval_api.c \
|
||||||
|
tnl/t_imm_alloc.c \
|
||||||
|
tnl/t_imm_api.c \
|
||||||
|
tnl/t_imm_debug.c \
|
||||||
|
tnl/t_imm_dlist.c \
|
||||||
|
tnl/t_imm_elt.c \
|
||||||
|
tnl/t_imm_eval.c \
|
||||||
|
tnl/t_imm_exec.c \
|
||||||
|
tnl/t_imm_fixup.c \
|
||||||
|
tnl/t_pipeline.c \
|
||||||
|
tnl/t_vb_fog.c \
|
||||||
|
tnl/t_vb_light.c \
|
||||||
|
tnl/t_vb_normals.c \
|
||||||
|
tnl/t_vb_points.c \
|
||||||
|
tnl/t_vb_program.c \
|
||||||
|
tnl/t_vb_render.c \
|
||||||
|
tnl/t_vb_texgen.c \
|
||||||
|
tnl/t_vb_texmat.c \
|
||||||
|
tnl/t_vb_vertex.c
|
||||||
|
|
||||||
|
MESA_BEOS_DRIVER_SRCS = \
|
||||||
|
BeOS/GLView.cpp
|
||||||
|
|
||||||
|
MESA_X86_SRCS = \
|
||||||
|
X86/x86.c \
|
||||||
|
X86/glapi_x86.S \
|
||||||
|
X86/common_x86.c \
|
||||||
|
X86/common_x86_asm.S \
|
||||||
|
X86/x86_xform2.S \
|
||||||
|
X86/x86_xform3.S \
|
||||||
|
X86/x86_xform4.S \
|
||||||
|
X86/x86_cliptest.S
|
||||||
|
|
||||||
|
MESA_MMX_SRCS = \
|
||||||
|
X86/mmx_blend.S
|
||||||
|
|
||||||
|
MESA_SSE_SRCS = \
|
||||||
|
X86/sse.c \
|
||||||
|
X86/sse_xform2.S \
|
||||||
|
X86/sse_xform3.S \
|
||||||
|
X86/sse_xform4.S \
|
||||||
|
X86/sse_normal.S
|
||||||
|
|
||||||
|
MESA_3DNOW_SRCS = \
|
||||||
|
X86/3dnow.c \
|
||||||
|
X86/3dnow_normal.S \
|
||||||
|
X86/3dnow_xform1.S \
|
||||||
|
X86/3dnow_xform2.S \
|
||||||
|
X86/3dnow_xform3.S \
|
||||||
|
X86/3dnow_xform4.S
|
||||||
|
|
||||||
|
MESA_DEFINES =
|
||||||
|
# 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)
|
||||||
|
HAVE_MMX = 1
|
||||||
|
HAVE_SSE = 1
|
||||||
|
HAVE_3DNOW = 1
|
||||||
|
else
|
||||||
|
# No assembly optimization for PowerPC...
|
||||||
|
# HAVE_ALTIVEC=1
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef HAVE_MMX
|
||||||
|
MESA_X86_SRCS += $(MESA_MMX_SRCS)
|
||||||
|
MESA_DEFINES += USE_MMX_ASM
|
||||||
|
HAVE_X86 = 1
|
||||||
|
endif
|
||||||
|
ifdef HAVE_SSE
|
||||||
|
MESA_X86_SRCS += $(MESA_SSE_SRCS)
|
||||||
|
MESA_DEFINES += USE_SSE_ASM
|
||||||
|
HAVE_X86 = 1
|
||||||
|
endif
|
||||||
|
ifdef HAVE_3DNOW
|
||||||
|
MESA_X86_SRCS += $(MESA_3DNOW_SRCS)
|
||||||
|
MESA_DEFINES += USE_3DNOW_ASM
|
||||||
|
HAVE_X86 = 1
|
||||||
|
endif
|
||||||
|
ifdef HAVE_X86
|
||||||
|
MESA_DEFINES += USE_X86_ASM
|
||||||
|
else
|
||||||
|
MESA_X86_SRCS =
|
||||||
|
endif
|
||||||
|
|
||||||
|
# FIXME: SI-GLU version support currently broken
|
||||||
|
# USE_SI_GLU=1
|
||||||
|
ifdef USE_SI_GLU
|
||||||
|
GLU_SRCS = \
|
||||||
|
../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_SRCS = \
|
||||||
|
../src-glu/glu.c \
|
||||||
|
../src-glu/mipmap.c \
|
||||||
|
../src-glu/project.c \
|
||||||
|
../src-glu/quadric.c \
|
||||||
|
../src-glu/tess.c \
|
||||||
|
../src-glu/tesselat.c \
|
||||||
|
../src-glu/polytest.c \
|
||||||
|
../src-glu/nurbs.c \
|
||||||
|
../src-glu/nurbscrv.c \
|
||||||
|
../src-glu/nurbssrf.c \
|
||||||
|
../src-glu/nurbsutl.c
|
||||||
|
endif
|
||||||
|
|
||||||
|
SRCS = $(MESA_CORE_SRCS) $(MESA_X86_SRCS) $(GLU_SRCS) $(MESA_BEOS_DRIVER_SRCS)
|
||||||
|
|
||||||
|
# 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 += ../si-glu/include
|
||||||
|
endif
|
||||||
|
|
||||||
|
# additional paths to look for local headers
|
||||||
|
# thes use the form: #include "header"
|
||||||
|
# source file directories are automatically included
|
||||||
|
LOCAL_INCLUDE_PATHS =
|
||||||
|
|
||||||
|
# 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 $<))
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: gen_matypes.c,v 1.7 2002/02/15 16:32:36 brianp Exp $ */
|
/* $Id: gen_matypes.c,v 1.8 2002/09/19 16:19:45 brianp Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Mesa 3-D graphics library
|
* Mesa 3-D graphics library
|
||||||
|
@ -66,11 +66,21 @@ do { \
|
||||||
printf( "\n" ); \
|
printf( "\n" ); \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
|
#if defined(__BEOS__)
|
||||||
|
#define OFFSET( s, t, m ) \
|
||||||
|
printf( "#define %s\t%ld\n", s, offsetof( t, m ) );
|
||||||
|
#else
|
||||||
#define OFFSET( s, t, m ) \
|
#define OFFSET( s, t, m ) \
|
||||||
printf( "#define %s\t%d\n", s, offsetof( t, m ) );
|
printf( "#define %s\t%d\n", s, offsetof( t, m ) );
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(__BEOS__)
|
||||||
|
#define SIZEOF( s, t ) \
|
||||||
|
printf( "#define %s\t%ld\n", s, sizeof(t) );
|
||||||
|
#else
|
||||||
#define SIZEOF( s, t ) \
|
#define SIZEOF( s, t ) \
|
||||||
printf( "#define %s\t%d\n", s, sizeof(t) );
|
printf( "#define %s\t%d\n", s, sizeof(t) );
|
||||||
|
#endif
|
||||||
|
|
||||||
#define DEFINE( s, d ) \
|
#define DEFINE( s, d ) \
|
||||||
printf( "#define %s\t0x%x\n", s, d );
|
printf( "#define %s\t0x%x\n", s, d );
|
||||||
|
|
Loading…
Reference in New Issue