mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-05 00:58:05 +02:00
Lots of GLchan datatype changes.
Added GLvector4us datatype in math/m_vector.[ch] Added _math_trans_4us() in math/m_translate.[ch] Choose GLvector4ub, GLvector4us, GLvector4f at compile time based on CHAN_BITS. Made Driver.ClearColor() and Driver.ClearIndex() optional driver functions. Changed args to Driver.ClearColor(), updated drivers. Reordered files in Makefile.X11
This commit is contained in:
parent
125fddc31d
commit
74b493a5e6
47 changed files with 1454 additions and 1086 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: Makefile.X11,v 1.39 2001/01/08 21:55:59 keithw Exp $
|
||||
# $Id: Makefile.X11,v 1.40 2001/01/24 00:04:58 brianp Exp $
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 3.5
|
||||
|
|
@ -86,6 +86,35 @@ CORE_SOURCES = \
|
|||
X86/common_x86.c \
|
||||
X86/3dnow.c \
|
||||
X86/katmai.c \
|
||||
swrast/s_aaline.c \
|
||||
swrast/s_aatriangle.c \
|
||||
swrast/s_accum.c \
|
||||
swrast/s_alpha.c \
|
||||
swrast/s_alphabuf.c \
|
||||
swrast/s_bitmap.c \
|
||||
swrast/s_blend.c \
|
||||
swrast/s_buffers.c \
|
||||
swrast/s_copypix.c \
|
||||
swrast/s_context.c \
|
||||
swrast/s_depth.c \
|
||||
swrast/s_drawpix.c \
|
||||
swrast/s_feedback.c \
|
||||
swrast/s_fog.c \
|
||||
swrast/s_histogram.c \
|
||||
swrast/s_lines.c \
|
||||
swrast/s_logic.c \
|
||||
swrast/s_masking.c \
|
||||
swrast/s_pb.c \
|
||||
swrast/s_pixeltex.c \
|
||||
swrast/s_points.c \
|
||||
swrast/s_quads.c \
|
||||
swrast/s_readpix.c \
|
||||
swrast/s_scissor.c \
|
||||
swrast/s_span.c \
|
||||
swrast/s_stencil.c \
|
||||
swrast/s_texture.c \
|
||||
swrast/s_triangle.c \
|
||||
swrast/s_zoom.c \
|
||||
swrast_setup/ss_context.c \
|
||||
swrast_setup/ss_triangle.c \
|
||||
swrast_setup/ss_vb.c \
|
||||
|
|
@ -119,36 +148,7 @@ CORE_SOURCES = \
|
|||
tnl/t_vb_render.c \
|
||||
tnl/t_vb_texgen.c \
|
||||
tnl/t_vb_texmat.c \
|
||||
tnl/t_vb_vertex.c \
|
||||
swrast/s_aaline.c \
|
||||
swrast/s_aatriangle.c \
|
||||
swrast/s_accum.c \
|
||||
swrast/s_alpha.c \
|
||||
swrast/s_alphabuf.c \
|
||||
swrast/s_bitmap.c \
|
||||
swrast/s_blend.c \
|
||||
swrast/s_buffers.c \
|
||||
swrast/s_copypix.c \
|
||||
swrast/s_context.c \
|
||||
swrast/s_depth.c \
|
||||
swrast/s_drawpix.c \
|
||||
swrast/s_feedback.c \
|
||||
swrast/s_fog.c \
|
||||
swrast/s_histogram.c \
|
||||
swrast/s_lines.c \
|
||||
swrast/s_logic.c \
|
||||
swrast/s_masking.c \
|
||||
swrast/s_pb.c \
|
||||
swrast/s_pixeltex.c \
|
||||
swrast/s_points.c \
|
||||
swrast/s_quads.c \
|
||||
swrast/s_readpix.c \
|
||||
swrast/s_scissor.c \
|
||||
swrast/s_span.c \
|
||||
swrast/s_stencil.c \
|
||||
swrast/s_texture.c \
|
||||
swrast/s_triangle.c \
|
||||
swrast/s_zoom.c
|
||||
tnl/t_vb_vertex.c
|
||||
|
||||
|
||||
DRIVER_SOURCES = \
|
||||
|
|
@ -188,8 +188,8 @@ ASM_SOURCES =
|
|||
ADDITIONAL_OBJ =
|
||||
|
||||
OBJECTS = $(ASM_SOURCES:.S=.o) \
|
||||
$(DRIVER_SOURCES:.c=.o) \
|
||||
$(CORE_SOURCES:.c=.o) \
|
||||
$(DRIVER_SOURCES:.c=.o) \
|
||||
$(ADDITIONAL_OBJ)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: ac_import.c,v 1.3 2001/01/16 15:25:11 brianp Exp $ */
|
||||
/* $Id: ac_import.c,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -33,6 +33,7 @@
|
|||
#include "mmath.h"
|
||||
#include "mtypes.h"
|
||||
|
||||
#include "math/m_translate.h"
|
||||
#include "array_cache/ac_context.h"
|
||||
#include "math/m_translate.h"
|
||||
|
||||
|
|
@ -270,20 +271,39 @@ static void import_color( GLcontext *ctx,
|
|||
|
||||
/* Limited choices at this stage:
|
||||
*/
|
||||
ASSERT(type == GL_UNSIGNED_BYTE);
|
||||
ASSERT(stride == 4*sizeof(GLubyte) || stride == 0);
|
||||
/* XXX GLchan: is this right for GLchan? */
|
||||
ASSERT(type == CHAN_TYPE);
|
||||
ASSERT(stride == 4 * sizeof(GLchan) || stride == 0);
|
||||
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
_math_trans_4ub( to->Ptr,
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
from->Type,
|
||||
from->Size,
|
||||
ac->start,
|
||||
ac->count);
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
from->Type,
|
||||
from->Size,
|
||||
ac->start,
|
||||
ac->count);
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
_math_trans_4us( to->Ptr,
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
from->Type,
|
||||
from->Size,
|
||||
ac->start,
|
||||
ac->count);
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
_math_trans_4f( to->Ptr,
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
from->Type,
|
||||
from->Size,
|
||||
ac->start,
|
||||
ac->count);
|
||||
#endif
|
||||
|
||||
to->Size = from->Size;
|
||||
to->StrideB = 4 * sizeof(GLubyte);
|
||||
to->Type = GL_UNSIGNED_BYTE;
|
||||
to->StrideB = 4 * sizeof(GLchan);
|
||||
to->Type = CHAN_TYPE;
|
||||
ac->Current.Color = to;
|
||||
ac->Writeable.Color = GL_TRUE;
|
||||
}
|
||||
|
|
@ -322,19 +342,37 @@ static void import_secondarycolor( GLcontext *ctx,
|
|||
|
||||
/* Limited choices at this stage:
|
||||
*/
|
||||
ASSERT(type == GL_UNSIGNED_BYTE);
|
||||
ASSERT(stride == 4*sizeof(GLubyte) || stride == 0);
|
||||
ASSERT(type == CHAN_TYPE);
|
||||
ASSERT(stride == 4 * sizeof(GLchan) || stride == 0);
|
||||
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
_math_trans_4ub( to->Ptr,
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
from->Type,
|
||||
from->Size,
|
||||
ac->start,
|
||||
ac->count);
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
from->Type,
|
||||
from->Size,
|
||||
ac->start,
|
||||
ac->count);
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
_math_trans_4us( to->Ptr,
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
from->Type,
|
||||
from->Size,
|
||||
ac->start,
|
||||
ac->count);
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
_math_trans_4f( to->Ptr,
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
from->Type,
|
||||
from->Size,
|
||||
ac->start,
|
||||
ac->count);
|
||||
#endif
|
||||
|
||||
to->StrideB = 4 * sizeof(GLubyte);
|
||||
to->Type = GL_UNSIGNED_BYTE;
|
||||
to->StrideB = 4 * sizeof(GLchan);
|
||||
to->Type = CHAN_TYPE;
|
||||
ac->Current.SecondaryColor = to;
|
||||
ac->Writeable.SecondaryColor = GL_TRUE;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -97,17 +97,16 @@ static void gl_ggiSetColor(GLcontext *ctx, GLubyte red, GLubyte green,
|
|||
GGICTX->color = col;
|
||||
}
|
||||
|
||||
static void gl_ggiSetClearColor(GLcontext *ctx, GLubyte red, GLubyte green,
|
||||
GLubyte blue, GLubyte alpha)
|
||||
static void gl_ggiSetClearColor(GLcontext *ctx, const GLchan color[4])
|
||||
{
|
||||
ggi_color rgb;
|
||||
ggi_pixel col;
|
||||
|
||||
GGIMESADPRINT_CORE("gl_ggiSetClearColor() called\n");
|
||||
|
||||
rgb.r = (uint16)red << SHIFT;
|
||||
rgb.g = (uint16)green << SHIFT;
|
||||
rgb.b = (uint16)blue << SHIFT;
|
||||
rgb.r = (uint16)color[0] << SHIFT;
|
||||
rgb.g = (uint16)color[1] << SHIFT;
|
||||
rgb.b = (uint16)color[2] << SHIFT;
|
||||
col = ggiMapColor(VIS, &rgb);
|
||||
ggiSetGCForeground(VIS, col);
|
||||
GGICTX->clearcolor = col;
|
||||
|
|
|
|||
|
|
@ -128,22 +128,19 @@ static void fxDDBufferSize(GLcontext *ctx, GLuint *width, GLuint *height)
|
|||
|
||||
|
||||
/* Implements glClearColor() */
|
||||
static void fxDDClearColor(GLcontext *ctx, GLubyte red, GLubyte green,
|
||||
GLubyte blue, GLubyte alpha )
|
||||
static void fxDDClearColor(GLcontext *ctx, const GLchan color[4])
|
||||
{
|
||||
fxMesaContext fxMesa=(fxMesaContext)ctx->DriverCtx;
|
||||
GLubyte col[4];
|
||||
|
||||
|
||||
|
||||
ASSIGN_4V( col, red, green, blue, 255 );
|
||||
|
||||
if (MESA_VERBOSE&VERBOSE_DRIVER) {
|
||||
fprintf(stderr,"fxmesa: fxDDClearColor(%d,%d,%d,%d)\n",red,green,blue,alpha);
|
||||
fprintf(stderr,"fxmesa: fxDDClearColor(%d,%d,%d,%d)\n",
|
||||
color[0], color[1], color[2], color[3]);
|
||||
}
|
||||
|
||||
fxMesa->clearC=FXCOLOR4( col );
|
||||
fxMesa->clearA=alpha;
|
||||
ASSIGN_4V( col, color[0], color[1], color[2], 255 );
|
||||
fxMesa->clearC = FXCOLOR4( col );
|
||||
fxMesa->clearA = color[3];
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: svgamesa15.c,v 1.7 2000/11/14 17:40:14 brianp Exp $ */
|
||||
/* $Id: svgamesa15.c,v 1.8 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -54,11 +54,9 @@ static unsigned long __svga_getpixel15(int x, int y)
|
|||
return shortBuffer[offset];
|
||||
}
|
||||
|
||||
void __clear_color15( GLcontext *ctx,
|
||||
GLubyte red, GLubyte green,
|
||||
GLubyte blue, GLubyte alpha )
|
||||
void __clear_color15( GLcontext *ctx, const GLchan color[4] )
|
||||
{
|
||||
SVGAMesa->clear_hicolor=(red>>3)<<10 | (green>>3)<<5 | (blue>>3);
|
||||
SVGAMesa->clear_hicolor=(color[0]>>3)<<10 | (color[1]>>3)<<5 | (color[2]>>3);
|
||||
/* SVGAMesa->clear_hicolor=(red)<<10 | (green)<<5 | (blue);*/
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: svgamesa15.h,v 1.4 2000/11/14 17:40:14 brianp Exp $ */
|
||||
/* $Id: svgamesa15.h,v 1.5 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
#ifndef SVGA_MESA_15_H
|
||||
#define SVGA_MESA_15_H
|
||||
|
||||
extern void __clear_color15( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
|
||||
extern void __clear_color15( GLcontext *ctx, const GLchan color[4] );
|
||||
extern GLbitfield __clear15( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
|
||||
extern void __write_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
|
||||
extern void __write_mono_rgba_span15( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLchan color[4], const GLubyte mask[]);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: svgamesa16.c,v 1.7 2000/11/14 17:40:14 brianp Exp $ */
|
||||
/* $Id: svgamesa16.c,v 1.8 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -56,11 +56,11 @@ static unsigned long __svga_getpixel16(int x, int y)
|
|||
return shortBuffer[offset];
|
||||
}
|
||||
|
||||
void __clear_color16( GLcontext *ctx,
|
||||
GLubyte red, GLubyte green,
|
||||
GLubyte blue, GLubyte alpha )
|
||||
void __clear_color16( GLcontext *ctx, const GLchan color[4] )
|
||||
{
|
||||
SVGAMesa->clear_hicolor=(red>>3)<<11 | (green>>2)<<5 | (blue>>3);
|
||||
SVGAMesa->clear_hicolor = (color[0] >> 3) << 11 |
|
||||
(color[1] >> 2) << 5 |
|
||||
(color[2] >> 3);
|
||||
/* SVGAMesa->clear_hicolor=(red)<<11 | (green)<<5 | (blue); */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: svgamesa16.h,v 1.3 2000/11/14 17:40:14 brianp Exp $ */
|
||||
/* $Id: svgamesa16.h,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
#ifndef SVGA_MESA_16_H
|
||||
#define SVGA_MESA_16_H
|
||||
|
||||
extern void __clear_color16( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
|
||||
extern void __clear_color16( GLcontext *ctx, const GLchan color[4] );
|
||||
extern GLbitfield __clear16( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
|
||||
extern void __write_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
|
||||
extern void __write_mono_rgba_span16( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLchan color[4], const GLubyte mask[]);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: svgamesa24.c,v 1.8 2000/11/14 17:40:14 brianp Exp $ */
|
||||
/* $Id: svgamesa24.c,v 1.9 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -78,13 +78,11 @@ static unsigned long __svga_getpixel24(int x, int y)
|
|||
return rgbBuffer[offset].r<<16 | rgbBuffer[offset].g<<8 | rgbBuffer[offset].b;
|
||||
}
|
||||
|
||||
void __clear_color24( GLcontext *ctx,
|
||||
GLubyte red, GLubyte green,
|
||||
GLubyte blue, GLubyte alpha )
|
||||
void __clear_color24( GLcontext *ctx, const GLchan color[4] )
|
||||
{
|
||||
SVGAMesa->clear_red = red;
|
||||
SVGAMesa->clear_green = green;
|
||||
SVGAMesa->clear_blue = blue;
|
||||
SVGAMesa->clear_red = color[0];
|
||||
SVGAMesa->clear_green = color[1];
|
||||
SVGAMesa->clear_blue = color[2];
|
||||
/* SVGAMesa->clear_truecolor = red<<16 | green<<8 | blue; */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: svgamesa24.h,v 1.3 2000/11/14 17:40:14 brianp Exp $ */
|
||||
/* $Id: svgamesa24.h,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
#ifndef SVGA_MESA_24_H
|
||||
#define SVGA_MESA_24_H
|
||||
|
||||
extern void __clear_color24( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
|
||||
extern void __clear_color24( GLcontext *ctx, const GLchan color[4] );
|
||||
extern GLbitfield __clear24( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
|
||||
extern void __write_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
|
||||
extern void __write_mono_rgba_span24( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLchan color[4], const GLubyte mask[]);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: svgamesa32.c,v 1.8 2000/11/14 17:40:14 brianp Exp $ */
|
||||
/* $Id: svgamesa32.c,v 1.9 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -74,11 +74,9 @@ static unsigned long __svga_getpixel32(int x, int y)
|
|||
return intBuffer[offset];
|
||||
}
|
||||
|
||||
void __clear_color32( GLcontext *ctx,
|
||||
GLubyte red, GLubyte green,
|
||||
GLubyte blue, GLubyte alpha )
|
||||
void __clear_color32( GLcontext *ctx, const GLchan color[4] )
|
||||
{
|
||||
SVGAMesa->clear_truecolor = red<<16 | green<<8 | blue;
|
||||
SVGAMesa->clear_truecolor = (color[0] << 16) | (color[1] << 8) | color[2];
|
||||
}
|
||||
|
||||
GLbitfield __clear32( GLcontext *ctx, GLbitfield mask, GLboolean all,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: svgamesa32.h,v 1.3 2000/11/14 17:40:14 brianp Exp $ */
|
||||
/* $Id: svgamesa32.h,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
#ifndef SVGA_MESA_32_H
|
||||
#define SVGA_MESA_32_H
|
||||
|
||||
extern void __clear_color32( GLcontext *ctx, GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
|
||||
extern void __clear_color32( GLcontext *ctx, const GLchan color[4] );
|
||||
extern GLbitfield __clear32( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
|
||||
extern void __write_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
|
||||
extern void __write_mono_rgba_span32( const GLcontext *ctx, GLuint n, GLint x, GLint y, const GLchan color[4], const GLubyte mask[]);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: wmesa.c,v 1.12 2000/11/17 21:01:47 brianp Exp $ */
|
||||
/* $Id: wmesa.c,v 1.13 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Windows (Win32) device driver for Mesa 3.4
|
||||
|
|
@ -366,10 +366,10 @@ static void clear_index(GLcontext* ctx, GLuint index)
|
|||
/*
|
||||
* Set the color used to clear the color buffer.
|
||||
*/
|
||||
static void clear_color( GLcontext* ctx, GLubyte r, GLubyte g, GLubyte b, GLubyte a )
|
||||
static void clear_color( GLcontext* ctx, const GLchan color[4] )
|
||||
{
|
||||
STARTPROFILE
|
||||
Current->clearpixel=RGB(r, g, b );
|
||||
Current->clearpixel = RGB(color[0], color[1], color[2]);
|
||||
ENDPROFILE(clear_color)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -152,10 +152,10 @@ static void clear_index(GLcontext* ctx, GLuint index)
|
|||
/*
|
||||
* Set the color used to clear the color buffer.
|
||||
*/
|
||||
static void clear_color( GLcontext* ctx, GLubyte r, GLubyte g, GLubyte b, GLubyte a )
|
||||
static void clear_color( GLcontext* ctx, const GLchan color[4] )
|
||||
{
|
||||
STARTPROFILE
|
||||
Current->clearpixel=RGB(r, g, b );
|
||||
Current->clearpixel = RGB(color[0], color[1], color[2]);
|
||||
ENDPROFILE(clear_color)
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: xm_dd.c,v 1.10 2001/01/16 05:29:43 keithw Exp $ */
|
||||
/* $Id: xm_dd.c,v 1.11 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -229,14 +229,15 @@ clear_index( GLcontext *ctx, GLuint index )
|
|||
|
||||
|
||||
static void
|
||||
clear_color( GLcontext *ctx, GLubyte r, GLubyte g, GLubyte b, GLubyte a )
|
||||
clear_color( GLcontext *ctx, const GLchan color[4] )
|
||||
{
|
||||
const XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
|
||||
xmesa->clearcolor[0] = r;
|
||||
xmesa->clearcolor[1] = g;
|
||||
xmesa->clearcolor[2] = b;
|
||||
xmesa->clearcolor[3] = a;
|
||||
xmesa->clearpixel = xmesa_color_to_pixel( xmesa, r, g, b, a,
|
||||
xmesa->clearcolor[0] = color[0];
|
||||
xmesa->clearcolor[1] = color[1];
|
||||
xmesa->clearcolor[2] = color[2];
|
||||
xmesa->clearcolor[3] = color[3];
|
||||
xmesa->clearpixel = xmesa_color_to_pixel( xmesa, color[0], color[1],
|
||||
color[2], color[3],
|
||||
xmesa->xm_visual->undithered_pf );
|
||||
_glthread_LOCK_MUTEX(_xmesa_lock);
|
||||
XMesaSetForeground( xmesa->display, xmesa->xm_buffer->cleargc,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: xm_span.c,v 1.5 2001/01/08 04:06:20 keithw Exp $ */
|
||||
/* $Id: xm_span.c,v 1.6 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -4152,17 +4152,14 @@ static void read_color_pixels( const GLcontext *ctx,
|
|||
|
||||
|
||||
static void
|
||||
clear_color_HPCR_ximage( GLcontext *ctx,
|
||||
GLubyte r, GLubyte g, GLubyte b, GLubyte a )
|
||||
clear_color_HPCR_ximage( GLcontext *ctx, const GLchan color[4] )
|
||||
{
|
||||
int i;
|
||||
const XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
|
||||
xmesa->clearcolor[0] = r;
|
||||
xmesa->clearcolor[1] = g;
|
||||
xmesa->clearcolor[2] = b;
|
||||
xmesa->clearcolor[3] = a;
|
||||
|
||||
if (r == 0 && g == 0 && b == 0) {
|
||||
COPY_4V(xmesa->clearcolor, color);
|
||||
|
||||
if (color[0] == 0 && color[1] == 0 && color[2] == 0) {
|
||||
/* black is black */
|
||||
MEMSET( xmesa->xm_visual->hpcr_clear_ximage_pattern, 0x0 ,
|
||||
sizeof(xmesa->xm_visual->hpcr_clear_ximage_pattern));
|
||||
|
|
@ -4171,27 +4168,23 @@ clear_color_HPCR_ximage( GLcontext *ctx,
|
|||
/* build clear pattern */
|
||||
for (i=0; i<16; i++) {
|
||||
xmesa->xm_visual->hpcr_clear_ximage_pattern[0][i] =
|
||||
DITHER_HPCR(i, 0, r, g, b);
|
||||
DITHER_HPCR(i, 0, color[0], color[1], color[2]);
|
||||
xmesa->xm_visual->hpcr_clear_ximage_pattern[1][i] =
|
||||
DITHER_HPCR(i, 1, r, g, b);
|
||||
DITHER_HPCR(i, 1, color[0], color[1], color[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
clear_color_HPCR_pixmap( GLcontext *ctx,
|
||||
GLubyte r, GLubyte g, GLubyte b, GLubyte a )
|
||||
clear_color_HPCR_pixmap( GLcontext *ctx, const GLchan color[4] )
|
||||
{
|
||||
int i;
|
||||
const XMesaContext xmesa = (XMesaContext) ctx->DriverCtx;
|
||||
xmesa->clearcolor[0] = r;
|
||||
xmesa->clearcolor[1] = g;
|
||||
xmesa->clearcolor[2] = b;
|
||||
xmesa->clearcolor[3] = a;
|
||||
|
||||
COPY_4V(xmesa->clearcolor, color);
|
||||
|
||||
if (0x0==r && 0x0==g && 0x0==b) {
|
||||
if (color[0] == 0 && color[1] == 0 && color[2] == 0) {
|
||||
/* black is black */
|
||||
for (i=0; i<16; i++) {
|
||||
XMesaPutPixel(xmesa->xm_visual->hpcr_clear_ximage, i, 0, 0);
|
||||
|
|
@ -4200,8 +4193,10 @@ clear_color_HPCR_pixmap( GLcontext *ctx,
|
|||
}
|
||||
else {
|
||||
for (i=0; i<16; i++) {
|
||||
XMesaPutPixel(xmesa->xm_visual->hpcr_clear_ximage, i, 0, DITHER_HPCR(i, 0, r, g, b));
|
||||
XMesaPutPixel(xmesa->xm_visual->hpcr_clear_ximage, i, 1, DITHER_HPCR(i, 1, r, g, b));
|
||||
XMesaPutPixel(xmesa->xm_visual->hpcr_clear_ximage, i, 0,
|
||||
DITHER_HPCR(i, 0, color[0], color[1], color[2]));
|
||||
XMesaPutPixel(xmesa->xm_visual->hpcr_clear_ximage, i, 1,
|
||||
DITHER_HPCR(i, 1, color[0], color[1], color[2]));
|
||||
}
|
||||
}
|
||||
/* change tile pixmap content */
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
# $Id: Makefile.X11,v 1.39 2001/01/08 21:55:59 keithw Exp $
|
||||
# $Id: Makefile.X11,v 1.40 2001/01/24 00:04:58 brianp Exp $
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 3.5
|
||||
|
|
@ -86,6 +86,35 @@ CORE_SOURCES = \
|
|||
X86/common_x86.c \
|
||||
X86/3dnow.c \
|
||||
X86/katmai.c \
|
||||
swrast/s_aaline.c \
|
||||
swrast/s_aatriangle.c \
|
||||
swrast/s_accum.c \
|
||||
swrast/s_alpha.c \
|
||||
swrast/s_alphabuf.c \
|
||||
swrast/s_bitmap.c \
|
||||
swrast/s_blend.c \
|
||||
swrast/s_buffers.c \
|
||||
swrast/s_copypix.c \
|
||||
swrast/s_context.c \
|
||||
swrast/s_depth.c \
|
||||
swrast/s_drawpix.c \
|
||||
swrast/s_feedback.c \
|
||||
swrast/s_fog.c \
|
||||
swrast/s_histogram.c \
|
||||
swrast/s_lines.c \
|
||||
swrast/s_logic.c \
|
||||
swrast/s_masking.c \
|
||||
swrast/s_pb.c \
|
||||
swrast/s_pixeltex.c \
|
||||
swrast/s_points.c \
|
||||
swrast/s_quads.c \
|
||||
swrast/s_readpix.c \
|
||||
swrast/s_scissor.c \
|
||||
swrast/s_span.c \
|
||||
swrast/s_stencil.c \
|
||||
swrast/s_texture.c \
|
||||
swrast/s_triangle.c \
|
||||
swrast/s_zoom.c \
|
||||
swrast_setup/ss_context.c \
|
||||
swrast_setup/ss_triangle.c \
|
||||
swrast_setup/ss_vb.c \
|
||||
|
|
@ -119,36 +148,7 @@ CORE_SOURCES = \
|
|||
tnl/t_vb_render.c \
|
||||
tnl/t_vb_texgen.c \
|
||||
tnl/t_vb_texmat.c \
|
||||
tnl/t_vb_vertex.c \
|
||||
swrast/s_aaline.c \
|
||||
swrast/s_aatriangle.c \
|
||||
swrast/s_accum.c \
|
||||
swrast/s_alpha.c \
|
||||
swrast/s_alphabuf.c \
|
||||
swrast/s_bitmap.c \
|
||||
swrast/s_blend.c \
|
||||
swrast/s_buffers.c \
|
||||
swrast/s_copypix.c \
|
||||
swrast/s_context.c \
|
||||
swrast/s_depth.c \
|
||||
swrast/s_drawpix.c \
|
||||
swrast/s_feedback.c \
|
||||
swrast/s_fog.c \
|
||||
swrast/s_histogram.c \
|
||||
swrast/s_lines.c \
|
||||
swrast/s_logic.c \
|
||||
swrast/s_masking.c \
|
||||
swrast/s_pb.c \
|
||||
swrast/s_pixeltex.c \
|
||||
swrast/s_points.c \
|
||||
swrast/s_quads.c \
|
||||
swrast/s_readpix.c \
|
||||
swrast/s_scissor.c \
|
||||
swrast/s_span.c \
|
||||
swrast/s_stencil.c \
|
||||
swrast/s_texture.c \
|
||||
swrast/s_triangle.c \
|
||||
swrast/s_zoom.c
|
||||
tnl/t_vb_vertex.c
|
||||
|
||||
|
||||
DRIVER_SOURCES = \
|
||||
|
|
@ -188,8 +188,8 @@ ASM_SOURCES =
|
|||
ADDITIONAL_OBJ =
|
||||
|
||||
OBJECTS = $(ASM_SOURCES:.S=.o) \
|
||||
$(DRIVER_SOURCES:.c=.o) \
|
||||
$(CORE_SOURCES:.c=.o) \
|
||||
$(DRIVER_SOURCES:.c=.o) \
|
||||
$(ADDITIONAL_OBJ)
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,30 @@
|
|||
/* $Id: api_noop.c,v 1.4 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.5
|
||||
*
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
|
||||
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
|
||||
#include "glheader.h"
|
||||
#include "api_noop.h"
|
||||
#include "api_validate.h"
|
||||
|
|
@ -133,34 +160,41 @@ void _mesa_noop_Materialfv( GLenum face, GLenum pname, const GLfloat *params )
|
|||
void _mesa_noop_Color4ub( GLubyte a, GLubyte b, GLubyte c, GLubyte d )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.Color;
|
||||
color[0] = a;
|
||||
color[1] = b;
|
||||
color[2] = c;
|
||||
color[3] = d;
|
||||
GLchan *color = ctx->Current.Color;
|
||||
color[0] = UBYTE_TO_CHAN(a);
|
||||
color[1] = UBYTE_TO_CHAN(b);
|
||||
color[2] = UBYTE_TO_CHAN(c);
|
||||
color[3] = UBYTE_TO_CHAN(d);
|
||||
}
|
||||
|
||||
void _mesa_noop_Color4ubv( const GLubyte *v )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.Color;
|
||||
GLchan *color = ctx->Current.Color;
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
COPY_4UBV( color, v );
|
||||
#else
|
||||
color[0] = UBYTE_TO_CHAN(v[0]);
|
||||
color[1] = UBYTE_TO_CHAN(v[1]);
|
||||
color[2] = UBYTE_TO_CHAN(v[2]);
|
||||
color[3] = UBYTE_TO_CHAN(v[3]);
|
||||
#endif
|
||||
}
|
||||
|
||||
void _mesa_noop_Color4f( GLfloat a, GLfloat b, GLfloat c, GLfloat d )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.Color;
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[0], a);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[1], b);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[2], c);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[3], d);
|
||||
GLchan *color = ctx->Current.Color;
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[0], a);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[1], b);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[2], c);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[3], d);
|
||||
}
|
||||
|
||||
void _mesa_noop_Color4fv( const GLfloat *v )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.Color;
|
||||
GLchan *color = ctx->Current.Color;
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[0], v[0]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[1], v[1]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[2], v[2]);
|
||||
|
|
@ -169,41 +203,41 @@ void _mesa_noop_Color4fv( const GLfloat *v )
|
|||
void _mesa_noop_Color3ub( GLubyte a, GLubyte b, GLubyte c )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.Color;
|
||||
color[0] = a;
|
||||
color[1] = b;
|
||||
color[2] = c;
|
||||
color[3] = 255;
|
||||
GLchan *color = ctx->Current.Color;
|
||||
color[0] = UBYTE_TO_CHAN(a);
|
||||
color[1] = UBYTE_TO_CHAN(b);
|
||||
color[2] = UBYTE_TO_CHAN(c);
|
||||
color[3] = CHAN_MAX;
|
||||
}
|
||||
|
||||
void _mesa_noop_Color3ubv( const GLubyte *v )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.Color;
|
||||
color[0] = v[0];
|
||||
color[1] = v[1];
|
||||
color[2] = v[2];
|
||||
color[3] = 255;
|
||||
GLchan *color = ctx->Current.Color;
|
||||
color[0] = UBYTE_TO_CHAN(v[0]);
|
||||
color[1] = UBYTE_TO_CHAN(v[1]);
|
||||
color[2] = UBYTE_TO_CHAN(v[2]);
|
||||
color[3] = CHAN_MAX;
|
||||
}
|
||||
|
||||
void _mesa_noop_Color3f( GLfloat a, GLfloat b, GLfloat c )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.Color;
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[0], a);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[1], b);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[2], c);
|
||||
color[3] = 255;
|
||||
GLchan *color = ctx->Current.Color;
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[0], a);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[1], b);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[2], c);
|
||||
color[3] = CHAN_MAX;
|
||||
}
|
||||
|
||||
void _mesa_noop_Color3fv( const GLfloat *v )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.Color;
|
||||
GLchan *color = ctx->Current.Color;
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[0], v[0]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[1], v[1]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[2], v[2]);
|
||||
color[3] = 255;
|
||||
color[3] = CHAN_MAX;
|
||||
}
|
||||
|
||||
void _mesa_noop_MultiTexCoord1fARB( GLenum target, GLfloat a )
|
||||
|
|
@ -346,41 +380,41 @@ void _mesa_noop_MultiTexCoord4fvARB( GLenum target, GLfloat *v )
|
|||
void _mesa_noop_SecondaryColor3ubEXT( GLubyte a, GLubyte b, GLubyte c )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.SecondaryColor;
|
||||
color[0] = a;
|
||||
color[1] = b;
|
||||
color[2] = c;
|
||||
color[3] = 255;
|
||||
GLchan *color = ctx->Current.SecondaryColor;
|
||||
color[0] = UBYTE_TO_CHAN(a);
|
||||
color[1] = UBYTE_TO_CHAN(b);
|
||||
color[2] = UBYTE_TO_CHAN(c);
|
||||
color[3] = CHAN_MAX;
|
||||
}
|
||||
|
||||
void _mesa_noop_SecondaryColor3ubvEXT( const GLubyte *v )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.SecondaryColor;
|
||||
color[0] = v[0];
|
||||
color[1] = v[1];
|
||||
color[2] = v[2];
|
||||
color[3] = 255;
|
||||
GLchan *color = ctx->Current.SecondaryColor;
|
||||
color[0] = UBYTE_TO_CHAN(v[0]);
|
||||
color[1] = UBYTE_TO_CHAN(v[1]);
|
||||
color[2] = UBYTE_TO_CHAN(v[2]);
|
||||
color[3] = CHAN_MAX;
|
||||
}
|
||||
|
||||
void _mesa_noop_SecondaryColor3fEXT( GLfloat a, GLfloat b, GLfloat c )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.SecondaryColor;
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[0], a);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[1], b);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(color[2], c);
|
||||
color[3] = 255;
|
||||
GLchan *color = ctx->Current.SecondaryColor;
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[0], a);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[1], b);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[2], c);
|
||||
color[3] = CHAN_MAX;
|
||||
}
|
||||
|
||||
void _mesa_noop_SecondaryColor3fvEXT( const GLfloat *v )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLubyte *color = ctx->Current.SecondaryColor;
|
||||
GLchan *color = ctx->Current.SecondaryColor;
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[0], v[0]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[1], v[1]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(color[2], v[2]);
|
||||
color[3] = 255;
|
||||
color[3] = CHAN_MAX;
|
||||
}
|
||||
|
||||
void _mesa_noop_TexCoord1f( GLfloat a )
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: attrib.c,v 1.40 2001/01/23 23:39:36 brianp Exp $ */
|
||||
/* $Id: attrib.c,v 1.41 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -589,11 +589,7 @@ _mesa_PopAttrib(void)
|
|||
ctx->Driver.LogicOpcode( ctx, ctx->Color.LogicOp );
|
||||
}
|
||||
if (ctx->Visual.rgbMode) {
|
||||
GLchan r = (GLint) (ctx->Color.ClearColor[0] * CHAN_MAXF);
|
||||
GLchan g = (GLint) (ctx->Color.ClearColor[1] * CHAN_MAXF);
|
||||
GLchan b = (GLint) (ctx->Color.ClearColor[2] * CHAN_MAXF);
|
||||
GLchan a = (GLint) (ctx->Color.ClearColor[3] * CHAN_MAXF);
|
||||
(*ctx->Driver.ClearColor)( ctx, r, g, b, a );
|
||||
(*ctx->Driver.ClearColor)(ctx, ctx->Color.ClearColor);
|
||||
if ((ctx->Color.AlphaFunc != oldAlphaFunc ||
|
||||
ctx->Color.AlphaRef != oldAlphaRef) &&
|
||||
ctx->Driver.AlphaFunc)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: buffers.c,v 1.23 2001/01/23 23:39:36 brianp Exp $ */
|
||||
/* $Id: buffers.c,v 1.24 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -31,6 +31,7 @@
|
|||
#include "glheader.h"
|
||||
#include "accum.h"
|
||||
#include "buffers.h"
|
||||
#include "colormac.h"
|
||||
#include "context.h"
|
||||
#include "depth.h"
|
||||
#include "enums.h"
|
||||
|
|
@ -51,14 +52,13 @@ _mesa_ClearIndex( GLfloat c )
|
|||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_BEGIN_END(ctx);
|
||||
|
||||
if (ctx->Color.ClearIndex == (GLuint)c)
|
||||
if (ctx->Color.ClearIndex == (GLuint) c)
|
||||
return;
|
||||
|
||||
|
||||
FLUSH_VERTICES(ctx, _NEW_COLOR);
|
||||
ctx->Color.ClearIndex = (GLuint) c;
|
||||
|
||||
if (!ctx->Visual.rgbMode) {
|
||||
if (!ctx->Visual.rgbMode && ctx->Driver.ClearIndex) {
|
||||
/* it's OK to call glClearIndex in RGBA mode but it should be a NOP */
|
||||
(*ctx->Driver.ClearIndex)( ctx, ctx->Color.ClearIndex );
|
||||
}
|
||||
|
|
@ -67,38 +67,31 @@ _mesa_ClearIndex( GLfloat c )
|
|||
|
||||
|
||||
void
|
||||
_mesa_ClearColor( GLclampf red, GLclampf green,
|
||||
GLclampf blue, GLclampf alpha )
|
||||
_mesa_ClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha )
|
||||
{
|
||||
GLfloat tmp[4];
|
||||
GLchan tmp[4];
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_BEGIN_END(ctx);
|
||||
|
||||
tmp[0] = CLAMP( red, 0.0, 1.0 );
|
||||
tmp[1] = CLAMP( green, 0.0, 1.0 );
|
||||
tmp[2] = CLAMP( blue, 0.0, 1.0 );
|
||||
tmp[3] = CLAMP( alpha, 0.0, 1.0 );
|
||||
UNCLAMPED_FLOAT_TO_CHAN(tmp[0], red);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(tmp[1], green);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(tmp[2], blue);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(tmp[3], alpha);
|
||||
|
||||
if (TEST_EQ_4V(tmp, ctx->Color.ClearColor))
|
||||
return;
|
||||
|
||||
FLUSH_VERTICES(ctx, _NEW_COLOR);
|
||||
COPY_4FV( ctx->Color.ClearColor, tmp );
|
||||
COPY_CHAN4(ctx->Color.ClearColor, tmp);
|
||||
|
||||
if (ctx->Visual.rgbMode) {
|
||||
GLchan r = (GLint) (ctx->Color.ClearColor[0] * CHAN_MAXF);
|
||||
GLchan g = (GLint) (ctx->Color.ClearColor[1] * CHAN_MAXF);
|
||||
GLchan b = (GLint) (ctx->Color.ClearColor[2] * CHAN_MAXF);
|
||||
GLchan a = (GLint) (ctx->Color.ClearColor[3] * CHAN_MAXF);
|
||||
(*ctx->Driver.ClearColor)( ctx, r, g, b, a );
|
||||
if (ctx->Visual.rgbMode && ctx->Driver.ClearColor) {
|
||||
/* it's OK to call glClearColor in CI mode but it should be a NOP */
|
||||
(*ctx->Driver.ClearColor)(ctx, ctx->Color.ClearColor);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void
|
||||
_mesa_Clear( GLbitfield mask )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: context.c,v 1.117 2001/01/23 23:39:36 brianp Exp $ */
|
||||
/* $Id: context.c,v 1.118 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -792,7 +792,7 @@ init_attrib_groups( GLcontext *ctx )
|
|||
ctx->Color.ColorMask[2] = 0xff;
|
||||
ctx->Color.ColorMask[3] = 0xff;
|
||||
ctx->Color.ClearIndex = 0;
|
||||
ASSIGN_4V( ctx->Color.ClearColor, 0.0, 0.0, 0.0, 0.0 );
|
||||
ASSIGN_4V( ctx->Color.ClearColor, 0, 0, 0, 0 );
|
||||
ctx->Color.DrawBuffer = GL_FRONT;
|
||||
ctx->Color.AlphaEnabled = GL_FALSE;
|
||||
ctx->Color.AlphaFunc = GL_ALWAYS;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: dd.h,v 1.47 2001/01/09 00:02:55 brianp Exp $ */
|
||||
/* $Id: dd.h,v 1.48 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -161,19 +161,6 @@ struct dd_function_table {
|
|||
* LineFunc, or TriangleFunc).
|
||||
*/
|
||||
|
||||
void (*ClearIndex)( GLcontext *ctx, GLuint index );
|
||||
/*
|
||||
* Called whenever glClearIndex() is called. Set the index for clearing
|
||||
* the color buffer when in color index mode.
|
||||
*/
|
||||
|
||||
void (*ClearColor)( GLcontext *ctx, GLchan red, GLchan green,
|
||||
GLchan blue, GLchan alpha );
|
||||
/*
|
||||
* Called whenever glClearColor() is called. Set the color for clearing
|
||||
* the color buffer when in RGBA mode.
|
||||
*/
|
||||
|
||||
GLbitfield (*Clear)( GLcontext *ctx, GLbitfield mask, GLboolean all,
|
||||
GLint x, GLint y, GLint width, GLint height );
|
||||
/* Clear the color/depth/stencil/accum buffer(s).
|
||||
|
|
@ -754,7 +741,9 @@ struct dd_function_table {
|
|||
void (*BlendFuncSeparate)(GLcontext *ctx,
|
||||
GLenum sfactorRGB, GLenum dfactorRGB,
|
||||
GLenum sfactorA, GLenum dfactorA);
|
||||
void (*ClearColor)(GLcontext *ctx, const GLchan color[4]);
|
||||
void (*ClearDepth)(GLcontext *ctx, GLclampd d);
|
||||
void (*ClearIndex)(GLcontext *ctx, GLuint index);
|
||||
void (*ClearStencil)(GLcontext *ctx, GLint s);
|
||||
void (*ColorMask)(GLcontext *ctx, GLboolean rmask, GLboolean gmask,
|
||||
GLboolean bmask, GLboolean amask );
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: get.c,v 1.50 2001/01/23 23:39:36 brianp Exp $ */
|
||||
/* $Id: get.c,v 1.51 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -200,10 +200,10 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
*params = ctx->Transform.ClipEnabled[pname-GL_CLIP_PLANE0];
|
||||
break;
|
||||
case GL_COLOR_CLEAR_VALUE:
|
||||
params[0] = FLOAT_TO_BOOL(ctx->Color.ClearColor[0]);
|
||||
params[1] = FLOAT_TO_BOOL(ctx->Color.ClearColor[1]);
|
||||
params[2] = FLOAT_TO_BOOL(ctx->Color.ClearColor[2]);
|
||||
params[3] = FLOAT_TO_BOOL(ctx->Color.ClearColor[3]);
|
||||
params[0] = ctx->Color.ClearColor[0] ? GL_TRUE : GL_FALSE;
|
||||
params[1] = ctx->Color.ClearColor[1] ? GL_TRUE : GL_FALSE;
|
||||
params[2] = ctx->Color.ClearColor[2] ? GL_TRUE : GL_FALSE;
|
||||
params[3] = ctx->Color.ClearColor[3] ? GL_TRUE : GL_FALSE;
|
||||
break;
|
||||
case GL_COLOR_MATERIAL:
|
||||
*params = ctx->Light.ColorMaterialEnabled;
|
||||
|
|
@ -1438,10 +1438,10 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
*params = (GLdouble) ctx->Transform.ClipEnabled[pname-GL_CLIP_PLANE0];
|
||||
break;
|
||||
case GL_COLOR_CLEAR_VALUE:
|
||||
params[0] = (GLdouble) ctx->Color.ClearColor[0];
|
||||
params[1] = (GLdouble) ctx->Color.ClearColor[1];
|
||||
params[2] = (GLdouble) ctx->Color.ClearColor[2];
|
||||
params[3] = (GLdouble) ctx->Color.ClearColor[3];
|
||||
params[0] = (GLdouble) CHAN_TO_FLOAT(ctx->Color.ClearColor[0]);
|
||||
params[1] = (GLdouble) CHAN_TO_FLOAT(ctx->Color.ClearColor[1]);
|
||||
params[2] = (GLdouble) CHAN_TO_FLOAT(ctx->Color.ClearColor[2]);
|
||||
params[3] = (GLdouble) CHAN_TO_FLOAT(ctx->Color.ClearColor[3]);
|
||||
break;
|
||||
case GL_COLOR_MATERIAL:
|
||||
*params = (GLdouble) ctx->Light.ColorMaterialEnabled;
|
||||
|
|
@ -2676,10 +2676,10 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
|
|||
*params = (GLfloat) ctx->Transform.ClipEnabled[pname-GL_CLIP_PLANE0];
|
||||
break;
|
||||
case GL_COLOR_CLEAR_VALUE:
|
||||
params[0] = (GLfloat) ctx->Color.ClearColor[0];
|
||||
params[1] = (GLfloat) ctx->Color.ClearColor[1];
|
||||
params[2] = (GLfloat) ctx->Color.ClearColor[2];
|
||||
params[3] = (GLfloat) ctx->Color.ClearColor[3];
|
||||
params[0] = CHAN_TO_FLOAT(ctx->Color.ClearColor[0]);
|
||||
params[1] = CHAN_TO_FLOAT(ctx->Color.ClearColor[1]);
|
||||
params[2] = CHAN_TO_FLOAT(ctx->Color.ClearColor[2]);
|
||||
params[3] = CHAN_TO_FLOAT(ctx->Color.ClearColor[3]);
|
||||
break;
|
||||
case GL_COLOR_MATERIAL:
|
||||
*params = (GLfloat) ctx->Light.ColorMaterialEnabled;
|
||||
|
|
@ -3890,10 +3890,10 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
*params = (GLint) ctx->Transform.ClipEnabled[i];
|
||||
break;
|
||||
case GL_COLOR_CLEAR_VALUE:
|
||||
params[0] = FLOAT_TO_INT( ctx->Color.ClearColor[0] );
|
||||
params[1] = FLOAT_TO_INT( ctx->Color.ClearColor[1] );
|
||||
params[2] = FLOAT_TO_INT( ctx->Color.ClearColor[2] );
|
||||
params[3] = FLOAT_TO_INT( ctx->Color.ClearColor[3] );
|
||||
params[0] = FLOAT_TO_INT( CHAN_TO_FLOAT(ctx->Color.ClearColor[0]) );
|
||||
params[1] = FLOAT_TO_INT( CHAN_TO_FLOAT(ctx->Color.ClearColor[1]) );
|
||||
params[2] = FLOAT_TO_INT( CHAN_TO_FLOAT(ctx->Color.ClearColor[2]) );
|
||||
params[3] = FLOAT_TO_INT( CHAN_TO_FLOAT(ctx->Color.ClearColor[3]) );
|
||||
break;
|
||||
case GL_COLOR_MATERIAL:
|
||||
*params = (GLint) ctx->Light.ColorMaterialEnabled;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: macros.h,v 1.17 2001/01/08 04:09:41 keithw Exp $ */
|
||||
/* $Id: macros.h,v 1.18 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -73,6 +73,7 @@
|
|||
#define STRIDE_F(p, i) (p = (GLfloat *)((GLubyte *)p + i))
|
||||
#define STRIDE_UI(p, i) (p = (GLuint *)((GLubyte *)p + i))
|
||||
#define STRIDE_4UB(p, i) (p = (GLubyte (*)[4])((GLubyte *)p + i))
|
||||
#define STRIDE_4CHAN(p, i) (p = (GLchan (*)[4])((GLchan *)p + i))
|
||||
#define STRIDE_T(p, t, i) (p = (t)((GLubyte *)p + i))
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: mtypes.h,v 1.14 2001/01/23 23:39:36 brianp Exp $ */
|
||||
/* $Id: mtypes.h,v 1.15 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -265,7 +265,7 @@ struct gl_accum_attrib {
|
|||
|
||||
struct gl_colorbuffer_attrib {
|
||||
GLuint ClearIndex; /* Index to use for glClear */
|
||||
GLfloat ClearColor[4]; /* Color to use for glClear */
|
||||
GLchan ClearColor[4]; /* Color to use for glClear */
|
||||
|
||||
GLuint IndexMask; /* Color index write mask */
|
||||
GLubyte ColorMask[4]; /* Each flag is 0xff or 0x0 */
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texstate.c,v 1.27 2001/01/06 22:46:13 gareth Exp $ */
|
||||
/* $Id: texstate.c,v 1.28 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -743,10 +743,10 @@ _mesa_TexParameterfv( GLenum target, GLenum pname, const GLfloat *params )
|
|||
}
|
||||
break;
|
||||
case GL_TEXTURE_BORDER_COLOR:
|
||||
texObj->BorderColor[0] = (GLchan) CLAMP((GLint)(params[0]*CHAN_MAXF), 0, CHAN_MAX);
|
||||
texObj->BorderColor[1] = (GLchan) CLAMP((GLint)(params[1]*CHAN_MAXF), 0, CHAN_MAX);
|
||||
texObj->BorderColor[2] = (GLchan) CLAMP((GLint)(params[2]*CHAN_MAXF), 0, CHAN_MAX);
|
||||
texObj->BorderColor[3] = (GLchan) CLAMP((GLint)(params[3]*CHAN_MAXF), 0, CHAN_MAX);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(texObj->BorderColor[0], params[0]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(texObj->BorderColor[1], params[1]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(texObj->BorderColor[2], params[2]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(texObj->BorderColor[3], params[3]);
|
||||
break;
|
||||
case GL_TEXTURE_MIN_LOD:
|
||||
texObj->MinLod = params[0];
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texutil.h,v 1.6 2000/11/22 07:32:17 joukj Exp $ */
|
||||
/* $Id: texutil.h,v 1.7 2001/01/24 00:04:58 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -81,7 +81,7 @@ _mesa_unconvert_teximage(MesaIntTexFormat srcFormat,
|
|||
GLint srcWidth, GLint srcHeight,
|
||||
const GLvoid *srcImage, GLint srcRowStride,
|
||||
GLint dstWidth, GLint dstHeight,
|
||||
GLenum dstFormat, GLchan *dstImage);
|
||||
GLenum dstFormat, GLubyte *dstImage);
|
||||
|
||||
|
||||
extern void
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* $Id: m_trans_tmp.h,v 1.2 2001/01/02 22:02:52 brianp Exp $ */
|
||||
/* $Id: m_trans_tmp.h,v 1.3 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.5
|
||||
*
|
||||
* Copyright (C) 1999 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -104,9 +104,9 @@ static void DEST_1F( GLfloat *t,
|
|||
|
||||
#ifdef DEST_4UB
|
||||
static void DEST_4UB( GLubyte (*t)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
ARGS)
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
ARGS)
|
||||
{
|
||||
const GLubyte *f = (GLubyte *) ptr + SRC_START * stride;
|
||||
const GLubyte *first = f;
|
||||
|
|
@ -126,6 +126,30 @@ static void DEST_4UB( GLubyte (*t)[4],
|
|||
#endif
|
||||
|
||||
|
||||
#ifdef DEST_4US
|
||||
static void DEST_4US( GLushort (*t)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
ARGS)
|
||||
{
|
||||
const GLushort *f = (GLushort *) ptr + SRC_START * stride;
|
||||
const GLushort *first = f;
|
||||
GLuint i;
|
||||
(void) start;
|
||||
(void) first;
|
||||
for (i = DST_START ; i < n ; i++, NEXT_F) {
|
||||
CHECK {
|
||||
NEXT_F2;
|
||||
if (SZ >= 1) TRX_US(t[i][0], f, 0);
|
||||
if (SZ >= 2) TRX_US(t[i][1], f, 1);
|
||||
if (SZ >= 3) TRX_US(t[i][2], f, 2);
|
||||
if (SZ == 4) TRX_US(t[i][3], f, 3); else t[i][3] = 65535;
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef DEST_1UB
|
||||
static void DEST_1UB( GLubyte *t,
|
||||
CONST void *ptr,
|
||||
|
|
@ -190,6 +214,9 @@ static void INIT(void)
|
|||
#ifdef DEST_4UB
|
||||
TAB(_4ub)[SZ][SRC_IDX] = DEST_4UB;
|
||||
#endif
|
||||
#ifdef DEST_4US
|
||||
TAB(_4us)[SZ][SRC_IDX] = DEST_4US;
|
||||
#endif
|
||||
#ifdef DEST_4F
|
||||
TAB(_4f)[SZ][SRC_IDX] = DEST_4F;
|
||||
#endif
|
||||
|
|
@ -201,6 +228,7 @@ static void INIT(void)
|
|||
#undef DEST_1UI
|
||||
#undef DEST_1UB
|
||||
#undef DEST_4UB
|
||||
#undef DEST_4US
|
||||
#undef DEST_3F
|
||||
#undef DEST_4F
|
||||
#undef DEST_1F
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* $Id: m_translate.c,v 1.3 2001/01/02 22:02:52 brianp Exp $ */
|
||||
/* $Id: m_translate.c,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.3
|
||||
* Version: 3.5
|
||||
*
|
||||
* Copyright (C) 1999 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -57,10 +57,16 @@ typedef void (*trans_1ub_func)(GLubyte *to,
|
|||
GLuint n );
|
||||
|
||||
typedef void (*trans_4ub_func)(GLubyte (*to)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
GLuint start,
|
||||
GLuint n );
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
GLuint start,
|
||||
GLuint n );
|
||||
|
||||
typedef void (*trans_4us_func)(GLushort (*to)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
GLuint start,
|
||||
GLuint n );
|
||||
|
||||
typedef void (*trans_4f_func)(GLfloat (*to)[4],
|
||||
CONST void *ptr,
|
||||
|
|
@ -90,6 +96,7 @@ static trans_1ui_func _math_trans_1ui_tab[MAX_TYPES];
|
|||
static trans_1ub_func _math_trans_1ub_tab[MAX_TYPES];
|
||||
static trans_3f_func _math_trans_3f_tab[MAX_TYPES];
|
||||
static trans_4ub_func _math_trans_4ub_tab[5][MAX_TYPES];
|
||||
static trans_4us_func _math_trans_4us_tab[5][MAX_TYPES];
|
||||
static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
||||
|
||||
|
||||
|
|
@ -110,13 +117,12 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
|
||||
/* GL_BYTE
|
||||
*/
|
||||
#define BYTE_TO_UBYTE(b) (b < 0 ? 0 : (GLubyte) b)
|
||||
|
||||
#define SRC GLbyte
|
||||
#define SRC_IDX TYPE_IDX(GL_BYTE)
|
||||
#define TRX_3F(f,n) BYTE_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub, f,n) ub = BYTE_TO_UBYTE( PTR_ELT(f,n) )
|
||||
#define TRX_US(ch, f,n) ch = BYTE_TO_USHORT( PTR_ELT(f,n) )
|
||||
#define TRX_UI(f,n) (PTR_ELT(f,n) < 0 ? 0 : (GLuint) PTR_ELT(f,n))
|
||||
|
||||
|
||||
|
|
@ -124,12 +130,14 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLbyte_raw
|
||||
#define DEST_4F trans_4_GLbyte_4f_raw
|
||||
#define DEST_4UB trans_4_GLbyte_4ub_raw
|
||||
#define DEST_4US trans_4_GLbyte_4us_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLbyte_raw
|
||||
#define DEST_4F trans_3_GLbyte_4f_raw
|
||||
#define DEST_4UB trans_3_GLbyte_4ub_raw
|
||||
#define DEST_4US trans_3_GLbyte_4us_raw
|
||||
#define DEST_3F trans_3_GLbyte_3f_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
|
|
@ -149,9 +157,11 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
#undef SRC_IDX
|
||||
|
||||
|
||||
/* GL_UNSIGNED_BYTE
|
||||
*/
|
||||
#define SRC GLubyte
|
||||
|
|
@ -159,6 +169,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) /* unused */
|
||||
#define TRX_4F(f,n) /* unused */
|
||||
#define TRX_UB(ub, f,n) ub = PTR_ELT(f,n)
|
||||
#define TRX_US(us, f,n) us = UBYTE_TO_USHORT(PTR_ELT(f,n))
|
||||
#define TRX_UI(f,n) (GLuint)PTR_ELT(f,n)
|
||||
|
||||
/* 4ub->4ub handled in special case below.
|
||||
|
|
@ -167,6 +178,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define SZ 3
|
||||
#define INIT init_trans_3_GLubyte_raw
|
||||
#define DEST_4UB trans_3_GLubyte_4ub_raw
|
||||
#define DEST_4US trans_3_GLubyte_4us_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
|
||||
|
|
@ -181,6 +193,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -191,6 +204,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) SHORT_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub, f,n) ub = SHORT_TO_UBYTE(PTR_ELT(f,n))
|
||||
#define TRX_US(us, f,n) us = SHORT_TO_USHORT(PTR_ELT(f,n))
|
||||
#define TRX_UI(f,n) (PTR_ELT(f,n) < 0 ? 0 : (GLuint) PTR_ELT(f,n))
|
||||
|
||||
|
||||
|
|
@ -198,12 +212,14 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLshort_raw
|
||||
#define DEST_4F trans_4_GLshort_4f_raw
|
||||
#define DEST_4UB trans_4_GLshort_4ub_raw
|
||||
#define DEST_4US trans_4_GLshort_4us_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLshort_raw
|
||||
#define DEST_4F trans_3_GLshort_4f_raw
|
||||
#define DEST_4UB trans_3_GLshort_4ub_raw
|
||||
#define DEST_4US trans_3_GLshort_4us_raw
|
||||
#define DEST_3F trans_3_GLshort_3f_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
|
|
@ -225,6 +241,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -235,6 +252,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) USHORT_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub,f,n) ub = (GLubyte) (PTR_ELT(f,n) >> 8)
|
||||
#define TRX_US(us,f,n) us = (GLushort) (PTR_ELT(f,n) >> 8)
|
||||
#define TRX_UI(f,n) (GLuint) PTR_ELT(f,n)
|
||||
|
||||
|
||||
|
|
@ -242,12 +260,14 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLushort_raw
|
||||
#define DEST_4F trans_4_GLushort_4f_raw
|
||||
#define DEST_4UB trans_4_GLushort_4ub_raw
|
||||
#define DEST_4US trans_4_GLushort_4us_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLushort_raw
|
||||
#define DEST_4F trans_3_GLushort_4f_raw
|
||||
#define DEST_4UB trans_3_GLushort_4ub_raw
|
||||
#define DEST_4US trans_3_GLushort_4us_raw
|
||||
#define DEST_3F trans_3_GLushort_3f_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
|
|
@ -268,6 +288,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -278,6 +299,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) INT_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub, f,n) ub = INT_TO_UBYTE(PTR_ELT(f,n))
|
||||
#define TRX_US(us, f,n) us = INT_TO_USHORT(PTR_ELT(f,n))
|
||||
#define TRX_UI(f,n) (PTR_ELT(f,n) < 0 ? 0 : (GLuint) PTR_ELT(f,n))
|
||||
|
||||
|
||||
|
|
@ -285,12 +307,14 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLint_raw
|
||||
#define DEST_4F trans_4_GLint_4f_raw
|
||||
#define DEST_4UB trans_4_GLint_4ub_raw
|
||||
#define DEST_4US trans_4_GLint_4us_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLint_raw
|
||||
#define DEST_4F trans_3_GLint_4f_raw
|
||||
#define DEST_4UB trans_3_GLint_4ub_raw
|
||||
#define DEST_4US trans_3_GLint_4us_raw
|
||||
#define DEST_3F trans_3_GLint_3f_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
|
|
@ -312,6 +336,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -322,6 +347,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) INT_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub, f,n) ub = (GLubyte) (PTR_ELT(f,n) >> 24)
|
||||
#define TRX_US(us, f,n) us = (GLshort) (PTR_ELT(f,n) >> 16)
|
||||
#define TRX_UI(f,n) PTR_ELT(f,n)
|
||||
|
||||
|
||||
|
|
@ -329,12 +355,14 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLuint_raw
|
||||
#define DEST_4F trans_4_GLuint_4f_raw
|
||||
#define DEST_4UB trans_4_GLuint_4ub_raw
|
||||
#define DEST_4US trans_4_GLuint_4us_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLuint_raw
|
||||
#define DEST_4F trans_3_GLuint_4f_raw
|
||||
#define DEST_4UB trans_3_GLuint_4ub_raw
|
||||
#define DEST_4US trans_3_GLuint_4us_raw
|
||||
#define DEST_3F trans_3_GLuint_3f_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
|
|
@ -355,6 +383,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -364,7 +393,8 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define SRC_IDX TYPE_IDX(GL_DOUBLE)
|
||||
#define TRX_3F(f,n) PTR_ELT(f,n)
|
||||
#define TRX_4F(f,n) PTR_ELT(f,n)
|
||||
#define TRX_UB(ub,f,n) UNCLAMPED_FLOAT_TO_CHAN(ub, PTR_ELT(f,n))
|
||||
#define TRX_UB(ub,f,n) UNCLAMPED_FLOAT_TO_UBYTE(ub, PTR_ELT(f,n))
|
||||
#define TRX_US(us,f,n) UNCLAMPED_FLOAT_TO_USHORT(us, PTR_ELT(f,n))
|
||||
#define TRX_UI(f,n) (GLuint) (GLint) PTR_ELT(f,n)
|
||||
#define TRX_1F(f,n) PTR_ELT(f,n)
|
||||
|
||||
|
|
@ -373,12 +403,14 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLdouble_raw
|
||||
#define DEST_4F trans_4_GLdouble_4f_raw
|
||||
#define DEST_4UB trans_4_GLdouble_4ub_raw
|
||||
#define DEST_4US trans_4_GLdouble_4us_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLdouble_raw
|
||||
#define DEST_4F trans_3_GLdouble_4f_raw
|
||||
#define DEST_4UB trans_3_GLdouble_4ub_raw
|
||||
#define DEST_4US trans_3_GLdouble_4us_raw
|
||||
#define DEST_3F trans_3_GLdouble_3f_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
|
|
@ -405,6 +437,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define SZ 4
|
||||
#define INIT init_trans_4_GLfloat_raw
|
||||
#define DEST_4UB trans_4_GLfloat_4ub_raw
|
||||
#define DEST_4US trans_4_GLfloat_4us_raw
|
||||
#define DEST_4F trans_4_GLfloat_4f_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
|
|
@ -412,6 +445,7 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_3_GLfloat_raw
|
||||
#define DEST_4F trans_3_GLfloat_4f_raw
|
||||
#define DEST_4UB trans_3_GLfloat_4ub_raw
|
||||
#define DEST_4US trans_3_GLfloat_4us_raw
|
||||
#define DEST_3F trans_3_GLfloat_3f_raw
|
||||
#include "m_trans_tmp.h"
|
||||
|
||||
|
|
@ -434,13 +468,14 @@ static trans_4f_func _math_trans_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
static void trans_4_GLubyte_4ub_raw (GLubyte (*t)[4],
|
||||
CONST void *Ptr,
|
||||
GLuint stride,
|
||||
ARGS )
|
||||
static void trans_4_GLubyte_4ub_raw(GLubyte (*t)[4],
|
||||
CONST void *Ptr,
|
||||
GLuint stride,
|
||||
ARGS )
|
||||
{
|
||||
const GLubyte *f = (GLubyte *) Ptr + SRC_START * stride;
|
||||
GLuint i;
|
||||
|
|
@ -468,6 +503,7 @@ static void init_translate_raw(void)
|
|||
MEMSET( TAB(_1ub), 0, sizeof(TAB(_1ub)) );
|
||||
MEMSET( TAB(_3f), 0, sizeof(TAB(_3f)) );
|
||||
MEMSET( TAB(_4ub), 0, sizeof(TAB(_4ub)) );
|
||||
MEMSET( TAB(_4us), 0, sizeof(TAB(_4us)) );
|
||||
MEMSET( TAB(_4f), 0, sizeof(TAB(_4f)) );
|
||||
|
||||
TAB(_4ub)[4][TYPE_IDX(GL_UNSIGNED_BYTE)] = trans_4_GLubyte_4ub_raw;
|
||||
|
|
@ -567,6 +603,17 @@ void _math_trans_4ub(GLubyte (*to)[4],
|
|||
_math_trans_4ub_tab[size][TYPE_IDX(type)]( to, ptr, stride, start, n );
|
||||
}
|
||||
|
||||
void _math_trans_4us(GLushort (*to)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
GLenum type,
|
||||
GLuint size,
|
||||
GLuint start,
|
||||
GLuint n )
|
||||
{
|
||||
_math_trans_4us_tab[size][TYPE_IDX(type)]( to, ptr, stride, start, n );
|
||||
}
|
||||
|
||||
void _math_trans_4f(GLfloat (*to)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* $Id: m_translate.h,v 1.3 2000/12/26 05:09:31 keithw Exp $ */
|
||||
/* $Id: m_translate.h,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.1
|
||||
* Version: 3.5
|
||||
*
|
||||
* Copyright (C) 1999 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -61,6 +61,14 @@ extern void _math_trans_4ub(GLubyte (*to)[4],
|
|||
GLuint start,
|
||||
GLuint n );
|
||||
|
||||
extern void _math_trans_4us(GLushort (*to)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
GLenum type,
|
||||
GLuint size,
|
||||
GLuint start,
|
||||
GLuint n );
|
||||
|
||||
extern void _math_trans_4f(GLfloat (*to)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* $Id: m_vector.c,v 1.2 2000/12/26 05:09:31 keithw Exp $ */
|
||||
/* $Id: m_vector.c,v 1.3 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.5
|
||||
*
|
||||
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -115,6 +115,15 @@ void gl_vector4ub_init( GLvector4ub *v, GLuint flags, GLubyte (*storage)[4] )
|
|||
v->flags = flags ;
|
||||
}
|
||||
|
||||
void gl_vector4us_init( GLvector4us *v, GLuint flags, GLushort (*storage)[4] )
|
||||
{
|
||||
v->stride = 4 * sizeof(GLushort);
|
||||
v->data = storage;
|
||||
v->start = (GLushort *) storage;
|
||||
v->count = 0;
|
||||
v->flags = flags ;
|
||||
}
|
||||
|
||||
void gl_vector1ub_init( GLvector1ub *v, GLuint flags, GLubyte *storage )
|
||||
{
|
||||
v->stride = 1 * sizeof(GLubyte);
|
||||
|
|
@ -189,6 +198,17 @@ void gl_vector4ub_alloc( GLvector4ub *v, GLuint flags, GLuint count,
|
|||
v->flags = flags | VEC_MALLOC ;
|
||||
}
|
||||
|
||||
void gl_vector4us_alloc( GLvector4us *v, GLuint flags, GLuint count,
|
||||
GLuint alignment )
|
||||
{
|
||||
v->stride = 4 * sizeof(GLushort);
|
||||
v->storage = ALIGN_MALLOC( count * 4 * sizeof(GLushort), alignment );
|
||||
v->start = (GLushort *) v->storage;
|
||||
v->data = (GLushort (*)[4]) v->storage;
|
||||
v->count = 0;
|
||||
v->flags = flags | VEC_MALLOC ;
|
||||
}
|
||||
|
||||
void gl_vector1ub_alloc( GLvector1ub *v, GLuint flags, GLuint count,
|
||||
GLuint alignment )
|
||||
{
|
||||
|
|
@ -264,6 +284,17 @@ void gl_vector4ub_free( GLvector4ub *v )
|
|||
}
|
||||
}
|
||||
|
||||
void gl_vector4us_free( GLvector4us *v )
|
||||
{
|
||||
if (v->flags & VEC_MALLOC) {
|
||||
ALIGN_FREE( v->storage );
|
||||
v->data = NULL;
|
||||
v->start = NULL;
|
||||
v->storage = NULL;
|
||||
v->flags &= ~VEC_MALLOC;
|
||||
}
|
||||
}
|
||||
|
||||
void gl_vector1ub_free( GLvector1ub *v )
|
||||
{
|
||||
if (v->flags & VEC_MALLOC) {
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* $Id: m_vector.h,v 1.2 2000/12/26 05:09:31 keithw Exp $ */
|
||||
/* $Id: m_vector.h,v 1.3 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.5
|
||||
*
|
||||
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -133,6 +133,25 @@ extern void gl_vector4ub_free( GLvector4ub * );
|
|||
|
||||
|
||||
|
||||
/* For 4 * GLushort rgba values.
|
||||
*/
|
||||
typedef struct {
|
||||
GLushort (*data)[4];
|
||||
GLushort *start;
|
||||
GLuint count;
|
||||
GLuint stride;
|
||||
GLuint flags;
|
||||
void *storage;
|
||||
} GLvector4us;
|
||||
|
||||
extern void gl_vector4us_init( GLvector4us *v, GLuint flags,
|
||||
GLushort (*storage)[4] );
|
||||
extern void gl_vector4us_alloc( GLvector4us *v, GLuint flags, GLuint count,
|
||||
GLuint alignment );
|
||||
extern void gl_vector4us_free( GLvector4us * );
|
||||
|
||||
|
||||
|
||||
|
||||
/* For 1ub values, eg edgeflag.
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: s_alphabuf.c,v 1.3 2001/01/23 23:39:37 brianp Exp $ */
|
||||
/* $Id: s_alphabuf.c,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -136,7 +136,7 @@ _mesa_alloc_alpha_buffers( GLcontext *ctx )
|
|||
void
|
||||
_mesa_clear_alpha_buffers( GLcontext *ctx )
|
||||
{
|
||||
const GLchan aclear = (GLint) (ctx->Color.ClearColor[3] * CHAN_MAXF);
|
||||
const GLchan aclear = ctx->Color.ClearColor[3];
|
||||
GLuint bufferBit;
|
||||
|
||||
ASSERT(ctx->DrawBuffer->UseSoftwareAlphaBuffers);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: s_buffers.c,v 1.3 2001/01/23 23:39:37 brianp Exp $ */
|
||||
/* $Id: s_buffers.c,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -51,15 +51,15 @@ clear_color_buffer_with_masking( GLcontext *ctx )
|
|||
|
||||
if (ctx->Visual.rgbMode) {
|
||||
/* RGBA mode */
|
||||
const GLchan r = (GLint) (ctx->Color.ClearColor[0] * CHAN_MAXF);
|
||||
const GLchan g = (GLint) (ctx->Color.ClearColor[1] * CHAN_MAXF);
|
||||
const GLchan b = (GLint) (ctx->Color.ClearColor[2] * CHAN_MAXF);
|
||||
const GLchan a = (GLint) (ctx->Color.ClearColor[3] * CHAN_MAXF);
|
||||
const GLchan r = ctx->Color.ClearColor[0];
|
||||
const GLchan g = ctx->Color.ClearColor[1];
|
||||
const GLchan b = ctx->Color.ClearColor[2];
|
||||
const GLchan a = ctx->Color.ClearColor[3];
|
||||
GLint i;
|
||||
for (i = 0; i < height; i++) {
|
||||
GLchan rgba[MAX_WIDTH][4];
|
||||
GLint j;
|
||||
for (j=0; j<width; j++) {
|
||||
for (j = 0; j < width; j++) {
|
||||
rgba[j][RCOMP] = r;
|
||||
rgba[j][GCOMP] = g;
|
||||
rgba[j][BCOMP] = b;
|
||||
|
|
@ -101,10 +101,10 @@ clear_color_buffer(GLcontext *ctx)
|
|||
|
||||
if (ctx->Visual.rgbMode) {
|
||||
/* RGBA mode */
|
||||
const GLchan r = (GLint) (ctx->Color.ClearColor[0] * CHAN_MAXF);
|
||||
const GLchan g = (GLint) (ctx->Color.ClearColor[1] * CHAN_MAXF);
|
||||
const GLchan b = (GLint) (ctx->Color.ClearColor[2] * CHAN_MAXF);
|
||||
const GLchan a = (GLint) (ctx->Color.ClearColor[3] * CHAN_MAXF);
|
||||
const GLchan r = ctx->Color.ClearColor[0];
|
||||
const GLchan g = ctx->Color.ClearColor[1];
|
||||
const GLchan b = ctx->Color.ClearColor[2];
|
||||
const GLchan a = ctx->Color.ClearColor[3];
|
||||
GLchan span[MAX_WIDTH][4];
|
||||
GLint i;
|
||||
|
||||
|
|
|
|||
|
|
@ -59,8 +59,8 @@ static void TAG(triangle)(GLcontext *ctx, GLuint e0, GLuint e1, GLuint e2 )
|
|||
if (facing == 1) {
|
||||
if (IND & SS_TWOSIDE_BIT) {
|
||||
if (IND & SS_RGBA_BIT) {
|
||||
GLubyte (*vbcolor)[4] = VB->ColorPtr[1]->data;
|
||||
GLubyte (*vbspec)[4] = VB->SecondaryColorPtr[1]->data;
|
||||
GLchan (*vbcolor)[4] = VB->ColorPtr[1]->data;
|
||||
GLchan (*vbspec)[4] = VB->SecondaryColorPtr[1]->data;
|
||||
SS_COLOR(v[0]->color, vbcolor[e0]);
|
||||
SS_COLOR(v[1]->color, vbcolor[e1]);
|
||||
SS_COLOR(v[2]->color, vbcolor[e2]);
|
||||
|
|
@ -132,8 +132,8 @@ static void TAG(triangle)(GLcontext *ctx, GLuint e0, GLuint e1, GLuint e2 )
|
|||
if (IND & SS_TWOSIDE_BIT) {
|
||||
if (facing == 1) {
|
||||
if (IND & SS_RGBA_BIT) {
|
||||
GLubyte (*vbcolor)[4] = VB->ColorPtr[0]->data;
|
||||
GLubyte (*vbspec)[4] = VB->SecondaryColorPtr[0]->data;
|
||||
GLchan (*vbcolor)[4] = VB->ColorPtr[0]->data;
|
||||
GLchan (*vbspec)[4] = VB->SecondaryColorPtr[0]->data;
|
||||
SS_COLOR(v[0]->color, vbcolor[e0]);
|
||||
SS_COLOR(v[1]->color, vbcolor[e1]);
|
||||
SS_COLOR(v[2]->color, vbcolor[e2]);
|
||||
|
|
|
|||
|
|
@ -33,8 +33,8 @@ static void TAG(rs)(GLcontext *ctx, GLuint start, GLuint end, GLuint newinputs )
|
|||
SWvertex *v;
|
||||
GLfloat (*proj)[4]; /* projected clip coordinates */
|
||||
GLfloat (*tc[MAX_TEXTURE_UNITS])[4];
|
||||
GLubyte (*color)[4];
|
||||
GLubyte (*spec)[4];
|
||||
GLchan (*color)[4];
|
||||
GLchan (*spec)[4];
|
||||
GLuint *index;
|
||||
GLfloat *fog;
|
||||
GLfloat *pointSize;
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* $Id: t_array_api.c,v 1.3 2001/01/14 06:14:21 keithw Exp $ */
|
||||
/* $Id: t_array_api.c,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.5
|
||||
*
|
||||
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -336,8 +336,16 @@ void _tnl_array_init( GLcontext *ctx )
|
|||
*/
|
||||
gl_vector4f_init( &tmp->Obj, 0, 0 );
|
||||
gl_vector3f_init( &tmp->Normal, 0, 0 );
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
gl_vector4ub_init( &tmp->Color, 0, 0 );
|
||||
gl_vector4ub_init( &tmp->SecondaryColor, 0, 0 );
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
gl_vector4us_init( &tmp->Color, 0, 0 );
|
||||
gl_vector4us_init( &tmp->SecondaryColor, 0, 0 );
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
gl_vector4f_init( &tmp->Color, 0, 0 );
|
||||
gl_vector4f_init( &tmp->SecondaryColor, 0, 0 );
|
||||
#endif
|
||||
gl_vector1f_init( &tmp->FogCoord, 0, 0 );
|
||||
gl_vector1ui_init( &tmp->Index, 0, 0 );
|
||||
gl_vector1ub_init( &tmp->EdgeFlag, 0, 0 );
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_array_import.c,v 1.6 2001/01/08 21:56:00 keithw Exp $ */
|
||||
/* $Id: t_array_import.c,v 1.7 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -107,10 +107,10 @@ static void _tnl_import_color( GLcontext *ctx,
|
|||
&is_writeable);
|
||||
|
||||
inputs->Color.data = tmp->Ptr;
|
||||
inputs->Color.start = (GLubyte *)tmp->Ptr;
|
||||
inputs->Color.start = (GLchan *)tmp->Ptr;
|
||||
inputs->Color.stride = tmp->StrideB;
|
||||
inputs->Color.flags &= ~(VEC_BAD_STRIDE|VEC_NOT_WRITEABLE);
|
||||
if (inputs->Color.stride != 4*sizeof(GLubyte))
|
||||
if (inputs->Color.stride != 4*sizeof(GLchan))
|
||||
inputs->Color.flags |= VEC_BAD_STRIDE;
|
||||
if (!is_writeable)
|
||||
inputs->Color.flags |= VEC_NOT_WRITEABLE;
|
||||
|
|
@ -132,7 +132,7 @@ static void _tnl_import_secondarycolor( GLcontext *ctx,
|
|||
&is_writeable);
|
||||
|
||||
inputs->SecondaryColor.data = tmp->Ptr;
|
||||
inputs->SecondaryColor.start = (GLubyte *)tmp->Ptr;
|
||||
inputs->SecondaryColor.start = (GLchan *)tmp->Ptr;
|
||||
inputs->SecondaryColor.stride = tmp->StrideB;
|
||||
inputs->SecondaryColor.flags &= ~(VEC_BAD_STRIDE|VEC_NOT_WRITEABLE);
|
||||
if (inputs->SecondaryColor.stride != 4*sizeof(GLubyte))
|
||||
|
|
@ -464,21 +464,53 @@ void _tnl_fill_immediate_drawarrays( GLcontext *ctx, struct immediate *IM,
|
|||
}
|
||||
|
||||
if (required & VERT_RGBA) {
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
_math_trans_4ub( IM->Color + IM->Start,
|
||||
ctx->Array.Color.Ptr,
|
||||
ctx->Array.Color.StrideB,
|
||||
ctx->Array.Color.Type,
|
||||
ctx->Array.Color.Size,
|
||||
start, n );
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
_math_trans_4us( IM->Color + IM->Start,
|
||||
ctx->Array.Color.Ptr,
|
||||
ctx->Array.Color.StrideB,
|
||||
ctx->Array.Color.Type,
|
||||
ctx->Array.Color.Size,
|
||||
start, n );
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
_math_trans_4f( IM->Color + IM->Start,
|
||||
ctx->Array.Color.Ptr,
|
||||
ctx->Array.Color.StrideB,
|
||||
ctx->Array.Color.Type,
|
||||
ctx->Array.Color.Size,
|
||||
start, n );
|
||||
#endif
|
||||
}
|
||||
|
||||
if (required & VERT_SPEC_RGB) {
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
_math_trans_4ub( IM->SecondaryColor + IM->Start,
|
||||
ctx->Array.SecondaryColor.Ptr,
|
||||
ctx->Array.SecondaryColor.StrideB,
|
||||
ctx->Array.SecondaryColor.Type,
|
||||
ctx->Array.SecondaryColor.Size,
|
||||
start, n );
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
_math_trans_4us( IM->SecondaryColor + IM->Start,
|
||||
ctx->Array.SecondaryColor.Ptr,
|
||||
ctx->Array.SecondaryColor.StrideB,
|
||||
ctx->Array.SecondaryColor.Type,
|
||||
ctx->Array.SecondaryColor.Size,
|
||||
start, n );
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
_math_trans_4f( IM->SecondaryColor + IM->Start,
|
||||
ctx->Array.SecondaryColor.Ptr,
|
||||
ctx->Array.SecondaryColor.StrideB,
|
||||
ctx->Array.SecondaryColor.Type,
|
||||
ctx->Array.SecondaryColor.Size,
|
||||
start, n );
|
||||
#endif
|
||||
}
|
||||
|
||||
if (required & VERT_FOG_COORD) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_context.h,v 1.11 2001/01/14 06:14:21 keithw Exp $ */
|
||||
/* $Id: t_context.h,v 1.12 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -205,7 +205,7 @@ struct immediate
|
|||
GLuint Elt[IMM_SIZE];
|
||||
GLubyte EdgeFlag[IMM_SIZE];
|
||||
GLuint Index[IMM_SIZE];
|
||||
GLubyte SecondaryColor[IMM_SIZE][4];
|
||||
GLchan SecondaryColor[IMM_SIZE][4];
|
||||
GLfloat FogCoord[IMM_SIZE];
|
||||
};
|
||||
|
||||
|
|
@ -214,12 +214,20 @@ struct vertex_arrays
|
|||
{
|
||||
GLvector4f Obj;
|
||||
GLvector3f Normal;
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
GLvector4ub Color;
|
||||
GLvector4ub SecondaryColor;
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
GLvector4us Color;
|
||||
GLvector4us SecondaryColor;
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
GLvector4f Color;
|
||||
GLvector4f SecondaryColor;
|
||||
#endif
|
||||
GLvector1ui Index;
|
||||
GLvector1ub EdgeFlag;
|
||||
GLvector4f TexCoord[MAX_TEXTURE_UNITS];
|
||||
GLvector1ui Elt;
|
||||
GLvector4ub SecondaryColor;
|
||||
GLvector1f FogCoord;
|
||||
};
|
||||
|
||||
|
|
@ -260,8 +268,17 @@ typedef struct vertex_buffer
|
|||
GLboolean *EdgeFlag; /* VERT_EDGE */
|
||||
GLvector4f *TexCoordPtr[MAX_TEXTURE_UNITS]; /* VERT_TEX_0..n */
|
||||
GLvector1ui *IndexPtr[2]; /* VERT_INDEX */
|
||||
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
GLvector4ub *ColorPtr[2]; /* VERT_RGBA */
|
||||
GLvector4ub *SecondaryColorPtr[2]; /* VERT_SPEC_RGB */
|
||||
GLvector4ub *SecondaryColorPtr[2]; /* VERT_SPEC_RGB */
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
GLvector4us *ColorPtr[2]; /* VERT_RGBA */
|
||||
GLvector4us *SecondaryColorPtr[2]; /* VERT_SPEC_RGB */
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
GLvector4f *ColorPtr[2]; /* VERT_RGBA */
|
||||
GLvector4f *SecondaryColorPtr[2]; /* VERT_SPEC_RGB */
|
||||
#endif
|
||||
GLvector1f *FogCoordPtr; /* VERT_FOG_COORD */
|
||||
GLvector1f *PointSizePtr; /* VERT_POINT_SIZE */
|
||||
GLmaterial (*Material)[2]; /* VERT_MATERIAL, optional */
|
||||
|
|
|
|||
|
|
@ -382,22 +382,13 @@ _tnl_End(void)
|
|||
static void
|
||||
_tnl_Color3f( GLfloat red, GLfloat green, GLfloat blue )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GLubyte col[4];
|
||||
GLchan col[4];
|
||||
GET_IMMEDIATE;
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[0], red);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[1], green);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[2], blue);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[0], red);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[1], green);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[2], blue);
|
||||
col[3] = CHAN_MAX;
|
||||
COLORV( IM, col );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
COLOR(IM,
|
||||
UNCLAMPED_FLOAT_TO_CHAN(red),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(green),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(blue),
|
||||
CHAN_MAX);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -423,61 +414,37 @@ _tnl_Color3ub( GLubyte red, GLubyte green, GLubyte blue )
|
|||
static void
|
||||
_tnl_Color4f( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GLubyte col[4];
|
||||
GLchan col[4];
|
||||
GET_IMMEDIATE;
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[0], red);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[1], green);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[2], blue);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[3], alpha);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[0], red);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[1], green);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[2], blue);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[3], alpha);
|
||||
COLORV( IM, col );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
COLOR(IM,
|
||||
UNCLAMPED_FLOAT_TO_CHAN(red),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(green),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(blue),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(alpha));
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
_tnl_Color4ub( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GET_IMMEDIATE;
|
||||
COLOR( IM, red, green, blue, alpha );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
COLOR(IM,
|
||||
UBYTE_TO_CHAN(red),
|
||||
UBYTE_TO_CHAN(green),
|
||||
UBYTE_TO_CHAN(blue),
|
||||
UBYTE_TO_CHAN(alpha));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
_tnl_Color3fv( const GLfloat *v )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GLubyte col[4];
|
||||
GLchan col[4];
|
||||
GET_IMMEDIATE;
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[0], v[0]);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[1], v[1]);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[2], v[2]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[0], v[0]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[1], v[1]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[2], v[2]);
|
||||
col[3] = CHAN_MAX;
|
||||
COLORV( IM, col );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
COLOR(IM,
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[0]),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[1]),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[2]),
|
||||
CHAN_MAX);
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -485,38 +452,24 @@ _tnl_Color3fv( const GLfloat *v )
|
|||
static void
|
||||
_tnl_Color3ubv( const GLubyte *v )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GET_IMMEDIATE;
|
||||
COLOR( IM, v[0], v[1], v[2], CHAN_MAX );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
COLOR(IM,
|
||||
UBYTE_TO_CHAN(v[0]),
|
||||
UBYTE_TO_CHAN(v[1]),
|
||||
UBYTE_TO_CHAN(v[2]),
|
||||
CHAN_MAX);
|
||||
#endif
|
||||
CHAN_MAX );
|
||||
}
|
||||
|
||||
static void
|
||||
_tnl_Color4fv( const GLfloat *v )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GLubyte col[4];
|
||||
GLchan col[4];
|
||||
GET_IMMEDIATE;
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[0], v[0]);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[1], v[1]);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[2], v[2]);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[3], v[3]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[0], v[0]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[1], v[1]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[2], v[2]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[3], v[3]);
|
||||
COLORV( IM, col );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
COLOR(IM,
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[0]),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[1]),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[2]),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[3]));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -524,17 +477,12 @@ _tnl_Color4fv( const GLfloat *v )
|
|||
static void
|
||||
_tnl_Color4ubv( const GLubyte *v)
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GET_IMMEDIATE;
|
||||
COLORV( IM, v );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
COLOR(IM,
|
||||
UBYTE_TO_CHAN(v[0]),
|
||||
UBYTE_TO_CHAN(v[1]),
|
||||
UBYTE_TO_CHAN(v[2]),
|
||||
UBYTE_TO_CHAN(v[3]));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -564,20 +512,12 @@ _tnl_Color4ubv( const GLubyte *v)
|
|||
static void
|
||||
_tnl_SecondaryColor3fEXT( GLfloat red, GLfloat green, GLfloat blue )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GLubyte col[3];
|
||||
GLchan col[3];
|
||||
GET_IMMEDIATE;
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[0], red);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[1], green);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[2], blue);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[0], red);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[1], green);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[2], blue);
|
||||
SECONDARY_COLORV( IM, col );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
SECONDARY_COLOR(IM,
|
||||
UNCLAMPED_FLOAT_TO_CHAN(red),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(green),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(blue));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -585,16 +525,11 @@ _tnl_SecondaryColor3fEXT( GLfloat red, GLfloat green, GLfloat blue )
|
|||
static void
|
||||
_tnl_SecondaryColor3ubEXT( GLubyte red, GLubyte green, GLubyte blue )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GET_IMMEDIATE;
|
||||
SECONDARY_COLOR( IM, red, green, blue );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
SECONDARY_COLOR(IM,
|
||||
UBYTE_TO_CHAN(red),
|
||||
UBYTE_TO_CHAN(green),
|
||||
UBYTE_TO_CHAN(blue));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -603,20 +538,12 @@ _tnl_SecondaryColor3ubEXT( GLubyte red, GLubyte green, GLubyte blue )
|
|||
static void
|
||||
_tnl_SecondaryColor3fvEXT( const GLfloat *v )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GLubyte col[3];
|
||||
GLchan col[3];
|
||||
GET_IMMEDIATE;
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[0], v[0]);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[1], v[1]);
|
||||
UNCLAMPED_FLOAT_TO_UBYTE(col[2], v[2]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[0], v[0]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[1], v[1]);
|
||||
UNCLAMPED_FLOAT_TO_CHAN(col[2], v[2]);
|
||||
SECONDARY_COLORV( IM, col );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
SECONDARY_COLOR(IM,
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[0]),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[1]),
|
||||
UNCLAMPED_FLOAT_TO_CHAN(v[2]));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -624,16 +551,11 @@ _tnl_SecondaryColor3fvEXT( const GLfloat *v )
|
|||
static void
|
||||
_tnl_SecondaryColor3ubvEXT( const GLubyte *v )
|
||||
{
|
||||
#if CHAN_BITS == 8
|
||||
GET_IMMEDIATE;
|
||||
SECONDARY_COLOR( IM, v[0], v[1], v[2] );
|
||||
#else
|
||||
GET_IMMEDIATE;
|
||||
SECONDARY_COLOR(IM,
|
||||
UBYTE_TO_CHAN(v[0]),
|
||||
UBYTE_TO_CHAN(v[1]),
|
||||
UBYTE_TO_CHAN(v[2]));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_imm_elt.c,v 1.2 2001/01/02 22:02:53 brianp Exp $ */
|
||||
/* $Id: t_imm_elt.c,v 1.3 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -68,13 +68,22 @@ typedef void (*trans_elt_1ub_func)(GLubyte *to,
|
|||
GLuint n );
|
||||
|
||||
typedef void (*trans_elt_4ub_func)(GLubyte (*to)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
GLuint *flags,
|
||||
GLuint *elts,
|
||||
GLuint match,
|
||||
GLuint start,
|
||||
GLuint n );
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
GLuint *flags,
|
||||
GLuint *elts,
|
||||
GLuint match,
|
||||
GLuint start,
|
||||
GLuint n );
|
||||
|
||||
typedef void (*trans_elt_4us_func)(GLushort (*to)[4],
|
||||
CONST void *ptr,
|
||||
GLuint stride,
|
||||
GLuint *flags,
|
||||
GLuint *elts,
|
||||
GLuint match,
|
||||
GLuint start,
|
||||
GLuint n );
|
||||
|
||||
typedef void (*trans_elt_4f_func)(GLfloat (*to)[4],
|
||||
CONST void *ptr,
|
||||
|
|
@ -102,6 +111,7 @@ static trans_elt_1ui_func _tnl_trans_elt_1ui_tab[MAX_TYPES];
|
|||
static trans_elt_1ub_func _tnl_trans_elt_1ub_tab[MAX_TYPES];
|
||||
static trans_elt_3f_func _tnl_trans_elt_3f_tab[MAX_TYPES];
|
||||
static trans_elt_4ub_func _tnl_trans_elt_4ub_tab[5][MAX_TYPES];
|
||||
static trans_elt_4us_func _tnl_trans_elt_4us_tab[5][MAX_TYPES];
|
||||
static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
||||
|
||||
|
||||
|
|
@ -141,6 +151,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) BYTE_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub, f,n) ub = BYTE_TO_UBYTE( PTR_ELT(f,n) )
|
||||
#define TRX_US(us, f,n) us = BYTE_TO_USHORT( PTR_ELT(f,n) )
|
||||
#define TRX_UI(f,n) (PTR_ELT(f,n) < 0 ? 0 : (GLuint) PTR_ELT(f,n))
|
||||
|
||||
|
||||
|
|
@ -154,6 +165,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_3_GLbyte_elt
|
||||
#define DEST_4F trans_3_GLbyte_4f_elt
|
||||
#define DEST_4UB trans_3_GLbyte_4ub_elt
|
||||
#define DEST_4US trans_3_GLbyte_4us_elt
|
||||
#define DEST_3F trans_3_GLbyte_3f_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
|
|
@ -173,6 +185,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
#undef SRC_IDX
|
||||
|
||||
|
|
@ -183,6 +196,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) /* unused */
|
||||
#define TRX_4F(f,n) /* unused */
|
||||
#define TRX_UB(ub, f,n) ub = PTR_ELT(f,n)
|
||||
#define TRX_US(us, f,n) us = PTR_ELT(f,n)
|
||||
#define TRX_UI(f,n) (GLuint)PTR_ELT(f,n)
|
||||
|
||||
/* 4ub->4ub handled in special case below.
|
||||
|
|
@ -191,6 +205,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define SZ 3
|
||||
#define INIT init_trans_3_GLubyte_elt
|
||||
#define DEST_4UB trans_3_GLubyte_4ub_elt
|
||||
#define DEST_4US trans_3_GLubyte_4us_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
|
||||
|
|
@ -205,6 +220,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -215,6 +231,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) SHORT_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub, f,n) ub = SHORT_TO_UBYTE(PTR_ELT(f,n))
|
||||
#define TRX_US(us, f,n) us = SHORT_TO_USHORT(PTR_ELT(f,n))
|
||||
#define TRX_UI(f,n) (PTR_ELT(f,n) < 0 ? 0 : (GLuint) PTR_ELT(f,n))
|
||||
|
||||
|
||||
|
|
@ -222,12 +239,14 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLshort_elt
|
||||
#define DEST_4F trans_4_GLshort_4f_elt
|
||||
#define DEST_4UB trans_4_GLshort_4ub_elt
|
||||
#define DEST_4US trans_4_GLshort_4us_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLshort_elt
|
||||
#define DEST_4F trans_3_GLshort_4f_elt
|
||||
#define DEST_4UB trans_3_GLshort_4ub_elt
|
||||
#define DEST_4US trans_3_GLshort_4us_elt
|
||||
#define DEST_3F trans_3_GLshort_3f_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
|
|
@ -249,6 +268,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -259,6 +279,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) USHORT_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub,f,n) ub = (GLubyte) (PTR_ELT(f,n) >> 8)
|
||||
#define TRX_US(us,f,n) us = PTR_ELT(f,n)
|
||||
#define TRX_UI(f,n) (GLuint) PTR_ELT(f,n)
|
||||
|
||||
|
||||
|
|
@ -266,12 +287,14 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLushort_elt
|
||||
#define DEST_4F trans_4_GLushort_4f_elt
|
||||
#define DEST_4UB trans_4_GLushort_4ub_elt
|
||||
#define DEST_4US trans_4_GLushort_4us_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLushort_elt
|
||||
#define DEST_4F trans_3_GLushort_4f_elt
|
||||
#define DEST_4UB trans_3_GLushort_4ub_elt
|
||||
#define DEST_4US trans_3_GLushort_4us_elt
|
||||
#define DEST_3F trans_3_GLushort_3f_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
|
|
@ -292,6 +315,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -302,6 +326,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) INT_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub, f,n) ub = INT_TO_UBYTE(PTR_ELT(f,n))
|
||||
#define TRX_US(us, f,n) us = INT_TO_USHORT(PTR_ELT(f,n))
|
||||
#define TRX_UI(f,n) (PTR_ELT(f,n) < 0 ? 0 : (GLuint) PTR_ELT(f,n))
|
||||
|
||||
|
||||
|
|
@ -309,12 +334,14 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLint_elt
|
||||
#define DEST_4F trans_4_GLint_4f_elt
|
||||
#define DEST_4UB trans_4_GLint_4ub_elt
|
||||
#define DEST_4US trans_4_GLint_4us_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLint_elt
|
||||
#define DEST_4F trans_3_GLint_4f_elt
|
||||
#define DEST_4UB trans_3_GLint_4ub_elt
|
||||
#define DEST_4US trans_3_GLint_4us_elt
|
||||
#define DEST_3F trans_3_GLint_3f_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
|
|
@ -336,6 +363,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -346,6 +374,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define TRX_3F(f,n) UINT_TO_FLOAT( PTR_ELT(f,n) )
|
||||
#define TRX_4F(f,n) (GLfloat)( PTR_ELT(f,n) )
|
||||
#define TRX_UB(ub, f,n) ub = (GLubyte) (PTR_ELT(f,n) >> 24)
|
||||
#define TRX_US(us, f,n) us = (GLushort) (PTR_ELT(f,n) >> 16)
|
||||
#define TRX_UI(f,n) PTR_ELT(f,n)
|
||||
|
||||
|
||||
|
|
@ -353,12 +382,14 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLuint_elt
|
||||
#define DEST_4F trans_4_GLuint_4f_elt
|
||||
#define DEST_4UB trans_4_GLuint_4ub_elt
|
||||
#define DEST_4US trans_4_GLuint_4us_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLuint_elt
|
||||
#define DEST_4F trans_3_GLuint_4f_elt
|
||||
#define DEST_4UB trans_3_GLuint_4ub_elt
|
||||
#define DEST_4US trans_3_GLuint_4us_elt
|
||||
#define DEST_3F trans_3_GLuint_3f_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
|
|
@ -379,6 +410,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
|
|
@ -388,7 +420,8 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define SRC_IDX TYPE_IDX(GL_DOUBLE)
|
||||
#define TRX_3F(f,n) PTR_ELT(f,n)
|
||||
#define TRX_4F(f,n) PTR_ELT(f,n)
|
||||
#define TRX_UB(ub,f,n) UNCLAMPED_FLOAT_TO_CHAN(ub, PTR_ELT(f,n))
|
||||
#define TRX_UB(ub,f,n) UNCLAMPED_FLOAT_TO_UBYTE(ub, PTR_ELT(f,n))
|
||||
#define TRX_US(us,f,n) UNCLAMPED_FLOAT_TO_USHORT(us, PTR_ELT(f,n))
|
||||
#define TRX_UI(f,n) (GLuint) (GLint) PTR_ELT(f,n)
|
||||
#define TRX_1F(f,n) PTR_ELT(f,n)
|
||||
|
||||
|
|
@ -397,12 +430,14 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_4_GLdouble_elt
|
||||
#define DEST_4F trans_4_GLdouble_4f_elt
|
||||
#define DEST_4UB trans_4_GLdouble_4ub_elt
|
||||
#define DEST_4US trans_4_GLdouble_4us_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
#define SZ 3
|
||||
#define INIT init_trans_3_GLdouble_elt
|
||||
#define DEST_4F trans_3_GLdouble_4f_elt
|
||||
#define DEST_4UB trans_3_GLdouble_4ub_elt
|
||||
#define DEST_4US trans_3_GLdouble_4us_elt
|
||||
#define DEST_3F trans_3_GLdouble_3f_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
|
|
@ -429,6 +464,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define SZ 4
|
||||
#define INIT init_trans_4_GLfloat_elt
|
||||
#define DEST_4UB trans_4_GLfloat_4ub_elt
|
||||
#define DEST_4US trans_4_GLfloat_4us_elt
|
||||
#define DEST_4F trans_4_GLfloat_4f_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
|
|
@ -436,6 +472,7 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#define INIT init_trans_3_GLfloat_elt
|
||||
#define DEST_4F trans_3_GLfloat_4f_elt
|
||||
#define DEST_4UB trans_3_GLfloat_4ub_elt
|
||||
#define DEST_4US trans_3_GLfloat_4us_elt
|
||||
#define DEST_3F trans_3_GLfloat_3f_elt
|
||||
#include "math/m_trans_tmp.h"
|
||||
|
||||
|
|
@ -457,13 +494,14 @@ static trans_elt_4f_func _tnl_trans_elt_4f_tab[5][MAX_TYPES];
|
|||
#undef TRX_3F
|
||||
#undef TRX_4F
|
||||
#undef TRX_UB
|
||||
#undef TRX_US
|
||||
#undef TRX_UI
|
||||
|
||||
|
||||
static void trans_4_GLubyte_4ub(GLubyte (*t)[4],
|
||||
CONST void *Ptr,
|
||||
GLuint stride,
|
||||
ARGS )
|
||||
CONST void *Ptr,
|
||||
GLuint stride,
|
||||
ARGS )
|
||||
{
|
||||
const GLubyte *f = (GLubyte *) Ptr + SRC_START * stride;
|
||||
const GLubyte *first = f;
|
||||
|
|
@ -498,6 +536,7 @@ static void init_translate_elt(void)
|
|||
MEMSET( TAB(_1ub), 0, sizeof(TAB(_1ub)) );
|
||||
MEMSET( TAB(_3f), 0, sizeof(TAB(_3f)) );
|
||||
MEMSET( TAB(_4ub), 0, sizeof(TAB(_4ub)) );
|
||||
MEMSET( TAB(_4us), 0, sizeof(TAB(_4us)) );
|
||||
MEMSET( TAB(_4f), 0, sizeof(TAB(_4f)) );
|
||||
|
||||
TAB(_4ub)[4][TYPE_IDX(GL_UNSIGNED_BYTE)] = trans_4_GLubyte_4ub;
|
||||
|
|
@ -598,43 +637,62 @@ static void _tnl_trans_elt_1ub(GLubyte *to,
|
|||
GLuint n )
|
||||
{
|
||||
_tnl_trans_elt_1ub_tab[TYPE_IDX(from->Type)]( to,
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
flags,
|
||||
elts,
|
||||
match,
|
||||
start,
|
||||
n );
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
flags,
|
||||
elts,
|
||||
match,
|
||||
start,
|
||||
n );
|
||||
|
||||
}
|
||||
|
||||
|
||||
static void _tnl_trans_elt_4ub(GLubyte (*to)[4],
|
||||
const struct gl_client_array *from,
|
||||
GLuint *flags,
|
||||
GLuint *elts,
|
||||
GLuint match,
|
||||
GLuint start,
|
||||
GLuint n )
|
||||
const struct gl_client_array *from,
|
||||
GLuint *flags,
|
||||
GLuint *elts,
|
||||
GLuint match,
|
||||
GLuint start,
|
||||
GLuint n )
|
||||
{
|
||||
_tnl_trans_elt_4ub_tab[from->Size][TYPE_IDX(from->Type)]( to,
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
flags,
|
||||
elts,
|
||||
match,
|
||||
start,
|
||||
n );
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
flags,
|
||||
elts,
|
||||
match,
|
||||
start,
|
||||
n );
|
||||
|
||||
}
|
||||
|
||||
static void _tnl_trans_elt_4us(GLushort (*to)[4],
|
||||
const struct gl_client_array *from,
|
||||
GLuint *flags,
|
||||
GLuint *elts,
|
||||
GLuint match,
|
||||
GLuint start,
|
||||
GLuint n )
|
||||
{
|
||||
_tnl_trans_elt_4us_tab[from->Size][TYPE_IDX(from->Type)]( to,
|
||||
from->Ptr,
|
||||
from->StrideB,
|
||||
flags,
|
||||
elts,
|
||||
match,
|
||||
start,
|
||||
n );
|
||||
|
||||
}
|
||||
|
||||
static void _tnl_trans_elt_4f(GLfloat (*to)[4],
|
||||
const struct gl_client_array *from,
|
||||
GLuint *flags,
|
||||
GLuint *elts,
|
||||
GLuint match,
|
||||
GLuint start,
|
||||
GLuint n )
|
||||
const struct gl_client_array *from,
|
||||
GLuint *flags,
|
||||
GLuint *elts,
|
||||
GLuint match,
|
||||
GLuint start,
|
||||
GLuint n )
|
||||
{
|
||||
_tnl_trans_elt_4f_tab[from->Size][TYPE_IDX(from->Type)]( to,
|
||||
from->Ptr,
|
||||
|
|
@ -710,18 +768,43 @@ void _tnl_translate_array_elts( GLcontext *ctx, struct immediate *IM,
|
|||
flags, elts, (VERT_ELT|VERT_EDGE),
|
||||
start, count);
|
||||
|
||||
if (translate & VERT_RGBA)
|
||||
if (translate & VERT_RGBA) {
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
_tnl_trans_elt_4ub( IM->Color,
|
||||
&ctx->Array.Color,
|
||||
flags, elts, (VERT_ELT|VERT_RGBA),
|
||||
start, count);
|
||||
&ctx->Array.Color,
|
||||
flags, elts, (VERT_ELT|VERT_RGBA),
|
||||
start, count);
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
_tnl_trans_elt_4us( IM->Color,
|
||||
&ctx->Array.Color,
|
||||
flags, elts, (VERT_ELT|VERT_RGBA),
|
||||
start, count);
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
_tnl_trans_elt_4f( IM->Color,
|
||||
&ctx->Array.Color,
|
||||
flags, elts, (VERT_ELT|VERT_RGBA),
|
||||
start, count);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
if (translate & VERT_SPEC_RGB)
|
||||
if (translate & VERT_SPEC_RGB) {
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
_tnl_trans_elt_4ub( IM->SecondaryColor,
|
||||
&ctx->Array.SecondaryColor,
|
||||
flags, elts, (VERT_ELT|VERT_SPEC_RGB),
|
||||
start, count);
|
||||
&ctx->Array.SecondaryColor,
|
||||
flags, elts, (VERT_ELT|VERT_SPEC_RGB),
|
||||
start, count);
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
_tnl_trans_elt_4us( IM->SecondaryColor,
|
||||
&ctx->Array.SecondaryColor,
|
||||
flags, elts, (VERT_ELT|VERT_SPEC_RGB),
|
||||
start, count);
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
_tnl_trans_elt_4f( IM->SecondaryColor,
|
||||
&ctx->Array.SecondaryColor,
|
||||
flags, elts, (VERT_ELT|VERT_SPEC_RGB),
|
||||
start, count);
|
||||
#endif
|
||||
}
|
||||
|
||||
if (translate & VERT_FOG_COORD)
|
||||
_tnl_trans_elt_1f( IM->FogCoord,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_imm_eval.c,v 1.3 2001/01/03 15:59:30 brianp Exp $ */
|
||||
/* $Id: t_imm_eval.c,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -144,14 +144,21 @@ static void eval1_norm( GLvector3f *dest,
|
|||
}
|
||||
}
|
||||
|
||||
static void eval1_color( GLvector4ub *dest,
|
||||
static void eval1_color(
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
GLvector4ub *dest,
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
GLvector4us *dest,
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
GLvector4f *dest,
|
||||
#endif
|
||||
GLfloat coord[][4],
|
||||
const GLuint *flags,
|
||||
struct gl_1d_map *map )
|
||||
{
|
||||
const GLfloat u1 = map->u1;
|
||||
const GLfloat du = map->du;
|
||||
GLubyte (*to)[4] = dest->data;
|
||||
GLchan (*to)[4] = dest->data;
|
||||
GLuint i;
|
||||
|
||||
for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++) {
|
||||
|
|
@ -276,7 +283,14 @@ static void eval2_1ui( GLvector1ui *dest,
|
|||
|
||||
|
||||
|
||||
static void eval2_color( GLvector4ub *dest,
|
||||
static void eval2_color(
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
GLvector4ub *dest,
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
GLvector4us *dest,
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
GLvector4f *dest,
|
||||
#endif
|
||||
GLfloat coord[][4],
|
||||
GLuint *flags,
|
||||
struct gl_2d_map *map )
|
||||
|
|
@ -285,7 +299,7 @@ static void eval2_color( GLvector4ub *dest,
|
|||
const GLfloat du = map->du;
|
||||
const GLfloat v1 = map->v1;
|
||||
const GLfloat dv = map->dv;
|
||||
GLubyte (*to)[4] = dest->data;
|
||||
GLchan (*to)[4] = dest->data;
|
||||
GLuint i;
|
||||
|
||||
for (i = 0 ; !(flags[i] & VERT_END_VB) ; i++) {
|
||||
|
|
@ -312,7 +326,7 @@ static void copy_3f( GLfloat to[][3], GLfloat from[][3], GLuint count )
|
|||
MEMCPY( to, from, (count) * sizeof(to[0]));
|
||||
}
|
||||
|
||||
static void copy_4ub( GLubyte to[][4], GLubyte from[][4], GLuint count )
|
||||
static void copy_4chan( GLchan to[][4], GLchan from[][4], GLuint count )
|
||||
{
|
||||
MEMCPY( to, from, (count) * sizeof(to[0]));
|
||||
}
|
||||
|
|
@ -472,10 +486,10 @@ void _tnl_eval_vb( GLcontext *ctx,
|
|||
if (req & VERT_RGBA)
|
||||
{
|
||||
if (!all_eval)
|
||||
copy_4ub( store->Color, tmp->Color.data, count );
|
||||
copy_4chan( store->Color, tmp->Color.data, count );
|
||||
|
||||
tmp->Color.data = store->Color;
|
||||
tmp->Color.start = (GLubyte *)store->Color;
|
||||
tmp->Color.start = (GLchan *) store->Color;
|
||||
|
||||
if (ctx->Eval.Map1Color4 && any_eval1)
|
||||
eval1_color( &tmp->Color, coord, flags, &ctx->EvalMap.Map1Color4 );
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* $Id: t_imm_exec.c,v 1.8 2001/01/14 06:14:21 keithw Exp $ */
|
||||
/* $Id: t_imm_exec.c,v 1.9 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.5
|
||||
*
|
||||
* Copyright (C) 1999-2000 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -253,7 +253,7 @@ static void _tnl_vb_bind_immediate( GLcontext *ctx, struct immediate *IM )
|
|||
|
||||
if (inputs & VERT_SPEC_RGB) {
|
||||
tmp->SecondaryColor.data = IM->SecondaryColor + start;
|
||||
tmp->SecondaryColor.start = (GLubyte *)(IM->SecondaryColor + start);
|
||||
tmp->SecondaryColor.start = (GLchan *)(IM->SecondaryColor + start);
|
||||
tmp->SecondaryColor.count = count;
|
||||
VB->SecondaryColorPtr[0] = &tmp->SecondaryColor;
|
||||
}
|
||||
|
|
@ -264,7 +264,7 @@ static void _tnl_vb_bind_immediate( GLcontext *ctx, struct immediate *IM )
|
|||
|
||||
if (inputs & VERT_RGBA) {
|
||||
tmp->Color.data = IM->Color + start;
|
||||
tmp->Color.start = (GLubyte *)(IM->Color + start);
|
||||
tmp->Color.start = (GLchan *)(IM->Color + start);
|
||||
tmp->Color.count = count;
|
||||
VB->ColorPtr[0] = &tmp->Color;
|
||||
}
|
||||
|
|
@ -486,8 +486,16 @@ void _tnl_imm_init( GLcontext *ctx )
|
|||
|
||||
gl_vector4f_init( &tmp->Obj, 0, 0 );
|
||||
gl_vector3f_init( &tmp->Normal, 0, 0 );
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
gl_vector4ub_init( &tmp->Color, 0, 0 );
|
||||
gl_vector4ub_init( &tmp->SecondaryColor, 0, 0 );
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
gl_vector4us_init( &tmp->Color, 0, 0 );
|
||||
gl_vector4us_init( &tmp->SecondaryColor, 0, 0 );
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
gl_vector4f_init( &tmp->Color, 0, 0 );
|
||||
gl_vector4f_init( &tmp->SecondaryColor, 0, 0 );
|
||||
#endif
|
||||
gl_vector1f_init( &tmp->FogCoord, 0, 0 );
|
||||
gl_vector1ui_init( &tmp->Index, 0, 0 );
|
||||
gl_vector1ub_init( &tmp->EdgeFlag, 0, 0 );
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_imm_fixup.c,v 1.3 2001/01/08 21:56:00 keithw Exp $ */
|
||||
/* $Id: t_imm_fixup.c,v 1.4 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -34,6 +34,7 @@
|
|||
#include "context.h"
|
||||
#include "enums.h"
|
||||
#include "dlist.h"
|
||||
#include "colormac.h"
|
||||
#include "macros.h"
|
||||
#include "mem.h"
|
||||
#include "mmath.h"
|
||||
|
|
@ -124,13 +125,13 @@ fixup_1ub( GLubyte *data, GLuint flag[], GLuint start, GLuint match )
|
|||
|
||||
|
||||
static void
|
||||
fixup_4ub( GLubyte data[][4], GLuint flag[], GLuint start, GLuint match )
|
||||
fixup_4chan( GLchan data[][4], GLuint flag[], GLuint start, GLuint match )
|
||||
{
|
||||
GLuint i = start;
|
||||
|
||||
for (;;) {
|
||||
if ((flag[++i] & match) == 0) {
|
||||
COPY_4UBV(data[i], data[i-1]);
|
||||
COPY_CHAN4(data[i], data[i-1]);
|
||||
if (flag[i] & VERT_END_VB) break;
|
||||
}
|
||||
}
|
||||
|
|
@ -197,14 +198,14 @@ fixup_first_1ub( GLubyte data[], GLuint flag[], GLuint match,
|
|||
|
||||
|
||||
static void
|
||||
fixup_first_4ub( GLubyte data[][4], GLuint flag[], GLuint match,
|
||||
GLuint start, GLubyte dflt[4] )
|
||||
fixup_first_4chan( GLchan data[][4], GLuint flag[], GLuint match,
|
||||
GLuint start, GLchan dflt[4] )
|
||||
{
|
||||
GLuint i = start-1;
|
||||
match |= VERT_END_VB;
|
||||
|
||||
while ((flag[++i]&match) == 0)
|
||||
COPY_4UBV(data[i], dflt);
|
||||
COPY_CHAN4(data[i], dflt);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -250,11 +251,11 @@ void _tnl_fixup_input( GLcontext *ctx, struct immediate *IM )
|
|||
}
|
||||
|
||||
if (copy & VERT_RGBA) {
|
||||
COPY_4UBV( IM->Color[start], ctx->Current.Color);
|
||||
COPY_CHAN4( IM->Color[start], ctx->Current.Color);
|
||||
}
|
||||
|
||||
if (copy & VERT_SPEC_RGB)
|
||||
COPY_4UBV( IM->SecondaryColor[start], ctx->Current.SecondaryColor);
|
||||
COPY_CHAN4( IM->SecondaryColor[start], ctx->Current.SecondaryColor);
|
||||
|
||||
if (copy & VERT_FOG_COORD)
|
||||
IM->FogCoord[start] = ctx->Current.FogCoord;
|
||||
|
|
@ -308,17 +309,17 @@ void _tnl_fixup_input( GLcontext *ctx, struct immediate *IM )
|
|||
|
||||
if (fixup & VERT_RGBA) {
|
||||
if (orflag & VERT_RGBA)
|
||||
fixup_4ub( IM->Color, IM->Flag, start, VERT_RGBA );
|
||||
fixup_4chan( IM->Color, IM->Flag, start, VERT_RGBA );
|
||||
else
|
||||
fixup_first_4ub( IM->Color, IM->Flag, VERT_END_VB, start, IM->Color[start] );
|
||||
fixup_first_4chan( IM->Color, IM->Flag, VERT_END_VB, start, IM->Color[start] );
|
||||
}
|
||||
|
||||
if (fixup & VERT_SPEC_RGB) {
|
||||
if (orflag & VERT_SPEC_RGB)
|
||||
fixup_4ub( IM->SecondaryColor, IM->Flag, start, VERT_SPEC_RGB );
|
||||
fixup_4chan( IM->SecondaryColor, IM->Flag, start, VERT_SPEC_RGB );
|
||||
else
|
||||
fixup_first_4ub( IM->SecondaryColor, IM->Flag, VERT_END_VB, start,
|
||||
IM->SecondaryColor[start] );
|
||||
fixup_first_4chan( IM->SecondaryColor, IM->Flag, VERT_END_VB, start,
|
||||
IM->SecondaryColor[start] );
|
||||
}
|
||||
|
||||
if (fixup & VERT_FOG_COORD) {
|
||||
|
|
@ -393,7 +394,7 @@ static void copy_vertices( GLcontext *ctx,
|
|||
|
||||
COPY_4FV( next->Obj[dst], prev->Obj[src] );
|
||||
COPY_3FV( next->Normal[dst], prev->Normal[src] );
|
||||
COPY_4UBV( next->Color[dst], prev->Color[src] );
|
||||
COPY_CHAN4( next->Color[dst], prev->Color[src] );
|
||||
|
||||
if (prev->OrFlag & VERT_TEX_ANY) {
|
||||
GLuint i;
|
||||
|
|
@ -409,7 +410,7 @@ static void copy_vertices( GLcontext *ctx,
|
|||
next->Elt[dst] = prev->Elt[src];
|
||||
next->EdgeFlag[dst] = prev->EdgeFlag[src];
|
||||
next->Index[dst] = prev->Index[src];
|
||||
COPY_4UBV( next->SecondaryColor[dst], prev->SecondaryColor[src] );
|
||||
COPY_CHAN4( next->SecondaryColor[dst], prev->SecondaryColor[src] );
|
||||
next->FogCoord[dst] = prev->FogCoord[src];
|
||||
next->Flag[dst] = (prev->CopyOrFlag & VERT_FIXUP);
|
||||
next->CopyOrFlag |= prev->Flag[src]; /* redundant for current_im */
|
||||
|
|
@ -535,12 +536,12 @@ void _tnl_fixup_compiled_cassette( GLcontext *ctx, struct immediate *IM )
|
|||
ctx->Current.Index );
|
||||
|
||||
if (fixup & VERT_RGBA)
|
||||
fixup_first_4ub(IM->Color, IM->Flag, VERT_RGBA, start,
|
||||
ctx->Current.Color );
|
||||
fixup_first_4chan(IM->Color, IM->Flag, VERT_RGBA, start,
|
||||
ctx->Current.Color );
|
||||
|
||||
if (fixup & VERT_SPEC_RGB)
|
||||
fixup_first_4ub(IM->SecondaryColor, IM->Flag, VERT_SPEC_RGB, start,
|
||||
ctx->Current.SecondaryColor );
|
||||
fixup_first_4chan(IM->SecondaryColor, IM->Flag, VERT_SPEC_RGB, start,
|
||||
ctx->Current.SecondaryColor );
|
||||
|
||||
if (fixup & VERT_FOG_COORD)
|
||||
fixup_first_1f(IM->FogCoord, IM->Flag, VERT_FOG_COORD, start,
|
||||
|
|
@ -783,7 +784,7 @@ void _tnl_fixup_purged_eval( GLcontext *ctx,
|
|||
fixup_1ui( store->Index, flags, 0, VERT_INDEX|fixup_fence );
|
||||
|
||||
if (fixup & VERT_RGBA)
|
||||
fixup_4ub( store->Color, flags, 0, VERT_RGBA|fixup_fence );
|
||||
fixup_4chan( store->Color, flags, 0, VERT_RGBA|fixup_fence );
|
||||
|
||||
if (fixup & VERT_NORM)
|
||||
fixup_3f( store->Normal, flags, 0, VERT_NORM|fixup_fence );
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_vb_light.c,v 1.4 2001/01/23 23:39:37 brianp Exp $ */
|
||||
/* $Id: t_vb_light.c,v 1.5 2001/01/24 00:04:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -49,10 +49,17 @@ typedef void (*light_func)( GLcontext *ctx,
|
|||
GLvector4f *input );
|
||||
|
||||
struct light_stage_data {
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
GLvector4ub LitColor[2];
|
||||
GLvector1ui LitIndex[2];
|
||||
GLvector4ub LitSecondary[2];
|
||||
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
GLvector4us LitColor[2];
|
||||
GLvector4us LitSecondary[2];
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
GLvector4f LitColor[2];
|
||||
GLvector4f LitSecondary[2];
|
||||
#endif
|
||||
GLvector1ui LitIndex[2];
|
||||
light_func *light_func_tab;
|
||||
};
|
||||
|
||||
|
|
@ -216,10 +223,22 @@ static GLboolean run_init_lighting( GLcontext *ctx,
|
|||
*/
|
||||
init_lighting();
|
||||
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
gl_vector4ub_alloc( &store->LitColor[0], 0, size, 32 );
|
||||
gl_vector4ub_alloc( &store->LitColor[1], 0, size, 32 );
|
||||
gl_vector4ub_alloc( &store->LitSecondary[0], 0, size, 32 );
|
||||
gl_vector4ub_alloc( &store->LitSecondary[1], 0, size, 32 );
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
gl_vector4us_alloc( &store->LitColor[0], 0, size, 32 );
|
||||
gl_vector4us_alloc( &store->LitColor[1], 0, size, 32 );
|
||||
gl_vector4us_alloc( &store->LitSecondary[0], 0, size, 32 );
|
||||
gl_vector4us_alloc( &store->LitSecondary[1], 0, size, 32 );
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
gl_vector4f_alloc( &store->LitColor[0], 0, size, 32 );
|
||||
gl_vector4f_alloc( &store->LitColor[1], 0, size, 32 );
|
||||
gl_vector4f_alloc( &store->LitSecondary[0], 0, size, 32 );
|
||||
gl_vector4f_alloc( &store->LitSecondary[1], 0, size, 32 );
|
||||
#endif
|
||||
gl_vector1ui_alloc( &store->LitIndex[0], 0, size, 32 );
|
||||
gl_vector1ui_alloc( &store->LitIndex[1], 0, size, 32 );
|
||||
|
||||
|
|
@ -259,12 +278,24 @@ static void dtr( struct gl_pipeline_stage *stage )
|
|||
struct light_stage_data *store = LIGHT_STAGE_DATA(stage);
|
||||
|
||||
if (store) {
|
||||
#if CHAN_TYPE == GL_UNSIGNED_BYTE
|
||||
gl_vector4ub_free( &store->LitColor[0] );
|
||||
gl_vector4ub_free( &store->LitColor[1] );
|
||||
gl_vector1ui_free( &store->LitIndex[0] );
|
||||
gl_vector1ui_free( &store->LitIndex[1] );
|
||||
gl_vector4ub_free( &store->LitSecondary[0] );
|
||||
gl_vector4ub_free( &store->LitSecondary[1] );
|
||||
#elif CHAN_TYPE == GL_UNSIGNED_SHORT
|
||||
gl_vector4us_free( &store->LitColor[0] );
|
||||
gl_vector4us_free( &store->LitColor[1] );
|
||||
gl_vector4us_free( &store->LitSecondary[0] );
|
||||
gl_vector4us_free( &store->LitSecondary[1] );
|
||||
#elif CHAN_TYPE == GL_FLOAT
|
||||
gl_vector4f_free( &store->LitColor[0] );
|
||||
gl_vector4f_free( &store->LitColor[1] );
|
||||
gl_vector4f_free( &store->LitSecondary[0] );
|
||||
gl_vector4f_free( &store->LitSecondary[1] );
|
||||
#endif
|
||||
gl_vector1ui_free( &store->LitIndex[0] );
|
||||
gl_vector1ui_free( &store->LitIndex[1] );
|
||||
FREE( store );
|
||||
stage->private = 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_vb_lighttmp.h,v 1.3 2001/01/17 02:49:39 keithw Exp $ */
|
||||
/* $Id: t_vb_lighttmp.h,v 1.4 2001/01/24 00:05:00 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -36,7 +36,7 @@
|
|||
# define CHECK_MATERIAL(x) (flags[x] & VERT_MATERIAL)
|
||||
# define CHECK_END_VB(x) (flags[x] & VERT_END_VB)
|
||||
# if (IDX & LIGHT_COLORMATERIAL)
|
||||
# define CMSTRIDE STRIDE_4UB(CMcolor, (4 * sizeof(GLubyte)))
|
||||
# define CMSTRIDE STRIDE_4CHAN(CMcolor, (4 * sizeof(GLchan)))
|
||||
# define CHECK_COLOR_MATERIAL(x) (flags[x] & VERT_RGBA)
|
||||
# define CHECK_VALIDATE(x) (flags[x] & (VERT_RGBA|VERT_MATERIAL))
|
||||
# define DO_ANOTHER_NORMAL(x) \
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
# define CHECK_MATERIAL(x) 0 /* no materials on array paths */
|
||||
# define CHECK_END_VB(XX) (XX >= nr)
|
||||
# if (IDX & LIGHT_COLORMATERIAL)
|
||||
# define CMSTRIDE STRIDE_4UB(CMcolor, CMstride)
|
||||
# define CMSTRIDE STRIDE_4CHAN(CMcolor, CMstride)
|
||||
# define CHECK_COLOR_MATERIAL(x) (x < nr) /* always have colormaterial */
|
||||
# define CHECK_VALIDATE(x) (x < nr)
|
||||
# define DO_ANOTHER_NORMAL(x) 0 /* always stop to recalc colormat */
|
||||
|
|
@ -307,7 +307,7 @@ static void TAG(light_rgba)( GLcontext *ctx,
|
|||
GLuint nstride = VB->NormalPtr->stride;
|
||||
const GLfloat *normal = (GLfloat *)VB->NormalPtr->data;
|
||||
|
||||
GLubyte (*CMcolor)[4];
|
||||
GLchan (*CMcolor)[4];
|
||||
GLuint CMstride;
|
||||
|
||||
GLchan (*Fcolor)[4] = (GLchan (*)[4]) store->LitColor[0].data;
|
||||
|
|
@ -508,7 +508,7 @@ static void TAG(light_fast_rgba_single)( GLcontext *ctx,
|
|||
struct light_stage_data *store = LIGHT_STAGE_DATA(stage);
|
||||
GLuint nstride = VB->NormalPtr->stride;
|
||||
const GLfloat *normal = (GLfloat *)VB->NormalPtr->data;
|
||||
GLubyte (*CMcolor)[4];
|
||||
GLchan (*CMcolor)[4];
|
||||
GLuint CMstride;
|
||||
GLchan (*Fcolor)[4] = (GLchan (*)[4]) store->LitColor[0].data;
|
||||
GLchan (*Bcolor)[4] = (GLchan (*)[4]) store->LitColor[1].data;
|
||||
|
|
@ -636,7 +636,7 @@ static void TAG(light_fast_rgba)( GLcontext *ctx,
|
|||
const GLchan *sumA = ctx->Light._BaseAlpha;
|
||||
GLuint nstride = VB->NormalPtr->stride;
|
||||
const GLfloat *normal = (GLfloat *)VB->NormalPtr->data;
|
||||
GLubyte (*CMcolor)[4];
|
||||
GLchan (*CMcolor)[4];
|
||||
GLuint CMstride;
|
||||
GLchan (*Fcolor)[4] = (GLchan (*)[4]) store->LitColor[0].data;
|
||||
GLchan (*Bcolor)[4] = (GLchan (*)[4]) store->LitColor[1].data;
|
||||
|
|
@ -770,7 +770,7 @@ static void TAG(light_ci)( GLcontext *ctx,
|
|||
const GLfloat *vertex = (GLfloat *) input->data;
|
||||
GLuint nstride = VB->NormalPtr->stride;
|
||||
const GLfloat *normal = (GLfloat *)VB->NormalPtr->data;
|
||||
GLubyte (*CMcolor)[4];
|
||||
GLchan (*CMcolor)[4];
|
||||
GLuint CMstride;
|
||||
GLuint *flags = VB->Flag;
|
||||
GLuint *indexResult[2];
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue