Compare commits
8 Commits
embedded-1
...
embedded-1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7b7af467dd | ||
|
|
3101d43a76 | ||
|
|
d95443f030 | ||
|
|
be49c0fef2 | ||
|
|
61d31cab97 | ||
|
|
7067815785 | ||
|
|
ad79ba8208 | ||
|
|
b8cdeaae3a |
@@ -12,7 +12,7 @@
|
||||
<h2>
|
||||
<center>
|
||||
<h3>Tungsten Graphics, Inc.</h3>
|
||||
<h3>February 3, 2003<br>
|
||||
<h3>February 26, 2003<br>
|
||||
</h3>
|
||||
</center>
|
||||
</h2>
|
||||
@@ -623,34 +623,7 @@ Polygon culling is enabled and disabled with the commands <span
|
||||
style="font-weight: bold;">glDisable</span>(GL_CULL_FACE),
|
||||
respectively.<br>
|
||||
<br>
|
||||
<h3>4.3.3 Polygon Fill Mode</h3>
|
||||
The command<br>
|
||||
<br>
|
||||
<div style="margin-left: 40px;">void<span style="font-weight: bold;"><span
|
||||
style="font-weight: bold;"> </span><span style="font-weight: bold;"></span>glPolygonMode</span>(GLenum<span
|
||||
style="font-style: italic;">face</span>, GLenum <span
|
||||
style="font-style: italic;">mode</span>)<br>
|
||||
</div>
|
||||
<br>
|
||||
controls whether polygons are filled, outlined or drawn with a point at
|
||||
each vertex. The <span style="font-style: italic;">face</span>
|
||||
parameter must be GL_FRONT_AND_BACK. The values GL_FRONT and
|
||||
GL_BACK are not permitted by the subset.<br>
|
||||
<br>
|
||||
If <span style="font-style: italic;">mode</span> is GL_FILL then
|
||||
triangles, quadrilaterals and triangles will be filled (the default).
|
||||
If <span style="font-style: italic;">mode</span> is GL_LINE then
|
||||
triangles, quadrilaterals and polygons will be outlined with line
|
||||
segments instead of being filled.<span style="font-weight: bold;"></span>
|
||||
If <span style="font-style: italic;">mode</span> is GL_POINT then
|
||||
triangles, quadrilaterals and polygons will be rendered with a point at
|
||||
each vertex instead of being filled.<span style="font-weight: bold;"></span><br>
|
||||
<br>
|
||||
Any other values for <span style="font-style: italic;">face</span> or <span
|
||||
style="font-style: italic;">mode</span> will raise the error
|
||||
GL_INVALID_ENUM.<br>
|
||||
<br>
|
||||
<h3>4.3.4 Polygon Antialiasing</h3>
|
||||
<h3>4.3.3 Polygon Antialiasing</h3>
|
||||
Polygons may be antialiased in order to smooth their edges.
|
||||
Polygon antialiasing is enabled and disabled with the commands <span
|
||||
style="font-weight: bold;">glEnable</span>(GL_POLYGON_SMOOTH) and <span
|
||||
@@ -688,8 +661,8 @@ are linearly interpolated to produce the fragment colors.<br>
|
||||
<h2>4.5 Bitmap Rasterization</h2>
|
||||
A bitmap is a monochromatic, binary image in which each image element
|
||||
(or pixel) is represented by one bit. Fragments are only generated
|
||||
for the bits (pixels) which are set. Bitmaps are commonly used
|
||||
to draw text (glyphs) and markers.<br>
|
||||
for the bits (pixels) which are set. Bitmaps are commonly used to
|
||||
draw text (glyphs) and markers.<br>
|
||||
<br>
|
||||
A bitmap is drawn with the command<br>
|
||||
<br>
|
||||
@@ -844,6 +817,7 @@ the subset.<br>
|
||||
Polygon commands:<br>
|
||||
<div style="margin-left: 40px; font-weight: bold;">glPolygonStipple<br>
|
||||
glPolygonOffset<br>
|
||||
glPolygonMode<br>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
@@ -2762,15 +2736,6 @@ name stack.<br>
|
||||
<td style="vertical-align: top;">Pixel packing row length.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;">GL_POLYGON_MODE<br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">2<br>
|
||||
</td>
|
||||
<td style="vertical-align: top;">Current front and back polygon
|
||||
modes: GL_POINT, GL_LINE or GL_FILL.<br>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="vertical-align: top;">GL_POLYGON_SMOOTH<br>
|
||||
</td>
|
||||
@@ -3456,7 +3421,7 @@ number of approaches to antialiasing have been summarized in email.<br>
|
||||
RECOMMENDATION: don't support edge flags. They don't effect
|
||||
polygon antialiasing.<br>
|
||||
<br>
|
||||
RESOLUTION: open<br>
|
||||
RESOLUTION: closed, as of 26 Feb 2003.<br>
|
||||
<br>
|
||||
<h2>A.3 glRasterPos vs. glWindowPos</h2>
|
||||
Should glRasterPos and/or glWindowPos commands be supported?<br>
|
||||
@@ -3601,6 +3566,12 @@ supported.<br>
|
||||
<br>
|
||||
RESOLUTION: open<br>
|
||||
<br>
|
||||
<h2>A.15 glPolygonMode</h2>
|
||||
Is <span style="font-weight: bold;">glPolygonMode</span> needed?<br>
|
||||
<br>
|
||||
RECOMMENDATION: No. Omit it.<br>
|
||||
<br>
|
||||
RESOLUTION: closed, as of 26 Feb 2003<br>
|
||||
<br>
|
||||
<br>
|
||||
<p> </p>
|
||||
|
||||
@@ -9,7 +9,7 @@ OUTPUT_DIRECTORY = .
|
||||
OUTPUT_LANGUAGE = English
|
||||
EXTRACT_ALL = YES
|
||||
EXTRACT_PRIVATE = NO
|
||||
EXTRACT_STATIC = NO
|
||||
EXTRACT_STATIC = YES
|
||||
EXTRACT_LOCAL_CLASSES = YES
|
||||
HIDE_UNDOC_MEMBERS = NO
|
||||
HIDE_UNDOC_CLASSES = NO
|
||||
|
||||
28
progs/samples/Makefile
Normal file
28
progs/samples/Makefile
Normal file
@@ -0,0 +1,28 @@
|
||||
|
||||
PROGS = prim \
|
||||
star \
|
||||
line \
|
||||
point \
|
||||
depth \
|
||||
tri \
|
||||
bitmap1 \
|
||||
bitmap2
|
||||
|
||||
|
||||
##### RULES #####
|
||||
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .c
|
||||
|
||||
|
||||
# make executable from .c file:
|
||||
.c: $(LIB_DEP)
|
||||
gcc -I../include -g $< -L../lib -lglut -lGL -lm -o $@
|
||||
|
||||
|
||||
default: $(PROGS)
|
||||
|
||||
|
||||
clean:
|
||||
-rm *.o *~
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: Makefile,v 1.1.2.1 2003/02/05 04:37:12 keithw Exp $
|
||||
# $Id: Makefile,v 1.1.2.2 2003/03/04 17:29:55 keithw Exp $
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 5.0
|
||||
@@ -7,27 +7,18 @@
|
||||
|
||||
|
||||
MESA = ../..
|
||||
MESABUILDDIR = ..
|
||||
|
||||
default: dri.a
|
||||
include $(MESA)/Makefile.include
|
||||
|
||||
INCLUDES = -I/usr/X11R6/include -I/usr/X11R6/include/X11/extensions -I$(MESA)/include -I. -I..
|
||||
DEFINES =
|
||||
|
||||
CFLAGS = $(INCLUDES) $(DEFINES) -g -MD -Wall -Wpointer-arith \
|
||||
-Wstrict-prototypes -Wmissing-prototypes \
|
||||
-Wmissing-declarations -Wnested-externs
|
||||
|
||||
# The .a files for each mesa module required by this driver:
|
||||
#
|
||||
DRI_SOURCES = dri_glx.c \
|
||||
dri_util.c \
|
||||
xf86drm.c \
|
||||
xf86drmHash.c \
|
||||
xf86drmRandom.c \
|
||||
xf86drmSL.c
|
||||
|
||||
|
||||
C_SOURCES = $(DRI_SOURCES)
|
||||
C_SOURCES = dri_glx.c \
|
||||
dri_util.c \
|
||||
xf86drm.c \
|
||||
xf86drmHash.c \
|
||||
xf86drmRandom.c \
|
||||
xf86drmSL.c
|
||||
|
||||
ASM_SOURCES =
|
||||
|
||||
@@ -36,32 +27,11 @@ OBJECTS = $(C_SOURCES:.c=.o) \
|
||||
|
||||
|
||||
|
||||
##### RULES #####
|
||||
|
||||
.S.o:
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
##### TARGETS #####
|
||||
|
||||
default: dri.a
|
||||
|
||||
dri.a: $(OBJECTS) Makefile
|
||||
rm -f $@ && ar rcv $@ $(OBJECTS) && ranlib $@
|
||||
|
||||
clean:
|
||||
-rm -f *.o *~ *.d .\#* *.so
|
||||
|
||||
tags:
|
||||
etags `find . -name \*.[ch]` `find ../include`
|
||||
|
||||
##### DEPENDENCIES #####
|
||||
|
||||
-include $(C_SOURCES:.c=.d)
|
||||
|
||||
.SUFFIXES: .c .d
|
||||
|
||||
.c.d:
|
||||
$(CC) -M $(INCLUDES) $(DEFINES) $< > $@
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# $Id: Makefile,v 1.1.2.25 2003/02/23 20:24:11 keithw Exp $
|
||||
# $Id: Makefile,v 1.1.2.26 2003/03/04 17:29:56 keithw Exp $
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 5.0
|
||||
@@ -7,12 +7,25 @@
|
||||
|
||||
|
||||
MESA = ../../..
|
||||
MESABUILDDIR = ../..
|
||||
default: radeon_dri.so
|
||||
include $(MESA)/Makefile.include
|
||||
|
||||
SHARED_INCLUDES = -I$(MESABUILDDIR) -I$(MESA)/include -I. -I../common -Iserver
|
||||
|
||||
SHARED_INCLUDES= -I$(MESABUILDDIR) -I$(MESA)/include -I. -I../common -Iserver
|
||||
MINIGLX_INCLUDES = -I$(MESABUILDDIR)/miniglx
|
||||
DRI_INCLUDES = -I$(MESABUILDDIR)/dri
|
||||
|
||||
ifeq ($(FULL_DRIVER),true)
|
||||
DEFINES = \
|
||||
-D_HAVE_SWRAST=1 \
|
||||
-D_HAVE_SWTNL=1 \
|
||||
-D_HAVE_SANITY=1 \
|
||||
-D_HAVE_CODEGEN=1 \
|
||||
-D_HAVE_LIGHTING=1 \
|
||||
-D_HAVE_TEXGEN=1 \
|
||||
-D_HAVE_USERCLIP=1 \
|
||||
-D_HAVE_FULL_GL=1
|
||||
else
|
||||
DEFINES = \
|
||||
-D_HAVE_SWRAST=0 \
|
||||
-D_HAVE_SWTNL=0 \
|
||||
@@ -22,10 +35,7 @@ DEFINES = \
|
||||
-D_HAVE_TEXGEN=0 \
|
||||
-D_HAVE_USERCLIP=0 \
|
||||
-D_HAVE_FULL_GL=0
|
||||
|
||||
CFLAGS = $(INCLUDES) $(DEFINES) -g -MD -Wall -Wpointer-arith \
|
||||
-Wstrict-prototypes -Wmissing-prototypes \
|
||||
-Wmissing-declarations -Wnested-externs
|
||||
endif
|
||||
|
||||
# The .a files for each mesa module required by this driver:
|
||||
#
|
||||
@@ -40,7 +50,7 @@ FULL_MESA = $(MESABUILDDIR)/swrast_setup/swrast_setup.a \
|
||||
SUBSET_MESA = $(MESABUILDDIR)/mesa.a \
|
||||
$(MESABUILDDIR)/math/math.a
|
||||
|
||||
DRI = $(MESABUILDDIR)/dri/dri.a
|
||||
|
||||
|
||||
MINIGLX_SOURCES = server/radeon_dri.c
|
||||
|
||||
@@ -63,6 +73,7 @@ FULL_DRIVER_SOURCES = \
|
||||
radeon_tex.c \
|
||||
radeon_texmem.c \
|
||||
radeon_texstate.c \
|
||||
radeon_texcombine.c \
|
||||
radeon_lighting.c \
|
||||
radeon_userclip.c \
|
||||
radeon_texgen.c \
|
||||
@@ -81,55 +92,44 @@ FULL_DRIVER_SOURCES = \
|
||||
INCLUDES = $(MINIGLX_INCLUDES) \
|
||||
$(SHARED_INCLUDES)
|
||||
|
||||
|
||||
ifeq ($(FULL_DRIVER),true)
|
||||
C_SOURCES = $(DRIVER_SOURCES) \
|
||||
$(FULL_DRIVER_SOURCES) \
|
||||
$(MINIGLX_SOURCES)
|
||||
MESA_MODULES = $(FULL_MESA)
|
||||
else
|
||||
C_SOURCES = $(DRIVER_SOURCES) \
|
||||
$(SUBSET_DRIVER_SOURCES) \
|
||||
$(MINIGLX_SOURCES)
|
||||
MESA_MODULES = $(FULL_MESA)
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(WINDOW_SYSTEM),dri)
|
||||
WINOBJ=$(MESABUILDDIR)/dri/dri.a
|
||||
WINLIB=
|
||||
else
|
||||
WINOBJ=
|
||||
WINLIB=-L$(MESA)/src/miniglx
|
||||
endif
|
||||
|
||||
ASM_SOURCES =
|
||||
|
||||
OBJECTS = $(C_SOURCES:.c=.o) \
|
||||
$(ASM_SOURCES:.S=.o)
|
||||
|
||||
|
||||
|
||||
##### RULES #####
|
||||
|
||||
.S.o:
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(CFLAGS) $< -o $@
|
||||
|
||||
##### TARGETS #####
|
||||
|
||||
default: radeon_dri.so install
|
||||
|
||||
radeon_dri.so: $(SUBSET_MESA) $(OBJECTS) Makefile
|
||||
rm -f $@ && gcc -o $@ -shared $(OBJECTS) $(SUBSET_MESA) -L$(MESA)/src/miniglx -lGL -lc -lm
|
||||
|
||||
#radeon_dri.so: $(SUBSET_MESA) $(DRI) $(OBJECTS) Makefile
|
||||
# rm -f $@ && gcc -o $@ -shared $(OBJECTS) $(SUBSET_MESA) $(DRI) -lc -lm
|
||||
|
||||
|
||||
loc:
|
||||
wc -l $(DRIVER_SOURCES) $(SUBSET_DRIVER_SOURCES)
|
||||
wc -l $(DRIVER_SOURCES) $(FULL_DRIVER_SOURCES) radeon_maos_verts.c radeon_maos_vbtmp.h
|
||||
|
||||
install:
|
||||
# Build the subset or full driver?
|
||||
#
|
||||
radeon_dri.so: $(OBJECTS) $(MESA_MODULES) $(WINOBJ) Makefile
|
||||
rm -f $@ && gcc -o $@ -shared $(OBJECTS) $(MESA_MODULES) $(WINOBJ) $(WINLIB) -lGL -lc -lm
|
||||
rm -f $(MESA)/lib/radeon_dri.so && \
|
||||
install radeon_dri.so $(MESA)/lib/radeon_dri.so
|
||||
|
||||
clean:
|
||||
-rm -f *.o *~ *.d .\#* *.so
|
||||
|
||||
tags:
|
||||
etags `find . -name \*.[ch]` `find ../include`
|
||||
|
||||
##### DEPENDENCIES #####
|
||||
|
||||
-include $(C_SOURCES:.c=.d)
|
||||
|
||||
.SUFFIXES: .c .d
|
||||
|
||||
.c.d:
|
||||
$(CC) -M $(INCLUDES) $(DEFINES) $< > $@
|
||||
|
||||
@@ -51,6 +51,8 @@
|
||||
#include "radeon_tcl.h"
|
||||
#include "radeon_vtxfmt.h"
|
||||
#include "radeon_tex.h"
|
||||
#include "radeon_span.h"
|
||||
#include "radeon_maos.h"
|
||||
#else
|
||||
#include "radeon_subset.h"
|
||||
#endif
|
||||
@@ -202,8 +204,10 @@ static void radeonInitDriverFuncs( GLcontext *ctx )
|
||||
ctx->Driver.ResizeBuffers = ResizeBuffers;
|
||||
ctx->Driver.Error = NULL;
|
||||
ctx->Driver.DrawPixels = NULL;
|
||||
#if !_HAVE_SWRAST
|
||||
ctx->Driver.Bitmap = radeonPointsBitmap;
|
||||
ctx->Driver.ReadPixels = radeonReadPixels;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -366,8 +370,9 @@ radeonCreateContext( const __GLcontextModes *glVisual,
|
||||
#if _HAVE_SWTNL
|
||||
radeonInitSwtcl( ctx );
|
||||
#endif
|
||||
#if !_HAVE_FULL_GL
|
||||
radeonInitSelect( ctx );
|
||||
|
||||
#endif
|
||||
|
||||
rmesa->do_irqs = (rmesa->radeonScreen->irq && !getenv("RADEON_NO_IRQS"));
|
||||
rmesa->irqsEmitted = 0;
|
||||
|
||||
@@ -49,9 +49,47 @@ typedef struct radeon_context *radeonContextPtr;
|
||||
#include "radeon_screen.h"
|
||||
#include "mm.h"
|
||||
|
||||
/**
|
||||
* \brief Reference counting on DMA buffers.
|
||||
*/
|
||||
struct radeon_dma_buffer {
|
||||
int refcount; /**< \brief number of retained regions in radeon_dma_buffer::buf */
|
||||
drmBufPtr buf; /**< \brief DMA buffer */
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Get the start of a DMA region.
|
||||
*
|
||||
* \param rvb pointer to a radeon_dma_region structure.
|
||||
*
|
||||
* \return pointer to the region start.
|
||||
*/
|
||||
#define GET_START(rvb) (rmesa->radeonScreen->agp_buffer_offset + \
|
||||
(rvb)->address - rmesa->dma.buf0_address + \
|
||||
(rvb)->start)
|
||||
|
||||
/**
|
||||
* \brief A retained DMA region.
|
||||
*
|
||||
* e.g. vertices for indexed vertices.
|
||||
*/
|
||||
struct radeon_dma_region {
|
||||
struct radeon_dma_buffer *buf; /**< \brief DMA buffer */
|
||||
char *address; /**< \brief buf->address */
|
||||
int start; /**< \brief start offset from start of radeon_dma_region::buf */
|
||||
int end; /**< \brief end offset from start of radeon_dma_region::buf */
|
||||
int ptr; /**< \brief offsets from start of radeon_dma_region::buf */
|
||||
int aos_start; /**< \brief array of structures start */
|
||||
int aos_stride; /**< \brief array of structures stride */
|
||||
int aos_size; /**< \brief array of structures size */
|
||||
};
|
||||
|
||||
#if _HAVE_SWTNL
|
||||
#include "radeon_swtcl.h"
|
||||
#endif
|
||||
#if _HAVE_FULL_GL
|
||||
#include "radeon_vtxfmt.h"
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Color buffer state.
|
||||
@@ -478,40 +516,6 @@ struct radeon_texture {
|
||||
GLint numHeaps; /**< \brief number of active heaps */
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Reference counting on DMA buffers.
|
||||
*/
|
||||
struct radeon_dma_buffer {
|
||||
int refcount; /**< \brief number of retained regions in radeon_dma_buffer::buf */
|
||||
drmBufPtr buf; /**< \brief DMA buffer */
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Get the start of a DMA region.
|
||||
*
|
||||
* \param rvb pointer to a radeon_dma_region structure.
|
||||
*
|
||||
* \return pointer to the region start.
|
||||
*/
|
||||
#define GET_START(rvb) (rmesa->radeonScreen->agp_buffer_offset + \
|
||||
(rvb)->address - rmesa->dma.buf0_address + \
|
||||
(rvb)->start)
|
||||
|
||||
/**
|
||||
* \brief A retained DMA region.
|
||||
*
|
||||
* e.g. vertices for indexed vertices.
|
||||
*/
|
||||
struct radeon_dma_region {
|
||||
struct radeon_dma_buffer *buf; /**< \brief DMA buffer */
|
||||
char *address; /**< \brief buf->address */
|
||||
int start; /**< \brief start offset from start of radeon_dma_region::buf */
|
||||
int end; /**< \brief end offset from start of radeon_dma_region::buf */
|
||||
int ptr; /**< \brief offsets from start of radeon_dma_region::buf */
|
||||
int aos_start; /**< \brief array of structures start */
|
||||
int aos_stride; /**< \brief array of structures stride */
|
||||
int aos_size; /**< \brief array of structures size */
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
@@ -709,8 +713,9 @@ struct radeon_context {
|
||||
|
||||
/* radeon_vtxfmt.c
|
||||
*/
|
||||
/* struct radeon_vbinfo vb; */
|
||||
|
||||
#if _HAVE_FULL_GL
|
||||
struct radeon_vbinfo vb;
|
||||
#endif
|
||||
/**
|
||||
* \brief Mirrors of some DRI state
|
||||
*/
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
/* Update on colormaterial, material emmissive/ambient,
|
||||
* lightmodel.globalambient
|
||||
*/
|
||||
void update_global_ambient( GLcontext *ctx )
|
||||
void update_global_ambient( GLcontext *ctx )
|
||||
{
|
||||
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
|
||||
float *fcmd = (float *)RADEON_DB_STATE( glt );
|
||||
@@ -137,7 +137,7 @@ void check_twoside_fallback( GLcontext *ctx )
|
||||
TCL_FALLBACK( ctx, RADEON_TCL_FALLBACK_LIGHT_TWOSIDE, fallback );
|
||||
}
|
||||
|
||||
void radeonColorMaterial( GLcontext *ctx, GLenum face, GLenum mode )
|
||||
void radeonColorMaterial( GLcontext *ctx, GLenum face, GLenum mode )
|
||||
{
|
||||
if (ctx->Light.ColorMaterialEnabled) {
|
||||
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
|
||||
@@ -321,8 +321,9 @@ void radeonUpdateLighting( GLcontext *ctx )
|
||||
}
|
||||
}
|
||||
|
||||
void radeonLightfv( GLcontext *ctx, GLenum light,
|
||||
GLenum pname, const GLfloat *params )
|
||||
|
||||
void radeonLightfv( GLcontext *ctx, GLenum light,
|
||||
GLenum pname, const GLfloat *params )
|
||||
{
|
||||
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
|
||||
GLint p = light - GL_LIGHT0;
|
||||
@@ -395,8 +396,8 @@ void radeonUpdateLighting( GLcontext *ctx )
|
||||
|
||||
|
||||
|
||||
void radeonLightModelfv( GLcontext *ctx, GLenum pname,
|
||||
const GLfloat *param )
|
||||
void radeonLightModelfv( GLcontext *ctx, GLenum pname,
|
||||
const GLfloat *param )
|
||||
{
|
||||
radeonContextPtr rmesa = RADEON_CONTEXT(ctx);
|
||||
|
||||
|
||||
@@ -38,5 +38,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#define __RADEON_SPAN_H__
|
||||
|
||||
extern void radeonInitSpanFuncs( GLcontext *ctx );
|
||||
extern void radeonCreateSwrastContext( GLcontext *ctx );
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1307,8 +1307,8 @@ static void radeonEnable( GLcontext *ctx, GLenum cap, GLboolean state )
|
||||
case GL_CLIP_PLANE2:
|
||||
case GL_CLIP_PLANE3:
|
||||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
p = cap-GL_CLIP_PLANE0;
|
||||
case GL_CLIP_PLANE5: {
|
||||
GLuint p = cap-GL_CLIP_PLANE0;
|
||||
RADEON_STATECHANGE( rmesa, tcl );
|
||||
if (state) {
|
||||
rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] |= (RADEON_UCP_ENABLE_0<<p);
|
||||
@@ -1318,6 +1318,7 @@ static void radeonEnable( GLcontext *ctx, GLenum cap, GLboolean state )
|
||||
rmesa->hw.tcl.cmd[TCL_UCP_VERT_BLEND_CTL] &= ~(RADEON_UCP_ENABLE_0<<p);
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
case GL_CULL_FACE:
|
||||
|
||||
@@ -75,7 +75,6 @@ extern void radeonFallback( GLcontext *ctx, GLuint bit, GLboolean mode );
|
||||
#define TEXMAT_2 5
|
||||
|
||||
extern void radeonUpdateSpecular( GLcontext *ctx );
|
||||
extern void radeonClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq );
|
||||
|
||||
extern void radeonUploadMatrixTranspose( radeonContextPtr rmesa, GLfloat *src,
|
||||
int idx );
|
||||
@@ -83,5 +82,18 @@ extern void radeonUploadMatrix( radeonContextPtr rmesa, GLfloat *src, int idx );
|
||||
|
||||
extern void radeonUpdateScissor( GLcontext *ctx );
|
||||
|
||||
/* radeon_lighting.c
|
||||
*/
|
||||
extern void radeonInitLightStateFuncs( GLcontext *ctx );
|
||||
extern void radeonColorMaterial( GLcontext *ctx, GLenum face, GLenum mode );
|
||||
extern void check_twoside_fallback( GLcontext *ctx );
|
||||
extern void radeonUpdateLighting( GLcontext *ctx );
|
||||
|
||||
|
||||
/* radeon_userclip.c
|
||||
*/
|
||||
extern void radeonClipPlane( GLcontext *ctx, GLenum plane, const GLfloat *eq );
|
||||
extern void radeonInitUserClip( GLcontext *ctx );
|
||||
extern void radeonUpdateClipPlanes( GLcontext *ctx );
|
||||
|
||||
#endif
|
||||
|
||||
@@ -33,13 +33,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __RADEON_TRIS_H__
|
||||
#define __RADEON_TRIS_H__
|
||||
#ifndef __RADEON_SWTCL_H__
|
||||
#define __RADEON_SWTCL_H__
|
||||
|
||||
#include "mtypes.h"
|
||||
#include "swrast/swrast.h"
|
||||
|
||||
|
||||
/* Flags for software fallback cases */
|
||||
/* See correponding strings in radeon_swtcl.c */
|
||||
#define RADEON_FALLBACK_TEXTURE 0x0001
|
||||
@@ -94,6 +93,7 @@ struct radeon_swtcl_info {
|
||||
struct radeon_dma_region indexed_verts;
|
||||
};
|
||||
|
||||
extern void radeonCreateTnlContext( GLcontext *ctx );
|
||||
extern void radeonInitSwtcl( GLcontext *ctx );
|
||||
extern void radeonDestroySwtcl( GLcontext *ctx );
|
||||
|
||||
|
||||
@@ -40,6 +40,8 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "mtypes.h"
|
||||
#include "enums.h"
|
||||
|
||||
#include "radeon_context.h"
|
||||
|
||||
#if _HAVE_SWTNL
|
||||
#include "array_cache/acache.h"
|
||||
#include "tnl/tnl.h"
|
||||
@@ -48,7 +50,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "radeon_maos.h"
|
||||
#endif
|
||||
|
||||
#include "radeon_context.h"
|
||||
#include "radeon_state.h"
|
||||
#include "radeon_ioctl.h"
|
||||
#include "radeon_tex.h"
|
||||
|
||||
@@ -39,6 +39,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
|
||||
|
||||
extern void radeonUpdateTextureState( GLcontext *ctx );
|
||||
extern void radeonUpdateTextureMatrix( GLcontext *ctx );
|
||||
extern GLboolean radeonUpdateTexgen( GLcontext *ctx, GLuint unit );
|
||||
extern GLboolean radeonUpdateTextureEnvCombine( GLcontext *ctx, int unit );
|
||||
|
||||
extern int radeonUploadTexImages( radeonContextPtr rmesa, radeonTexObjPtr t );
|
||||
|
||||
@@ -52,4 +55,7 @@ extern void radeonUpdateTexLRU( radeonContextPtr rmesa, radeonTexObjPtr t );
|
||||
|
||||
extern void radeonInitTextureFuncs( GLcontext *ctx );
|
||||
|
||||
extern void radeonInitTexTransform( GLcontext *ctx );
|
||||
|
||||
|
||||
#endif /* __RADEON_TEX_H__ */
|
||||
|
||||
@@ -140,6 +140,36 @@ struct radeon_vbinfo {
|
||||
GLvertexformat vtxfmt;
|
||||
};
|
||||
|
||||
struct radeon_vb {
|
||||
/* Keep these first: referenced from codegen templates:
|
||||
*/
|
||||
GLint counter, initial_counter;
|
||||
GLint *dmaptr;
|
||||
void (*notify)( void );
|
||||
GLint vertex_size;
|
||||
|
||||
/* A maximum total of 15 elements per vertex: 3 floats for position, 3
|
||||
* floats for normal, 4 floats for color, 4 bytes for secondary color,
|
||||
* 2 floats for each texture unit (4 floats total).
|
||||
*
|
||||
* As soon as the 3rd TMU is supported or cube maps (or 3D textures) are
|
||||
* supported, this value will grow.
|
||||
*
|
||||
* The position data is never actually stored here, so 3 elements could be
|
||||
* trimmed out of the buffer.
|
||||
*/
|
||||
union { float f; int i; radeon_color_t color; } vertex[15];
|
||||
|
||||
GLfloat *normalptr;
|
||||
GLfloat *floatcolorptr;
|
||||
radeon_color_t *colorptr;
|
||||
GLfloat *floatspecptr;
|
||||
radeon_color_t *specptr;
|
||||
GLfloat *texcoordptr[2];
|
||||
|
||||
GLcontext *context; /* current context : Single thread only! */
|
||||
};
|
||||
|
||||
|
||||
extern struct radeon_vb vb;
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "api_noop.h"
|
||||
#include "vtxfmt.h"
|
||||
|
||||
#include "radeon_vtxfmt.h"
|
||||
#include "radeon_context.h"
|
||||
|
||||
/* Fallback versions of all the entrypoints for situations where
|
||||
* codegen isn't available. This is still a lot faster than the
|
||||
|
||||
@@ -35,7 +35,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "glheader.h"
|
||||
#include "imports.h"
|
||||
#include "simple_list.h"
|
||||
#include "radeon_vtxfmt.h"
|
||||
#include "radeon_context.h"
|
||||
|
||||
#if defined(USE_SSE_ASM) && _HAVE_CODEGEN
|
||||
#include "X86/common_x86_asm.h"
|
||||
|
||||
@@ -36,7 +36,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#include "imports.h"
|
||||
#include "mmath.h"
|
||||
#include "simple_list.h"
|
||||
#include "radeon_vtxfmt.h"
|
||||
#include "radeon_context.h"
|
||||
|
||||
#if defined(USE_X86_ASM)
|
||||
|
||||
|
||||
@@ -1096,6 +1096,7 @@ static int __driInitFBDev( struct MiniGLXDisplayRec *dpy )
|
||||
|
||||
if (!get_chipfamily_from_chipset( info )) {
|
||||
fprintf(stderr, "Unknown or non-radeon chipset -- cannot continue\n");
|
||||
fprintf(stderr, "==> Verify PCI BusID is correct in miniglx.conf\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
/* $Id: glapi.h,v 1.20 2002/06/29 19:48:16 brianp Exp $ */
|
||||
/**
|
||||
* \file glapi.h
|
||||
*/
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -24,6 +26,7 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: glapi.h,v 1.20.6.1 2003/03/02 00:27:35 jrfonseca Exp $ */
|
||||
|
||||
#ifndef _GLAPI_H
|
||||
#define _GLAPI_H
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
/* $Id: context.c,v 1.188.2.1.2.3 2003/02/21 21:14:08 keithw Exp $ */
|
||||
/**
|
||||
* \file context.c
|
||||
* \brief Mesa context/visual/framebuffer management functions.
|
||||
* \author Brian Paul
|
||||
*/
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -24,7 +28,7 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
/* $Id: context.c,v 1.188.2.1.2.5 2003/03/04 17:23:34 keithw Exp $ */
|
||||
|
||||
/**
|
||||
* \mainpage Mesa Core Module
|
||||
@@ -68,13 +72,6 @@
|
||||
*/
|
||||
|
||||
|
||||
/**
|
||||
* \file context.c
|
||||
* \brief Mesa context/visual/framebuffer management functions.
|
||||
* \author Brian Paul
|
||||
*/
|
||||
|
||||
|
||||
#include "glheader.h"
|
||||
#include "imports.h"
|
||||
#include "buffers.h"
|
||||
@@ -132,10 +129,12 @@ free_shared_state( GLcontext *ctx, struct gl_shared_state *ss );
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** OpenGL SI-style interface (new in Mesa 3.5) *****/
|
||||
/** \name OpenGL SI-style interface (new in Mesa 3.5) */
|
||||
/**********************************************************************/
|
||||
/*@{*/
|
||||
|
||||
/* Called by window system/device driver (via gc->exports.destroyCurrent())
|
||||
/**
|
||||
* Called by window system/device driver (via gc->exports.destroyCurrent())
|
||||
* when the rendering context is to be destroyed.
|
||||
*/
|
||||
GLboolean
|
||||
@@ -148,7 +147,8 @@ _mesa_destroyContext(__GLcontext *gc)
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
/* Called by window system/device driver (via gc->exports.loseCurrent())
|
||||
/**
|
||||
* Called by window system/device driver (via gc->exports.loseCurrent())
|
||||
* when the rendering context is made non-current.
|
||||
*/
|
||||
GLboolean
|
||||
@@ -158,7 +158,8 @@ _mesa_loseCurrent(__GLcontext *gc)
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
/* Called by window system/device driver (via gc->exports.makeCurrent())
|
||||
/**
|
||||
* Called by window system/device driver (via gc->exports.makeCurrent())
|
||||
* when the rendering context is made current.
|
||||
*/
|
||||
GLboolean
|
||||
@@ -168,7 +169,8 @@ _mesa_makeCurrent(__GLcontext *gc)
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
/* Called by window system/device driver - yadda, yadda, yadda.
|
||||
/**
|
||||
* Called by window system/device driver - yadda, yadda, yadda.
|
||||
* See above comments.
|
||||
*/
|
||||
GLboolean
|
||||
@@ -219,14 +221,17 @@ _mesa_notifyResize(__GLcontext *gc)
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the context's window/buffer is going to be destroyed.
|
||||
*/
|
||||
void
|
||||
_mesa_notifyDestroy(__GLcontext *gc)
|
||||
{
|
||||
/* Called when the context's window/buffer is going to be destroyed. */
|
||||
/* Unbind from it. */
|
||||
}
|
||||
|
||||
/* Called by window system just before swapping buffers.
|
||||
/**
|
||||
* Called by window system just before swapping buffers.
|
||||
* We have to finish any pending rendering.
|
||||
*/
|
||||
void
|
||||
@@ -251,9 +256,13 @@ _mesa_endDispatchOverride(__GLcontext *gc)
|
||||
{
|
||||
}
|
||||
|
||||
/* Setup the exports. The window system will call these functions
|
||||
* when it needs Mesa to do something.
|
||||
* NOTE: Device drivers should override these functions! For example,
|
||||
/**
|
||||
* \brief Setup the exports.
|
||||
*
|
||||
* The window system will call these functions when it needs Mesa to do
|
||||
* something.
|
||||
*
|
||||
* \note Device drivers should override these functions! For example,
|
||||
* the Xlib driver should plug in the XMesa*-style functions into this
|
||||
* structure. The XMesa-style functions should then call the _mesa_*
|
||||
* version of these functions. This is an approximation to OO design
|
||||
@@ -276,9 +285,9 @@ _mesa_init_default_exports(__GLexports *exports)
|
||||
exports->endDispatchOverride = _mesa_endDispatchOverride;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* exported OpenGL SI interface */
|
||||
/**
|
||||
* \brief Exported OpenGL SI interface.
|
||||
*/
|
||||
__GLcontext *
|
||||
__glCoreCreateContext(__GLimports *imports, __GLcontextModes *modes)
|
||||
{
|
||||
@@ -295,8 +304,9 @@ __glCoreCreateContext(__GLimports *imports, __GLcontextModes *modes)
|
||||
return ctx;
|
||||
}
|
||||
|
||||
|
||||
/* exported OpenGL SI interface */
|
||||
/**
|
||||
* \brief Exported OpenGL SI interface.
|
||||
*/
|
||||
void
|
||||
__glCoreNopDispatch(void)
|
||||
{
|
||||
@@ -309,28 +319,34 @@ __glCoreNopDispatch(void)
|
||||
#endif
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** GL Visual allocation/destruction *****/
|
||||
/** \name GL Visual allocation/destruction */
|
||||
/**********************************************************************/
|
||||
/*@{*/
|
||||
|
||||
|
||||
/*
|
||||
* Allocate a new GLvisual object.
|
||||
* Input: rgbFlag - GL_TRUE=RGB(A) mode, GL_FALSE=Color Index mode
|
||||
* dbFlag - double buffering?
|
||||
* stereoFlag - stereo buffer?
|
||||
* depthBits - requested bits per depth buffer value
|
||||
* Any value in [0, 32] is acceptable but the actual
|
||||
* depth type will be GLushort or GLuint as needed.
|
||||
* stencilBits - requested minimum bits per stencil buffer value
|
||||
* accumBits - requested minimum bits per accum buffer component
|
||||
* indexBits - number of bits per pixel if rgbFlag==GL_FALSE
|
||||
* red/green/blue/alphaBits - number of bits per color component
|
||||
* in frame buffer for RGB(A) mode.
|
||||
* We always use 8 in core Mesa though.
|
||||
* Return: pointer to new GLvisual or NULL if requested parameters can't
|
||||
* be met.
|
||||
/**
|
||||
* \brief Allocate a new GLvisual object.
|
||||
*
|
||||
* \param rgbFlag GL_TRUE=RGB(A) mode, GL_FALSE=Color Index mode
|
||||
* \param dbFlag double buffering?
|
||||
* \param stereoFlag stereo buffer?
|
||||
* \param depthBits requested bits per depth buffer value. Any value in [0, 32]
|
||||
* is acceptable but the actual depth type will be GLushort or GLuint as
|
||||
* needed.
|
||||
* \param stencilBits requested minimum bits per stencil buffer value
|
||||
* \param accumBits requested minimum bits per accum buffer component
|
||||
* \param indexBits number of bits per pixel if rgbFlag==GL_FALSE
|
||||
* \param red number of bits per color component in frame buffer for RGB(A)
|
||||
* mode. We always use 8 in core Mesa though.
|
||||
* \param green same as above.
|
||||
* \param blue same as above.
|
||||
* \param alphaBits same as above.
|
||||
*
|
||||
* \return pointer to new GLvisual or NULL if requested parameters can't be
|
||||
* met.
|
||||
*/
|
||||
GLvisual *
|
||||
_mesa_create_visual( GLboolean rgbFlag,
|
||||
@@ -364,12 +380,12 @@ _mesa_create_visual( GLboolean rgbFlag,
|
||||
return vis;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initialize the fields of the given GLvisual.
|
||||
* Input: see _mesa_create_visual() above.
|
||||
* Return: GL_TRUE = success
|
||||
* GL_FALSE = failure.
|
||||
/**
|
||||
* \brief Initialize the fields of the given GLvisual.
|
||||
*
|
||||
* \return GL_TRUE on success, or GL_FALSE on failure.
|
||||
*
|
||||
* \sa see _mesa_create_visual() above.
|
||||
*/
|
||||
GLboolean
|
||||
_mesa_initialize_visual( GLvisual *vis,
|
||||
@@ -446,29 +462,33 @@ _mesa_initialize_visual( GLvisual *vis,
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_mesa_destroy_visual( GLvisual *vis )
|
||||
{
|
||||
FREE(vis);
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** GL Framebuffer allocation/destruction *****/
|
||||
/** \name GL Framebuffer allocation/destruction */
|
||||
/**********************************************************************/
|
||||
/*@{*/
|
||||
|
||||
|
||||
/*
|
||||
* Create a new framebuffer. A GLframebuffer is a struct which
|
||||
* encapsulates the depth, stencil and accum buffers and related
|
||||
* parameters.
|
||||
* Input: visual - a GLvisual pointer (we copy the struct contents)
|
||||
* softwareDepth - create/use a software depth buffer?
|
||||
* softwareStencil - create/use a software stencil buffer?
|
||||
* softwareAccum - create/use a software accum buffer?
|
||||
* softwareAlpha - create/use a software alpha buffer?
|
||||
* Return: pointer to new GLframebuffer struct or NULL if error.
|
||||
/**
|
||||
* \brief Create a new framebuffer.
|
||||
*
|
||||
* A GLframebuffer is a struct which encapsulates the depth, stencil and accum
|
||||
* buffers and related parameters.
|
||||
*
|
||||
* \param visual a GLvisual pointer (we copy the struct contents)
|
||||
* \param softwareDepth create/use a software depth buffer?
|
||||
* \param softwareStencil create/use a software stencil buffer?
|
||||
* \param softwareAccum create/use a software accum buffer?
|
||||
* \param softwareAlpha create/use a software alpha buffer?
|
||||
*
|
||||
* \return pointer to new GLframebuffer struct or NULL if error.
|
||||
*/
|
||||
GLframebuffer *
|
||||
_mesa_create_framebuffer( const GLvisual *visual,
|
||||
@@ -487,10 +507,10 @@ _mesa_create_framebuffer( const GLvisual *visual,
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initialize a GLframebuffer object.
|
||||
* Input: See _mesa_create_framebuffer() above.
|
||||
/**
|
||||
* \brief Initialize a GLframebuffer object.
|
||||
*
|
||||
* \sa _mesa_create_framebuffer() above.
|
||||
*/
|
||||
void
|
||||
_mesa_initialize_framebuffer( GLframebuffer *buffer,
|
||||
@@ -531,8 +551,8 @@ _mesa_initialize_framebuffer( GLframebuffer *buffer,
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Free a framebuffer struct and its buffers.
|
||||
/**
|
||||
* \brief Free a framebuffer struct and its buffers.
|
||||
*/
|
||||
void
|
||||
_mesa_destroy_framebuffer( GLframebuffer *buffer )
|
||||
@@ -544,8 +564,8 @@ _mesa_destroy_framebuffer( GLframebuffer *buffer )
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Free the data hanging off of <buffer>, but not <buffer> itself.
|
||||
/**
|
||||
* \brief Free the data hanging off of \p buffer, but not \p buffer itself.
|
||||
*/
|
||||
void
|
||||
_mesa_free_framebuffer_data( GLframebuffer *buffer )
|
||||
@@ -583,18 +603,18 @@ _mesa_free_framebuffer_data( GLframebuffer *buffer )
|
||||
}
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** Context allocation, initialization, destroying *****/
|
||||
/** \name Context allocation, initialization, destroying *****/
|
||||
/**********************************************************************/
|
||||
|
||||
/*@{*/
|
||||
|
||||
_glthread_DECLARE_STATIC_MUTEX(OneTimeLock);
|
||||
|
||||
|
||||
/*
|
||||
* This function just calls all the various one-time-init functions in Mesa.
|
||||
/**
|
||||
* \brief This function just calls all the various one-time-init functions in Mesa.
|
||||
*/
|
||||
static void
|
||||
one_time_init( GLcontext *ctx )
|
||||
@@ -641,7 +661,6 @@ one_time_init( GLcontext *ctx )
|
||||
_glthread_UNLOCK_MUTEX(OneTimeLock);
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
init_matrix_stack( struct matrix_stack *stack,
|
||||
GLuint maxDepth, GLuint dirtyFlag )
|
||||
@@ -660,7 +679,6 @@ init_matrix_stack( struct matrix_stack *stack,
|
||||
stack->Top = stack->Stack;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
free_matrix_stack( struct matrix_stack *stack )
|
||||
{
|
||||
@@ -672,9 +690,8 @@ free_matrix_stack( struct matrix_stack *stack )
|
||||
stack->Stack = stack->Top = NULL;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Allocate and initialize a shared context state structure.
|
||||
/**
|
||||
* \brief Allocate and initialize a shared context state structure.
|
||||
*/
|
||||
static struct gl_shared_state *
|
||||
alloc_shared_state( void )
|
||||
@@ -754,9 +771,8 @@ alloc_shared_state( void )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Deallocate a shared state context and all children structures.
|
||||
/**
|
||||
* \brief Deallocate a shared state context and all children structures.
|
||||
*/
|
||||
static void
|
||||
free_shared_state( GLcontext *ctx, struct gl_shared_state *ss )
|
||||
@@ -799,11 +815,10 @@ free_shared_state( GLcontext *ctx, struct gl_shared_state *ss )
|
||||
FREE(ss);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Initialize the nth light. Note that the defaults for light 0 are
|
||||
* different than the other lights.
|
||||
/**
|
||||
* \brief Initialize the n-th light.
|
||||
*
|
||||
* Note that the defaults for light 0 are different than the other lights.
|
||||
*/
|
||||
static void
|
||||
init_light( struct gl_light *l, GLuint n )
|
||||
@@ -831,8 +846,6 @@ init_light( struct gl_light *l, GLuint n )
|
||||
l->Enabled = GL_FALSE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
init_lightmodel( struct gl_lightmodel *lm )
|
||||
{
|
||||
@@ -842,7 +855,6 @@ init_lightmodel( struct gl_lightmodel *lm )
|
||||
lm->ColorControl = GL_SINGLE_COLOR;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
init_material( struct gl_material *m )
|
||||
{
|
||||
@@ -856,8 +868,6 @@ init_material( struct gl_material *m )
|
||||
m->SpecularIndex = 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
init_texture_unit( GLcontext *ctx, GLuint unit )
|
||||
{
|
||||
@@ -910,9 +920,9 @@ init_texture_unit( GLcontext *ctx, GLuint unit )
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/* Initialize a 1-D evaluator map */
|
||||
/**
|
||||
* \brief Initialize a 1-D evaluator map.
|
||||
*/
|
||||
static void
|
||||
init_1d_map( struct gl_1d_map *map, int n, const float *initial )
|
||||
{
|
||||
@@ -928,7 +938,9 @@ init_1d_map( struct gl_1d_map *map, int n, const float *initial )
|
||||
}
|
||||
|
||||
|
||||
/* Initialize a 2-D evaluator map */
|
||||
/**
|
||||
* \brief Initialize a 2-D evaluator map
|
||||
*/
|
||||
static void
|
||||
init_2d_map( struct gl_2d_map *map, int n, const float *initial )
|
||||
{
|
||||
@@ -946,9 +958,8 @@ init_2d_map( struct gl_2d_map *map, int n, const float *initial )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initialize the attribute groups in a GLcontext.
|
||||
/**
|
||||
* \brief Initialize the attribute groups in a GLcontext.
|
||||
*/
|
||||
static void
|
||||
init_attrib_groups( GLcontext *ctx )
|
||||
@@ -1547,13 +1558,13 @@ init_attrib_groups( GLcontext *ctx )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Allocate the proxy textures. If we run out of memory part way through
|
||||
* the allocations clean up and return GL_FALSE.
|
||||
* Return: GL_TRUE=success, GL_FALSE=failure
|
||||
/**
|
||||
* \brief Allocate the proxy textures.
|
||||
*
|
||||
* If we run out of memory part way through the allocations clean up and return
|
||||
* GL_FALSE.
|
||||
*
|
||||
* \return GL_TRUE on success, or GL_FALSE on failure
|
||||
*/
|
||||
static GLboolean
|
||||
alloc_proxy_textures( GLcontext *ctx )
|
||||
@@ -1645,7 +1656,6 @@ alloc_proxy_textures( GLcontext *ctx )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void add_debug_flags( const char *debug )
|
||||
{
|
||||
#ifdef MESA_DEBUG
|
||||
@@ -1683,10 +1693,11 @@ static void add_debug_flags( const char *debug )
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Initialize a GLcontext struct. This includes allocating all the
|
||||
* other structs and arrays which hang off of the context by pointers.
|
||||
/**
|
||||
* \brief Initialize a GLcontext struct.
|
||||
*
|
||||
* This includes allocating all the other structs and arrays which hang off of
|
||||
* the context by pointers.
|
||||
*/
|
||||
GLboolean
|
||||
_mesa_initialize_context( GLcontext *ctx,
|
||||
@@ -1883,7 +1894,9 @@ _mesa_initialize_context( GLcontext *ctx,
|
||||
ctx->SavePrefersFloat = GL_FALSE;
|
||||
|
||||
/* Neutral tnl module stuff */
|
||||
/* _mesa_init_exec_vtxfmt( ctx ); */
|
||||
#if _HAVE_FULL_GL
|
||||
_mesa_init_exec_vtxfmt( ctx );
|
||||
#endif
|
||||
ctx->TnlModule.Current = NULL;
|
||||
ctx->TnlModule.SwapCount = 0;
|
||||
|
||||
@@ -1920,15 +1933,15 @@ _mesa_initialize_context( GLcontext *ctx,
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Allocate and initialize a GLcontext structure.
|
||||
* Input: visual - a GLvisual pointer (we copy the struct contents)
|
||||
* sharelist - another context to share display lists with or NULL
|
||||
* driver_ctx - pointer to device driver's context state struct
|
||||
* direct - direct rendering?
|
||||
* Return: pointer to a new __GLcontextRec or NULL if error.
|
||||
* \brief Allocate and initialize a GLcontext structure.
|
||||
*
|
||||
* \param visual a GLvisual pointer (we copy the struct contents)
|
||||
* \param sharelist another context to share display lists with or NULL
|
||||
* \param driver_ctx pointer to device driver's context state struct
|
||||
* \param direct direct rendering?
|
||||
*
|
||||
* \return pointer to a new __GLcontextRec or NULL if error.
|
||||
*/
|
||||
GLcontext *
|
||||
_mesa_create_context( const GLvisual *visual,
|
||||
@@ -1955,10 +1968,9 @@ _mesa_create_context( const GLvisual *visual,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Free the data associated with the given context.
|
||||
* \brief Free the data associated with the given context.
|
||||
*
|
||||
* But don't free() the GLcontext struct itself!
|
||||
*/
|
||||
void
|
||||
@@ -2073,10 +2085,8 @@ _mesa_free_context_data( GLcontext *ctx )
|
||||
FREE(ctx->Save);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Destroy a GLcontext structure.
|
||||
* \brief Destroy a GLcontext structure.
|
||||
*/
|
||||
void
|
||||
_mesa_destroy_context( GLcontext *ctx )
|
||||
@@ -2087,13 +2097,12 @@ _mesa_destroy_context( GLcontext *ctx )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Copy attribute groups from one context to another.
|
||||
* Input: src - source context
|
||||
* dst - destination context
|
||||
* mask - bitwise OR of GL_*_BIT flags
|
||||
/**
|
||||
* \brief Copy attribute groups from one context to another.
|
||||
*
|
||||
* \param src source context
|
||||
* \param dst destination context
|
||||
* \param mask bitwise OR of GL_*_BIT flags
|
||||
*/
|
||||
void
|
||||
_mesa_copy_context( const GLcontext *src, GLcontext *dst, GLuint mask )
|
||||
@@ -2202,8 +2211,6 @@ _mesa_copy_context( const GLcontext *src, GLcontext *dst, GLuint mask )
|
||||
dst->NewState = _NEW_ALL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void print_info( void )
|
||||
{
|
||||
_mesa_debug(NULL, "Mesa GL_VERSION = %s\n",
|
||||
@@ -2231,9 +2238,8 @@ static void print_info( void )
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Set the current context, binding the given frame buffer to the context.
|
||||
/**
|
||||
* \brief Set the current context, binding the given frame buffer to the context.
|
||||
*/
|
||||
void
|
||||
_mesa_make_current( GLcontext *newCtx, GLframebuffer *buffer )
|
||||
@@ -2242,9 +2248,9 @@ _mesa_make_current( GLcontext *newCtx, GLframebuffer *buffer )
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Bind the given context to the given draw-buffer and read-buffer
|
||||
* and make it the current context for this thread.
|
||||
/**
|
||||
* \brief Bind the given context to the given draw-buffer and read-buffer and
|
||||
* make it the current context for this thread.
|
||||
*/
|
||||
void
|
||||
_mesa_make_current2( GLcontext *newCtx, GLframebuffer *drawBuffer,
|
||||
@@ -2345,10 +2351,9 @@ _mesa_make_current2( GLcontext *newCtx, GLframebuffer *drawBuffer,
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Return current context handle for the calling thread.
|
||||
/**
|
||||
* \brief Return current context handle for the calling thread.
|
||||
*
|
||||
* This isn't the fastest way to get the current context.
|
||||
* If you need speed, see the GET_CURRENT_CONTEXT() macro in context.h
|
||||
*/
|
||||
@@ -2358,11 +2363,11 @@ _mesa_get_current_context( void )
|
||||
return (GLcontext *) _glapi_get_context();
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Return pointer to this context's current API dispatch table.
|
||||
* It'll either be the immediate-mode execute dispatcher or the
|
||||
* display list compile dispatcher.
|
||||
/**
|
||||
* \brief Return pointer to this context's current API dispatch table.
|
||||
*
|
||||
* It'll either be the immediate-mode execute dispatcher or the display list
|
||||
* compile dispatcher.
|
||||
*/
|
||||
struct _glapi_table *
|
||||
_mesa_get_dispatch(GLcontext *ctx)
|
||||
@@ -2370,15 +2375,17 @@ _mesa_get_dispatch(GLcontext *ctx)
|
||||
return ctx->CurrentDispatch;
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** Miscellaneous functions *****/
|
||||
/** \name Miscellaneous functions *****/
|
||||
/**********************************************************************/
|
||||
/*@{*/
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* Record the given error code and call the driver's Error function if defined.
|
||||
*
|
||||
* This is called via _mesa_error().
|
||||
*/
|
||||
void
|
||||
@@ -2397,7 +2404,6 @@ _mesa_record_error( GLcontext *ctx, GLenum error )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_mesa_Finish( void )
|
||||
{
|
||||
@@ -2408,8 +2414,6 @@ _mesa_Finish( void )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
_mesa_Flush( void )
|
||||
{
|
||||
@@ -2420,8 +2424,9 @@ _mesa_Flush( void )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \brief Primitive names
|
||||
*/
|
||||
const char *_mesa_prim_name[GL_POLYGON+4] = {
|
||||
"GL_POINTS",
|
||||
"GL_LINES",
|
||||
@@ -2437,3 +2442,5 @@ const char *_mesa_prim_name[GL_POLYGON+4] = {
|
||||
"inside unkown primitive",
|
||||
"unknown state"
|
||||
};
|
||||
|
||||
/*@{*/
|
||||
|
||||
@@ -1,4 +1,23 @@
|
||||
/* $Id: context.h,v 1.35 2002/10/24 23:57:20 brianp Exp $ */
|
||||
/**
|
||||
* \file context.h
|
||||
* \brief Context.
|
||||
*
|
||||
* There are three Mesa datatypes which are meant to be used by device
|
||||
* drivers:
|
||||
* - GLcontext: this contains the Mesa rendering state
|
||||
* - GLvisual: this describes the color buffer (RGB vs. ci), whether or not
|
||||
* there's a depth buffer, stencil buffer, etc.
|
||||
* - GLframebuffer: contains pointers to the depth buffer, stencil buffer,
|
||||
* accum buffer and alpha buffers.
|
||||
*
|
||||
* These types should be encapsulated by corresponding device driver
|
||||
* datatypes. See xmesa.h and xmesaP.h for an example.
|
||||
*
|
||||
* In OOP terms, GLcontext, GLvisual, and GLframebuffer are base classes
|
||||
* which the device driver must derive from.
|
||||
*
|
||||
* The following functions create and destroy these datatypes.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -24,6 +43,7 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: context.h,v 1.35.4.1 2003/03/02 00:27:32 jrfonseca Exp $ */
|
||||
|
||||
#ifndef CONTEXT_H
|
||||
#define CONTEXT_H
|
||||
@@ -33,28 +53,10 @@
|
||||
#include "mtypes.h"
|
||||
|
||||
|
||||
/*
|
||||
* There are three Mesa datatypes which are meant to be used by device
|
||||
* drivers:
|
||||
* GLcontext: this contains the Mesa rendering state
|
||||
* GLvisual: this describes the color buffer (rgb vs. ci), whether
|
||||
* or not there's a depth buffer, stencil buffer, etc.
|
||||
* GLframebuffer: contains pointers to the depth buffer, stencil
|
||||
* buffer, accum buffer and alpha buffers.
|
||||
*
|
||||
* These types should be encapsulated by corresponding device driver
|
||||
* datatypes. See xmesa.h and xmesaP.h for an example.
|
||||
*
|
||||
* In OOP terms, GLcontext, GLvisual, and GLframebuffer are base classes
|
||||
* which the device driver must derive from.
|
||||
*
|
||||
* The following functions create and destroy these datatypes.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* Create/destroy a GLvisual.
|
||||
*/
|
||||
/**********************************************************************/
|
||||
/** \name Create/destroy a GLvisual. */
|
||||
/*@{*/
|
||||
|
||||
extern GLvisual *
|
||||
_mesa_create_visual( GLboolean rgbFlag,
|
||||
GLboolean dbFlag,
|
||||
@@ -93,11 +95,13 @@ _mesa_initialize_visual( GLvisual *v,
|
||||
extern void
|
||||
_mesa_destroy_visual( GLvisual *vis );
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/*
|
||||
* Create/destroy a GLframebuffer.
|
||||
*/
|
||||
/**********************************************************************/
|
||||
/** \name Create/destroy a GLframebuffer. */
|
||||
/*@{*/
|
||||
|
||||
extern GLframebuffer *
|
||||
_mesa_create_framebuffer( const GLvisual *visual,
|
||||
GLboolean softwareDepth,
|
||||
@@ -119,11 +123,13 @@ _mesa_free_framebuffer_data( GLframebuffer *buffer );
|
||||
extern void
|
||||
_mesa_destroy_framebuffer( GLframebuffer *buffer );
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/*
|
||||
* Create/destroy a GLcontext.
|
||||
*/
|
||||
/**********************************************************************/
|
||||
/** \name Create/destroy a GLcontext. */
|
||||
/*@{*/
|
||||
|
||||
extern GLcontext *
|
||||
_mesa_create_context( const GLvisual *visual,
|
||||
GLcontext *share_list,
|
||||
@@ -160,10 +166,13 @@ _mesa_make_current2( GLcontext *ctx, GLframebuffer *drawBuffer,
|
||||
extern GLcontext *
|
||||
_mesa_get_current_context(void);
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/*
|
||||
* Macros for fetching current context.
|
||||
/**
|
||||
* \brief Macro for fetching the current context.
|
||||
*
|
||||
* It should be used in the variable declaration area of a function.
|
||||
*/
|
||||
#ifdef THREADS
|
||||
|
||||
@@ -177,7 +186,9 @@ _mesa_get_current_context(void);
|
||||
|
||||
|
||||
|
||||
/* OpenGL SI-style export functions. */
|
||||
/**********************************************************************/
|
||||
/** \name OpenGL SI-style export functions. */
|
||||
/*@{*/
|
||||
|
||||
extern GLboolean
|
||||
_mesa_destroyContext(__GLcontext *gc);
|
||||
@@ -215,6 +226,7 @@ _mesa_beginDispatchOverride(__GLcontext *gc);
|
||||
extern void
|
||||
_mesa_endDispatchOverride(__GLcontext *gc);
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
extern struct _glapi_table *
|
||||
@@ -222,9 +234,9 @@ _mesa_get_dispatch(GLcontext *ctx);
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Miscellaneous
|
||||
*/
|
||||
/**********************************************************************/
|
||||
/** \name Miscellaneous */
|
||||
/*@{*/
|
||||
|
||||
extern void
|
||||
_mesa_record_error( GLcontext *ctx, GLenum error );
|
||||
@@ -236,5 +248,6 @@ _mesa_Finish( void );
|
||||
extern void
|
||||
_mesa_Flush( void );
|
||||
|
||||
/*@}*/
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
/* $Id: dd.h,v 1.74 2002/10/11 17:41:04 brianp Exp $ */
|
||||
/**
|
||||
* \file dd.h
|
||||
* \brief Device driver interfaces.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -24,6 +27,7 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dd.h,v 1.74.6.1 2003/03/02 00:27:33 jrfonseca Exp $ */
|
||||
|
||||
|
||||
#ifndef DD_INCLUDED
|
||||
@@ -47,136 +51,181 @@ struct gl_pixelstore_attrib;
|
||||
#define DD_STENCIL_BIT GL_STENCIL_BUFFER_BIT /* 0x00000400 */
|
||||
|
||||
|
||||
/*
|
||||
* Device Driver function table.
|
||||
/**
|
||||
* \brief Device driver function table.
|
||||
*/
|
||||
struct dd_function_table {
|
||||
|
||||
/**
|
||||
* \brief Return a string as needed by glGetString().
|
||||
*
|
||||
* Only the GL_RENDERER token must be implemented. Otherwise, NULL can be
|
||||
* returned.
|
||||
*/
|
||||
const GLubyte * (*GetString)( GLcontext *ctx, GLenum name );
|
||||
/* Return a string as needed by glGetString().
|
||||
* Only the GL_RENDERER token must be implemented. Otherwise,
|
||||
* NULL can be returned.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Notify the driver after Mesa has made some internal state changes.
|
||||
*
|
||||
* This is in addition to any statechange callbacks Mesa may already have
|
||||
* made.
|
||||
*/
|
||||
void (*UpdateState)( GLcontext *ctx, GLuint new_state );
|
||||
/*
|
||||
* UpdateState() is called to notify the driver after Mesa has made
|
||||
* some internal state changes. This is in addition to any
|
||||
* statechange callbacks Mesa may already have made.
|
||||
*/
|
||||
|
||||
void (*Clear)( GLcontext *ctx, GLbitfield mask, GLboolean all,
|
||||
GLint x, GLint y, GLint width, GLint height );
|
||||
/* Clear the color/depth/stencil/accum buffer(s).
|
||||
* 'mask' is a bitmask of the DD_*_BIT values defined above that indicates
|
||||
/**
|
||||
* \brief Clear the color/depth/stencil/accum buffer(s).
|
||||
*
|
||||
* \p mask is a bitmask of the DD_*_BIT values defined above that indicates
|
||||
* which buffers need to be cleared.
|
||||
* If 'all' is true then the clear the whole buffer, else clear only the
|
||||
* region defined by (x,y,width,height).
|
||||
* This function must obey the glColorMask, glIndexMask and glStencilMask
|
||||
* If \p all is true then clear the whole buffer, else clear only the
|
||||
* region defined by \c (x, y, width, height).
|
||||
* This function must obey the glColorMask(), glIndexMask() and glStencilMask()
|
||||
* settings!
|
||||
* Software Mesa can do masked clears if the device driver can't.
|
||||
*/
|
||||
void (*Clear)( GLcontext *ctx, GLbitfield mask, GLboolean all,
|
||||
GLint x, GLint y, GLint width, GLint height );
|
||||
|
||||
/**
|
||||
* \brief Specify the current buffer for writing.
|
||||
*
|
||||
* Called via glDrawBuffer(). Note the driver must organize fallbacks (e.g.
|
||||
* with swrast) if it cannot implement the requested mode.
|
||||
*/
|
||||
void (*DrawBuffer)( GLcontext *ctx, GLenum buffer );
|
||||
/*
|
||||
* Specifies the current buffer for writing. Called via glDrawBuffer().
|
||||
* Note the driver must organize fallbacks (eg with swrast) if it
|
||||
* cannot implement the requested mode.
|
||||
|
||||
/**
|
||||
* \brief Specifies the current buffer for reading.
|
||||
*
|
||||
* Called via glReadBuffer().
|
||||
*/
|
||||
|
||||
|
||||
void (*ReadBuffer)( GLcontext *ctx, GLenum buffer );
|
||||
/*
|
||||
* Specifies the current buffer for reading. Called via glReadBuffer().
|
||||
*/
|
||||
|
||||
void (*GetBufferSize)( GLframebuffer *buffer,
|
||||
GLuint *width, GLuint *height );
|
||||
/*
|
||||
* Returns the width and height of the named buffer/window.
|
||||
/**
|
||||
* \brief Get the width and height of the named buffer/window.
|
||||
*
|
||||
* Mesa uses this to determine when the driver's window size has changed.
|
||||
*/
|
||||
void (*GetBufferSize)( GLframebuffer *buffer,
|
||||
GLuint *width, GLuint *height );
|
||||
|
||||
/**
|
||||
* \brief Resize the driver's depth/stencil/accum/back buffers to match the
|
||||
* size given in the GLframebuffer struct.
|
||||
*
|
||||
* This is typically called when Mesa detects that a window size has changed.
|
||||
*/
|
||||
void (*ResizeBuffers)( GLframebuffer *buffer );
|
||||
/*
|
||||
* Resize the driver's depth/stencil/accum/back buffers to match the
|
||||
* size given in the GLframebuffer struct. This is typically called
|
||||
* when Mesa detects that a window size has changed.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief This is called whenever glFinish() is called.
|
||||
*/
|
||||
void (*Finish)( GLcontext *ctx );
|
||||
/*
|
||||
* This is called whenever glFinish() is called.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief This is called whenever glFlush() is called.
|
||||
*/
|
||||
void (*Flush)( GLcontext *ctx );
|
||||
/*
|
||||
* This is called whenever glFlush() is called.
|
||||
*/
|
||||
|
||||
void (*Error)( GLcontext *ctx );
|
||||
/*
|
||||
* Called whenever an error is generated. ctx->ErrorValue contains
|
||||
/**
|
||||
* \brief Called whenever an error is generated. ctx->ErrorValue contains
|
||||
* the error value.
|
||||
*/
|
||||
void (*Error)( GLcontext *ctx );
|
||||
|
||||
|
||||
/***
|
||||
*** For hardware accumulation buffer:
|
||||
***/
|
||||
/**
|
||||
* \name For hardware accumulation buffer
|
||||
*/
|
||||
/*@{*/
|
||||
/**
|
||||
* \brief Execute glAccum command within the given scissor region.
|
||||
*/
|
||||
void (*Accum)( GLcontext *ctx, GLenum op, GLfloat value,
|
||||
GLint xpos, GLint ypos, GLint width, GLint height );
|
||||
/* Execute glAccum command within the given scissor region.
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**
|
||||
* \name glDraw(), glRead(), glCopyPixels() and glBitmap() functions
|
||||
*/
|
||||
/*@{*/
|
||||
|
||||
|
||||
/***
|
||||
*** glDraw/Read/CopyPixels and glBitmap functions:
|
||||
***/
|
||||
|
||||
/**
|
||||
* \brief This is called by glDrawPixels().
|
||||
*
|
||||
* \p unpack describes how to unpack the source image data.
|
||||
*/
|
||||
void (*DrawPixels)( GLcontext *ctx,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height,
|
||||
GLenum format, GLenum type,
|
||||
const struct gl_pixelstore_attrib *unpack,
|
||||
const GLvoid *pixels );
|
||||
/* This is called by glDrawPixels.
|
||||
* 'unpack' describes how to unpack the source image data.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called by glReadPixels().
|
||||
*/
|
||||
void (*ReadPixels)( GLcontext *ctx,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height,
|
||||
GLenum format, GLenum type,
|
||||
const struct gl_pixelstore_attrib *unpack,
|
||||
GLvoid *dest );
|
||||
/* Called by glReadPixels.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Do a glCopyPixels().
|
||||
*
|
||||
* This function must respect all rasterization state, glPixelTransfer(),
|
||||
* glPixelZoom(), etc.
|
||||
*/
|
||||
void (*CopyPixels)( GLcontext *ctx,
|
||||
GLint srcx, GLint srcy,
|
||||
GLsizei width, GLsizei height,
|
||||
GLint dstx, GLint dsty, GLenum type );
|
||||
/* Do a glCopyPixels. This function must respect all rasterization
|
||||
* state, glPixelTransfer, glPixelZoom, etc.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief This is called by glBitmap().
|
||||
*
|
||||
* Works the same as dd_function_table::DrawPixels, above.
|
||||
*/
|
||||
void (*Bitmap)( GLcontext *ctx,
|
||||
GLint x, GLint y, GLsizei width, GLsizei height,
|
||||
const struct gl_pixelstore_attrib *unpack,
|
||||
const GLubyte *bitmap );
|
||||
/* This is called by glBitmap. Works the same as DrawPixels, above.
|
||||
*/
|
||||
/*@}*/
|
||||
|
||||
/***
|
||||
*** Texture image functions:
|
||||
***/
|
||||
|
||||
/**
|
||||
* \name Texture image functions
|
||||
*/
|
||||
/*@{*/
|
||||
|
||||
/**
|
||||
* \brief Choose texture format.
|
||||
*
|
||||
* This is called by the \c _mesa_store_tex[sub]image[123]d() fallback
|
||||
* functions. The driver should examine \p internalFormat and return a
|
||||
* pointer to an appropriate gl_texture_format.
|
||||
*/
|
||||
const struct gl_texture_format *
|
||||
(*ChooseTextureFormat)( GLcontext *ctx, GLint internalFormat,
|
||||
GLenum srcFormat, GLenum srcType );
|
||||
/* This is called by the _mesa_store_tex[sub]image[123]d() fallback
|
||||
* functions. The driver should examine <internalFormat> and return a
|
||||
* pointer to an appropriate gl_texture_format.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called by glTexImage1D().
|
||||
*
|
||||
* \param target user specified.
|
||||
* \param format user specified.
|
||||
* \param type user specified.
|
||||
* \param pixels user specified.
|
||||
* \param packing indicates the image packing of pixels.
|
||||
* \param texObj is the target texture object.
|
||||
* \param texImage is the target texture image. It will have the texture \p
|
||||
* width, \p height, \p depth, \p border and \p internalFormat information.
|
||||
*
|
||||
* \p retainInternalCopy is returned by this function and indicates whether
|
||||
* core Mesa should keep an internal copy of the texture image.
|
||||
*
|
||||
* Drivers should call a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
void (*TexImage1D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint internalFormat,
|
||||
GLint width, GLint border,
|
||||
@@ -184,6 +233,12 @@ struct dd_function_table {
|
||||
const struct gl_pixelstore_attrib *packing,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage );
|
||||
|
||||
/**
|
||||
* \brief Called by glTexImage2D().
|
||||
*
|
||||
* \sa dd_function_table::TexImage1D.
|
||||
*/
|
||||
void (*TexImage2D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint internalFormat,
|
||||
GLint width, GLint height, GLint border,
|
||||
@@ -191,6 +246,12 @@ struct dd_function_table {
|
||||
const struct gl_pixelstore_attrib *packing,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage );
|
||||
|
||||
/**
|
||||
* \brief Called by glTexImage3D().
|
||||
*
|
||||
* \sa dd_function_table::TexImage1D.
|
||||
*/
|
||||
void (*TexImage3D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint internalFormat,
|
||||
GLint width, GLint height, GLint depth, GLint border,
|
||||
@@ -198,18 +259,28 @@ struct dd_function_table {
|
||||
const struct gl_pixelstore_attrib *packing,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage );
|
||||
/* Called by glTexImage1/2/3D.
|
||||
* Arguments:
|
||||
* <target>, <level>, <format>, <type> and <pixels> are user specified.
|
||||
* <packing> indicates the image packing of pixels.
|
||||
* <texObj> is the target texture object.
|
||||
* <texImage> is the target texture image. It will have the texture
|
||||
* width, height, depth, border and internalFormat information.
|
||||
* <retainInternalCopy> is returned by this function and indicates whether
|
||||
* core Mesa should keep an internal copy of the texture image.
|
||||
* Drivers should call a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called by glTexSubImage1D().
|
||||
*
|
||||
* \param target user specified.
|
||||
* \param level user specified.
|
||||
* \param xoffset user specified.
|
||||
* \param yoffset user specified.
|
||||
* \param zoffset user specified.
|
||||
* \param width user specified.
|
||||
* \param height user specified.
|
||||
* \param depth user specified.
|
||||
* \param format user specified.
|
||||
* \param type user specified.
|
||||
* \param pixels user specified.
|
||||
* \param packing indicates the image packing of pixels.
|
||||
* \param texObj is the target texture object.
|
||||
* \param texImage is the target texture image. It will have the texture \p
|
||||
* width, \p height, \p border and \p internalFormat information.
|
||||
*
|
||||
* The driver should use a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
void (*TexSubImage1D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint xoffset, GLsizei width,
|
||||
GLenum format, GLenum type,
|
||||
@@ -217,6 +288,12 @@ struct dd_function_table {
|
||||
const struct gl_pixelstore_attrib *packing,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage );
|
||||
|
||||
/**
|
||||
* \brief Called by glTexSubImage2D().
|
||||
*
|
||||
* \sa dd_function_table::TexSubImage1D.
|
||||
*/
|
||||
void (*TexSubImage2D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset,
|
||||
GLsizei width, GLsizei height,
|
||||
@@ -225,6 +302,12 @@ struct dd_function_table {
|
||||
const struct gl_pixelstore_attrib *packing,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage );
|
||||
|
||||
/**
|
||||
* \brief Called by glTexSubImage3D().
|
||||
*
|
||||
* \sa dd_function_table::TexSubImage1D.
|
||||
*/
|
||||
void (*TexSubImage3D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLsizei width, GLsizei height, GLint depth,
|
||||
@@ -233,68 +316,108 @@ struct dd_function_table {
|
||||
const struct gl_pixelstore_attrib *packing,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage );
|
||||
/* Called by glTexSubImage1/2/3D.
|
||||
* Arguments:
|
||||
* <target>, <level>, <xoffset>, <yoffset>, <zoffset>, <width>, <height>,
|
||||
* <depth>, <format>, <type> and <pixels> are user specified.
|
||||
* <packing> indicates the image packing of pixels.
|
||||
* <texObj> is the target texture object.
|
||||
* <texImage> is the target texture image. It will have the texture
|
||||
* width, height, border and internalFormat information.
|
||||
* The driver should use a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called by glCopyTexImage1D().
|
||||
*
|
||||
* Drivers should use a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
void (*CopyTexImage1D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLenum internalFormat, GLint x, GLint y,
|
||||
GLsizei width, GLint border );
|
||||
|
||||
/**
|
||||
* \brief Called by glCopyTexImage2D().
|
||||
*
|
||||
* Drivers should use a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
void (*CopyTexImage2D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLenum internalFormat, GLint x, GLint y,
|
||||
GLsizei width, GLsizei height, GLint border );
|
||||
/* Called by glCopyTexImage1D and glCopyTexImage2D.
|
||||
|
||||
/**
|
||||
* \brief Called by glCopyTexSubImage1D().
|
||||
*
|
||||
* Drivers should use a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
|
||||
void (*CopyTexSubImage1D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint xoffset,
|
||||
GLint x, GLint y, GLsizei width );
|
||||
/**
|
||||
* \brief Called by glCopyTexSubImage2D().
|
||||
*
|
||||
* Drivers should use a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
void (*CopyTexSubImage2D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset,
|
||||
GLint x, GLint y,
|
||||
GLsizei width, GLsizei height );
|
||||
/**
|
||||
* \brief Called by glCopyTexSubImage3D().
|
||||
*
|
||||
* Drivers should use a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
void (*CopyTexSubImage3D)( GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLint x, GLint y,
|
||||
GLsizei width, GLsizei height );
|
||||
/* Called by glCopyTexSubImage1/2/3D.
|
||||
* Drivers should use a fallback routine from texstore.c if needed.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called by glTexImage[123]D when user specifies a proxy texture
|
||||
* target.
|
||||
*
|
||||
* \return GL_TRUE if the proxy test passes, or GL_FALSE if the test fails.
|
||||
*/
|
||||
GLboolean (*TestProxyTexImage)(GLcontext *ctx, GLenum target,
|
||||
GLint level, GLint internalFormat,
|
||||
GLenum format, GLenum type,
|
||||
GLint width, GLint height,
|
||||
GLint depth, GLint border);
|
||||
/* Called by glTexImage[123]D when user specifies a proxy texture
|
||||
* target. Return GL_TRUE if the proxy test passes, return GL_FALSE
|
||||
* if the test fails.
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**
|
||||
* \name Compressed texture functions
|
||||
*/
|
||||
/*@{*/
|
||||
|
||||
/***
|
||||
*** Compressed texture functions:
|
||||
***/
|
||||
|
||||
/**
|
||||
* \brief Called by glCompressedTexImage1D().
|
||||
*
|
||||
* \param target user specified.
|
||||
* \param format user specified.
|
||||
* \param type user specified.
|
||||
* \param pixels user specified.
|
||||
* \param packing indicates the image packing of pixels.
|
||||
* \param texObj is the target texture object.
|
||||
* \param texImage is the target texture image. It will have the texture \p
|
||||
* width, \p height, \p depth, \p border and \p internalFormat information.
|
||||
*
|
||||
* \a retainInternalCopy is returned by this function and indicates whether
|
||||
* core Mesa should keep an internal copy of the texture image.
|
||||
*/
|
||||
void (*CompressedTexImage1D)( GLcontext *ctx, GLenum target,
|
||||
GLint level, GLint internalFormat,
|
||||
GLsizei width, GLint border,
|
||||
GLsizei imageSize, const GLvoid *data,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage );
|
||||
/**
|
||||
* \brief Called by glCompressedTexImage2D().
|
||||
*
|
||||
* \sa dd_function_table::glCompressedTexImage1D.
|
||||
*/
|
||||
void (*CompressedTexImage2D)( GLcontext *ctx, GLenum target,
|
||||
GLint level, GLint internalFormat,
|
||||
GLsizei width, GLsizei height, GLint border,
|
||||
GLsizei imageSize, const GLvoid *data,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage );
|
||||
/**
|
||||
* \brief Called by glCompressedTexImage3D().
|
||||
*
|
||||
* \sa dd_function_table::glCompressedTexImage3D.
|
||||
*/
|
||||
void (*CompressedTexImage3D)( GLcontext *ctx, GLenum target,
|
||||
GLint level, GLint internalFormat,
|
||||
GLsizei width, GLsizei height, GLsizei depth,
|
||||
@@ -302,24 +425,35 @@ struct dd_function_table {
|
||||
GLsizei imageSize, const GLvoid *data,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage );
|
||||
/* Called by glCompressedTexImage1/2/3D.
|
||||
* Arguments:
|
||||
* <target>, <level>, <internalFormat>, <data> are user specified.
|
||||
* <texObj> is the target texture object.
|
||||
* <texImage> is the target texture image. It will have the texture
|
||||
* width, height, depth, border and internalFormat information.
|
||||
* <retainInternalCopy> is returned by this function and indicates whether
|
||||
* core Mesa should keep an internal copy of the texture image.
|
||||
* Return GL_TRUE if operation completed, return GL_FALSE if core Mesa
|
||||
* should do the job.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called by glCompressedTexSubImage1D().
|
||||
*
|
||||
* \param target user specified.
|
||||
* \param level user specified.
|
||||
* \param xoffset user specified.
|
||||
* \param yoffset user specified.
|
||||
* \param zoffset user specified.
|
||||
* \param width user specified.
|
||||
* \param height user specified.
|
||||
* \param depth user specified.
|
||||
* \param imageSize user specified.
|
||||
* \param data user specified.
|
||||
* \param texObj is the target texture object.
|
||||
* \param texImage is the target texture image. It will have the texture \p
|
||||
* width, \p height, \p depth, \p border and \p internalFormat information.
|
||||
*/
|
||||
void (*CompressedTexSubImage1D)(GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint xoffset, GLsizei width,
|
||||
GLenum format,
|
||||
GLsizei imageSize, const GLvoid *data,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage);
|
||||
/**
|
||||
* \brief Called by glCompressedTexSubImage2D().
|
||||
*
|
||||
* \sa dd_function_table::glCompressedTexImage3D.
|
||||
*/
|
||||
void (*CompressedTexSubImage2D)(GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset,
|
||||
GLsizei width, GLint height,
|
||||
@@ -327,6 +461,11 @@ struct dd_function_table {
|
||||
GLsizei imageSize, const GLvoid *data,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage);
|
||||
/**
|
||||
* \brief Called by glCompressedTexSubImage3D().
|
||||
*
|
||||
* \sa dd_function_table::glCompressedTexImage3D.
|
||||
*/
|
||||
void (*CompressedTexSubImage3D)(GLcontext *ctx, GLenum target, GLint level,
|
||||
GLint xoffset, GLint yoffset, GLint zoffset,
|
||||
GLsizei width, GLint height, GLint depth,
|
||||
@@ -334,59 +473,64 @@ struct dd_function_table {
|
||||
GLsizei imageSize, const GLvoid *data,
|
||||
struct gl_texture_object *texObj,
|
||||
struct gl_texture_image *texImage);
|
||||
/* Called by glCompressedTexSubImage1/2/3D.
|
||||
* Arguments:
|
||||
* <target>, <level>, <x/z/zoffset>, <width>, <height>, <depth>,
|
||||
* <imageSize>, and <data> are user specified.
|
||||
* <texObj> is the target texture object.
|
||||
* <texImage> is the target texture image. It will have the texture
|
||||
* width, height, depth, border and internalFormat information.
|
||||
* Return GL_TRUE if operation completed, return GL_FALSE if core Mesa
|
||||
* should do the job.
|
||||
/*@}*/
|
||||
|
||||
/**
|
||||
* \name Texture object functions
|
||||
*/
|
||||
/*@{*/
|
||||
|
||||
/***
|
||||
*** Texture object functions:
|
||||
***/
|
||||
|
||||
/**
|
||||
* \brief Called by glBindTexture().
|
||||
*/
|
||||
void (*BindTexture)( GLcontext *ctx, GLenum target,
|
||||
struct gl_texture_object *tObj );
|
||||
/* Called by glBindTexture().
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called when a texture object is created.
|
||||
*/
|
||||
void (*CreateTexture)( GLcontext *ctx, struct gl_texture_object *tObj );
|
||||
/* Called when a texture object is created.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called when a texture object is about to be deallocated.
|
||||
*
|
||||
* Driver should free anything attached to the DriverData pointers.
|
||||
*/
|
||||
void (*DeleteTexture)( GLcontext *ctx, struct gl_texture_object *tObj );
|
||||
/* Called when a texture object is about to be deallocated. Driver
|
||||
* should free anything attached to the DriverData pointers.
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called by glAreTextureResident().
|
||||
*/
|
||||
GLboolean (*IsTextureResident)( GLcontext *ctx,
|
||||
struct gl_texture_object *t );
|
||||
/* Called by glAreTextureResident().
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called by glPrioritizeTextures().
|
||||
*/
|
||||
void (*PrioritizeTexture)( GLcontext *ctx, struct gl_texture_object *t,
|
||||
GLclampf priority );
|
||||
/* Called by glPrioritizeTextures().
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Called by glActiveTextureARB() to set current texture unit.
|
||||
*/
|
||||
void (*ActiveTexture)( GLcontext *ctx, GLuint texUnitNumber );
|
||||
/* Called by glActiveTextureARB to set current texture unit.
|
||||
*/
|
||||
|
||||
void (*UpdateTexturePalette)( GLcontext *ctx,
|
||||
struct gl_texture_object *tObj );
|
||||
/* Called when the texture's color lookup table is changed.
|
||||
* If tObj is NULL then the shared texture palette ctx->Texture.Palette
|
||||
/**
|
||||
* \brief Called when the texture's color lookup table is changed.
|
||||
*
|
||||
* If \p tObj is NULL then the shared texture palette ctx->Texture.Palette
|
||||
* is to be updated.
|
||||
*/
|
||||
void (*UpdateTexturePalette)( GLcontext *ctx,
|
||||
struct gl_texture_object *tObj );
|
||||
/*@}*/
|
||||
|
||||
/***
|
||||
*** Imaging functionality:
|
||||
***/
|
||||
|
||||
/**
|
||||
* \name Imaging functionality
|
||||
* .
|
||||
*/
|
||||
/*@{*/
|
||||
void (*CopyColorTable)( GLcontext *ctx,
|
||||
GLenum target, GLenum internalformat,
|
||||
GLint x, GLint y, GLsizei width );
|
||||
@@ -403,16 +547,19 @@ struct dd_function_table {
|
||||
GLenum internalFormat,
|
||||
GLint x, GLint y,
|
||||
GLsizei width, GLsizei height );
|
||||
/*@}*/
|
||||
|
||||
|
||||
|
||||
/***
|
||||
*** State-changing functions (drawing functions are above)
|
||||
***
|
||||
*** These functions are called by their corresponding OpenGL API functions.
|
||||
*** They're ALSO called by the gl_PopAttrib() function!!!
|
||||
*** May add more functions like these to the device driver in the future.
|
||||
***/
|
||||
/**
|
||||
* \name State-changing functions.
|
||||
*
|
||||
* \note drawing functions are above.
|
||||
*
|
||||
* These functions are called by their corresponding OpenGL API functions.
|
||||
* They're \e also called by the gl_PopAttrib() function!!!
|
||||
* May add more functions like these to the device driver in the future.
|
||||
*/
|
||||
/*@{*/
|
||||
void (*AlphaFunc)(GLcontext *ctx, GLenum func, GLfloat ref);
|
||||
void (*BlendColor)(GLcontext *ctx, const GLfloat color[4]);
|
||||
void (*BlendEquation)(GLcontext *ctx, GLenum mode);
|
||||
@@ -465,12 +612,15 @@ struct dd_function_table {
|
||||
GLenum pname, const GLfloat *params);
|
||||
void (*TextureMatrix)(GLcontext *ctx, GLuint unit, const GLmatrix *mat);
|
||||
void (*Viewport)(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h);
|
||||
/*@}*/
|
||||
|
||||
/***
|
||||
*** Vertex array functions
|
||||
***
|
||||
*** Called by the corresponding OpenGL functions.
|
||||
***/
|
||||
|
||||
/**
|
||||
* \name Vertex array functions
|
||||
*
|
||||
* Called by the corresponding OpenGL functions.
|
||||
*/
|
||||
/*@{*/
|
||||
void (*VertexPointer)(GLcontext *ctx, GLint size, GLenum type,
|
||||
GLsizei stride, const GLvoid *ptr);
|
||||
void (*NormalPointer)(GLcontext *ctx, GLenum type,
|
||||
@@ -488,111 +638,164 @@ struct dd_function_table {
|
||||
void (*EdgeFlagPointer)(GLcontext *ctx, GLsizei stride, const GLvoid *ptr);
|
||||
void (*VertexAttribPointer)(GLcontext *ctx, GLuint index, GLint size,
|
||||
GLenum type, GLsizei stride, const GLvoid *ptr);
|
||||
/*@}*/
|
||||
|
||||
|
||||
/*** State-query functions
|
||||
***
|
||||
*** Return GL_TRUE if query was completed, GL_FALSE otherwise.
|
||||
***/
|
||||
/**
|
||||
* \name State-query functions
|
||||
*
|
||||
* Return GL_TRUE if query was completed, GL_FALSE otherwise.
|
||||
*/
|
||||
/*@{*/
|
||||
GLboolean (*GetBooleanv)(GLcontext *ctx, GLenum pname, GLboolean *result);
|
||||
GLboolean (*GetDoublev)(GLcontext *ctx, GLenum pname, GLdouble *result);
|
||||
GLboolean (*GetFloatv)(GLcontext *ctx, GLenum pname, GLfloat *result);
|
||||
GLboolean (*GetIntegerv)(GLcontext *ctx, GLenum pname, GLint *result);
|
||||
GLboolean (*GetPointerv)(GLcontext *ctx, GLenum pname, GLvoid **result);
|
||||
/*@}*/
|
||||
|
||||
|
||||
/***
|
||||
*** Support for multiple t&l engines
|
||||
***/
|
||||
/**
|
||||
* \name Support for multiple T&L engines
|
||||
*/
|
||||
/*@{*/
|
||||
|
||||
GLuint NeedValidate;
|
||||
/* Bitmask of state changes that require the current tnl module to be
|
||||
/**
|
||||
* \brief Bitmask of state changes that require the current T&L module to be
|
||||
* validated, using ValidateTnlModule() below.
|
||||
*/
|
||||
GLuint NeedValidate;
|
||||
|
||||
void (*ValidateTnlModule)( GLcontext *ctx, GLuint new_state );
|
||||
/* Validate the current tnl module. This is called directly after
|
||||
* UpdateState() when a state change that has occured matches the
|
||||
* NeedValidate bitmask above. This ensures all computed values are
|
||||
* up to date, thus allowing the driver to decide if the current tnl
|
||||
* module needs to be swapped out.
|
||||
/**
|
||||
* \brief Validate the current T&L module.
|
||||
*
|
||||
* This must be non-NULL if a driver installs a custom tnl module and
|
||||
* sets the NeedValidate bitmask, but may be NULL otherwise.
|
||||
* This is called directly after UpdateState() when a state change that has
|
||||
* occured matches the dd_function_table::NeedValidate bitmask above. This
|
||||
* ensures all computed values are up to date, thus allowing the driver to
|
||||
* decide if the current T&L module needs to be swapped out.
|
||||
*
|
||||
* This must be non-NULL if a driver installs a custom T&L module and sets
|
||||
* the dd_function_table::NeedValidate bitmask, but may be NULL otherwise.
|
||||
*/
|
||||
void (*ValidateTnlModule)( GLcontext *ctx, GLuint new_state );
|
||||
|
||||
|
||||
#define PRIM_OUTSIDE_BEGIN_END GL_POLYGON+1
|
||||
#define PRIM_INSIDE_UNKNOWN_PRIM GL_POLYGON+2
|
||||
#define PRIM_UNKNOWN GL_POLYGON+3
|
||||
|
||||
/**
|
||||
* \brief Set by the driver-supplied T&L engine.
|
||||
*
|
||||
* Set to PRIM_OUTSIDE_BEGIN_END when outside glBegin()/glEnd().
|
||||
*/
|
||||
GLuint CurrentExecPrimitive;
|
||||
/* Set by the driver-supplied t&l engine. Set to
|
||||
* PRIM_OUTSIDE_BEGIN_END when outside begin/end.
|
||||
*/
|
||||
|
||||
GLuint CurrentSavePrimitive;
|
||||
/* Current state of an in-progress compilation. May take on any of
|
||||
* the additional values defined above.
|
||||
/**
|
||||
* Current state of an in-progress compilation.
|
||||
*
|
||||
* May take on any of the additional values PRIM_OUTSIDE_BEGIN_END,
|
||||
* PRIM_INSIDE_UNKNOWN_PRIM or PRIM_UNKNOWN defined above.
|
||||
*/
|
||||
GLuint CurrentSavePrimitive;
|
||||
|
||||
|
||||
#define FLUSH_STORED_VERTICES 0x1
|
||||
#define FLUSH_UPDATE_CURRENT 0x2
|
||||
GLuint NeedFlush;
|
||||
/* Set by the driver-supplied t&l engine whenever vertices are
|
||||
* buffered between begin/end objects or ctx->Current is not uptodate.
|
||||
/**
|
||||
* Set by the driver-supplied T&L engine whenever vertices are
|
||||
* buffered between glBegin()/glEnd() objects or ctx->Current is not uptodate.
|
||||
*
|
||||
* The FlushVertices() call below may be used to resolve
|
||||
* The dd_function_table::FlushVertices call below may be used to resolve
|
||||
* these conditions.
|
||||
*/
|
||||
GLuint NeedFlush;
|
||||
|
||||
void (*FlushVertices)( GLcontext *ctx, GLuint flags );
|
||||
/* If inside begin/end, ASSERT(0).
|
||||
* Otherwise,
|
||||
* if (flags & FLUSH_STORED_VERTICES) flushes any buffered vertices,
|
||||
* if (flags & FLUSH_UPDATE_CURRENT) updates ctx->Current
|
||||
* and ctx->Light.Material
|
||||
/**
|
||||
* If inside glBegin()/glEnd(), it should ASSERT(0). Otherwise, if
|
||||
* FLUSH_STORED_VERTICES bit in \p flags is set flushes any buffered
|
||||
* vertices, if FLUSH_UPDATE_CURRENT bit is set updates ctx->Current and
|
||||
* ctx->Light.Material
|
||||
*
|
||||
* Note that the default t&l engine never clears the
|
||||
* Note that the default T&L engine never clears the
|
||||
* FLUSH_UPDATE_CURRENT bit, even after performing the update.
|
||||
*/
|
||||
void (*FlushVertices)( GLcontext *ctx, GLuint flags );
|
||||
|
||||
void (*LightingSpaceChange)( GLcontext *ctx );
|
||||
/* Notify driver that the special derived value _NeedEyeCoords has
|
||||
/**
|
||||
* \brief Notify driver that the special derived value _NeedEyeCoords has
|
||||
* changed.
|
||||
*/
|
||||
void (*LightingSpaceChange)( GLcontext *ctx );
|
||||
|
||||
void (*NewList)( GLcontext *ctx, GLuint list, GLenum mode );
|
||||
void (*EndList)( GLcontext *ctx );
|
||||
/* Let the t&l component know what is going on with display lists
|
||||
/**
|
||||
* \brief Called by glNewList().
|
||||
*
|
||||
* Let the T&L component know what is going on with display lists
|
||||
* in time to make changes to dispatch tables, etc.
|
||||
* Called by glNewList() and glEndList(), respectively.
|
||||
*/
|
||||
void (*NewList)( GLcontext *ctx, GLuint list, GLenum mode );
|
||||
/**
|
||||
* \brief Called by glEndList().
|
||||
*
|
||||
* \sa dd_function_table::NewList.
|
||||
*/
|
||||
void (*EndList)( GLcontext *ctx );
|
||||
|
||||
void (*BeginCallList)( GLcontext *ctx, GLuint list );
|
||||
void (*EndCallList)( GLcontext *ctx );
|
||||
/* Notify the t&l component before and after calling a display list.
|
||||
/**
|
||||
* \brief Called by glCallList(s), but not recursively.
|
||||
*
|
||||
* Notify the T&L component before and after calling a display list.
|
||||
* Called by glCallList(s), but not recursively.
|
||||
*/
|
||||
void (*BeginCallList)( GLcontext *ctx, GLuint list );
|
||||
/**
|
||||
* \brief Called by glEndCallList().
|
||||
*
|
||||
* \sa dd_function_table::BeginCallList.
|
||||
*/
|
||||
void (*EndCallList)( GLcontext *ctx );
|
||||
|
||||
/**
|
||||
* \brief Let the T&L component know when the context becomes current.
|
||||
*/
|
||||
void (*MakeCurrent)( GLcontext *ctx, GLframebuffer *drawBuffer,
|
||||
GLframebuffer *readBuffer );
|
||||
/* Let the t&l component know when the context becomes current.
|
||||
|
||||
/**
|
||||
* \brief Called by glLockArraysEXT().
|
||||
*/
|
||||
|
||||
|
||||
void (*LockArraysEXT)( GLcontext *ctx, GLint first, GLsizei count );
|
||||
void (*UnlockArraysEXT)( GLcontext *ctx );
|
||||
/* Called by glLockArraysEXT() and glUnlockArraysEXT(), respectively.
|
||||
/**
|
||||
* \brief Called by UnlockArraysEXT().
|
||||
*/
|
||||
void (*UnlockArraysEXT)( GLcontext *ctx );
|
||||
/*@}*/
|
||||
};
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Transform/Clip/Lighting interface
|
||||
/**
|
||||
* \brief Transform/Clip/Lighting interface
|
||||
*/
|
||||
typedef struct {
|
||||
/**
|
||||
* Drivers present a reduced set of the functions possible in
|
||||
* glBegin()/glEnd() objects. Core mesa provides translation stubs for the
|
||||
* remaining functions to map down to these entrypoints.
|
||||
*
|
||||
* These are the initial values to be installed into dispatch by
|
||||
* mesa. If the T&L driver wants to modify the dispatch table
|
||||
* while installed, it must do so itself. It would be possible for
|
||||
* the vertexformat to install it's own initial values for these
|
||||
* functions, but this way there is an obvious list of what is
|
||||
* expected of the driver.
|
||||
*
|
||||
* If the driver wants to hook in entrypoints other than those
|
||||
* listed, it must restore them to their original values in
|
||||
* the disable() callback, below.
|
||||
*/
|
||||
/*@{*/
|
||||
void (*ArrayElement)( GLint ); /* NOTE */
|
||||
void (*Color3f)( GLfloat, GLfloat, GLfloat );
|
||||
void (*Color3fv)( const GLfloat * );
|
||||
@@ -648,52 +851,44 @@ typedef struct {
|
||||
void (*End)( void );
|
||||
void (*VertexAttrib4fNV)( GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w );
|
||||
void (*VertexAttrib4fvNV)( GLuint index, const GLfloat *v );
|
||||
/*@}*/
|
||||
|
||||
/* Drivers present a reduced set of the functions possible in
|
||||
* begin/end objects. Core mesa provides translation stubs for the
|
||||
* remaining functions to map down to these entrypoints.
|
||||
*
|
||||
* These are the initial values to be installed into dispatch by
|
||||
* mesa. If the t&l driver wants to modify the dispatch table
|
||||
* while installed, it must do so itself. It would be possible for
|
||||
* the vertexformat to install it's own initial values for these
|
||||
* functions, but this way there is an obvious list of what is
|
||||
* expected of the driver.
|
||||
*
|
||||
* If the driver wants to hook in entrypoints other than those
|
||||
* listed above, it must restore them to their original values in
|
||||
* the disable() callback, below.
|
||||
*/
|
||||
|
||||
void (*Rectf)( GLfloat, GLfloat, GLfloat, GLfloat );
|
||||
/*
|
||||
*/
|
||||
void (*Rectf)( GLfloat, GLfloat, GLfloat, GLfloat );
|
||||
|
||||
/**
|
||||
* These may or may not belong here. Heuristic: if an array is
|
||||
* enabled, the installed vertex format should support that array and
|
||||
* it's current size natively.
|
||||
*/
|
||||
/*@{*/
|
||||
void (*DrawArrays)( GLenum mode, GLint start, GLsizei count );
|
||||
void (*DrawElements)( GLenum mode, GLsizei count, GLenum type,
|
||||
const GLvoid *indices );
|
||||
void (*DrawRangeElements)( GLenum mode, GLuint start,
|
||||
GLuint end, GLsizei count,
|
||||
GLenum type, const GLvoid *indices );
|
||||
/* These may or may not belong here. Heuristic: If an array is
|
||||
* enabled, the installed vertex format should support that array and
|
||||
* it's current size natively.
|
||||
*/
|
||||
/*@}*/
|
||||
|
||||
void (*EvalMesh1)( GLenum mode, GLint i1, GLint i2 );
|
||||
void (*EvalMesh2)( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
|
||||
/* If you don't support eval, fallback to the default vertex format
|
||||
/**
|
||||
* If you don't support eval, fallback to the default vertex format
|
||||
* on receiving an eval call and use the pipeline mechanism to
|
||||
* provide partial t&l acceleration.
|
||||
* provide partial T&L acceleration.
|
||||
*
|
||||
* Mesa will provide a set of helper functions to do eval within
|
||||
* accelerated vertex formats, eventually...
|
||||
*/
|
||||
/*@{*/
|
||||
void (*EvalMesh1)( GLenum mode, GLint i1, GLint i2 );
|
||||
void (*EvalMesh2)( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
|
||||
/*@}*/
|
||||
|
||||
GLboolean prefer_float_colors;
|
||||
/* Should core try to send colors to glColor4f or glColor4chan,
|
||||
/**
|
||||
* Should core try to send colors to glColor4f or glColor4chan,
|
||||
* where it has a choice?
|
||||
*/
|
||||
GLboolean prefer_float_colors;
|
||||
} GLvertexformat;
|
||||
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
/* $Id: dlist.c,v 1.100 2002/11/06 15:16:23 brianp Exp $ */
|
||||
/**
|
||||
* \file dlist.c
|
||||
* \brief Display lists management functions.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -24,6 +27,8 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: dlist.c,v 1.100.4.1 2003/03/02 00:27:34 jrfonseca Exp $ */
|
||||
|
||||
#include "glheader.h"
|
||||
#include "imports.h"
|
||||
#include "api_loopback.h"
|
||||
@@ -70,47 +75,48 @@
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Functions which aren't compiled but executed immediately:
|
||||
glIsList
|
||||
glGenLists
|
||||
glDeleteLists
|
||||
glEndList --- BUT: call ctx->Driver.EndList at end of list execution?
|
||||
glFeedbackBuffer
|
||||
glSelectBuffer
|
||||
glRenderMode
|
||||
glReadPixels
|
||||
glPixelStore
|
||||
glFlush
|
||||
glFinish
|
||||
glIsEnabled
|
||||
glGet*
|
||||
|
||||
Functions which cause errors if called while compiling a display list:
|
||||
glNewList
|
||||
*/
|
||||
/**
|
||||
* Functions which aren't compiled but executed immediately:
|
||||
* - glIsList
|
||||
* - glGenLists
|
||||
* - glDeleteLists
|
||||
* - glEndList --- BUT: call ctx->Driver.EndList at end of list execution?
|
||||
* - glFeedbackBuffer
|
||||
* - glSelectBuffer
|
||||
* - glRenderMode
|
||||
* - glReadPixels
|
||||
* - glPixelStore
|
||||
* - glFlush
|
||||
* - glFinish
|
||||
* - glIsEnabled
|
||||
* - glGet*
|
||||
*
|
||||
* Functions which cause errors if called while compiling a display list:
|
||||
* - glNewList
|
||||
*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* Display list instructions are stored as sequences of "nodes". Nodes
|
||||
* are allocated in blocks. Each block has BLOCK_SIZE nodes. Blocks
|
||||
* are linked together with a pointer.
|
||||
*/
|
||||
|
||||
|
||||
/* How many nodes to allocate at a time:
|
||||
* - reduced now that we hold vertices etc. elsewhere.
|
||||
/**
|
||||
* \brief How many nodes to allocate at a time.
|
||||
*
|
||||
* \note Reduced now that we hold vertices etc. elsewhere.
|
||||
*/
|
||||
#define BLOCK_SIZE 256
|
||||
|
||||
|
||||
/*
|
||||
* Display list opcodes.
|
||||
/**
|
||||
* \brief Display list opcodes.
|
||||
*
|
||||
* The fact that these identifiers are assigned consecutive
|
||||
* integer values starting at 0 is very important, see InstSize array usage)
|
||||
*
|
||||
*/
|
||||
typedef enum {
|
||||
OPCODE_ACCUM,
|
||||
@@ -258,7 +264,9 @@ typedef enum {
|
||||
} OpCode;
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* \brief Display list node.
|
||||
*
|
||||
* Each instruction in the display list is stored as a sequence of
|
||||
* contiguous nodes in memory.
|
||||
* Each node is the union of a variety of datatypes.
|
||||
@@ -279,9 +287,9 @@ union node {
|
||||
};
|
||||
|
||||
|
||||
|
||||
/* Number of nodes of storage needed for each instruction. Sizes for
|
||||
* dynamically allocated opcodes are stored in the context struct.
|
||||
/**
|
||||
* \brief Number of nodes of storage needed for each instruction.
|
||||
* Sizes for dynamically allocated opcodes are stored in the context struct.
|
||||
*/
|
||||
static GLuint InstSize[ OPCODE_END_OF_LIST+1 ];
|
||||
|
||||
@@ -292,10 +300,6 @@ void mesa_print_display_list( GLuint list );
|
||||
/***** Private *****/
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Make an empty display list. This is used by glGenLists() to
|
||||
* reserver display list IDs.
|
||||
|
||||
@@ -1,4 +1,20 @@
|
||||
/* $Id: glheader.h,v 1.29 2002/10/30 19:44:41 brianp Exp $ */
|
||||
/**
|
||||
* \file glheader.h
|
||||
* \brief Top-most include file.
|
||||
*
|
||||
* This is the top-most include file of the Mesa sources.
|
||||
* It includes gl.h and all system headers which are needed.
|
||||
* Other Mesa source files should _not_ directly include any system
|
||||
* headers. This allows Mesa to be integrated into XFree86 and
|
||||
* allows system-dependent hacks/work-arounds to be collected in one place.
|
||||
*
|
||||
* If you touch this file, everything gets recompiled!
|
||||
*
|
||||
* This file should be included before any other header in the .c files.
|
||||
*
|
||||
* Put compiler/OS/assembly pragmas and macros here to avoid
|
||||
* cluttering other source files.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -24,26 +40,13 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: glheader.h,v 1.29.4.1 2003/03/02 00:27:35 jrfonseca Exp $ */
|
||||
|
||||
|
||||
#ifndef GLHEADER_H
|
||||
#define GLHEADER_H
|
||||
|
||||
|
||||
/*
|
||||
* This is the top-most include file of the Mesa sources.
|
||||
* It includes gl.h and all system headers which are needed.
|
||||
* Other Mesa source files should _not_ directly include any system
|
||||
* headers. This allows Mesa to be integrated into XFree86 and
|
||||
* allows system-dependent hacks/work-arounds to be collected in one place.
|
||||
*
|
||||
* If you touch this file, everything gets recompiled!
|
||||
*
|
||||
* This file should be included before any other header in the .c files.
|
||||
*
|
||||
* Put compiler/OS/assembly pragmas and macros here to avoid
|
||||
* cluttering other source files.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#if defined(XFree86LOADER) && defined(IN_MODULE)
|
||||
@@ -282,7 +285,7 @@ typedef struct tagPIXELFORMATDESCRIPTOR PIXELFORMATDESCRIPTOR, *PPIXELFORMATDESC
|
||||
#endif
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* Sometimes we treat GLfloats as GLints. On x86 systems, moving a float
|
||||
* as a int (thereby using integer registers instead of fp registers) is
|
||||
* a performance win. Typically, this can be done with ordinary casts.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,4 +1,4 @@
|
||||
/* $Id: state.c,v 1.97.4.1 2003/02/21 21:14:18 keithw Exp $ */
|
||||
/* $Id: state.c,v 1.97.4.2 2003/03/04 17:10:39 keithw Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -114,264 +114,272 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
|
||||
_mesa_loopback_init_api_table( exec, GL_TRUE );
|
||||
|
||||
/* load the dispatch slots we understand */
|
||||
/* exec->Accum = _mesa_Accum; */
|
||||
exec->AlphaFunc = _mesa_AlphaFunc;
|
||||
exec->Bitmap = _mesa_Bitmap;
|
||||
exec->BlendFunc = _mesa_BlendFunc;
|
||||
/* exec->CallList = _mesa_CallList; */
|
||||
/* exec->CallLists = _mesa_CallLists; */
|
||||
exec->Clear = _mesa_Clear;
|
||||
/* exec->ClearAccum = _mesa_ClearAccum; */
|
||||
exec->ClearColor = _mesa_ClearColor;
|
||||
/* exec->ClearDepth = _mesa_ClearDepth; */
|
||||
/* exec->ClearIndex = _mesa_ClearIndex; */
|
||||
exec->ClearStencil = _mesa_ClearStencil;
|
||||
/* exec->ClipPlane = _mesa_ClipPlane; */
|
||||
exec->ColorMask = _mesa_ColorMask;
|
||||
/* exec->ColorMaterial = _mesa_ColorMaterial; */
|
||||
/* exec->CopyPixels = _mesa_CopyPixels; */
|
||||
exec->CullFace = _mesa_CullFace;
|
||||
/* exec->DeleteLists = _mesa_DeleteLists; */
|
||||
/* exec->DepthFunc = _mesa_DepthFunc; */
|
||||
/* exec->DepthMask = _mesa_DepthMask; */
|
||||
/* exec->DepthRange = _mesa_DepthRange; */
|
||||
exec->Disable = _mesa_Disable;
|
||||
exec->DrawBuffer = _mesa_DrawBuffer;
|
||||
/* exec->DrawPixels = _mesa_DrawPixels; */
|
||||
exec->Enable = _mesa_Enable;
|
||||
/* exec->EndList = _mesa_EndList; */
|
||||
/* exec->FeedbackBuffer = _mesa_FeedbackBuffer; */
|
||||
exec->Finish = _mesa_Finish;
|
||||
exec->Flush = _mesa_Flush;
|
||||
/* exec->FogCoordPointerEXT = _mesa_FogCoordPointerEXT; */
|
||||
/* exec->Fogf = _mesa_Fogf; */
|
||||
/* exec->Fogfv = _mesa_Fogfv; */
|
||||
/* exec->Fogi = _mesa_Fogi; */
|
||||
/* exec->Fogiv = _mesa_Fogiv; */
|
||||
exec->FrontFace = _mesa_FrontFace;
|
||||
exec->Frustum = _mesa_Frustum;
|
||||
/* exec->GenLists = _mesa_GenLists; */
|
||||
exec->GetBooleanv = _mesa_GetBooleanv;
|
||||
/* exec->GetClipPlane = _mesa_GetClipPlane; */
|
||||
/* exec->GetDoublev = _mesa_GetDoublev; */
|
||||
exec->GetError = _mesa_GetError;
|
||||
exec->GetFloatv = _mesa_GetFloatv;
|
||||
exec->GetIntegerv = _mesa_GetIntegerv;
|
||||
/* exec->GetLightfv = _mesa_GetLightfv; */
|
||||
/* exec->GetLightiv = _mesa_GetLightiv; */
|
||||
/* exec->GetMapdv = _mesa_GetMapdv; */
|
||||
/* exec->GetMapfv = _mesa_GetMapfv; */
|
||||
/* exec->GetMapiv = _mesa_GetMapiv; */
|
||||
/* exec->GetMaterialfv = _mesa_GetMaterialfv; */
|
||||
/* exec->GetMaterialiv = _mesa_GetMaterialiv; */
|
||||
/* exec->GetPixelMapfv = _mesa_GetPixelMapfv; */
|
||||
/* exec->GetPixelMapuiv = _mesa_GetPixelMapuiv; */
|
||||
/* exec->GetPixelMapusv = _mesa_GetPixelMapusv; */
|
||||
/* exec->GetPolygonStipple = _mesa_GetPolygonStipple; */
|
||||
exec->GetString = _mesa_GetString;
|
||||
exec->GetTexEnvfv = _mesa_GetTexEnvfv;
|
||||
exec->GetTexEnviv = _mesa_GetTexEnviv;
|
||||
/* exec->GetTexGendv = _mesa_GetTexGendv; */
|
||||
/* exec->GetTexGenfv = _mesa_GetTexGenfv; */
|
||||
/* exec->GetTexGeniv = _mesa_GetTexGeniv; */
|
||||
/* exec->GetTexImage = _mesa_GetTexImage; */
|
||||
exec->GetTexLevelParameterfv = _mesa_GetTexLevelParameterfv;
|
||||
exec->GetTexLevelParameteriv = _mesa_GetTexLevelParameteriv;
|
||||
exec->GetTexParameterfv = _mesa_GetTexParameterfv;
|
||||
exec->GetTexParameteriv = _mesa_GetTexParameteriv;
|
||||
/* exec->Hint = _mesa_Hint; */
|
||||
/* exec->IndexMask = _mesa_IndexMask; */
|
||||
exec->InitNames = _mesa_InitNames;
|
||||
/* exec->IsEnabled = _mesa_IsEnabled; */
|
||||
/* exec->IsList = _mesa_IsList; */
|
||||
/* exec->LightModelf = _mesa_LightModelf; */
|
||||
/* exec->LightModelfv = _mesa_LightModelfv; */
|
||||
/* exec->LightModeli = _mesa_LightModeli; */
|
||||
/* exec->LightModeliv = _mesa_LightModeliv; */
|
||||
/* exec->Lightf = _mesa_Lightf; */
|
||||
/* exec->Lightfv = _mesa_Lightfv; */
|
||||
/* exec->Lighti = _mesa_Lighti; */
|
||||
/* exec->Lightiv = _mesa_Lightiv; */
|
||||
exec->LineStipple = _mesa_LineStipple;
|
||||
exec->LineWidth = _mesa_LineWidth;
|
||||
/* exec->ListBase = _mesa_ListBase; */
|
||||
exec->LoadIdentity = _mesa_LoadIdentity;
|
||||
/* exec->LoadMatrixd = _mesa_LoadMatrixd; */
|
||||
exec->LoadMatrixf = _mesa_LoadMatrixf;
|
||||
exec->LoadName = _mesa_LoadName;
|
||||
exec->LogicOp = _mesa_LogicOp;
|
||||
/* exec->Map1d = _mesa_Map1d; */
|
||||
/* exec->Map1f = _mesa_Map1f; */
|
||||
/* exec->Map2d = _mesa_Map2d; */
|
||||
/* exec->Map2f = _mesa_Map2f; */
|
||||
/* exec->MapGrid1d = _mesa_MapGrid1d; */
|
||||
/* exec->MapGrid1f = _mesa_MapGrid1f; */
|
||||
/* exec->MapGrid2d = _mesa_MapGrid2d; */
|
||||
/* exec->MapGrid2f = _mesa_MapGrid2f; */
|
||||
exec->MatrixMode = _mesa_MatrixMode;
|
||||
/* exec->MultMatrixd = _mesa_MultMatrixd; */
|
||||
exec->MultMatrixf = _mesa_MultMatrixf;
|
||||
/* exec->NewList = _mesa_NewList; */
|
||||
exec->Ortho = _mesa_Ortho;
|
||||
/* exec->PassThrough = _mesa_PassThrough; */
|
||||
/* exec->PixelMapfv = _mesa_PixelMapfv; */
|
||||
/* exec->PixelMapuiv = _mesa_PixelMapuiv; */
|
||||
/* exec->PixelMapusv = _mesa_PixelMapusv; */
|
||||
/* exec->PixelStoref = _mesa_PixelStoref; */
|
||||
exec->PixelStorei = _mesa_PixelStorei;
|
||||
/* exec->PixelTransferf = _mesa_PixelTransferf; */
|
||||
/* exec->PixelTransferi = _mesa_PixelTransferi; */
|
||||
/* exec->PixelZoom = _mesa_PixelZoom; */
|
||||
/* exec->PointSize = _mesa_PointSize; */
|
||||
/* exec->PolygonMode = _mesa_PolygonMode; */
|
||||
/* exec->PolygonOffset = _mesa_PolygonOffset; */
|
||||
/* exec->PolygonStipple = _mesa_PolygonStipple; */
|
||||
/* exec->PopAttrib = _mesa_PopAttrib; */
|
||||
exec->PopMatrix = _mesa_PopMatrix;
|
||||
exec->PopName = _mesa_PopName;
|
||||
/* exec->PushAttrib = _mesa_PushAttrib; */
|
||||
exec->PushMatrix = _mesa_PushMatrix;
|
||||
exec->PushName = _mesa_PushName;
|
||||
/* exec->RasterPos2d = _mesa_RasterPos2d; */
|
||||
/* exec->RasterPos2dv = _mesa_RasterPos2dv; */
|
||||
exec->RasterPos2f = _mesa_RasterPos2f;
|
||||
exec->RasterPos2fv = _mesa_RasterPos2fv;
|
||||
exec->RasterPos2i = _mesa_RasterPos2i;
|
||||
exec->RasterPos2iv = _mesa_RasterPos2iv;
|
||||
/* exec->RasterPos2s = _mesa_RasterPos2s; */
|
||||
/* exec->RasterPos2sv = _mesa_RasterPos2sv; */
|
||||
/* exec->RasterPos3d = _mesa_RasterPos3d; */
|
||||
/* exec->RasterPos3dv = _mesa_RasterPos3dv; */
|
||||
/* exec->RasterPos3f = _mesa_RasterPos3f; */
|
||||
/* exec->RasterPos3fv = _mesa_RasterPos3fv; */
|
||||
/* exec->RasterPos3i = _mesa_RasterPos3i; */
|
||||
/* exec->RasterPos3iv = _mesa_RasterPos3iv; */
|
||||
/* exec->RasterPos3s = _mesa_RasterPos3s; */
|
||||
/* exec->RasterPos3sv = _mesa_RasterPos3sv; */
|
||||
/* exec->RasterPos4d = _mesa_RasterPos4d; */
|
||||
/* exec->RasterPos4dv = _mesa_RasterPos4dv; */
|
||||
/* exec->RasterPos4f = _mesa_RasterPos4f; */
|
||||
/* exec->RasterPos4fv = _mesa_RasterPos4fv; */
|
||||
/* exec->RasterPos4i = _mesa_RasterPos4i; */
|
||||
/* exec->RasterPos4iv = _mesa_RasterPos4iv; */
|
||||
/* exec->RasterPos4s = _mesa_RasterPos4s; */
|
||||
/* exec->RasterPos4sv = _mesa_RasterPos4sv; */
|
||||
exec->ReadBuffer = _mesa_ReadBuffer;
|
||||
exec->ReadPixels = _mesa_ReadPixels;
|
||||
exec->RenderMode = _mesa_RenderMode;
|
||||
/* exec->Rotated = _mesa_Rotated; */
|
||||
exec->Rotatef = _mesa_Rotatef;
|
||||
/* exec->Scaled = _mesa_Scaled; */
|
||||
exec->Scalef = _mesa_Scalef;
|
||||
exec->Scissor = _mesa_Scissor;
|
||||
/* exec->SecondaryColorPointerEXT = _mesa_SecondaryColorPointerEXT; */
|
||||
exec->SelectBuffer = _mesa_SelectBuffer;
|
||||
exec->ShadeModel = _mesa_ShadeModel;
|
||||
exec->StencilFunc = _mesa_StencilFunc;
|
||||
exec->StencilMask = _mesa_StencilMask;
|
||||
exec->StencilOp = _mesa_StencilOp;
|
||||
/* exec->TexEnvf = _mesa_TexEnvf; */
|
||||
exec->TexEnvfv = _mesa_TexEnvfv;
|
||||
exec->TexEnvi = _mesa_TexEnvi;
|
||||
/* exec->TexEnviv = _mesa_TexEnviv; */
|
||||
/* exec->TexGend = _mesa_TexGend; */
|
||||
/* exec->TexGendv = _mesa_TexGendv; */
|
||||
/* exec->TexGenf = _mesa_TexGenf; */
|
||||
/* exec->TexGenfv = _mesa_TexGenfv; */
|
||||
/* exec->TexGeni = _mesa_TexGeni; */
|
||||
/* exec->TexGeniv = _mesa_TexGeniv; */
|
||||
/* exec->TexImage1D = _mesa_TexImage1D; */
|
||||
exec->TexImage2D = _mesa_TexImage2D;
|
||||
/* exec->TexParameterf = _mesa_TexParameterf; */
|
||||
/* exec->TexParameterfv = _mesa_TexParameterfv; */
|
||||
exec->TexParameteri = _mesa_TexParameteri;
|
||||
/* exec->TexParameteriv = _mesa_TexParameteriv; */
|
||||
/* exec->Translated = _mesa_Translated; */
|
||||
exec->Translatef = _mesa_Translatef;
|
||||
exec->Viewport = _mesa_Viewport;
|
||||
#if _HAVE_FULL_GL
|
||||
exec->Accum = _mesa_Accum;
|
||||
exec->CallList = _mesa_CallList;
|
||||
exec->CallLists = _mesa_CallLists;
|
||||
exec->ClearAccum = _mesa_ClearAccum;
|
||||
exec->ClearDepth = _mesa_ClearDepth;
|
||||
exec->ClearIndex = _mesa_ClearIndex;
|
||||
exec->ClipPlane = _mesa_ClipPlane;
|
||||
exec->ColorMaterial = _mesa_ColorMaterial;
|
||||
exec->CopyPixels = _mesa_CopyPixels;
|
||||
exec->DeleteLists = _mesa_DeleteLists;
|
||||
exec->DepthFunc = _mesa_DepthFunc;
|
||||
exec->DepthMask = _mesa_DepthMask;
|
||||
exec->DepthRange = _mesa_DepthRange;
|
||||
exec->DrawPixels = _mesa_DrawPixels;
|
||||
exec->EndList = _mesa_EndList;
|
||||
exec->FeedbackBuffer = _mesa_FeedbackBuffer;
|
||||
exec->FogCoordPointerEXT = _mesa_FogCoordPointerEXT;
|
||||
exec->Fogf = _mesa_Fogf;
|
||||
exec->Fogfv = _mesa_Fogfv;
|
||||
exec->Fogi = _mesa_Fogi;
|
||||
exec->Fogiv = _mesa_Fogiv;
|
||||
exec->GenLists = _mesa_GenLists;
|
||||
exec->GetClipPlane = _mesa_GetClipPlane;
|
||||
exec->GetDoublev = _mesa_GetDoublev;
|
||||
exec->GetLightfv = _mesa_GetLightfv;
|
||||
exec->GetLightiv = _mesa_GetLightiv;
|
||||
exec->GetMapdv = _mesa_GetMapdv;
|
||||
exec->GetMapfv = _mesa_GetMapfv;
|
||||
exec->GetMapiv = _mesa_GetMapiv;
|
||||
exec->GetMaterialfv = _mesa_GetMaterialfv;
|
||||
exec->GetMaterialiv = _mesa_GetMaterialiv;
|
||||
exec->GetPixelMapfv = _mesa_GetPixelMapfv;
|
||||
exec->GetPixelMapuiv = _mesa_GetPixelMapuiv;
|
||||
exec->GetPixelMapusv = _mesa_GetPixelMapusv;
|
||||
exec->GetPolygonStipple = _mesa_GetPolygonStipple;
|
||||
exec->GetTexGendv = _mesa_GetTexGendv;
|
||||
exec->GetTexGenfv = _mesa_GetTexGenfv;
|
||||
exec->GetTexGeniv = _mesa_GetTexGeniv;
|
||||
exec->GetTexImage = _mesa_GetTexImage;
|
||||
exec->Hint = _mesa_Hint;
|
||||
exec->IndexMask = _mesa_IndexMask;
|
||||
exec->IsEnabled = _mesa_IsEnabled;
|
||||
exec->IsList = _mesa_IsList;
|
||||
exec->LightModelf = _mesa_LightModelf;
|
||||
exec->LightModelfv = _mesa_LightModelfv;
|
||||
exec->LightModeli = _mesa_LightModeli;
|
||||
exec->LightModeliv = _mesa_LightModeliv;
|
||||
exec->Lightf = _mesa_Lightf;
|
||||
exec->Lightfv = _mesa_Lightfv;
|
||||
exec->Lighti = _mesa_Lighti;
|
||||
exec->Lightiv = _mesa_Lightiv;
|
||||
exec->ListBase = _mesa_ListBase;
|
||||
exec->LoadMatrixd = _mesa_LoadMatrixd;
|
||||
exec->Map1d = _mesa_Map1d;
|
||||
exec->Map1f = _mesa_Map1f;
|
||||
exec->Map2d = _mesa_Map2d;
|
||||
exec->Map2f = _mesa_Map2f;
|
||||
exec->MapGrid1d = _mesa_MapGrid1d;
|
||||
exec->MapGrid1f = _mesa_MapGrid1f;
|
||||
exec->MapGrid2d = _mesa_MapGrid2d;
|
||||
exec->MapGrid2f = _mesa_MapGrid2f;
|
||||
exec->MultMatrixd = _mesa_MultMatrixd;
|
||||
exec->NewList = _mesa_NewList;
|
||||
exec->PassThrough = _mesa_PassThrough;
|
||||
exec->PixelMapfv = _mesa_PixelMapfv;
|
||||
exec->PixelMapuiv = _mesa_PixelMapuiv;
|
||||
exec->PixelMapusv = _mesa_PixelMapusv;
|
||||
exec->PixelStoref = _mesa_PixelStoref;
|
||||
exec->PixelTransferf = _mesa_PixelTransferf;
|
||||
exec->PixelTransferi = _mesa_PixelTransferi;
|
||||
exec->PixelZoom = _mesa_PixelZoom;
|
||||
exec->PointSize = _mesa_PointSize;
|
||||
exec->PolygonMode = _mesa_PolygonMode;
|
||||
exec->PolygonOffset = _mesa_PolygonOffset;
|
||||
exec->PolygonStipple = _mesa_PolygonStipple;
|
||||
exec->PopAttrib = _mesa_PopAttrib;
|
||||
exec->PushAttrib = _mesa_PushAttrib;
|
||||
exec->RasterPos2d = _mesa_RasterPos2d;
|
||||
exec->RasterPos2dv = _mesa_RasterPos2dv;
|
||||
exec->RasterPos2s = _mesa_RasterPos2s;
|
||||
exec->RasterPos2sv = _mesa_RasterPos2sv;
|
||||
exec->RasterPos3d = _mesa_RasterPos3d;
|
||||
exec->RasterPos3dv = _mesa_RasterPos3dv;
|
||||
exec->RasterPos3f = _mesa_RasterPos3f;
|
||||
exec->RasterPos3fv = _mesa_RasterPos3fv;
|
||||
exec->RasterPos3i = _mesa_RasterPos3i;
|
||||
exec->RasterPos3iv = _mesa_RasterPos3iv;
|
||||
exec->RasterPos3s = _mesa_RasterPos3s;
|
||||
exec->RasterPos3sv = _mesa_RasterPos3sv;
|
||||
exec->RasterPos4d = _mesa_RasterPos4d;
|
||||
exec->RasterPos4dv = _mesa_RasterPos4dv;
|
||||
exec->RasterPos4f = _mesa_RasterPos4f;
|
||||
exec->RasterPos4fv = _mesa_RasterPos4fv;
|
||||
exec->RasterPos4i = _mesa_RasterPos4i;
|
||||
exec->RasterPos4iv = _mesa_RasterPos4iv;
|
||||
exec->RasterPos4s = _mesa_RasterPos4s;
|
||||
exec->RasterPos4sv = _mesa_RasterPos4sv;
|
||||
exec->Rotated = _mesa_Rotated;
|
||||
exec->Scaled = _mesa_Scaled;
|
||||
exec->SecondaryColorPointerEXT = _mesa_SecondaryColorPointerEXT;
|
||||
exec->TexEnvf = _mesa_TexEnvf;
|
||||
exec->TexEnviv = _mesa_TexEnviv;
|
||||
exec->TexGend = _mesa_TexGend;
|
||||
exec->TexGendv = _mesa_TexGendv;
|
||||
exec->TexGenf = _mesa_TexGenf;
|
||||
exec->TexGenfv = _mesa_TexGenfv;
|
||||
exec->TexGeni = _mesa_TexGeni;
|
||||
exec->TexGeniv = _mesa_TexGeniv;
|
||||
exec->TexImage1D = _mesa_TexImage1D;
|
||||
exec->TexParameterf = _mesa_TexParameterf;
|
||||
exec->TexParameterfv = _mesa_TexParameterfv;
|
||||
exec->TexParameteriv = _mesa_TexParameteriv;
|
||||
exec->Translated = _mesa_Translated;
|
||||
#endif
|
||||
|
||||
/* 1.1 */
|
||||
/* exec->AreTexturesResident = _mesa_AreTexturesResident; */
|
||||
/* exec->AreTexturesResidentEXT = _mesa_AreTexturesResident; */
|
||||
exec->BindTexture = _mesa_BindTexture;
|
||||
/* exec->ColorPointer = _mesa_ColorPointer; */
|
||||
/* exec->CopyTexImage1D = _mesa_CopyTexImage1D; */
|
||||
/* exec->CopyTexImage2D = _mesa_CopyTexImage2D; */
|
||||
/* exec->CopyTexSubImage1D = _mesa_CopyTexSubImage1D; */
|
||||
/* exec->CopyTexSubImage2D = _mesa_CopyTexSubImage2D; */
|
||||
exec->DeleteTextures = _mesa_DeleteTextures;
|
||||
/* exec->DisableClientState = _mesa_DisableClientState; */
|
||||
/* exec->EdgeFlagPointer = _mesa_EdgeFlagPointer; */
|
||||
/* exec->EnableClientState = _mesa_EnableClientState; */
|
||||
exec->GenTextures = _mesa_GenTextures;
|
||||
/* exec->GenTexturesEXT = _mesa_GenTextures; */
|
||||
/* exec->GetPointerv = _mesa_GetPointerv; */
|
||||
/* exec->IndexPointer = _mesa_IndexPointer; */
|
||||
/* exec->InterleavedArrays = _mesa_InterleavedArrays; */
|
||||
/* exec->IsTexture = _mesa_IsTexture; */
|
||||
/* exec->IsTextureEXT = _mesa_IsTexture; */
|
||||
/* exec->NormalPointer = _mesa_NormalPointer; */
|
||||
/* exec->PopClientAttrib = _mesa_PopClientAttrib; */
|
||||
/* exec->PrioritizeTextures = _mesa_PrioritizeTextures; */
|
||||
/* exec->PushClientAttrib = _mesa_PushClientAttrib; */
|
||||
/* exec->TexCoordPointer = _mesa_TexCoordPointer; */
|
||||
/* exec->TexSubImage1D = _mesa_TexSubImage1D; */
|
||||
/* exec->TexSubImage2D = _mesa_TexSubImage2D; */
|
||||
/* exec->VertexPointer = _mesa_VertexPointer; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->AreTexturesResident = _mesa_AreTexturesResident;
|
||||
exec->AreTexturesResidentEXT = _mesa_AreTexturesResident;
|
||||
exec->ColorPointer = _mesa_ColorPointer;
|
||||
exec->CopyTexImage1D = _mesa_CopyTexImage1D;
|
||||
exec->CopyTexImage2D = _mesa_CopyTexImage2D;
|
||||
exec->CopyTexSubImage1D = _mesa_CopyTexSubImage1D;
|
||||
exec->CopyTexSubImage2D = _mesa_CopyTexSubImage2D;
|
||||
exec->DisableClientState = _mesa_DisableClientState;
|
||||
exec->EdgeFlagPointer = _mesa_EdgeFlagPointer;
|
||||
exec->EnableClientState = _mesa_EnableClientState;
|
||||
exec->GenTexturesEXT = _mesa_GenTextures;
|
||||
exec->GetPointerv = _mesa_GetPointerv;
|
||||
exec->IndexPointer = _mesa_IndexPointer;
|
||||
exec->InterleavedArrays = _mesa_InterleavedArrays;
|
||||
exec->IsTexture = _mesa_IsTexture;
|
||||
exec->IsTextureEXT = _mesa_IsTexture;
|
||||
exec->NormalPointer = _mesa_NormalPointer;
|
||||
exec->PopClientAttrib = _mesa_PopClientAttrib;
|
||||
exec->PrioritizeTextures = _mesa_PrioritizeTextures;
|
||||
exec->PushClientAttrib = _mesa_PushClientAttrib;
|
||||
exec->TexCoordPointer = _mesa_TexCoordPointer;
|
||||
exec->TexSubImage1D = _mesa_TexSubImage1D;
|
||||
exec->TexSubImage2D = _mesa_TexSubImage2D;
|
||||
exec->VertexPointer = _mesa_VertexPointer;
|
||||
#endif
|
||||
|
||||
/* 1.2 */
|
||||
/* exec->CopyTexSubImage3D = _mesa_CopyTexSubImage3D; */
|
||||
/* exec->TexImage3D = _mesa_TexImage3D; */
|
||||
/* exec->TexSubImage3D = _mesa_TexSubImage3D; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->CopyTexSubImage3D = _mesa_CopyTexSubImage3D;
|
||||
exec->TexImage3D = _mesa_TexImage3D;
|
||||
exec->TexSubImage3D = _mesa_TexSubImage3D;
|
||||
#endif
|
||||
|
||||
/* OpenGL 1.2 GL_ARB_imaging */
|
||||
/* exec->BlendColor = _mesa_BlendColor; */
|
||||
/* exec->BlendEquation = _mesa_BlendEquation; */
|
||||
/* exec->ColorSubTable = _mesa_ColorSubTable; */
|
||||
/* exec->ColorTable = _mesa_ColorTable; */
|
||||
/* exec->ColorTableParameterfv = _mesa_ColorTableParameterfv; */
|
||||
/* exec->ColorTableParameteriv = _mesa_ColorTableParameteriv; */
|
||||
/* exec->ConvolutionFilter1D = _mesa_ConvolutionFilter1D; */
|
||||
/* exec->ConvolutionFilter2D = _mesa_ConvolutionFilter2D; */
|
||||
/* exec->ConvolutionParameterf = _mesa_ConvolutionParameterf; */
|
||||
/* exec->ConvolutionParameterfv = _mesa_ConvolutionParameterfv; */
|
||||
/* exec->ConvolutionParameteri = _mesa_ConvolutionParameteri; */
|
||||
/* exec->ConvolutionParameteriv = _mesa_ConvolutionParameteriv; */
|
||||
/* exec->CopyColorSubTable = _mesa_CopyColorSubTable; */
|
||||
/* exec->CopyColorTable = _mesa_CopyColorTable; */
|
||||
/* exec->CopyConvolutionFilter1D = _mesa_CopyConvolutionFilter1D; */
|
||||
/* exec->CopyConvolutionFilter2D = _mesa_CopyConvolutionFilter2D; */
|
||||
/* exec->GetColorTable = _mesa_GetColorTable; */
|
||||
/* exec->GetColorTableEXT = _mesa_GetColorTable; */
|
||||
/* exec->GetColorTableParameterfv = _mesa_GetColorTableParameterfv; */
|
||||
/* exec->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfv; */
|
||||
/* exec->GetColorTableParameteriv = _mesa_GetColorTableParameteriv; */
|
||||
/* exec->GetColorTableParameterivEXT = _mesa_GetColorTableParameteriv; */
|
||||
/* exec->GetConvolutionFilter = _mesa_GetConvolutionFilter; */
|
||||
/* exec->GetConvolutionFilterEXT = _mesa_GetConvolutionFilter; */
|
||||
/* exec->GetConvolutionParameterfv = _mesa_GetConvolutionParameterfv; */
|
||||
/* exec->GetConvolutionParameterfvEXT = _mesa_GetConvolutionParameterfv; */
|
||||
/* exec->GetConvolutionParameteriv = _mesa_GetConvolutionParameteriv; */
|
||||
/* exec->GetConvolutionParameterivEXT = _mesa_GetConvolutionParameteriv; */
|
||||
/* exec->GetHistogram = _mesa_GetHistogram; */
|
||||
/* exec->GetHistogramEXT = _mesa_GetHistogram; */
|
||||
/* exec->GetHistogramParameterfv = _mesa_GetHistogramParameterfv; */
|
||||
/* exec->GetHistogramParameterfvEXT = _mesa_GetHistogramParameterfv; */
|
||||
/* exec->GetHistogramParameteriv = _mesa_GetHistogramParameteriv; */
|
||||
/* exec->GetHistogramParameterivEXT = _mesa_GetHistogramParameteriv; */
|
||||
/* exec->GetMinmax = _mesa_GetMinmax; */
|
||||
/* exec->GetMinmaxEXT = _mesa_GetMinmax; */
|
||||
/* exec->GetMinmaxParameterfv = _mesa_GetMinmaxParameterfv; */
|
||||
/* exec->GetMinmaxParameterfvEXT = _mesa_GetMinmaxParameterfv; */
|
||||
/* exec->GetMinmaxParameteriv = _mesa_GetMinmaxParameteriv; */
|
||||
/* exec->GetMinmaxParameterivEXT = _mesa_GetMinmaxParameteriv; */
|
||||
/* exec->GetSeparableFilter = _mesa_GetSeparableFilter; */
|
||||
/* exec->GetSeparableFilterEXT = _mesa_GetSeparableFilter; */
|
||||
/* exec->Histogram = _mesa_Histogram; */
|
||||
/* exec->Minmax = _mesa_Minmax; */
|
||||
/* exec->ResetHistogram = _mesa_ResetHistogram; */
|
||||
/* exec->ResetMinmax = _mesa_ResetMinmax; */
|
||||
/* exec->SeparableFilter2D = _mesa_SeparableFilter2D; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->BlendColor = _mesa_BlendColor;
|
||||
exec->BlendEquation = _mesa_BlendEquation;
|
||||
exec->ColorSubTable = _mesa_ColorSubTable;
|
||||
exec->ColorTable = _mesa_ColorTable;
|
||||
exec->ColorTableParameterfv = _mesa_ColorTableParameterfv;
|
||||
exec->ColorTableParameteriv = _mesa_ColorTableParameteriv;
|
||||
exec->ConvolutionFilter1D = _mesa_ConvolutionFilter1D;
|
||||
exec->ConvolutionFilter2D = _mesa_ConvolutionFilter2D;
|
||||
exec->ConvolutionParameterf = _mesa_ConvolutionParameterf;
|
||||
exec->ConvolutionParameterfv = _mesa_ConvolutionParameterfv;
|
||||
exec->ConvolutionParameteri = _mesa_ConvolutionParameteri;
|
||||
exec->ConvolutionParameteriv = _mesa_ConvolutionParameteriv;
|
||||
exec->CopyColorSubTable = _mesa_CopyColorSubTable;
|
||||
exec->CopyColorTable = _mesa_CopyColorTable;
|
||||
exec->CopyConvolutionFilter1D = _mesa_CopyConvolutionFilter1D;
|
||||
exec->CopyConvolutionFilter2D = _mesa_CopyConvolutionFilter2D;
|
||||
exec->GetColorTable = _mesa_GetColorTable;
|
||||
exec->GetColorTableEXT = _mesa_GetColorTable;
|
||||
exec->GetColorTableParameterfv = _mesa_GetColorTableParameterfv;
|
||||
exec->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfv;
|
||||
exec->GetColorTableParameteriv = _mesa_GetColorTableParameteriv;
|
||||
exec->GetColorTableParameterivEXT = _mesa_GetColorTableParameteriv;
|
||||
exec->GetConvolutionFilter = _mesa_GetConvolutionFilter;
|
||||
exec->GetConvolutionFilterEXT = _mesa_GetConvolutionFilter;
|
||||
exec->GetConvolutionParameterfv = _mesa_GetConvolutionParameterfv;
|
||||
exec->GetConvolutionParameterfvEXT = _mesa_GetConvolutionParameterfv;
|
||||
exec->GetConvolutionParameteriv = _mesa_GetConvolutionParameteriv;
|
||||
exec->GetConvolutionParameterivEXT = _mesa_GetConvolutionParameteriv;
|
||||
exec->GetHistogram = _mesa_GetHistogram;
|
||||
exec->GetHistogramEXT = _mesa_GetHistogram;
|
||||
exec->GetHistogramParameterfv = _mesa_GetHistogramParameterfv;
|
||||
exec->GetHistogramParameterfvEXT = _mesa_GetHistogramParameterfv;
|
||||
exec->GetHistogramParameteriv = _mesa_GetHistogramParameteriv;
|
||||
exec->GetHistogramParameterivEXT = _mesa_GetHistogramParameteriv;
|
||||
exec->GetMinmax = _mesa_GetMinmax;
|
||||
exec->GetMinmaxEXT = _mesa_GetMinmax;
|
||||
exec->GetMinmaxParameterfv = _mesa_GetMinmaxParameterfv;
|
||||
exec->GetMinmaxParameterfvEXT = _mesa_GetMinmaxParameterfv;
|
||||
exec->GetMinmaxParameteriv = _mesa_GetMinmaxParameteriv;
|
||||
exec->GetMinmaxParameterivEXT = _mesa_GetMinmaxParameteriv;
|
||||
exec->GetSeparableFilter = _mesa_GetSeparableFilter;
|
||||
exec->GetSeparableFilterEXT = _mesa_GetSeparableFilter;
|
||||
exec->Histogram = _mesa_Histogram;
|
||||
exec->Minmax = _mesa_Minmax;
|
||||
exec->ResetHistogram = _mesa_ResetHistogram;
|
||||
exec->ResetMinmax = _mesa_ResetMinmax;
|
||||
exec->SeparableFilter2D = _mesa_SeparableFilter2D;
|
||||
#endif
|
||||
|
||||
/* 2. GL_EXT_blend_color */
|
||||
#if 0
|
||||
@@ -379,7 +387,9 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
|
||||
#endif
|
||||
|
||||
/* 3. GL_EXT_polygon_offset */
|
||||
/* exec->PolygonOffsetEXT = _mesa_PolygonOffsetEXT; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->PolygonOffsetEXT = _mesa_PolygonOffsetEXT;
|
||||
#endif
|
||||
|
||||
/* 6. GL_EXT_texture3d */
|
||||
#if 0
|
||||
@@ -389,147 +399,181 @@ _mesa_init_exec_table(struct _glapi_table *exec, GLuint tableSize)
|
||||
#endif
|
||||
|
||||
/* 11. GL_EXT_histogram */
|
||||
/* exec->GetHistogramEXT = _mesa_GetHistogram; */
|
||||
/* exec->GetHistogramParameterfvEXT = _mesa_GetHistogramParameterfv; */
|
||||
/* exec->GetHistogramParameterivEXT = _mesa_GetHistogramParameteriv; */
|
||||
/* exec->GetMinmaxEXT = _mesa_GetMinmax; */
|
||||
/* exec->GetMinmaxParameterfvEXT = _mesa_GetMinmaxParameterfv; */
|
||||
/* exec->GetMinmaxParameterivEXT = _mesa_GetMinmaxParameteriv; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->GetHistogramEXT = _mesa_GetHistogram;
|
||||
exec->GetHistogramParameterfvEXT = _mesa_GetHistogramParameterfv;
|
||||
exec->GetHistogramParameterivEXT = _mesa_GetHistogramParameteriv;
|
||||
exec->GetMinmaxEXT = _mesa_GetMinmax;
|
||||
exec->GetMinmaxParameterfvEXT = _mesa_GetMinmaxParameterfv;
|
||||
exec->GetMinmaxParameterivEXT = _mesa_GetMinmaxParameteriv;
|
||||
#endif
|
||||
|
||||
/* ?. GL_SGIX_pixel_texture */
|
||||
/* exec->PixelTexGenSGIX = _mesa_PixelTexGenSGIX; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->PixelTexGenSGIX = _mesa_PixelTexGenSGIX;
|
||||
#endif
|
||||
|
||||
/* 15. GL_SGIS_pixel_texture */
|
||||
/* exec->PixelTexGenParameteriSGIS = _mesa_PixelTexGenParameteriSGIS; */
|
||||
/* exec->PixelTexGenParameterivSGIS = _mesa_PixelTexGenParameterivSGIS; */
|
||||
/* exec->PixelTexGenParameterfSGIS = _mesa_PixelTexGenParameterfSGIS; */
|
||||
/* exec->PixelTexGenParameterfvSGIS = _mesa_PixelTexGenParameterfvSGIS; */
|
||||
/* exec->GetPixelTexGenParameterivSGIS = _mesa_GetPixelTexGenParameterivSGIS; */
|
||||
/* exec->GetPixelTexGenParameterfvSGIS = _mesa_GetPixelTexGenParameterfvSGIS; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->PixelTexGenParameteriSGIS = _mesa_PixelTexGenParameteriSGIS;
|
||||
exec->PixelTexGenParameterivSGIS = _mesa_PixelTexGenParameterivSGIS;
|
||||
exec->PixelTexGenParameterfSGIS = _mesa_PixelTexGenParameterfSGIS;
|
||||
exec->PixelTexGenParameterfvSGIS = _mesa_PixelTexGenParameterfvSGIS;
|
||||
exec->GetPixelTexGenParameterivSGIS = _mesa_GetPixelTexGenParameterivSGIS;
|
||||
exec->GetPixelTexGenParameterfvSGIS = _mesa_GetPixelTexGenParameterfvSGIS;
|
||||
#endif
|
||||
|
||||
/* 30. GL_EXT_vertex_array */
|
||||
/* exec->ColorPointerEXT = _mesa_ColorPointerEXT; */
|
||||
/* exec->EdgeFlagPointerEXT = _mesa_EdgeFlagPointerEXT; */
|
||||
/* exec->IndexPointerEXT = _mesa_IndexPointerEXT; */
|
||||
/* exec->NormalPointerEXT = _mesa_NormalPointerEXT; */
|
||||
/* exec->TexCoordPointerEXT = _mesa_TexCoordPointerEXT; */
|
||||
/* exec->VertexPointerEXT = _mesa_VertexPointerEXT; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->ColorPointerEXT = _mesa_ColorPointerEXT;
|
||||
exec->EdgeFlagPointerEXT = _mesa_EdgeFlagPointerEXT;
|
||||
exec->IndexPointerEXT = _mesa_IndexPointerEXT;
|
||||
exec->NormalPointerEXT = _mesa_NormalPointerEXT;
|
||||
exec->TexCoordPointerEXT = _mesa_TexCoordPointerEXT;
|
||||
exec->VertexPointerEXT = _mesa_VertexPointerEXT;
|
||||
#endif
|
||||
|
||||
/* 37. GL_EXT_blend_minmax */
|
||||
#if 0
|
||||
/* exec->BlendEquationEXT = _mesa_BlendEquationEXT; */
|
||||
exec->BlendEquationEXT = _mesa_BlendEquationEXT;
|
||||
#endif
|
||||
|
||||
/* 54. GL_EXT_point_parameters */
|
||||
/* exec->PointParameterfEXT = _mesa_PointParameterfEXT; */
|
||||
/* exec->PointParameterfvEXT = _mesa_PointParameterfvEXT; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->PointParameterfEXT = _mesa_PointParameterfEXT;
|
||||
exec->PointParameterfvEXT = _mesa_PointParameterfvEXT;
|
||||
#endif
|
||||
|
||||
/* 78. GL_EXT_paletted_texture */
|
||||
#if 0
|
||||
/* exec->ColorTableEXT = _mesa_ColorTableEXT; */
|
||||
/* exec->ColorSubTableEXT = _mesa_ColorSubTableEXT; */
|
||||
exec->ColorTableEXT = _mesa_ColorTableEXT;
|
||||
exec->ColorSubTableEXT = _mesa_ColorSubTableEXT;
|
||||
#endif
|
||||
#if _HAVE_FULL_GL
|
||||
exec->GetColorTableEXT = _mesa_GetColorTable;
|
||||
exec->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfv;
|
||||
exec->GetColorTableParameterivEXT = _mesa_GetColorTableParameteriv;
|
||||
#endif
|
||||
/* exec->GetColorTableEXT = _mesa_GetColorTable; */
|
||||
/* exec->GetColorTableParameterfvEXT = _mesa_GetColorTableParameterfv; */
|
||||
/* exec->GetColorTableParameterivEXT = _mesa_GetColorTableParameteriv; */
|
||||
|
||||
/* 97. GL_EXT_compiled_vertex_array */
|
||||
/* exec->LockArraysEXT = _mesa_LockArraysEXT; */
|
||||
/* exec->UnlockArraysEXT = _mesa_UnlockArraysEXT; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->LockArraysEXT = _mesa_LockArraysEXT;
|
||||
exec->UnlockArraysEXT = _mesa_UnlockArraysEXT;
|
||||
#endif
|
||||
|
||||
/* 148. GL_EXT_multi_draw_arrays */
|
||||
/* exec->MultiDrawArraysEXT = _mesa_MultiDrawArraysEXT; */
|
||||
/* exec->MultiDrawElementsEXT = _mesa_MultiDrawElementsEXT; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->MultiDrawArraysEXT = _mesa_MultiDrawArraysEXT;
|
||||
exec->MultiDrawElementsEXT = _mesa_MultiDrawElementsEXT;
|
||||
#endif
|
||||
|
||||
/* 173. GL_INGR_blend_func_separate */
|
||||
/* exec->BlendFuncSeparateEXT = _mesa_BlendFuncSeparateEXT; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->BlendFuncSeparateEXT = _mesa_BlendFuncSeparateEXT;
|
||||
#endif
|
||||
|
||||
/* 196. GL_MESA_resize_buffers */
|
||||
/* exec->ResizeBuffersMESA = _mesa_ResizeBuffersMESA; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->ResizeBuffersMESA = _mesa_ResizeBuffersMESA;
|
||||
#endif
|
||||
|
||||
/* 197. GL_MESA_window_pos */
|
||||
/* exec->WindowPos2dMESA = _mesa_WindowPos2dMESA; */
|
||||
/* exec->WindowPos2dvMESA = _mesa_WindowPos2dvMESA; */
|
||||
/* exec->WindowPos2fMESA = _mesa_WindowPos2fMESA; */
|
||||
/* exec->WindowPos2fvMESA = _mesa_WindowPos2fvMESA; */
|
||||
/* exec->WindowPos2iMESA = _mesa_WindowPos2iMESA; */
|
||||
/* exec->WindowPos2ivMESA = _mesa_WindowPos2ivMESA; */
|
||||
/* exec->WindowPos2sMESA = _mesa_WindowPos2sMESA; */
|
||||
/* exec->WindowPos2svMESA = _mesa_WindowPos2svMESA; */
|
||||
/* exec->WindowPos3dMESA = _mesa_WindowPos3dMESA; */
|
||||
/* exec->WindowPos3dvMESA = _mesa_WindowPos3dvMESA; */
|
||||
/* exec->WindowPos3fMESA = _mesa_WindowPos3fMESA; */
|
||||
/* exec->WindowPos3fvMESA = _mesa_WindowPos3fvMESA; */
|
||||
/* exec->WindowPos3iMESA = _mesa_WindowPos3iMESA; */
|
||||
/* exec->WindowPos3ivMESA = _mesa_WindowPos3ivMESA; */
|
||||
/* exec->WindowPos3sMESA = _mesa_WindowPos3sMESA; */
|
||||
/* exec->WindowPos3svMESA = _mesa_WindowPos3svMESA; */
|
||||
/* exec->WindowPos4dMESA = _mesa_WindowPos4dMESA; */
|
||||
/* exec->WindowPos4dvMESA = _mesa_WindowPos4dvMESA; */
|
||||
/* exec->WindowPos4fMESA = _mesa_WindowPos4fMESA; */
|
||||
/* exec->WindowPos4fvMESA = _mesa_WindowPos4fvMESA; */
|
||||
/* exec->WindowPos4iMESA = _mesa_WindowPos4iMESA; */
|
||||
/* exec->WindowPos4ivMESA = _mesa_WindowPos4ivMESA; */
|
||||
/* exec->WindowPos4sMESA = _mesa_WindowPos4sMESA; */
|
||||
/* exec->WindowPos4svMESA = _mesa_WindowPos4svMESA; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->WindowPos2dMESA = _mesa_WindowPos2dMESA;
|
||||
exec->WindowPos2dvMESA = _mesa_WindowPos2dvMESA;
|
||||
exec->WindowPos2fMESA = _mesa_WindowPos2fMESA;
|
||||
exec->WindowPos2fvMESA = _mesa_WindowPos2fvMESA;
|
||||
exec->WindowPos2iMESA = _mesa_WindowPos2iMESA;
|
||||
exec->WindowPos2ivMESA = _mesa_WindowPos2ivMESA;
|
||||
exec->WindowPos2sMESA = _mesa_WindowPos2sMESA;
|
||||
exec->WindowPos2svMESA = _mesa_WindowPos2svMESA;
|
||||
exec->WindowPos3dMESA = _mesa_WindowPos3dMESA;
|
||||
exec->WindowPos3dvMESA = _mesa_WindowPos3dvMESA;
|
||||
exec->WindowPos3fMESA = _mesa_WindowPos3fMESA;
|
||||
exec->WindowPos3fvMESA = _mesa_WindowPos3fvMESA;
|
||||
exec->WindowPos3iMESA = _mesa_WindowPos3iMESA;
|
||||
exec->WindowPos3ivMESA = _mesa_WindowPos3ivMESA;
|
||||
exec->WindowPos3sMESA = _mesa_WindowPos3sMESA;
|
||||
exec->WindowPos3svMESA = _mesa_WindowPos3svMESA;
|
||||
exec->WindowPos4dMESA = _mesa_WindowPos4dMESA;
|
||||
exec->WindowPos4dvMESA = _mesa_WindowPos4dvMESA;
|
||||
exec->WindowPos4fMESA = _mesa_WindowPos4fMESA;
|
||||
exec->WindowPos4fvMESA = _mesa_WindowPos4fvMESA;
|
||||
exec->WindowPos4iMESA = _mesa_WindowPos4iMESA;
|
||||
exec->WindowPos4ivMESA = _mesa_WindowPos4ivMESA;
|
||||
exec->WindowPos4sMESA = _mesa_WindowPos4sMESA;
|
||||
exec->WindowPos4svMESA = _mesa_WindowPos4svMESA;
|
||||
#endif
|
||||
|
||||
/* 233. GL_NV_vertex_program */
|
||||
#if FEATURE_NV_vertex_program
|
||||
/* exec->BindProgramNV = _mesa_BindProgramNV; */
|
||||
/* exec->DeleteProgramsNV = _mesa_DeleteProgramsNV; */
|
||||
/* exec->ExecuteProgramNV = _mesa_ExecuteProgramNV; */
|
||||
/* exec->GenProgramsNV = _mesa_GenProgramsNV; */
|
||||
/* exec->AreProgramsResidentNV = _mesa_AreProgramsResidentNV; */
|
||||
/* exec->RequestResidentProgramsNV = _mesa_RequestResidentProgramsNV; */
|
||||
/* exec->GetProgramParameterfvNV = _mesa_GetProgramParameterfvNV; */
|
||||
/* exec->GetProgramParameterdvNV = _mesa_GetProgramParameterdvNV; */
|
||||
/* exec->GetProgramivNV = _mesa_GetProgramivNV; */
|
||||
/* exec->GetProgramStringNV = _mesa_GetProgramStringNV; */
|
||||
/* exec->GetTrackMatrixivNV = _mesa_GetTrackMatrixivNV; */
|
||||
/* exec->GetVertexAttribdvNV = _mesa_GetVertexAttribdvNV; */
|
||||
/* exec->GetVertexAttribfvNV = _mesa_GetVertexAttribfvNV; */
|
||||
/* exec->GetVertexAttribivNV = _mesa_GetVertexAttribivNV; */
|
||||
/* exec->GetVertexAttribPointervNV = _mesa_GetVertexAttribPointervNV; */
|
||||
/* exec->IsProgramNV = _mesa_IsProgramNV; */
|
||||
/* exec->LoadProgramNV = _mesa_LoadProgramNV; */
|
||||
/* exec->ProgramParameter4dNV = _mesa_ProgramParameter4dNV; */
|
||||
/* exec->ProgramParameter4dvNV = _mesa_ProgramParameter4dvNV; */
|
||||
/* exec->ProgramParameter4fNV = _mesa_ProgramParameter4fNV; */
|
||||
/* exec->ProgramParameter4fvNV = _mesa_ProgramParameter4fvNV; */
|
||||
/* exec->ProgramParameters4dvNV = _mesa_ProgramParameters4dvNV; */
|
||||
/* exec->ProgramParameters4fvNV = _mesa_ProgramParameters4fvNV; */
|
||||
/* exec->TrackMatrixNV = _mesa_TrackMatrixNV; */
|
||||
/* exec->VertexAttribPointerNV = _mesa_VertexAttribPointerNV; */
|
||||
#if _HAVE_FULL_GL && FEATURE_NV_vertex_program
|
||||
exec->BindProgramNV = _mesa_BindProgramNV;
|
||||
exec->DeleteProgramsNV = _mesa_DeleteProgramsNV;
|
||||
exec->ExecuteProgramNV = _mesa_ExecuteProgramNV;
|
||||
exec->GenProgramsNV = _mesa_GenProgramsNV;
|
||||
exec->AreProgramsResidentNV = _mesa_AreProgramsResidentNV;
|
||||
exec->RequestResidentProgramsNV = _mesa_RequestResidentProgramsNV;
|
||||
exec->GetProgramParameterfvNV = _mesa_GetProgramParameterfvNV;
|
||||
exec->GetProgramParameterdvNV = _mesa_GetProgramParameterdvNV;
|
||||
exec->GetProgramivNV = _mesa_GetProgramivNV;
|
||||
exec->GetProgramStringNV = _mesa_GetProgramStringNV;
|
||||
exec->GetTrackMatrixivNV = _mesa_GetTrackMatrixivNV;
|
||||
exec->GetVertexAttribdvNV = _mesa_GetVertexAttribdvNV;
|
||||
exec->GetVertexAttribfvNV = _mesa_GetVertexAttribfvNV;
|
||||
exec->GetVertexAttribivNV = _mesa_GetVertexAttribivNV;
|
||||
exec->GetVertexAttribPointervNV = _mesa_GetVertexAttribPointervNV;
|
||||
exec->IsProgramNV = _mesa_IsProgramNV;
|
||||
exec->LoadProgramNV = _mesa_LoadProgramNV;
|
||||
exec->ProgramParameter4dNV = _mesa_ProgramParameter4dNV;
|
||||
exec->ProgramParameter4dvNV = _mesa_ProgramParameter4dvNV;
|
||||
exec->ProgramParameter4fNV = _mesa_ProgramParameter4fNV;
|
||||
exec->ProgramParameter4fvNV = _mesa_ProgramParameter4fvNV;
|
||||
exec->ProgramParameters4dvNV = _mesa_ProgramParameters4dvNV;
|
||||
exec->ProgramParameters4fvNV = _mesa_ProgramParameters4fvNV;
|
||||
exec->TrackMatrixNV = _mesa_TrackMatrixNV;
|
||||
exec->VertexAttribPointerNV = _mesa_VertexAttribPointerNV;
|
||||
#endif
|
||||
|
||||
/* 262. GL_NV_point_sprite */
|
||||
/* exec->PointParameteriNV = _mesa_PointParameteriNV; */
|
||||
/* exec->PointParameterivNV = _mesa_PointParameterivNV; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->PointParameteriNV = _mesa_PointParameteriNV;
|
||||
exec->PointParameterivNV = _mesa_PointParameterivNV;
|
||||
#endif
|
||||
|
||||
/* 268. GL_EXT_stencil_two_side */
|
||||
/* exec->ActiveStencilFaceEXT = _mesa_ActiveStencilFaceEXT; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->ActiveStencilFaceEXT = _mesa_ActiveStencilFaceEXT;
|
||||
#endif
|
||||
|
||||
/* ARB 1. GL_ARB_multitexture */
|
||||
/* exec->ActiveTextureARB = _mesa_ActiveTextureARB; */
|
||||
/* exec->ClientActiveTextureARB = _mesa_ClientActiveTextureARB; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->ActiveTextureARB = _mesa_ActiveTextureARB;
|
||||
exec->ClientActiveTextureARB = _mesa_ClientActiveTextureARB;
|
||||
#endif
|
||||
|
||||
/* ARB 3. GL_ARB_transpose_matrix */
|
||||
/* exec->LoadTransposeMatrixdARB = _mesa_LoadTransposeMatrixdARB; */
|
||||
/* exec->LoadTransposeMatrixfARB = _mesa_LoadTransposeMatrixfARB; */
|
||||
/* exec->MultTransposeMatrixdARB = _mesa_MultTransposeMatrixdARB; */
|
||||
/* exec->MultTransposeMatrixfARB = _mesa_MultTransposeMatrixfARB; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->LoadTransposeMatrixdARB = _mesa_LoadTransposeMatrixdARB;
|
||||
exec->LoadTransposeMatrixfARB = _mesa_LoadTransposeMatrixfARB;
|
||||
exec->MultTransposeMatrixdARB = _mesa_MultTransposeMatrixdARB;
|
||||
exec->MultTransposeMatrixfARB = _mesa_MultTransposeMatrixfARB;
|
||||
#endif
|
||||
|
||||
/* ARB 5. GL_ARB_multisample */
|
||||
/* exec->SampleCoverageARB = _mesa_SampleCoverageARB; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->SampleCoverageARB = _mesa_SampleCoverageARB;
|
||||
#endif
|
||||
|
||||
/* ARB 12. GL_ARB_texture_compression */
|
||||
/* exec->CompressedTexImage3DARB = _mesa_CompressedTexImage3DARB; */
|
||||
/* exec->CompressedTexImage2DARB = _mesa_CompressedTexImage2DARB; */
|
||||
/* exec->CompressedTexImage1DARB = _mesa_CompressedTexImage1DARB; */
|
||||
/* exec->CompressedTexSubImage3DARB = _mesa_CompressedTexSubImage3DARB; */
|
||||
/* exec->CompressedTexSubImage2DARB = _mesa_CompressedTexSubImage2DARB; */
|
||||
/* exec->CompressedTexSubImage1DARB = _mesa_CompressedTexSubImage1DARB; */
|
||||
/* exec->GetCompressedTexImageARB = _mesa_GetCompressedTexImageARB; */
|
||||
#if _HAVE_FULL_GL
|
||||
exec->CompressedTexImage3DARB = _mesa_CompressedTexImage3DARB;
|
||||
exec->CompressedTexImage2DARB = _mesa_CompressedTexImage2DARB;
|
||||
exec->CompressedTexImage1DARB = _mesa_CompressedTexImage1DARB;
|
||||
exec->CompressedTexSubImage3DARB = _mesa_CompressedTexSubImage3DARB;
|
||||
exec->CompressedTexSubImage2DARB = _mesa_CompressedTexSubImage2DARB;
|
||||
exec->CompressedTexSubImage1DARB = _mesa_CompressedTexSubImage1DARB;
|
||||
exec->GetCompressedTexImageARB = _mesa_GetCompressedTexImageARB;
|
||||
#endif
|
||||
|
||||
/* ARB 14. GL_ARB_point_parameters */
|
||||
/* reuse EXT_point_parameters functions */
|
||||
|
||||
@@ -1,4 +1,12 @@
|
||||
/* $Id: m_matrix.c,v 1.14 2002/10/24 23:57:24 brianp Exp $ */
|
||||
/**
|
||||
* \file m_matrix.c
|
||||
* \brief Matrix operations.
|
||||
*
|
||||
* \note
|
||||
* -# 4x4 transformation matrices are stored in memory in column major order.
|
||||
* -# Points/vertices are to be thought of as column vectors.
|
||||
* -# Transformation of a point p by a matrix M is: p' = M * p
|
||||
*/
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -24,15 +32,8 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: m_matrix.c,v 1.14.4.1 2003/03/02 00:27:36 jrfonseca Exp $ */
|
||||
|
||||
/*
|
||||
* Matrix operations
|
||||
*
|
||||
* NOTES:
|
||||
* 1. 4x4 transformation matrices are stored in memory in column major order.
|
||||
* 2. Points/vertices are to be thought of as column vectors.
|
||||
* 3. Transformation of a point p by a matrix M is: p' = M * p
|
||||
*/
|
||||
|
||||
#include "glheader.h"
|
||||
#include "imports.h"
|
||||
@@ -43,6 +44,9 @@
|
||||
#include "m_matrix.h"
|
||||
|
||||
|
||||
/**
|
||||
* \brief Names of the corresponding GLmatrixtype values.
|
||||
*/
|
||||
static const char *types[] = {
|
||||
"MATRIX_GENERAL",
|
||||
"MATRIX_IDENTITY",
|
||||
@@ -54,6 +58,9 @@ static const char *types[] = {
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* \brief Identity matrix.
|
||||
*/
|
||||
static GLfloat Identity[16] = {
|
||||
1.0, 0.0, 0.0, 0.0,
|
||||
0.0, 1.0, 0.0, 0.0,
|
||||
@@ -63,22 +70,27 @@ static GLfloat Identity[16] = {
|
||||
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/** \name Matrix multiplication */
|
||||
/*@{*/
|
||||
|
||||
/*
|
||||
* This matmul was contributed by Thomas Malik
|
||||
*
|
||||
* Perform a 4x4 matrix multiplication (product = a x b).
|
||||
* Input: a, b - matrices to multiply
|
||||
* Output: product - product of a and b
|
||||
* WARNING: (product != b) assumed
|
||||
* NOTE: (product == a) allowed
|
||||
*
|
||||
* KW: 4*16 = 64 muls
|
||||
*/
|
||||
#define A(row,col) a[(col<<2)+row]
|
||||
#define B(row,col) b[(col<<2)+row]
|
||||
#define P(row,col) product[(col<<2)+row]
|
||||
|
||||
/**
|
||||
* \brief Perform a full 4x4 matrix multiplication.
|
||||
*
|
||||
* \param a matrix.
|
||||
* \param b matrix.
|
||||
* \param product will receive the product of \p a and \p b.
|
||||
*
|
||||
* \warning Is assumed that \p product != \p b. \p product == \p a is allowed.
|
||||
*
|
||||
* \note KW: 4*16 = 64 multiplications
|
||||
*
|
||||
* \author This \c matmul was contributed by Thomas Malik
|
||||
*/
|
||||
static void matmul4( GLfloat *product, const GLfloat *a, const GLfloat *b )
|
||||
{
|
||||
GLint i;
|
||||
@@ -91,9 +103,13 @@ static void matmul4( GLfloat *product, const GLfloat *a, const GLfloat *b )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Multiply two matrices known to occupy only the top three rows, such
|
||||
/**
|
||||
* \brief Multiply two matrices known to occupy only the top three rows, such
|
||||
* as typical model matrices, and ortho matrices.
|
||||
*
|
||||
* \param a matrix.
|
||||
* \param b matrix.
|
||||
* \param product will receive the product of \p a and \p b.
|
||||
*/
|
||||
static void matmul34( GLfloat *product, const GLfloat *a, const GLfloat *b )
|
||||
{
|
||||
@@ -111,14 +127,20 @@ static void matmul34( GLfloat *product, const GLfloat *a, const GLfloat *b )
|
||||
P(3,3) = 1;
|
||||
}
|
||||
|
||||
|
||||
#undef A
|
||||
#undef B
|
||||
#undef P
|
||||
|
||||
|
||||
/*
|
||||
* Multiply a matrix by an array of floats with known properties.
|
||||
/**
|
||||
* \brief Multiply a matrix by an array of floats with known properties.
|
||||
*
|
||||
* \param mat pointer to a GLmatrix structure containing the left mutiplication
|
||||
* matrix, and that will receive the product result.
|
||||
* \param m right multiplication matrix array.
|
||||
* \param flags flags of the matrix \p m.
|
||||
*
|
||||
* Joins both flags and marks the type and inverse as drity. Calls matmul34()
|
||||
* if both matrices are 3D, or matmul4() otherwise.
|
||||
*/
|
||||
static void matrix_multf( GLmatrix *mat, const GLfloat *m, GLuint flags )
|
||||
{
|
||||
@@ -130,7 +152,49 @@ static void matrix_multf( GLmatrix *mat, const GLfloat *m, GLuint flags )
|
||||
matmul4( mat->m, mat->m, m );
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Matrix multiplication.
|
||||
*
|
||||
*/
|
||||
void
|
||||
_math_matrix_mul_matrix( GLmatrix *dest, const GLmatrix *a, const GLmatrix *b )
|
||||
{
|
||||
dest->flags = (a->flags |
|
||||
b->flags |
|
||||
MAT_DIRTY_TYPE |
|
||||
MAT_DIRTY_INVERSE);
|
||||
|
||||
if (TEST_MAT_FLAGS(dest, MAT_FLAGS_3D))
|
||||
matmul34( dest->m, a->m, b->m );
|
||||
else
|
||||
matmul4( dest->m, a->m, b->m );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_math_matrix_mul_floats( GLmatrix *dest, const GLfloat *m )
|
||||
{
|
||||
dest->flags |= (MAT_FLAG_GENERAL |
|
||||
MAT_DIRTY_TYPE |
|
||||
MAT_DIRTY_INVERSE);
|
||||
|
||||
matmul4( dest->m, dest->m, m );
|
||||
}
|
||||
|
||||
/*@{*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/** \name Matrix output */
|
||||
/*@{*/
|
||||
|
||||
/**
|
||||
* \brief Print a matrix array.
|
||||
*
|
||||
* \param m matrix array.
|
||||
*
|
||||
* Called by _math_matrix_print() to print a matrix or its inverse.
|
||||
*/
|
||||
static void print_matrix_floats( const GLfloat m[16] )
|
||||
{
|
||||
int i;
|
||||
@@ -139,6 +203,11 @@ static void print_matrix_floats( const GLfloat m[16] )
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Dumps the contents of a GLmatrix structure.
|
||||
*
|
||||
* \param m pointer to the GLmatrix strucure.
|
||||
*/
|
||||
void
|
||||
_math_matrix_print( const GLmatrix *m )
|
||||
{
|
||||
@@ -157,16 +226,48 @@ _math_matrix_print( const GLmatrix *m )
|
||||
}
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
|
||||
#define SWAP_ROWS(a, b) { GLfloat *_tmp = a; (a)=(b); (b)=_tmp; }
|
||||
/**
|
||||
* \brief References an element of 4x4 matrix.
|
||||
*
|
||||
* \param m matrix array.
|
||||
* \param c column of the desired element.
|
||||
* \param r row of the desired element.
|
||||
*
|
||||
* \return value of the desired element.
|
||||
*
|
||||
* Calculate the linear storage index of the element and references it.
|
||||
*/
|
||||
#define MAT(m,r,c) (m)[(c)*4+(r)]
|
||||
|
||||
/*
|
||||
* Compute inverse of 4x4 transformation matrix.
|
||||
|
||||
/**********************************************************************/
|
||||
/** \name Matrix inversion */
|
||||
/*@{*/
|
||||
|
||||
/**
|
||||
* \brief Swaps the values of two floating pointer variables.
|
||||
*
|
||||
* Used by invert_matrix_general() to swap the row pointers.
|
||||
*/
|
||||
#define SWAP_ROWS(a, b) { GLfloat *_tmp = a; (a)=(b); (b)=_tmp; }
|
||||
|
||||
/**
|
||||
* \brief Compute inverse of 4x4 transformation matrix.
|
||||
*
|
||||
* \param mat pointer to a GLmatrix structure. The matrix inverse will be
|
||||
* stored in the GLmatrix::inv attribute.
|
||||
*
|
||||
* \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
|
||||
*
|
||||
* \author
|
||||
* Code contributed by Jacques Leroy jle@star.be
|
||||
* Return GL_TRUE for success, GL_FALSE for failure (singular matrix)
|
||||
*
|
||||
* Calculates the inverse matrix by performing the gaussian matrix reduction
|
||||
* with partial pivoting folloed by back/substitution with the loops manually
|
||||
* unrolled.
|
||||
*/
|
||||
static GLboolean invert_matrix_general( GLmatrix *mat )
|
||||
{
|
||||
@@ -281,8 +382,20 @@ static GLboolean invert_matrix_general( GLmatrix *mat )
|
||||
}
|
||||
#undef SWAP_ROWS
|
||||
|
||||
|
||||
/* Adapted from graphics gems II.
|
||||
/**
|
||||
* \brief Compute inverse of a general 3d transformation matrix.
|
||||
*
|
||||
* \param mat pointer to a GLmatrix structure. The matrix inverse will be
|
||||
* stored in the GLmatrix::inv attribute.
|
||||
*
|
||||
* \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
|
||||
*
|
||||
* \author Adapted from graphics gems II.
|
||||
*
|
||||
* Calculates the inverse of the upper left by first calculating its
|
||||
* determinant and multiplying it to the simetric adjust matrix of each
|
||||
* element. Finally deals with the translation part by transforming the
|
||||
* original translation vector using by the calculated submatrix inverse.
|
||||
*/
|
||||
static GLboolean invert_matrix_3d_general( GLmatrix *mat )
|
||||
{
|
||||
@@ -343,7 +456,19 @@ static GLboolean invert_matrix_3d_general( GLmatrix *mat )
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Compute inverse of a 3d transformation matrix.
|
||||
*
|
||||
* \param mat pointer to a GLmatrix structure. The matrix inverse will be
|
||||
* stored in the GLmatrix::inv attribute.
|
||||
*
|
||||
* \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
|
||||
*
|
||||
* If the matrix is not an angle preserving matrix then calls
|
||||
* invert_matrix_3d_general for the actual calculation. Otherwise calculates
|
||||
* the inverse matrix analyzing and inverting each of the scaling, rotation and
|
||||
* translation parts.
|
||||
*/
|
||||
static GLboolean invert_matrix_3d( GLmatrix *mat )
|
||||
{
|
||||
const GLfloat *in = mat->m;
|
||||
@@ -414,15 +539,32 @@ static GLboolean invert_matrix_3d( GLmatrix *mat )
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* \brief Compute inverse of an identity transformation matrix.
|
||||
*
|
||||
* \param mat pointer to a GLmatrix structure. The matrix inverse will be
|
||||
* stored in the GLmatrix::inv attribute.
|
||||
*
|
||||
* \return always GL_TRUE.
|
||||
*
|
||||
* Simply copies Identity into GLmatrix::inv.
|
||||
*/
|
||||
static GLboolean invert_matrix_identity( GLmatrix *mat )
|
||||
{
|
||||
MEMCPY( mat->inv, Identity, sizeof(Identity) );
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Compute inverse of a no-rotation 3d transformation matrix.
|
||||
*
|
||||
* \param mat pointer to a GLmatrix structure. The matrix inverse will be
|
||||
* stored in the GLmatrix::inv attribute.
|
||||
*
|
||||
* \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
|
||||
*
|
||||
* Calculates the
|
||||
*/
|
||||
static GLboolean invert_matrix_3d_no_rot( GLmatrix *mat )
|
||||
{
|
||||
const GLfloat *in = mat->m;
|
||||
@@ -445,7 +587,17 @@ static GLboolean invert_matrix_3d_no_rot( GLmatrix *mat )
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Compute inverse of a no-rotation 2d transformation matrix.
|
||||
*
|
||||
* \param mat pointer to a GLmatrix structure. The matrix inverse will be
|
||||
* stored in the GLmatrix::inv attribute.
|
||||
*
|
||||
* \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
|
||||
*
|
||||
* Calculates the inverse matrix by applying the inverse scaling and
|
||||
* translation to the identity matrix.
|
||||
*/
|
||||
static GLboolean invert_matrix_2d_no_rot( GLmatrix *mat )
|
||||
{
|
||||
const GLfloat *in = mat->m;
|
||||
@@ -466,7 +618,6 @@ static GLboolean invert_matrix_2d_no_rot( GLmatrix *mat )
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
#if 0
|
||||
/* broken */
|
||||
static GLboolean invert_matrix_perspective( GLmatrix *mat )
|
||||
@@ -495,10 +646,14 @@ static GLboolean invert_matrix_perspective( GLmatrix *mat )
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
/**
|
||||
* \brief Matrix inversion function pointer type.
|
||||
*/
|
||||
typedef GLboolean (*inv_mat_func)( GLmatrix *mat );
|
||||
|
||||
|
||||
/**
|
||||
* \brief Table of the matrix inversion functions according to the matrix type.
|
||||
*/
|
||||
static inv_mat_func inv_mat_tab[7] = {
|
||||
invert_matrix_general,
|
||||
invert_matrix_identity,
|
||||
@@ -516,7 +671,18 @@ static inv_mat_func inv_mat_tab[7] = {
|
||||
invert_matrix_3d
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* \brief Compute inverse of a transformation matrix.
|
||||
*
|
||||
* \param mat pointer to a GLmatrix structure. The matrix inverse will be
|
||||
* stored in the GLmatrix::inv attribute.
|
||||
*
|
||||
* \return GL_TRUE for success, GL_FALSE for failure (\p singular matrix).
|
||||
*
|
||||
* Calls the matrix inversion function in inv_mat_tab corresponding to the
|
||||
* given matrix type. In case of failure, updates the MAT_FLAG_SINGULAR flag,
|
||||
* and copies the identity matrix into GLmatrix::inv.
|
||||
*/
|
||||
static GLboolean matrix_invert( GLmatrix *mat )
|
||||
{
|
||||
if (inv_mat_tab[mat->type](mat)) {
|
||||
@@ -529,16 +695,20 @@ static GLboolean matrix_invert( GLmatrix *mat )
|
||||
}
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/** \name Matrix generation */
|
||||
/*@{*/
|
||||
|
||||
|
||||
|
||||
/*
|
||||
* Generate a 4x4 transformation matrix from glRotate parameters, and
|
||||
* postmultiply the input matrix by it.
|
||||
* This function contributed by Erich Boleyn (erich@uruk.org).
|
||||
* Optimizatios contributed by Rudolf Opalla (rudi@khm.de).
|
||||
/**
|
||||
* \brief Generate a 4x4 transformation matrix from glRotate parameters, and
|
||||
* post-multiply the input matrix by it.
|
||||
*
|
||||
* \author
|
||||
* This function was contributed by Erich Boleyn (erich@uruk.org).
|
||||
* Optimizations contributed by Rudolf Opalla (rudi@khm.de).
|
||||
*/
|
||||
void
|
||||
_math_matrix_rotate( GLmatrix *mat,
|
||||
@@ -710,8 +880,6 @@ _math_matrix_rotate( GLmatrix *mat,
|
||||
matrix_multf( mat, m, MAT_FLAG_ROTATION );
|
||||
}
|
||||
|
||||
|
||||
|
||||
void
|
||||
_math_matrix_frustum( GLmatrix *mat,
|
||||
GLfloat left, GLfloat right,
|
||||
@@ -765,6 +933,58 @@ _math_matrix_ortho( GLmatrix *mat,
|
||||
matrix_multf( mat, m, (MAT_FLAG_GENERAL_SCALE|MAT_FLAG_TRANSLATION));
|
||||
}
|
||||
|
||||
void
|
||||
_math_matrix_scale( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
|
||||
{
|
||||
GLfloat *m = mat->m;
|
||||
m[0] *= x; m[4] *= y; m[8] *= z;
|
||||
m[1] *= x; m[5] *= y; m[9] *= z;
|
||||
m[2] *= x; m[6] *= y; m[10] *= z;
|
||||
m[3] *= x; m[7] *= y; m[11] *= z;
|
||||
|
||||
if (fabs(x - y) < 1e-8 && fabs(x - z) < 1e-8)
|
||||
mat->flags |= MAT_FLAG_UNIFORM_SCALE;
|
||||
else
|
||||
mat->flags |= MAT_FLAG_GENERAL_SCALE;
|
||||
|
||||
mat->flags |= (MAT_DIRTY_TYPE |
|
||||
MAT_DIRTY_INVERSE);
|
||||
}
|
||||
|
||||
void
|
||||
_math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
|
||||
{
|
||||
GLfloat *m = mat->m;
|
||||
m[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
|
||||
m[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
|
||||
m[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
|
||||
m[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
|
||||
|
||||
mat->flags |= (MAT_FLAG_TRANSLATION |
|
||||
MAT_DIRTY_TYPE |
|
||||
MAT_DIRTY_INVERSE);
|
||||
}
|
||||
|
||||
void
|
||||
_math_matrix_set_identity( GLmatrix *mat )
|
||||
{
|
||||
MEMCPY( mat->m, Identity, 16*sizeof(GLfloat) );
|
||||
|
||||
if (mat->inv)
|
||||
MEMCPY( mat->inv, Identity, 16*sizeof(GLfloat) );
|
||||
|
||||
mat->type = MATRIX_IDENTITY;
|
||||
mat->flags &= ~(MAT_DIRTY_FLAGS|
|
||||
MAT_DIRTY_TYPE|
|
||||
MAT_DIRTY_INVERSE);
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/** \name Matrix analysis */
|
||||
/*@{*/
|
||||
|
||||
#define ZERO(x) (1<<x)
|
||||
#define ONE(x) (1<<(x+16))
|
||||
@@ -917,7 +1137,6 @@ static void analyse_from_scratch( GLmatrix *mat )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Analyse a matrix given that its flags are accurate - this is the
|
||||
* more common operation, hopefully.
|
||||
*/
|
||||
@@ -959,7 +1178,6 @@ static void analyse_from_flags( GLmatrix *mat )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_math_matrix_analyse( GLmatrix *mat )
|
||||
{
|
||||
@@ -979,6 +1197,12 @@ _math_matrix_analyse( GLmatrix *mat )
|
||||
MAT_DIRTY_INVERSE);
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/** \name Matrix setup */
|
||||
/*@{*/
|
||||
|
||||
void
|
||||
_math_matrix_copy( GLmatrix *to, const GLmatrix *from )
|
||||
@@ -998,40 +1222,6 @@ _math_matrix_copy( GLmatrix *to, const GLmatrix *from )
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_math_matrix_scale( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
|
||||
{
|
||||
GLfloat *m = mat->m;
|
||||
m[0] *= x; m[4] *= y; m[8] *= z;
|
||||
m[1] *= x; m[5] *= y; m[9] *= z;
|
||||
m[2] *= x; m[6] *= y; m[10] *= z;
|
||||
m[3] *= x; m[7] *= y; m[11] *= z;
|
||||
|
||||
if (fabs(x - y) < 1e-8 && fabs(x - z) < 1e-8)
|
||||
mat->flags |= MAT_FLAG_UNIFORM_SCALE;
|
||||
else
|
||||
mat->flags |= MAT_FLAG_GENERAL_SCALE;
|
||||
|
||||
mat->flags |= (MAT_DIRTY_TYPE |
|
||||
MAT_DIRTY_INVERSE);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_math_matrix_translate( GLmatrix *mat, GLfloat x, GLfloat y, GLfloat z )
|
||||
{
|
||||
GLfloat *m = mat->m;
|
||||
m[12] = m[0] * x + m[4] * y + m[8] * z + m[12];
|
||||
m[13] = m[1] * x + m[5] * y + m[9] * z + m[13];
|
||||
m[14] = m[2] * x + m[6] * y + m[10] * z + m[14];
|
||||
m[15] = m[3] * x + m[7] * y + m[11] * z + m[15];
|
||||
|
||||
mat->flags |= (MAT_FLAG_TRANSLATION |
|
||||
MAT_DIRTY_TYPE |
|
||||
MAT_DIRTY_INVERSE);
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_math_matrix_loadf( GLmatrix *mat, const GLfloat *m )
|
||||
{
|
||||
@@ -1063,7 +1253,6 @@ _math_matrix_dtr( GLmatrix *m )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_math_matrix_alloc_inv( GLmatrix *m )
|
||||
{
|
||||
@@ -1074,47 +1263,12 @@ _math_matrix_alloc_inv( GLmatrix *m )
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_math_matrix_mul_matrix( GLmatrix *dest, const GLmatrix *a, const GLmatrix *b )
|
||||
{
|
||||
dest->flags = (a->flags |
|
||||
b->flags |
|
||||
MAT_DIRTY_TYPE |
|
||||
MAT_DIRTY_INVERSE);
|
||||
|
||||
if (TEST_MAT_FLAGS(dest, MAT_FLAGS_3D))
|
||||
matmul34( dest->m, a->m, b->m );
|
||||
else
|
||||
matmul4( dest->m, a->m, b->m );
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_math_matrix_mul_floats( GLmatrix *dest, const GLfloat *m )
|
||||
{
|
||||
dest->flags |= (MAT_FLAG_GENERAL |
|
||||
MAT_DIRTY_TYPE |
|
||||
MAT_DIRTY_INVERSE);
|
||||
|
||||
matmul4( dest->m, dest->m, m );
|
||||
}
|
||||
|
||||
void
|
||||
_math_matrix_set_identity( GLmatrix *mat )
|
||||
{
|
||||
MEMCPY( mat->m, Identity, 16*sizeof(GLfloat) );
|
||||
|
||||
if (mat->inv)
|
||||
MEMCPY( mat->inv, Identity, 16*sizeof(GLfloat) );
|
||||
|
||||
mat->type = MATRIX_IDENTITY;
|
||||
mat->flags &= ~(MAT_DIRTY_FLAGS|
|
||||
MAT_DIRTY_TYPE|
|
||||
MAT_DIRTY_INVERSE);
|
||||
}
|
||||
/*@}*/
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/** \name Matrix transpose */
|
||||
/*@{*/
|
||||
|
||||
void
|
||||
_math_transposef( GLfloat to[16], const GLfloat from[16] )
|
||||
@@ -1137,7 +1291,6 @@ _math_transposef( GLfloat to[16], const GLfloat from[16] )
|
||||
to[15] = from[15];
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
_math_transposed( GLdouble to[16], const GLdouble from[16] )
|
||||
{
|
||||
@@ -1179,3 +1332,6 @@ _math_transposefd( GLfloat to[16], const GLdouble from[16] )
|
||||
to[14] = (GLfloat) from[11];
|
||||
to[15] = (GLfloat) from[15];
|
||||
}
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
/* $Id: m_matrix.h,v 1.4 2001/03/12 00:48:41 gareth Exp $ */
|
||||
/**
|
||||
* \file m_matrix.h
|
||||
* \brief Matrix operations.
|
||||
*/
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
@@ -24,13 +27,15 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: m_matrix.h,v 1.4.8.1 2003/03/02 00:27:36 jrfonseca Exp $ */
|
||||
|
||||
#ifndef _M_MATRIX_H
|
||||
#define _M_MATRIX_H
|
||||
|
||||
|
||||
|
||||
/* Give symbolic names to some of the entries in the matrix to help
|
||||
/**
|
||||
* Give symbolic names to some of the entries in the matrix to help
|
||||
* out with the rework of the viewport_map as a matrix transform.
|
||||
*/
|
||||
#define MAT_SX 0
|
||||
@@ -40,43 +45,52 @@
|
||||
#define MAT_TY 13
|
||||
#define MAT_TZ 14
|
||||
|
||||
/*
|
||||
* Different kinds of 4x4 transformation matrices:
|
||||
/**
|
||||
* \brief Different kinds of 4x4 transformation matrices.
|
||||
*/
|
||||
#define MATRIX_GENERAL 0 /* general 4x4 matrix */
|
||||
#define MATRIX_IDENTITY 1 /* identity matrix */
|
||||
#define MATRIX_3D_NO_ROT 2 /* ortho projection and others... */
|
||||
#define MATRIX_PERSPECTIVE 3 /* perspective projection matrix */
|
||||
#define MATRIX_2D 4 /* 2-D transformation */
|
||||
#define MATRIX_2D_NO_ROT 5 /* 2-D scale & translate only */
|
||||
#define MATRIX_3D 6 /* 3-D transformation */
|
||||
enum GLmatrixtype {
|
||||
MATRIX_GENERAL = 0, /**< \brief general 4x4 matrix */
|
||||
MATRIX_IDENTITY = 1, /**< \brief identity matrix */
|
||||
MATRIX_3D_NO_ROT = 2, /**< \brief ortho projection and others... */
|
||||
MATRIX_PERSPECTIVE = 3, /**< \brief perspective projection matrix */
|
||||
MATRIX_2D = 4, /**< \brief 2-D transformation */
|
||||
MATRIX_2D_NO_ROT = 5, /**< \brief 2-D scale & translate only */
|
||||
MATRIX_3D = 6, /**< \brief 3-D transformation */
|
||||
} ;
|
||||
|
||||
#define MAT_FLAG_IDENTITY 0
|
||||
#define MAT_FLAG_GENERAL 0x1
|
||||
#define MAT_FLAG_ROTATION 0x2
|
||||
#define MAT_FLAG_TRANSLATION 0x4
|
||||
#define MAT_FLAG_UNIFORM_SCALE 0x8
|
||||
#define MAT_FLAG_GENERAL_SCALE 0x10
|
||||
#define MAT_FLAG_GENERAL_3D 0x20
|
||||
#define MAT_FLAG_PERSPECTIVE 0x40
|
||||
#define MAT_FLAG_SINGULAR 0x80
|
||||
#define MAT_DIRTY_TYPE 0x100
|
||||
#define MAT_DIRTY_FLAGS 0x200
|
||||
#define MAT_DIRTY_INVERSE 0x400
|
||||
#define MAT_FLAG_IDENTITY 0 /**< \brief is an identity matrix flag.
|
||||
* (Not actualy used - the identity
|
||||
* matrix is identified by the abcense
|
||||
/ of all other flags.) */
|
||||
#define MAT_FLAG_GENERAL 0x1 /**< \brief is a general matrix flag */
|
||||
#define MAT_FLAG_ROTATION 0x2 /**< \brief is a rotation matrix flag */
|
||||
#define MAT_FLAG_TRANSLATION 0x4 /**< \brief is a translation matrix flag */
|
||||
#define MAT_FLAG_UNIFORM_SCALE 0x8 /**< \brief is an uniform scaling matrix flag */
|
||||
#define MAT_FLAG_GENERAL_SCALE 0x10 /**< \brief is a general scaling matrix flag */
|
||||
#define MAT_FLAG_GENERAL_3D 0x20 /**< \brief general 3D matrix flag */
|
||||
#define MAT_FLAG_PERSPECTIVE 0x40 /**< \brief is a perspective projection matrix flag */
|
||||
#define MAT_FLAG_SINGULAR 0x80 /**< \brief is a singular matrix flag */
|
||||
#define MAT_DIRTY_TYPE 0x100 /**< \brief matrix type is dirty */
|
||||
#define MAT_DIRTY_FLAGS 0x200 /**< \brief matrix flags are dirty */
|
||||
#define MAT_DIRTY_INVERSE 0x400 /**< \brief matrix inverse is dirty */
|
||||
|
||||
/** \brief angle preserving matrix flags mask */
|
||||
#define MAT_FLAGS_ANGLE_PRESERVING (MAT_FLAG_ROTATION | \
|
||||
MAT_FLAG_TRANSLATION | \
|
||||
MAT_FLAG_UNIFORM_SCALE)
|
||||
|
||||
/** \brief length preserving matrix flags mask */
|
||||
#define MAT_FLAGS_LENGTH_PRESERVING (MAT_FLAG_ROTATION | \
|
||||
MAT_FLAG_TRANSLATION)
|
||||
|
||||
/** \brief 3D (non-perspective) matrix flags mask */
|
||||
#define MAT_FLAGS_3D (MAT_FLAG_ROTATION | \
|
||||
MAT_FLAG_TRANSLATION | \
|
||||
MAT_FLAG_UNIFORM_SCALE | \
|
||||
MAT_FLAG_GENERAL_SCALE | \
|
||||
MAT_FLAG_GENERAL_3D)
|
||||
|
||||
/** \brief geometry related matrix flags mask */
|
||||
#define MAT_FLAGS_GEOMETRY (MAT_FLAG_GENERAL | \
|
||||
MAT_FLAG_ROTATION | \
|
||||
MAT_FLAG_TRANSLATION | \
|
||||
@@ -86,19 +100,32 @@
|
||||
MAT_FLAG_PERSPECTIVE | \
|
||||
MAT_FLAG_SINGULAR)
|
||||
|
||||
/** \brief dirty matrix flags mask */
|
||||
#define MAT_DIRTY (MAT_DIRTY_TYPE | \
|
||||
MAT_DIRTY_FLAGS | \
|
||||
MAT_DIRTY_INVERSE)
|
||||
|
||||
/**
|
||||
* \brief Test geometry related matrix flags.
|
||||
*
|
||||
* \param mat a pointer to a GLmatrix structure.
|
||||
* \param a flags mask.
|
||||
*
|
||||
* \returns non-zero if all geometry related matrix flags are contained within
|
||||
* the mask, or zero otherwise.
|
||||
*/
|
||||
#define TEST_MAT_FLAGS(mat, a) \
|
||||
((MAT_FLAGS_GEOMETRY & (~(a)) & ((mat)->flags) ) == 0)
|
||||
|
||||
|
||||
/**
|
||||
* \brief Matrix.
|
||||
*/
|
||||
typedef struct {
|
||||
GLfloat *m; /* 16-byte aligned */
|
||||
GLfloat *inv; /* optional, 16-byte aligned */
|
||||
GLuint flags;
|
||||
GLuint type; /* one of the MATRIX_* values */
|
||||
GLfloat *m; /**< \brief matrix, 16-byte aligned */
|
||||
GLfloat *inv; /**< \brief optional inverse, 16-byte aligned */
|
||||
GLuint flags; /**< \brief property flags */
|
||||
GLuint type; /**< \brief one of the GLmatrixtype values */
|
||||
} GLmatrix;
|
||||
|
||||
|
||||
@@ -158,9 +185,11 @@ _math_matrix_print( const GLmatrix *m );
|
||||
|
||||
|
||||
|
||||
|
||||
/* Related functions that don't actually operate on GLmatrix structs:
|
||||
/**
|
||||
* \name Related functions that don't actually operate on GLmatrix structs
|
||||
*/
|
||||
/*@{*/
|
||||
|
||||
extern void
|
||||
_math_transposef( GLfloat to[16], const GLfloat from[16] );
|
||||
|
||||
@@ -170,7 +199,7 @@ _math_transposed( GLdouble to[16], const GLdouble from[16] );
|
||||
extern void
|
||||
_math_transposefd( GLfloat to[16], const GLdouble from[16] );
|
||||
|
||||
|
||||
/*@}*/
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
@@ -12,7 +12,7 @@ clientDriverName=radeon_dri.so
|
||||
|
||||
# The pci bus id of the video card. Find this with scanpci, lspci or
|
||||
# look in /proc/pci.
|
||||
pciBusID=PCI:3:0:0
|
||||
pciBusID=PCI:1:0:0
|
||||
|
||||
# Virtual screen dimensions. Can reduce this to save videocard memory
|
||||
# at the expense of maximum window size available.
|
||||
|
||||
Reference in New Issue
Block a user