mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-02-15 02:20:29 +01:00
Replaced ClipEnabled[] array and _AnyClip with ClipPlanesEnabled bitmask.
This commit is contained in:
parent
23d319fc7d
commit
103bc0f75c
10 changed files with 67 additions and 64 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: attrib.c,v 1.61 2002/03/28 22:42:41 brianp Exp $ */
|
||||
/* $Id: attrib.c,v 1.62 2002/03/29 17:27:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -180,9 +180,7 @@ _mesa_PushAttrib(GLbitfield mask)
|
|||
attr->AlphaTest = ctx->Color.AlphaEnabled;
|
||||
attr->AutoNormal = ctx->Eval.AutoNormal;
|
||||
attr->Blend = ctx->Color.BlendEnabled;
|
||||
for (i=0;i<MAX_CLIP_PLANES;i++) {
|
||||
attr->ClipPlane[i] = ctx->Transform.ClipEnabled[i];
|
||||
}
|
||||
attr->ClipPlanes = ctx->Transform.ClipPlanesEnabled;
|
||||
attr->ColorMaterial = ctx->Light.ColorMaterialEnabled;
|
||||
attr->Convolution1D = ctx->Pixel.Convolution1DEnabled;
|
||||
attr->Convolution2D = ctx->Pixel.Convolution2DEnabled;
|
||||
|
|
@ -451,9 +449,10 @@ pop_enable_group(GLcontext *ctx, const struct gl_enable_attrib *enable)
|
|||
TEST_AND_UPDATE(ctx->Color.BlendEnabled, enable->Blend, GL_BLEND);
|
||||
|
||||
for (i=0;i<MAX_CLIP_PLANES;i++) {
|
||||
if (ctx->Transform.ClipEnabled[i] != enable->ClipPlane[i])
|
||||
const GLuint mask = 1 << i;
|
||||
if ((ctx->Transform.ClipPlanesEnabled & mask) != (enable->ClipPlanes & mask))
|
||||
_mesa_set_enable(ctx, (GLenum) (GL_CLIP_PLANE0 + i),
|
||||
enable->ClipPlane[i]);
|
||||
(enable->ClipPlanes & mask) ? GL_TRUE : GL_FALSE);
|
||||
}
|
||||
|
||||
TEST_AND_UPDATE(ctx->Light.ColorMaterialEnabled, enable->ColorMaterial,
|
||||
|
|
@ -1055,12 +1054,10 @@ _mesa_PopAttrib(void)
|
|||
|
||||
/* restore clip planes */
|
||||
for (i = 0; i < MAX_CLIP_PLANES; i++) {
|
||||
const GLuint mask = 1 << 1;
|
||||
const GLfloat *eyePlane = xform->EyeUserPlane[i];
|
||||
COPY_4V(ctx->Transform.EyeUserPlane[i], eyePlane);
|
||||
if (xform->ClipEnabled[i]) {
|
||||
_mesa_transform_vector( ctx->Transform._ClipUserPlane[i],
|
||||
eyePlane,
|
||||
ctx->ProjectionMatrixStack.Top->inv );
|
||||
if (xform->ClipPlanesEnabled & mask) {
|
||||
_mesa_set_enable(ctx, GL_CLIP_PLANE0 + i, GL_TRUE);
|
||||
}
|
||||
else {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: clip.c,v 1.24 2001/12/18 04:06:44 brianp Exp $ */
|
||||
/* $Id: clip.c,v 1.25 2002/03/29 17:29:12 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -90,9 +90,9 @@ _mesa_ClipPlane( GLenum plane, const GLdouble *eq )
|
|||
* matrix, and is recalculated on changes to the projection matrix by
|
||||
* code in _mesa_update_state().
|
||||
*/
|
||||
if (ctx->Transform.ClipEnabled[p]) {
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
|
||||
if (ctx->ProjectionMatrixStack.Top->flags & MAT_DIRTY)
|
||||
_math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
|
||||
_math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
|
||||
|
||||
_mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
|
||||
ctx->Transform.EyeUserPlane[p],
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: context.c,v 1.157 2002/03/19 16:47:04 brianp Exp $ */
|
||||
/* $Id: context.c,v 1.158 2002/03/29 17:27:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -1182,10 +1182,9 @@ init_attrib_groups( GLcontext *ctx )
|
|||
ctx->Transform.RescaleNormals = GL_FALSE;
|
||||
ctx->Transform.RasterPositionUnclipped = GL_FALSE;
|
||||
for (i=0;i<MAX_CLIP_PLANES;i++) {
|
||||
ctx->Transform.ClipEnabled[i] = GL_FALSE;
|
||||
ASSIGN_4V( ctx->Transform.EyeUserPlane[i], 0.0, 0.0, 0.0, 0.0 );
|
||||
}
|
||||
ctx->Transform._AnyClip = GL_FALSE;
|
||||
ctx->Transform.ClipPlanesEnabled = 0;
|
||||
|
||||
/* Viewport group */
|
||||
ctx->Viewport.X = 0;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: enable.c,v 1.58 2002/03/28 22:45:45 brianp Exp $ */
|
||||
/* $Id: enable.c,v 1.59 2002/03/29 17:27:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -207,20 +207,18 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
|
|||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
{
|
||||
GLuint p = cap - GL_CLIP_PLANE0;
|
||||
const GLuint p = cap - GL_CLIP_PLANE0;
|
||||
|
||||
if (ctx->Transform.ClipEnabled[p] == state)
|
||||
if ((ctx->Transform.ClipPlanesEnabled & (1 << p)) == (state << p))
|
||||
return;
|
||||
|
||||
FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
|
||||
ctx->Transform.ClipEnabled[p] = state;
|
||||
|
||||
if (state) {
|
||||
ctx->Transform._AnyClip++;
|
||||
ctx->Transform.ClipPlanesEnabled |= (1 << p);
|
||||
|
||||
if (ctx->ProjectionMatrixStack.Top->flags & MAT_DIRTY) {
|
||||
if (ctx->ProjectionMatrixStack.Top->flags & MAT_DIRTY)
|
||||
_math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
|
||||
}
|
||||
|
||||
/* This derived state also calculated in clip.c and
|
||||
* from _mesa_update_state() on changes to EyeUserPlane
|
||||
|
|
@ -231,7 +229,7 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
|
|||
ctx->ProjectionMatrixStack.Top->inv );
|
||||
}
|
||||
else {
|
||||
ctx->Transform._AnyClip--;
|
||||
ctx->Transform.ClipPlanesEnabled &= ~(1 << p);
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -930,7 +928,7 @@ _mesa_IsEnabled( GLenum cap )
|
|||
case GL_CLIP_PLANE3:
|
||||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
return ctx->Transform.ClipEnabled[cap-GL_CLIP_PLANE0];
|
||||
return (ctx->Transform.ClipPlanesEnabled >> (cap - GL_CLIP_PLANE0)) & 1;
|
||||
case GL_COLOR_MATERIAL:
|
||||
return ctx->Light.ColorMaterialEnabled;
|
||||
case GL_CULL_FACE:
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
/* $Id: get.c,v 1.75 2001/12/18 04:06:45 brianp Exp $ */
|
||||
/* $Id: get.c,v 1.76 2002/03/29 17:27:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 4.1
|
||||
*
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
* Copyright (C) 1999-2002 Brian Paul All Rights Reserved.
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
|
|
@ -228,7 +228,10 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
case GL_CLIP_PLANE3:
|
||||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
*params = ctx->Transform.ClipEnabled[pname-GL_CLIP_PLANE0];
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << (pname - GL_CLIP_PLANE0)))
|
||||
*params = GL_TRUE;
|
||||
else
|
||||
*params = GL_FALSE;
|
||||
break;
|
||||
case GL_COLOR_CLEAR_VALUE:
|
||||
params[0] = ctx->Color.ClearColor[0] ? GL_TRUE : GL_FALSE;
|
||||
|
|
@ -1554,7 +1557,10 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
case GL_CLIP_PLANE3:
|
||||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
*params = (GLdouble) ctx->Transform.ClipEnabled[pname-GL_CLIP_PLANE0];
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << (pname - GL_CLIP_PLANE0)))
|
||||
*params = 1.0;
|
||||
else
|
||||
*params = 0.0;
|
||||
break;
|
||||
case GL_COLOR_CLEAR_VALUE:
|
||||
params[0] = (GLdouble) CHAN_TO_FLOAT(ctx->Color.ClearColor[0]);
|
||||
|
|
@ -2790,7 +2796,10 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
|
|||
case GL_CLIP_PLANE3:
|
||||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
*params = (GLfloat) ctx->Transform.ClipEnabled[pname-GL_CLIP_PLANE0];
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << (pname - GL_CLIP_PLANE0)))
|
||||
*params = 1.0;
|
||||
else
|
||||
*params = 0.0;
|
||||
break;
|
||||
case GL_COLOR_CLEAR_VALUE:
|
||||
params[0] = CHAN_TO_FLOAT(ctx->Color.ClearColor[0]);
|
||||
|
|
@ -3996,8 +4005,10 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
case GL_CLIP_PLANE3:
|
||||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
i = (GLint) (pname - GL_CLIP_PLANE0);
|
||||
*params = (GLint) ctx->Transform.ClipEnabled[i];
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << (pname - GL_CLIP_PLANE0)))
|
||||
*params = 1;
|
||||
else
|
||||
*params = 0;
|
||||
break;
|
||||
case GL_COLOR_CLEAR_VALUE:
|
||||
params[0] = FLOAT_TO_INT( (ctx->Color.ClearColor[0]) );
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: mtypes.h,v 1.68 2002/03/23 16:33:53 brianp Exp $ */
|
||||
/* $Id: mtypes.h,v 1.69 2002/03/29 17:27:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -379,7 +379,7 @@ struct gl_enable_attrib {
|
|||
GLboolean AlphaTest;
|
||||
GLboolean AutoNormal;
|
||||
GLboolean Blend;
|
||||
GLboolean ClipPlane[MAX_CLIP_PLANES];
|
||||
GLuint ClipPlanes;
|
||||
GLboolean ColorMaterial;
|
||||
GLboolean Convolution1D;
|
||||
GLboolean Convolution2D;
|
||||
|
|
@ -1009,8 +1009,7 @@ struct gl_transform_attrib {
|
|||
GLenum MatrixMode; /* Matrix mode */
|
||||
GLfloat EyeUserPlane[MAX_CLIP_PLANES][4];
|
||||
GLfloat _ClipUserPlane[MAX_CLIP_PLANES][4]; /* derived */
|
||||
GLboolean ClipEnabled[MAX_CLIP_PLANES];
|
||||
GLubyte _AnyClip; /* How many ClipEnabled? */
|
||||
GLuint ClipPlanesEnabled; /* on/off bitmask */
|
||||
GLboolean Normalize; /* Normalize all normals? */
|
||||
GLboolean RescaleNormals; /* GL_EXT_rescale_normal */
|
||||
GLboolean RasterPositionUnclipped; /* GL_IBM_rasterpos_clip */
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: rastpos.c,v 1.35 2002/02/15 16:26:08 brianp Exp $ */
|
||||
/* $Id: rastpos.c,v 1.36 2002/03/29 17:27:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -92,7 +92,7 @@ userclip_point( GLcontext* ctx, const GLfloat v[] )
|
|||
GLuint p;
|
||||
|
||||
for (p = 0; p < ctx->Const.MaxClipPlanes; p++) {
|
||||
if (ctx->Transform.ClipEnabled[p]) {
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
|
||||
GLfloat dot = v[0] * ctx->Transform._ClipUserPlane[p][0]
|
||||
+ v[1] * ctx->Transform._ClipUserPlane[p][1]
|
||||
+ v[2] * ctx->Transform._ClipUserPlane[p][2]
|
||||
|
|
@ -344,8 +344,7 @@ raster_pos4f(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
|||
}
|
||||
|
||||
/* clip to user clipping planes */
|
||||
if (ctx->Transform._AnyClip &&
|
||||
userclip_point(ctx, clip) == 0) {
|
||||
if (ctx->Transform.ClipPlanesEnabled && !userclip_point(ctx, clip)) {
|
||||
ctx->Current.RasterPosValid = GL_FALSE;
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: state.c,v 1.78 2002/03/16 18:07:39 brianp Exp $ */
|
||||
/* $Id: state.c,v 1.79 2002/03/29 17:27:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -650,10 +650,10 @@ update_projection( GLcontext *ctx )
|
|||
/* Recompute clip plane positions in clipspace. This is also done
|
||||
* in _mesa_ClipPlane().
|
||||
*/
|
||||
if (ctx->Transform._AnyClip) {
|
||||
if (ctx->Transform.ClipPlanesEnabled) {
|
||||
GLuint p;
|
||||
for (p = 0; p < ctx->Const.MaxClipPlanes; p++) {
|
||||
if (ctx->Transform.ClipEnabled[p]) {
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
|
||||
_mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
|
||||
ctx->Transform.EyeUserPlane[p],
|
||||
ctx->ProjectionMatrixStack.Top->inv );
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_vb_cliptmp.h,v 1.14 2001/07/13 17:26:39 brianp Exp $ */
|
||||
/* $Id: t_vb_cliptmp.h,v 1.15 2002/03/29 17:27:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -140,11 +140,11 @@ TAG(clip_line)( GLcontext *ctx, GLuint i, GLuint j, GLubyte mask )
|
|||
|
||||
if (mask & CLIP_USER_BIT) {
|
||||
for (p=0;p<MAX_CLIP_PLANES;p++) {
|
||||
if (ctx->Transform.ClipEnabled[p]) {
|
||||
GLfloat a = ctx->Transform._ClipUserPlane[p][0];
|
||||
GLfloat b = ctx->Transform._ClipUserPlane[p][1];
|
||||
GLfloat c = ctx->Transform._ClipUserPlane[p][2];
|
||||
GLfloat d = ctx->Transform._ClipUserPlane[p][3];
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
|
||||
const GLfloat a = ctx->Transform._ClipUserPlane[p][0];
|
||||
const GLfloat b = ctx->Transform._ClipUserPlane[p][1];
|
||||
const GLfloat c = ctx->Transform._ClipUserPlane[p][2];
|
||||
const GLfloat d = ctx->Transform._ClipUserPlane[p][3];
|
||||
LINE_CLIP( CLIP_USER_BIT, a, b, c, d );
|
||||
}
|
||||
}
|
||||
|
|
@ -188,13 +188,13 @@ TAG(clip_tri)( GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLubyte mask )
|
|||
|
||||
if (mask & CLIP_USER_BIT) {
|
||||
for (p=0;p<MAX_CLIP_PLANES;p++) {
|
||||
if (ctx->Transform.ClipEnabled[p]) {
|
||||
GLfloat a = ctx->Transform._ClipUserPlane[p][0];
|
||||
GLfloat b = ctx->Transform._ClipUserPlane[p][1];
|
||||
GLfloat c = ctx->Transform._ClipUserPlane[p][2];
|
||||
GLfloat d = ctx->Transform._ClipUserPlane[p][3];
|
||||
POLY_CLIP( CLIP_USER_BIT, a, b, c, d );
|
||||
}
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
|
||||
const GLfloat a = ctx->Transform._ClipUserPlane[p][0];
|
||||
const GLfloat b = ctx->Transform._ClipUserPlane[p][1];
|
||||
const GLfloat c = ctx->Transform._ClipUserPlane[p][2];
|
||||
const GLfloat d = ctx->Transform._ClipUserPlane[p][3];
|
||||
POLY_CLIP( CLIP_USER_BIT, a, b, c, d );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -241,11 +241,11 @@ TAG(clip_quad)( GLcontext *ctx, GLuint v0, GLuint v1, GLuint v2, GLuint v3,
|
|||
|
||||
if (mask & CLIP_USER_BIT) {
|
||||
for (p=0;p<MAX_CLIP_PLANES;p++) {
|
||||
if (ctx->Transform.ClipEnabled[p]) {
|
||||
GLfloat a = ctx->Transform._ClipUserPlane[p][0];
|
||||
GLfloat b = ctx->Transform._ClipUserPlane[p][1];
|
||||
GLfloat c = ctx->Transform._ClipUserPlane[p][2];
|
||||
GLfloat d = ctx->Transform._ClipUserPlane[p][3];
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << p)) {
|
||||
const GLfloat a = ctx->Transform._ClipUserPlane[p][0];
|
||||
const GLfloat b = ctx->Transform._ClipUserPlane[p][1];
|
||||
const GLfloat c = ctx->Transform._ClipUserPlane[p][2];
|
||||
const GLfloat d = ctx->Transform._ClipUserPlane[p][3];
|
||||
POLY_CLIP( CLIP_USER_BIT, a, b, c, d );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_vb_vertex.c,v 1.12 2002/01/22 14:35:17 brianp Exp $ */
|
||||
/* $Id: t_vb_vertex.c,v 1.13 2002/03/29 17:27:59 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -79,7 +79,7 @@ static void NAME( GLcontext *ctx, \
|
|||
GLuint p; \
|
||||
\
|
||||
for (p = 0; p < ctx->Const.MaxClipPlanes; p++) \
|
||||
if (ctx->Transform.ClipEnabled[p]) { \
|
||||
if (ctx->Transform.ClipPlanesEnabled & (1 << p)) { \
|
||||
GLuint nr, i; \
|
||||
const GLfloat a = ctx->Transform._ClipUserPlane[p][0]; \
|
||||
const GLfloat b = ctx->Transform._ClipUserPlane[p][1]; \
|
||||
|
|
@ -211,7 +211,7 @@ static GLboolean run_vertex_stage( GLcontext *ctx,
|
|||
/* Test userclip planes. This contributes to VB->ClipMask, so
|
||||
* is essentially required to be in this stage.
|
||||
*/
|
||||
if (ctx->Transform._AnyClip) {
|
||||
if (ctx->Transform.ClipPlanesEnabled) {
|
||||
usercliptab[VB->ClipPtr->size]( ctx,
|
||||
VB->ClipPtr,
|
||||
store->clipmask,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue