mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 11:38:05 +02:00
Replace old matrix stacks with new code based on struct matrix_stack.
Moved vertex program hash table into shared context state. Implemented reference counting for vertex programs. Replaced tnl "ProjectedClip" with "Ndc" (normalized device coordinates).
This commit is contained in:
parent
645ced2955
commit
30f51ae067
24 changed files with 333 additions and 462 deletions
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: clip.c,v 1.23 2001/09/15 18:02:49 brianp Exp $ */
|
||||
/* $Id: clip.c,v 1.24 2001/12/18 04:06:44 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -74,10 +74,11 @@ _mesa_ClipPlane( GLenum plane, const GLdouble *eq )
|
|||
* clipping now takes place. The clip-space equations are recalculated
|
||||
* whenever the projection matrix changes.
|
||||
*/
|
||||
if (ctx->ModelView.flags & MAT_DIRTY)
|
||||
_math_matrix_analyse( &ctx->ModelView );
|
||||
if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY)
|
||||
_math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
|
||||
|
||||
_mesa_transform_vector( equation, equation, ctx->ModelView.inv );
|
||||
_mesa_transform_vector( equation, equation,
|
||||
ctx->ModelviewMatrixStack.Top->inv );
|
||||
|
||||
if (TEST_EQ_4V(ctx->Transform.EyeUserPlane[p], equation))
|
||||
return;
|
||||
|
|
@ -90,12 +91,12 @@ _mesa_ClipPlane( GLenum plane, const GLdouble *eq )
|
|||
* code in _mesa_update_state().
|
||||
*/
|
||||
if (ctx->Transform.ClipEnabled[p]) {
|
||||
if (ctx->ProjectionMatrix.flags & MAT_DIRTY)
|
||||
_math_matrix_analyse( &ctx->ProjectionMatrix );
|
||||
if (ctx->ProjectionMatrixStack.Top->flags & MAT_DIRTY)
|
||||
_math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
|
||||
|
||||
_mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
|
||||
ctx->Transform.EyeUserPlane[p],
|
||||
ctx->ProjectionMatrix.inv );
|
||||
ctx->ProjectionMatrixStack.Top->inv );
|
||||
}
|
||||
|
||||
if (ctx->Driver.ClipPlane)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: config.h,v 1.36 2001/11/28 17:18:36 brianp Exp $ */
|
||||
/* $Id: config.h,v 1.37 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -55,6 +55,10 @@
|
|||
/* Maximum color matrix stack depth: */
|
||||
#define MAX_COLOR_STACK_DEPTH 4
|
||||
|
||||
/* Vertex program matrix stacks: */
|
||||
#define MAX_PROGRAM_MATRICES 8
|
||||
#define MAX_PROGRAM_STACK_DEPTH 4
|
||||
|
||||
/* Maximum attribute stack depth: */
|
||||
#define MAX_ATTRIB_STACK_DEPTH 16
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: context.c,v 1.151 2001/12/17 22:41:45 brianp Exp $ */
|
||||
/* $Id: context.c,v 1.152 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -52,6 +52,7 @@
|
|||
#include "texobj.h"
|
||||
#include "mtypes.h"
|
||||
#include "varray.h"
|
||||
#include "vpstate.h"
|
||||
#include "vtxfmt.h"
|
||||
#include "math/m_translate.h"
|
||||
#include "math/m_vertices.h"
|
||||
|
|
@ -487,15 +488,13 @@ init_matrix_stack( struct matrix_stack *stack,
|
|||
stack->Depth = 0;
|
||||
stack->MaxDepth = maxDepth;
|
||||
stack->DirtyFlag = dirtyFlag;
|
||||
/* Top matrix */
|
||||
_math_matrix_ctr( &stack->Top );
|
||||
_math_matrix_alloc_inv( &stack->Top );
|
||||
/* The stack */
|
||||
stack->Stack = MALLOC(maxDepth * sizeof(GLmatrix));
|
||||
stack->Stack = CALLOC(maxDepth * sizeof(GLmatrix));
|
||||
for (i = 0; i < maxDepth; i++) {
|
||||
_math_matrix_ctr(&stack->Stack[i]);
|
||||
_math_matrix_alloc_inv(&stack->Stack[i]);
|
||||
}
|
||||
stack->Top = stack->Stack;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -503,10 +502,10 @@ static void
|
|||
free_matrix_stack( struct matrix_stack *stack )
|
||||
{
|
||||
GLuint i;
|
||||
_math_matrix_dtr( &stack->Top );
|
||||
for (i = 0; i < stack->MaxDepth; i++) {
|
||||
_math_matrix_dtr(&stack->Stack[i]);
|
||||
}
|
||||
stack->Stack = stack->Top = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -527,6 +526,7 @@ alloc_shared_state( void )
|
|||
|
||||
ss->DisplayList = _mesa_NewHashTable();
|
||||
ss->TexObjects = _mesa_NewHashTable();
|
||||
ss->VertexPrograms = _mesa_NewHashTable();
|
||||
|
||||
/* Default Texture objects */
|
||||
outOfMemory = GL_FALSE;
|
||||
|
|
@ -551,12 +551,15 @@ alloc_shared_state( void )
|
|||
outOfMemory = GL_TRUE;
|
||||
}
|
||||
|
||||
if (!ss->DisplayList || !ss->TexObjects || outOfMemory) {
|
||||
if (!ss->DisplayList || !ss->TexObjects || !ss->VertexPrograms
|
||||
|| outOfMemory) {
|
||||
/* Ran out of memory at some point. Free everything and return NULL */
|
||||
if (ss->DisplayList)
|
||||
_mesa_DeleteHashTable(ss->DisplayList);
|
||||
if (ss->TexObjects)
|
||||
_mesa_DeleteHashTable(ss->TexObjects);
|
||||
if (ss->VertexPrograms)
|
||||
_mesa_DeleteHashTable(ss->VertexPrograms);
|
||||
if (ss->Default1D)
|
||||
_mesa_free_texture_object(ss, ss->Default1D);
|
||||
if (ss->Default2D)
|
||||
|
|
@ -601,6 +604,18 @@ free_shared_state( GLcontext *ctx, struct gl_shared_state *ss )
|
|||
}
|
||||
_mesa_DeleteHashTable(ss->TexObjects);
|
||||
|
||||
/* Free vertex programs */
|
||||
while (1) {
|
||||
GLuint prog = _mesa_HashFirstEntry(ss->VertexPrograms);
|
||||
if (prog) {
|
||||
_mesa_delete_program(ctx, prog);
|
||||
}
|
||||
else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
_mesa_DeleteHashTable(ss->VertexPrograms);
|
||||
|
||||
FREE(ss);
|
||||
}
|
||||
|
||||
|
|
@ -757,7 +772,7 @@ init_2d_map( struct gl_2d_map *map, int n, const float *initial )
|
|||
static void
|
||||
init_attrib_groups( GLcontext *ctx )
|
||||
{
|
||||
GLuint i, j;
|
||||
GLuint i;
|
||||
|
||||
assert(ctx);
|
||||
|
||||
|
|
@ -791,49 +806,24 @@ init_attrib_groups( GLcontext *ctx )
|
|||
ctx->Const.MaxClipPlanes = MAX_CLIP_PLANES;
|
||||
ctx->Const.MaxLights = MAX_LIGHTS;
|
||||
|
||||
/* Modelview matrix */
|
||||
_math_matrix_ctr( &ctx->ModelView );
|
||||
_math_matrix_alloc_inv( &ctx->ModelView );
|
||||
/* Initialize matrix stacks */
|
||||
init_matrix_stack(&ctx->ModelviewMatrixStack, MAX_MODELVIEW_STACK_DEPTH,
|
||||
_NEW_MODELVIEW);
|
||||
init_matrix_stack(&ctx->ProjectionMatrixStack, MAX_PROJECTION_STACK_DEPTH,
|
||||
_NEW_PROJECTION);
|
||||
init_matrix_stack(&ctx->ColorMatrixStack, MAX_COLOR_STACK_DEPTH,
|
||||
_NEW_COLOR_MATRIX);
|
||||
for (i = 0; i < MAX_TEXTURE_UNITS; i++)
|
||||
init_matrix_stack(&ctx->TextureMatrixStack[i], MAX_TEXTURE_STACK_DEPTH,
|
||||
_NEW_TEXTURE_MATRIX);
|
||||
for (i = 0; i < MAX_PROGRAM_MATRICES; i++)
|
||||
init_matrix_stack(&ctx->ProgramMatrixStack[i], MAX_PROGRAM_STACK_DEPTH,
|
||||
_NEW_TRACK_MATRIX);
|
||||
ctx->CurrentStack = &ctx->ModelviewMatrixStack;
|
||||
|
||||
ctx->ModelViewStackDepth = 0;
|
||||
for (i = 0; i < MAX_MODELVIEW_STACK_DEPTH - 1; i++) {
|
||||
_math_matrix_ctr( &ctx->ModelViewStack[i] );
|
||||
_math_matrix_alloc_inv( &ctx->ModelViewStack[i] );
|
||||
}
|
||||
#if 0
|
||||
init_matrix_stack(&ctx->ModelviewStack, 32, _NEW_MODELVIEW);
|
||||
#endif
|
||||
|
||||
/* Projection matrix - need inv for user clipping in clip space*/
|
||||
_math_matrix_ctr( &ctx->ProjectionMatrix );
|
||||
_math_matrix_alloc_inv( &ctx->ProjectionMatrix );
|
||||
|
||||
ctx->ProjectionStackDepth = 0;
|
||||
for (i = 0; i < MAX_PROJECTION_STACK_DEPTH - 1; i++) {
|
||||
_math_matrix_ctr( &ctx->ProjectionStack[i] );
|
||||
_math_matrix_alloc_inv( &ctx->ProjectionStack[i] );
|
||||
}
|
||||
|
||||
/* Derived ModelProject matrix */
|
||||
/* Init combined Modelview*Projection matrix */
|
||||
_math_matrix_ctr( &ctx->_ModelProjectMatrix );
|
||||
|
||||
/* Texture matrix */
|
||||
for (i = 0; i < MAX_TEXTURE_UNITS; i++) {
|
||||
_math_matrix_ctr( &ctx->TextureMatrix[i] );
|
||||
ctx->TextureStackDepth[i] = 0;
|
||||
for (j = 0; j < MAX_TEXTURE_STACK_DEPTH - 1; j++) {
|
||||
_math_matrix_ctr( &ctx->TextureStack[i][j] );
|
||||
ctx->TextureStack[i][j].inv = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/* Color matrix */
|
||||
_math_matrix_ctr(&ctx->ColorMatrix);
|
||||
ctx->ColorStackDepth = 0;
|
||||
for (j = 0; j < MAX_COLOR_STACK_DEPTH - 1; j++) {
|
||||
_math_matrix_ctr(&ctx->ColorStack[j]);
|
||||
}
|
||||
|
||||
/* Accumulate buffer group */
|
||||
ASSIGN_4V( ctx->Accum.ClearColor, 0.0, 0.0, 0.0, 0.0 );
|
||||
|
||||
|
|
@ -1319,8 +1309,8 @@ init_attrib_groups( GLcontext *ctx )
|
|||
_mesa_init_colortable(&ctx->ProxyPostColorMatrixColorTable);
|
||||
|
||||
/* GL_NV_vertex_program */
|
||||
ctx->VertexProgram.Binding = 0;
|
||||
ctx->VertexProgram.HashTable = _mesa_NewHashTable();
|
||||
ctx->VertexProgram.Current = NULL;
|
||||
ctx->VertexProgram.CurrentID = 0;
|
||||
ctx->VertexProgram.Enabled = GL_FALSE;
|
||||
ctx->VertexProgram.PointSizeEnabled = GL_FALSE;
|
||||
ctx->VertexProgram.TwoSideEnabled = GL_FALSE;
|
||||
|
|
@ -1643,39 +1633,34 @@ void
|
|||
_mesa_free_context_data( GLcontext *ctx )
|
||||
{
|
||||
struct gl_shine_tab *s, *tmps;
|
||||
GLuint i, j;
|
||||
GLuint i;
|
||||
|
||||
/* if we're destroying the current context, unbind it first */
|
||||
if (ctx == _mesa_get_current_context()) {
|
||||
_mesa_make_current(NULL, NULL);
|
||||
}
|
||||
|
||||
#if 0
|
||||
free_matrix_stack(&ctx->ModelviewStack);
|
||||
#endif
|
||||
|
||||
_math_matrix_dtr( &ctx->ModelView );
|
||||
for (i = 0; i < MAX_MODELVIEW_STACK_DEPTH - 1; i++) {
|
||||
_math_matrix_dtr( &ctx->ModelViewStack[i] );
|
||||
}
|
||||
_math_matrix_dtr( &ctx->ProjectionMatrix );
|
||||
for (i = 0; i < MAX_PROJECTION_STACK_DEPTH - 1; i++) {
|
||||
_math_matrix_dtr( &ctx->ProjectionStack[i] );
|
||||
}
|
||||
for (i = 0; i < MAX_TEXTURE_UNITS; i++) {
|
||||
_math_matrix_dtr( &ctx->TextureMatrix[i] );
|
||||
for (j = 0; j < MAX_TEXTURE_STACK_DEPTH - 1; j++) {
|
||||
_math_matrix_dtr( &ctx->TextureStack[i][j] );
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Free transformation matrix stacks
|
||||
*/
|
||||
free_matrix_stack(&ctx->ModelviewMatrixStack);
|
||||
free_matrix_stack(&ctx->ProjectionMatrixStack);
|
||||
free_matrix_stack(&ctx->ColorMatrixStack);
|
||||
for (i = 0; i < MAX_TEXTURE_UNITS; i++)
|
||||
free_matrix_stack(&ctx->TextureMatrixStack[i]);
|
||||
for (i = 0; i < MAX_PROGRAM_MATRICES; i++)
|
||||
free_matrix_stack(&ctx->ProgramMatrixStack[i]);
|
||||
/* combined Modelview*Projection matrix */
|
||||
_math_matrix_dtr( &ctx->_ModelProjectMatrix );
|
||||
|
||||
_math_matrix_dtr(&ctx->ColorMatrix);
|
||||
for (j = 0; j < MAX_COLOR_STACK_DEPTH - 1; j++) {
|
||||
_math_matrix_dtr(&ctx->ColorStack[j]);
|
||||
|
||||
if (ctx->VertexProgram.Current) {
|
||||
ctx->VertexProgram.Current->RefCount--;
|
||||
if (ctx->VertexProgram.Current->RefCount <= 0)
|
||||
_mesa_delete_program(ctx, ctx->VertexProgram.CurrentID);
|
||||
}
|
||||
|
||||
/* Shared context state (display lists, textures, etc) */
|
||||
_glthread_LOCK_MUTEX(ctx->Shared->Mutex);
|
||||
ctx->Shared->RefCount--;
|
||||
assert(ctx->Shared->RefCount >= 0);
|
||||
|
|
@ -1685,6 +1670,7 @@ _mesa_free_context_data( GLcontext *ctx )
|
|||
free_shared_state( ctx, ctx->Shared );
|
||||
}
|
||||
|
||||
/* Free lighting shininess exponentiation table */
|
||||
foreach_s( s, tmps, ctx->_ShineTabList ) {
|
||||
FREE( s );
|
||||
}
|
||||
|
|
@ -1744,9 +1730,6 @@ _mesa_free_context_data( GLcontext *ctx )
|
|||
|
||||
_mesa_extensions_dtr(ctx);
|
||||
|
||||
/* GL_NV_vertex_program */
|
||||
_mesa_DeleteHashTable(ctx->VertexProgram.HashTable);
|
||||
|
||||
FREE(ctx->Exec);
|
||||
FREE(ctx->Save);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: dlist.c,v 1.82 2001/12/14 03:13:04 brianp Exp $ */
|
||||
/* $Id: dlist.c,v 1.83 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -5999,6 +5999,10 @@ _mesa_init_dlist_table( struct _glapi_table *table, GLuint tableSize )
|
|||
|
||||
/* 233. GL_NV_vertex_program */
|
||||
/* XXX Need to implement vertex program in display lists !!! */
|
||||
/* The following commands DO NOT go into display lists:
|
||||
* AreProgramsResidentNV, IsProgramNV, GenProgramsNV, DeleteProgramsNV,
|
||||
* VertexAttribPointerNV
|
||||
*/
|
||||
table->BindProgramNV = _mesa_BindProgramNV;
|
||||
table->DeleteProgramsNV = _mesa_DeleteProgramsNV;
|
||||
table->ExecuteProgramNV = _mesa_ExecuteProgramNV;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: enable.c,v 1.51 2001/12/14 02:50:01 brianp Exp $ */
|
||||
/* $Id: enable.c,v 1.52 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -207,7 +207,7 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
|
|||
case GL_CLIP_PLANE4:
|
||||
case GL_CLIP_PLANE5:
|
||||
{
|
||||
GLuint p = cap-GL_CLIP_PLANE0;
|
||||
GLuint p = cap - GL_CLIP_PLANE0;
|
||||
|
||||
if (ctx->Transform.ClipEnabled[p] == state)
|
||||
return;
|
||||
|
|
@ -218,8 +218,8 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
|
|||
if (state) {
|
||||
ctx->Transform._AnyClip++;
|
||||
|
||||
if (ctx->ProjectionMatrix.flags & MAT_DIRTY) {
|
||||
_math_matrix_analyse( &ctx->ProjectionMatrix );
|
||||
if (ctx->ProjectionMatrixStack.Top->flags & MAT_DIRTY) {
|
||||
_math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
|
||||
}
|
||||
|
||||
/* This derived state also calculated in clip.c and
|
||||
|
|
@ -228,7 +228,7 @@ void _mesa_set_enable( GLcontext *ctx, GLenum cap, GLboolean state )
|
|||
*/
|
||||
_mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
|
||||
ctx->Transform.EyeUserPlane[p],
|
||||
ctx->ProjectionMatrix.inv );
|
||||
ctx->ProjectionMatrixStack.Top->inv );
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: get.c,v 1.74 2001/12/14 02:55:08 brianp Exp $ */
|
||||
/* $Id: get.c,v 1.75 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -616,11 +616,11 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
break;
|
||||
case GL_MODELVIEW_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = FLOAT_TO_BOOL(ctx->ModelView.m[i]);
|
||||
params[i] = FLOAT_TO_BOOL(ctx->ModelviewMatrixStack.Top->m[i]);
|
||||
}
|
||||
break;
|
||||
case GL_MODELVIEW_STACK_DEPTH:
|
||||
*params = INT_TO_BOOL(ctx->ModelViewStackDepth + 1);
|
||||
*params = INT_TO_BOOL(ctx->ModelviewMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_NAME_STACK_DEPTH:
|
||||
*params = INT_TO_BOOL(ctx->Select.NameStackDepth);
|
||||
|
|
@ -743,11 +743,11 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
break;
|
||||
case GL_PROJECTION_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = FLOAT_TO_BOOL(ctx->ProjectionMatrix.m[i]);
|
||||
params[i] = FLOAT_TO_BOOL(ctx->ProjectionMatrixStack.Top->m[i]);
|
||||
}
|
||||
break;
|
||||
case GL_PROJECTION_STACK_DEPTH:
|
||||
*params = INT_TO_BOOL(ctx->ProjectionStackDepth + 1);
|
||||
*params = INT_TO_BOOL(ctx->ProjectionMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_READ_BUFFER:
|
||||
*params = ENUM_TO_BOOL(ctx->Pixel.ReadBuffer);
|
||||
|
|
@ -868,11 +868,11 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
case GL_TEXTURE_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] =
|
||||
FLOAT_TO_BOOL(ctx->TextureMatrix[texUnit].m[i]);
|
||||
FLOAT_TO_BOOL(ctx->TextureMatrixStack[texUnit].Top->m[i]);
|
||||
}
|
||||
break;
|
||||
case GL_TEXTURE_STACK_DEPTH:
|
||||
*params = INT_TO_BOOL(ctx->TextureStackDepth[texUnit] + 1);
|
||||
*params = INT_TO_BOOL(ctx->TextureMatrixStack[texUnit].Depth + 1);
|
||||
break;
|
||||
case GL_UNPACK_ALIGNMENT:
|
||||
*params = INT_TO_BOOL(ctx->Unpack.Alignment);
|
||||
|
|
@ -1042,7 +1042,7 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->ColorMatrix.m);
|
||||
_math_transposef(tm, ctx->ColorMatrixStack.Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = FLOAT_TO_BOOL(tm[i]);
|
||||
}
|
||||
|
|
@ -1052,7 +1052,7 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->ModelView.m);
|
||||
_math_transposef(tm, ctx->ModelviewMatrixStack.Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = FLOAT_TO_BOOL(tm[i]);
|
||||
}
|
||||
|
|
@ -1062,7 +1062,7 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->ProjectionMatrix.m);
|
||||
_math_transposef(tm, ctx->ProjectionMatrixStack.Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = FLOAT_TO_BOOL(tm[i]);
|
||||
}
|
||||
|
|
@ -1072,7 +1072,7 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->TextureMatrix[texUnit].m);
|
||||
_math_transposef(tm, ctx->TextureMatrixStack[texUnit].Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = FLOAT_TO_BOOL(tm[i]);
|
||||
}
|
||||
|
|
@ -1111,11 +1111,11 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
/* GL_SGI_color_matrix (also in 1.2 imaging) */
|
||||
case GL_COLOR_MATRIX_SGI:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = FLOAT_TO_BOOL(ctx->ColorMatrix.m[i]);
|
||||
params[i] = FLOAT_TO_BOOL(ctx->ColorMatrixStack.Top->m[i]);
|
||||
}
|
||||
break;
|
||||
case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
|
||||
*params = INT_TO_BOOL(ctx->ColorStackDepth + 1);
|
||||
*params = INT_TO_BOOL(ctx->ColorMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
|
||||
*params = FLOAT_TO_BOOL(MAX_COLOR_STACK_DEPTH);
|
||||
|
|
@ -1334,11 +1334,11 @@ _mesa_GetBooleanv( GLenum pname, GLboolean *params )
|
|||
/* GL_NV_vertex_program */
|
||||
case GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV:
|
||||
CHECK_EXTENSION_B(NV_vertex_program);
|
||||
*params = VP_MAX_MATRIX_DEPTH;
|
||||
*params = MAX_PROGRAM_STACK_DEPTH;
|
||||
break;
|
||||
case GL_MAX_TRACK_MATRICES_NV:
|
||||
CHECK_EXTENSION_B(NV_vertex_program);
|
||||
*params = VP_MAX_MATRICES;
|
||||
*params = MAX_PROGRAM_MATRICES;
|
||||
break;
|
||||
case GL_VERTEX_PROGRAM_NV:
|
||||
CHECK_EXTENSION_B(NV_vertex_program);
|
||||
|
|
@ -1942,11 +1942,11 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
break;
|
||||
case GL_MODELVIEW_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLdouble) ctx->ModelView.m[i];
|
||||
params[i] = (GLdouble) ctx->ModelviewMatrixStack.Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_MODELVIEW_STACK_DEPTH:
|
||||
*params = (GLdouble) (ctx->ModelViewStackDepth + 1);
|
||||
*params = (GLdouble) (ctx->ModelviewMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_NAME_STACK_DEPTH:
|
||||
*params = (GLdouble) ctx->Select.NameStackDepth;
|
||||
|
|
@ -2069,11 +2069,11 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
break;
|
||||
case GL_PROJECTION_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLdouble) ctx->ProjectionMatrix.m[i];
|
||||
params[i] = (GLdouble) ctx->ProjectionMatrixStack.Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_PROJECTION_STACK_DEPTH:
|
||||
*params = (GLdouble) (ctx->ProjectionStackDepth + 1);
|
||||
*params = (GLdouble) (ctx->ProjectionMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_READ_BUFFER:
|
||||
*params = ENUM_TO_DOUBLE(ctx->Pixel.ReadBuffer);
|
||||
|
|
@ -2191,11 +2191,11 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
break;
|
||||
case GL_TEXTURE_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLdouble) ctx->TextureMatrix[texUnit].m[i];
|
||||
params[i] = (GLdouble) ctx->TextureMatrixStack[texUnit].Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_TEXTURE_STACK_DEPTH:
|
||||
*params = (GLdouble) (ctx->TextureStackDepth[texUnit] + 1);
|
||||
*params = (GLdouble) (ctx->TextureMatrixStack[texUnit].Depth + 1);
|
||||
break;
|
||||
case GL_UNPACK_ALIGNMENT:
|
||||
*params = (GLdouble) ctx->Unpack.Alignment;
|
||||
|
|
@ -2368,7 +2368,7 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->ColorMatrix.m);
|
||||
_math_transposef(tm, ctx->ColorMatrixStack.Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLdouble) tm[i];
|
||||
}
|
||||
|
|
@ -2378,7 +2378,7 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->ModelView.m);
|
||||
_math_transposef(tm, ctx->ModelviewMatrixStack.Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLdouble) tm[i];
|
||||
}
|
||||
|
|
@ -2388,7 +2388,7 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->ProjectionMatrix.m);
|
||||
_math_transposef(tm, ctx->ProjectionMatrixStack.Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLdouble) tm[i];
|
||||
}
|
||||
|
|
@ -2398,7 +2398,7 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->TextureMatrix[texUnit].m);
|
||||
_math_transposef(tm, ctx->TextureMatrixStack[texUnit].Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLdouble) tm[i];
|
||||
}
|
||||
|
|
@ -2437,11 +2437,11 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
/* GL_SGI_color_matrix (also in 1.2 imaging) */
|
||||
case GL_COLOR_MATRIX_SGI:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLdouble) ctx->ColorMatrix.m[i];
|
||||
params[i] = (GLdouble) ctx->ColorMatrixStack.Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
|
||||
*params = (GLdouble) (ctx->ColorStackDepth + 1);
|
||||
*params = (GLdouble) (ctx->ColorMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
|
||||
*params = (GLdouble) MAX_COLOR_STACK_DEPTH;
|
||||
|
|
@ -2658,7 +2658,7 @@ _mesa_GetDoublev( GLenum pname, GLdouble *params )
|
|||
break;
|
||||
|
||||
/* GL_NV_vertex_program */
|
||||
/* to do */
|
||||
/* XXX to do */
|
||||
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glGetDoublev" );
|
||||
|
|
@ -3178,11 +3178,11 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
|
|||
break;
|
||||
case GL_MODELVIEW_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = ctx->ModelView.m[i];
|
||||
params[i] = ctx->ModelviewMatrixStack.Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_MODELVIEW_STACK_DEPTH:
|
||||
*params = (GLfloat) (ctx->ModelViewStackDepth + 1);
|
||||
*params = (GLfloat) (ctx->ModelviewMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_NAME_STACK_DEPTH:
|
||||
*params = (GLfloat) ctx->Select.NameStackDepth;
|
||||
|
|
@ -3307,11 +3307,11 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
|
|||
break;
|
||||
case GL_PROJECTION_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = ctx->ProjectionMatrix.m[i];
|
||||
params[i] = ctx->ProjectionMatrixStack.Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_PROJECTION_STACK_DEPTH:
|
||||
*params = (GLfloat) (ctx->ProjectionStackDepth + 1);
|
||||
*params = (GLfloat) (ctx->ProjectionMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_READ_BUFFER:
|
||||
*params = ENUM_TO_FLOAT(ctx->Pixel.ReadBuffer);
|
||||
|
|
@ -3429,11 +3429,11 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
|
|||
break;
|
||||
case GL_TEXTURE_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = ctx->TextureMatrix[texUnit].m[i];
|
||||
params[i] = ctx->TextureMatrixStack[texUnit].Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_TEXTURE_STACK_DEPTH:
|
||||
*params = (GLfloat) (ctx->TextureStackDepth[texUnit] + 1);
|
||||
*params = (GLfloat) (ctx->TextureMatrixStack[texUnit].Depth + 1);
|
||||
break;
|
||||
case GL_UNPACK_ALIGNMENT:
|
||||
*params = (GLfloat) ctx->Unpack.Alignment;
|
||||
|
|
@ -3605,16 +3605,16 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
|
|||
|
||||
/* GL_ARB_transpose_matrix */
|
||||
case GL_TRANSPOSE_COLOR_MATRIX_ARB:
|
||||
_math_transposef(params, ctx->ColorMatrix.m);
|
||||
_math_transposef(params, ctx->ColorMatrixStack.Top->m);
|
||||
break;
|
||||
case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
|
||||
_math_transposef(params, ctx->ModelView.m);
|
||||
_math_transposef(params, ctx->ModelviewMatrixStack.Top->m);
|
||||
break;
|
||||
case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
|
||||
_math_transposef(params, ctx->ProjectionMatrix.m);
|
||||
_math_transposef(params, ctx->ProjectionMatrixStack.Top->m);
|
||||
break;
|
||||
case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
|
||||
_math_transposef(params, ctx->TextureMatrix[texUnit].m);
|
||||
_math_transposef(params, ctx->TextureMatrixStack[texUnit].Top->m);
|
||||
break;
|
||||
|
||||
/* GL_HP_occlusion_test */
|
||||
|
|
@ -3649,11 +3649,11 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
|
|||
/* GL_SGI_color_matrix (also in 1.2 imaging) */
|
||||
case GL_COLOR_MATRIX_SGI:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = ctx->ColorMatrix.m[i];
|
||||
params[i] = ctx->ColorMatrixStack.Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
|
||||
*params = (GLfloat) (ctx->ColorStackDepth + 1);
|
||||
*params = (GLfloat) (ctx->ColorMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
|
||||
*params = (GLfloat) MAX_COLOR_STACK_DEPTH;
|
||||
|
|
@ -3870,7 +3870,7 @@ _mesa_GetFloatv( GLenum pname, GLfloat *params )
|
|||
break;
|
||||
|
||||
/* GL_NV_vertex_program */
|
||||
/* to do */
|
||||
/* XXX to do */
|
||||
|
||||
default:
|
||||
GET_FLOAT_ERROR;
|
||||
|
|
@ -4385,11 +4385,11 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
break;
|
||||
case GL_MODELVIEW_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLint) ctx->ModelView.m[i];
|
||||
params[i] = (GLint) ctx->ModelviewMatrixStack.Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_MODELVIEW_STACK_DEPTH:
|
||||
*params = (GLint) (ctx->ModelViewStackDepth + 1);
|
||||
*params = (GLint) (ctx->ModelviewMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_NAME_STACK_DEPTH:
|
||||
*params = (GLint) ctx->Select.NameStackDepth;
|
||||
|
|
@ -4512,11 +4512,11 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
break;
|
||||
case GL_PROJECTION_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLint) ctx->ProjectionMatrix.m[i];
|
||||
params[i] = (GLint) ctx->ProjectionMatrixStack.Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_PROJECTION_STACK_DEPTH:
|
||||
*params = (GLint) (ctx->ProjectionStackDepth + 1);
|
||||
*params = (GLint) (ctx->ProjectionMatrixStack.Depth + 1);
|
||||
break;
|
||||
case GL_READ_BUFFER:
|
||||
*params = (GLint) ctx->Pixel.ReadBuffer;
|
||||
|
|
@ -4634,11 +4634,11 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
break;
|
||||
case GL_TEXTURE_MATRIX:
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLint) ctx->TextureMatrix[texUnit].m[i];
|
||||
params[i] = (GLint) ctx->TextureMatrixStack[texUnit].Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_TEXTURE_STACK_DEPTH:
|
||||
*params = (GLint) (ctx->TextureStackDepth[texUnit] + 1);
|
||||
*params = (GLint) (ctx->TextureMatrixStack[texUnit].Depth + 1);
|
||||
break;
|
||||
case GL_UNPACK_ALIGNMENT:
|
||||
*params = ctx->Unpack.Alignment;
|
||||
|
|
@ -4813,7 +4813,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->ColorMatrix.m);
|
||||
_math_transposef(tm, ctx->ColorMatrixStack.Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLint) tm[i];
|
||||
}
|
||||
|
|
@ -4823,7 +4823,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->ModelView.m);
|
||||
_math_transposef(tm, ctx->ModelviewMatrixStack.Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLint) tm[i];
|
||||
}
|
||||
|
|
@ -4833,7 +4833,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->ProjectionMatrix.m);
|
||||
_math_transposef(tm, ctx->ProjectionMatrixStack.Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLint) tm[i];
|
||||
}
|
||||
|
|
@ -4843,7 +4843,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
{
|
||||
GLfloat tm[16];
|
||||
GLuint i;
|
||||
_math_transposef(tm, ctx->TextureMatrix[texUnit].m);
|
||||
_math_transposef(tm, ctx->TextureMatrixStack[texUnit].Top->m);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLint) tm[i];
|
||||
}
|
||||
|
|
@ -4886,12 +4886,12 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
case GL_COLOR_MATRIX_SGI:
|
||||
CHECK_EXTENSION_I(SGI_color_matrix);
|
||||
for (i=0;i<16;i++) {
|
||||
params[i] = (GLint) ctx->ColorMatrix.m[i];
|
||||
params[i] = (GLint) ctx->ColorMatrixStack.Top->m[i];
|
||||
}
|
||||
break;
|
||||
case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
|
||||
CHECK_EXTENSION_I(SGI_color_matrix);
|
||||
*params = ctx->ColorStackDepth + 1;
|
||||
*params = ctx->ColorMatrixStack.Depth + 1;
|
||||
break;
|
||||
case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
|
||||
CHECK_EXTENSION_I(SGI_color_matrix);
|
||||
|
|
@ -5121,7 +5121,7 @@ _mesa_GetIntegerv( GLenum pname, GLint *params )
|
|||
break;
|
||||
|
||||
/* GL_NV_vertex_program */
|
||||
/* to do */
|
||||
/* XXX to do */
|
||||
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glGetIntegerv" );
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: light.c,v 1.47 2001/12/14 02:50:02 brianp Exp $ */
|
||||
/* $Id: light.c,v 1.48 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -117,7 +117,7 @@ _mesa_Lightfv( GLenum light, GLenum pname, const GLfloat *params )
|
|||
case GL_POSITION: {
|
||||
GLfloat tmp[4];
|
||||
/* transform position by ModelView matrix */
|
||||
TRANSFORM_POINT( tmp, ctx->ModelView.m, params );
|
||||
TRANSFORM_POINT( tmp, ctx->ModelviewMatrixStack.Top->m, params );
|
||||
if (TEST_EQ_4V(l->EyePosition, tmp))
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_LIGHT);
|
||||
|
|
@ -131,10 +131,10 @@ _mesa_Lightfv( GLenum light, GLenum pname, const GLfloat *params )
|
|||
case GL_SPOT_DIRECTION: {
|
||||
GLfloat tmp[4];
|
||||
/* transform direction by inverse modelview */
|
||||
if (ctx->ModelView.flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( &ctx->ModelView );
|
||||
if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
|
||||
}
|
||||
TRANSFORM_NORMAL( tmp, params, ctx->ModelView.inv );
|
||||
TRANSFORM_NORMAL( tmp, params, ctx->ModelviewMatrixStack.Top->inv );
|
||||
if (TEST_EQ_3V(l->EyeDirection, tmp))
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_LIGHT);
|
||||
|
|
@ -1254,7 +1254,7 @@ _mesa_compute_light_positions( GLcontext *ctx )
|
|||
COPY_3V( ctx->_EyeZDir, eye_z );
|
||||
}
|
||||
else {
|
||||
TRANSFORM_NORMAL( ctx->_EyeZDir, eye_z, ctx->ModelView.m );
|
||||
TRANSFORM_NORMAL( ctx->_EyeZDir, eye_z, ctx->ModelviewMatrixStack.Top->m );
|
||||
}
|
||||
|
||||
foreach (light, &ctx->Light.EnabledList) {
|
||||
|
|
@ -1263,7 +1263,7 @@ _mesa_compute_light_positions( GLcontext *ctx )
|
|||
COPY_4FV( light->_Position, light->EyePosition );
|
||||
}
|
||||
else {
|
||||
TRANSFORM_POINT( light->_Position, ctx->ModelView.inv,
|
||||
TRANSFORM_POINT( light->_Position, ctx->ModelviewMatrixStack.Top->inv,
|
||||
light->EyePosition );
|
||||
}
|
||||
|
||||
|
|
@ -1287,7 +1287,7 @@ _mesa_compute_light_positions( GLcontext *ctx )
|
|||
else {
|
||||
TRANSFORM_NORMAL( light->_NormDirection,
|
||||
light->EyeDirection,
|
||||
ctx->ModelView.m);
|
||||
ctx->ModelviewMatrixStack.Top->m);
|
||||
}
|
||||
|
||||
NORMALIZE_3FV( light->_NormDirection );
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: matrix.c,v 1.37 2001/12/14 02:50:02 brianp Exp $ */
|
||||
/* $Id: matrix.c,v 1.38 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.5
|
||||
* Version: 4.1
|
||||
*
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
|
|
@ -52,61 +52,14 @@
|
|||
#endif
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/* API functions */
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
#define GET_ACTIVE_MATRIX(mat, where) \
|
||||
do { \
|
||||
GLint n; \
|
||||
if (MESA_VERBOSE&VERBOSE_API) fprintf(stderr, "%s\n", where); \
|
||||
switch (ctx->Transform.MatrixMode) { \
|
||||
case GL_MODELVIEW: \
|
||||
mat = &ctx->ModelView; \
|
||||
ctx->NewState |= _NEW_MODELVIEW; \
|
||||
break; \
|
||||
case GL_PROJECTION: \
|
||||
mat = &ctx->ProjectionMatrix; \
|
||||
ctx->NewState |= _NEW_PROJECTION; \
|
||||
break; \
|
||||
case GL_TEXTURE: \
|
||||
mat = &ctx->TextureMatrix[ctx->Texture.CurrentUnit]; \
|
||||
ctx->NewState |= _NEW_TEXTURE_MATRIX; \
|
||||
break; \
|
||||
case GL_COLOR: \
|
||||
mat = &ctx->ColorMatrix; \
|
||||
ctx->NewState |= _NEW_COLOR_MATRIX; \
|
||||
break; \
|
||||
case GL_MATRIX0_NV: \
|
||||
case GL_MATRIX1_NV: \
|
||||
case GL_MATRIX2_NV: \
|
||||
case GL_MATRIX3_NV: \
|
||||
case GL_MATRIX4_NV: \
|
||||
case GL_MATRIX5_NV: \
|
||||
case GL_MATRIX6_NV: \
|
||||
case GL_MATRIX7_NV: \
|
||||
n = ctx->Transform.MatrixMode - GL_MATRIX0_NV; \
|
||||
mat = &ctx->VertexProgram.Matrix[n]; \
|
||||
ctx->NewState |= _NEW_TRACK_MATRIX; \
|
||||
break; \
|
||||
default: \
|
||||
_mesa_problem(ctx, where); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
|
||||
void
|
||||
_mesa_Frustum( GLdouble left, GLdouble right,
|
||||
GLdouble bottom, GLdouble top,
|
||||
GLdouble nearval, GLdouble farval )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLmatrix *mat = 0;
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
|
||||
GET_ACTIVE_MATRIX(mat, "glFrustrum");
|
||||
|
||||
if (nearval <= 0.0 ||
|
||||
farval <= 0.0 ||
|
||||
nearval == farval ||
|
||||
|
|
@ -117,9 +70,11 @@ _mesa_Frustum( GLdouble left, GLdouble right,
|
|||
return;
|
||||
}
|
||||
|
||||
_math_matrix_frustum( mat, (GLfloat) left, (GLfloat) right,
|
||||
_math_matrix_frustum( ctx->CurrentStack->Top,
|
||||
(GLfloat) left, (GLfloat) right,
|
||||
(GLfloat) bottom, (GLfloat) top,
|
||||
(GLfloat) nearval, (GLfloat) farval );
|
||||
ctx->NewState |= ctx->CurrentStack->DirtyFlag;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -129,11 +84,8 @@ _mesa_Ortho( GLdouble left, GLdouble right,
|
|||
GLdouble nearval, GLdouble farval )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLmatrix *mat = 0;
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
|
||||
GET_ACTIVE_MATRIX(mat, "glOrtho");
|
||||
|
||||
if (left == right ||
|
||||
bottom == top ||
|
||||
nearval == farval)
|
||||
|
|
@ -142,9 +94,11 @@ _mesa_Ortho( GLdouble left, GLdouble right,
|
|||
return;
|
||||
}
|
||||
|
||||
_math_matrix_ortho( mat, (GLfloat) left, (GLfloat) right,
|
||||
_math_matrix_ortho( ctx->CurrentStack->Top,
|
||||
(GLfloat) left, (GLfloat) right,
|
||||
(GLfloat) bottom, (GLfloat) top,
|
||||
(GLfloat) nearval, (GLfloat) farval );
|
||||
ctx->NewState |= ctx->CurrentStack->DirtyFlag;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -154,32 +108,43 @@ _mesa_MatrixMode( GLenum mode )
|
|||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_BEGIN_END(ctx);
|
||||
|
||||
if (ctx->Transform.MatrixMode == mode)
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
|
||||
|
||||
switch (mode) {
|
||||
case GL_MATRIX0_NV:
|
||||
case GL_MATRIX1_NV:
|
||||
case GL_MATRIX2_NV:
|
||||
case GL_MATRIX3_NV:
|
||||
case GL_MATRIX4_NV:
|
||||
case GL_MATRIX5_NV:
|
||||
case GL_MATRIX6_NV:
|
||||
case GL_MATRIX7_NV:
|
||||
if (!ctx->Extensions.NV_vertex_program) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glMatrixMode" );
|
||||
return;
|
||||
}
|
||||
/* FALL-THROUGH */
|
||||
case GL_MODELVIEW:
|
||||
case GL_PROJECTION:
|
||||
case GL_TEXTURE:
|
||||
case GL_COLOR:
|
||||
if (ctx->Transform.MatrixMode == mode)
|
||||
return;
|
||||
ctx->Transform.MatrixMode = mode;
|
||||
FLUSH_VERTICES(ctx, _NEW_TRANSFORM);
|
||||
break;
|
||||
default:
|
||||
case GL_MODELVIEW:
|
||||
ctx->CurrentStack = &ctx->ModelviewMatrixStack;
|
||||
break;
|
||||
case GL_PROJECTION:
|
||||
ctx->CurrentStack = &ctx->ProjectionMatrixStack;
|
||||
break;
|
||||
case GL_TEXTURE:
|
||||
ctx->CurrentStack = &ctx->TextureMatrixStack[ctx->Texture.CurrentUnit];
|
||||
break;
|
||||
case GL_COLOR:
|
||||
ctx->CurrentStack = &ctx->ColorMatrixStack;
|
||||
break;
|
||||
case GL_MATRIX0_NV:
|
||||
case GL_MATRIX1_NV:
|
||||
case GL_MATRIX2_NV:
|
||||
case GL_MATRIX3_NV:
|
||||
case GL_MATRIX4_NV:
|
||||
case GL_MATRIX5_NV:
|
||||
case GL_MATRIX6_NV:
|
||||
case GL_MATRIX7_NV:
|
||||
if (!ctx->Extensions.NV_vertex_program) {
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glMatrixMode" );
|
||||
return;
|
||||
}
|
||||
ctx->CurrentStack = &ctx->ProgramMatrixStack[mode - GL_MATRIX0_NV];
|
||||
break;
|
||||
default:
|
||||
_mesa_error( ctx, GL_INVALID_ENUM, "glMatrixMode" );
|
||||
return;
|
||||
}
|
||||
|
||||
ctx->Transform.MatrixMode = mode;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -188,51 +153,22 @@ void
|
|||
_mesa_PushMatrix( void )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
struct matrix_stack *stack = ctx->CurrentStack;
|
||||
ASSERT_OUTSIDE_BEGIN_END(ctx);
|
||||
|
||||
if (MESA_VERBOSE&VERBOSE_API)
|
||||
fprintf(stderr, "glPushMatrix %s\n",
|
||||
_mesa_lookup_enum_by_nr(ctx->Transform.MatrixMode));
|
||||
|
||||
switch (ctx->Transform.MatrixMode) {
|
||||
case GL_MODELVIEW:
|
||||
if (ctx->ModelViewStackDepth >= MAX_MODELVIEW_STACK_DEPTH - 1) {
|
||||
_mesa_error( ctx, GL_STACK_OVERFLOW, "glPushMatrix");
|
||||
return;
|
||||
}
|
||||
_math_matrix_copy( &ctx->ModelViewStack[ctx->ModelViewStackDepth++],
|
||||
&ctx->ModelView );
|
||||
break;
|
||||
case GL_PROJECTION:
|
||||
if (ctx->ProjectionStackDepth >= MAX_PROJECTION_STACK_DEPTH - 1) {
|
||||
_mesa_error( ctx, GL_STACK_OVERFLOW, "glPushMatrix");
|
||||
return;
|
||||
}
|
||||
_math_matrix_copy( &ctx->ProjectionStack[ctx->ProjectionStackDepth++],
|
||||
&ctx->ProjectionMatrix );
|
||||
break;
|
||||
case GL_TEXTURE:
|
||||
{
|
||||
GLuint t = ctx->Texture.CurrentUnit;
|
||||
if (ctx->TextureStackDepth[t] >= MAX_TEXTURE_STACK_DEPTH - 1) {
|
||||
_mesa_error( ctx, GL_STACK_OVERFLOW, "glPushMatrix");
|
||||
return;
|
||||
}
|
||||
_math_matrix_copy( &ctx->TextureStack[t][ctx->TextureStackDepth[t]++],
|
||||
&ctx->TextureMatrix[t] );
|
||||
}
|
||||
break;
|
||||
case GL_COLOR:
|
||||
if (ctx->ColorStackDepth >= MAX_COLOR_STACK_DEPTH - 1) {
|
||||
_mesa_error( ctx, GL_STACK_OVERFLOW, "glPushMatrix");
|
||||
return;
|
||||
}
|
||||
_math_matrix_copy( &ctx->ColorStack[ctx->ColorStackDepth++],
|
||||
&ctx->ColorMatrix );
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "Bad matrix mode in _mesa_PushMatrix");
|
||||
if (stack->Depth + 1 >= stack->MaxDepth) {
|
||||
_mesa_error( ctx, GL_STACK_OVERFLOW, "glPushMatrix" );
|
||||
return;
|
||||
}
|
||||
_math_matrix_copy( &stack->Stack[stack->Depth + 1],
|
||||
&stack->Stack[stack->Depth] );
|
||||
stack->Depth++;
|
||||
stack->Top = &(stack->Stack[stack->Depth]);
|
||||
ctx->NewState |= stack->DirtyFlag;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -241,56 +177,20 @@ void
|
|||
_mesa_PopMatrix( void )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
struct matrix_stack *stack = ctx->CurrentStack;
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
|
||||
if (MESA_VERBOSE&VERBOSE_API)
|
||||
fprintf(stderr, "glPopMatrix %s\n",
|
||||
_mesa_lookup_enum_by_nr(ctx->Transform.MatrixMode));
|
||||
|
||||
switch (ctx->Transform.MatrixMode) {
|
||||
case GL_MODELVIEW:
|
||||
if (ctx->ModelViewStackDepth==0) {
|
||||
_mesa_error( ctx, GL_STACK_UNDERFLOW, "glPopMatrix");
|
||||
return;
|
||||
}
|
||||
_math_matrix_copy( &ctx->ModelView,
|
||||
&ctx->ModelViewStack[--ctx->ModelViewStackDepth] );
|
||||
ctx->NewState |= _NEW_MODELVIEW;
|
||||
break;
|
||||
case GL_PROJECTION:
|
||||
if (ctx->ProjectionStackDepth==0) {
|
||||
_mesa_error( ctx, GL_STACK_UNDERFLOW, "glPopMatrix");
|
||||
return;
|
||||
}
|
||||
|
||||
_math_matrix_copy( &ctx->ProjectionMatrix,
|
||||
&ctx->ProjectionStack[--ctx->ProjectionStackDepth] );
|
||||
ctx->NewState |= _NEW_PROJECTION;
|
||||
break;
|
||||
case GL_TEXTURE:
|
||||
{
|
||||
GLuint t = ctx->Texture.CurrentUnit;
|
||||
if (ctx->TextureStackDepth[t]==0) {
|
||||
_mesa_error( ctx, GL_STACK_UNDERFLOW, "glPopMatrix");
|
||||
return;
|
||||
}
|
||||
_math_matrix_copy(&ctx->TextureMatrix[t],
|
||||
&ctx->TextureStack[t][--ctx->TextureStackDepth[t]]);
|
||||
ctx->NewState |= _NEW_TEXTURE_MATRIX;
|
||||
}
|
||||
break;
|
||||
case GL_COLOR:
|
||||
if (ctx->ColorStackDepth==0) {
|
||||
_mesa_error( ctx, GL_STACK_UNDERFLOW, "glPopMatrix");
|
||||
return;
|
||||
}
|
||||
_math_matrix_copy(&ctx->ColorMatrix,
|
||||
&ctx->ColorStack[--ctx->ColorStackDepth]);
|
||||
ctx->NewState |= _NEW_COLOR_MATRIX;
|
||||
break;
|
||||
default:
|
||||
_mesa_problem(ctx, "Bad matrix mode in _mesa_PopMatrix");
|
||||
if (stack->Depth == 0) {
|
||||
_mesa_error( ctx, GL_STACK_UNDERFLOW, "glPopMatrix" );
|
||||
return;
|
||||
}
|
||||
stack->Depth--;
|
||||
stack->Top = &(stack->Stack[stack->Depth]);
|
||||
ctx->NewState |= stack->DirtyFlag;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -299,10 +199,9 @@ void
|
|||
_mesa_LoadIdentity( void )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLmatrix *mat = 0;
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
GET_ACTIVE_MATRIX(mat, "glLoadIdentity");
|
||||
_math_matrix_set_identity( mat );
|
||||
_math_matrix_set_identity( ctx->CurrentStack->Top );
|
||||
ctx->NewState |= ctx->CurrentStack->DirtyFlag;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -310,10 +209,9 @@ void
|
|||
_mesa_LoadMatrixf( const GLfloat *m )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLmatrix *mat = 0;
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
GET_ACTIVE_MATRIX(mat, "glLoadMatrix");
|
||||
_math_matrix_loadf( mat, m );
|
||||
_math_matrix_loadf( ctx->CurrentStack->Top, m );
|
||||
ctx->NewState |= ctx->CurrentStack->DirtyFlag;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -336,10 +234,9 @@ void
|
|||
_mesa_MultMatrixf( const GLfloat *m )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLmatrix *mat = 0;
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
GET_ACTIVE_MATRIX(mat, "glMultMatrix");
|
||||
_math_matrix_mul_floats( mat, m );
|
||||
_math_matrix_mul_floats( ctx->CurrentStack->Top, m );
|
||||
ctx->NewState |= ctx->CurrentStack->DirtyFlag;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -368,9 +265,8 @@ _mesa_Rotatef( GLfloat angle, GLfloat x, GLfloat y, GLfloat z )
|
|||
GET_CURRENT_CONTEXT(ctx);
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
if (angle != 0.0F) {
|
||||
GLmatrix *mat = 0;
|
||||
GET_ACTIVE_MATRIX(mat, "glRotate");
|
||||
_math_matrix_rotate( mat, angle, x, y, z );
|
||||
_math_matrix_rotate( ctx->CurrentStack->Top, angle, x, y, z);
|
||||
ctx->NewState |= ctx->CurrentStack->DirtyFlag;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -388,10 +284,9 @@ void
|
|||
_mesa_Scalef( GLfloat x, GLfloat y, GLfloat z )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLmatrix *mat = 0;
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
GET_ACTIVE_MATRIX(mat, "glScale");
|
||||
_math_matrix_scale( mat, x, y, z );
|
||||
_math_matrix_scale( ctx->CurrentStack->Top, x, y, z);
|
||||
ctx->NewState |= ctx->CurrentStack->DirtyFlag;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -409,10 +304,9 @@ void
|
|||
_mesa_Translatef( GLfloat x, GLfloat y, GLfloat z )
|
||||
{
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
GLmatrix *mat = 0;
|
||||
ASSERT_OUTSIDE_BEGIN_END_AND_FLUSH(ctx);
|
||||
GET_ACTIVE_MATRIX(mat, "glTranslate");
|
||||
_math_matrix_translate( mat, x, y, z );
|
||||
_math_matrix_translate( ctx->CurrentStack->Top, x, y, z);
|
||||
ctx->NewState |= ctx->CurrentStack->DirtyFlag;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: mtypes.h,v 1.55 2001/12/14 02:50:02 brianp Exp $ */
|
||||
/* $Id: mtypes.h,v 1.56 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -1131,8 +1131,6 @@ struct gl_evaluators {
|
|||
*/
|
||||
|
||||
#define VP_MAX_INSTRUCTIONS 128
|
||||
#define VP_MAX_MATRICES 8
|
||||
#define VP_MAX_MATRIX_DEPTH 4
|
||||
|
||||
#define VP_NUM_INPUT_REGS 16
|
||||
#define VP_NUM_OUTPUT_REGS 15
|
||||
|
|
@ -1251,7 +1249,8 @@ struct vp_program
|
|||
GLubyte *String; /* Original user code */
|
||||
struct vp_instruction *Instructions; /* Compiled instructions */
|
||||
GLenum Target; /* GL_VERTEX_PROGRAM_NV or GL_VERTEX_STATE_PROGRAM_NV */
|
||||
GLint ErrorPos;
|
||||
GLint ErrorPos; /* Position in string where error was detected */
|
||||
GLint RefCount; /* Since programs can be shared among contexts */
|
||||
GLboolean Resident;
|
||||
};
|
||||
|
||||
|
|
@ -1259,21 +1258,17 @@ struct vp_program
|
|||
/*
|
||||
* State vars for GL_NV_vertex_program
|
||||
*/
|
||||
struct gl_vertex_program
|
||||
struct vertex_program_state
|
||||
{
|
||||
GLboolean Enabled; /* GL_VERTEX_PROGRAM_NV */
|
||||
GLboolean PointSizeEnabled; /* GL_VERTEX_PROGRAM_POINT_SIZE_NV */
|
||||
GLboolean TwoSideEnabled; /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
|
||||
GLuint Binding; /* currently bound program */
|
||||
struct _mesa_HashTable *HashTable; /* all programs */
|
||||
GLboolean TwoSideEnabled; /* GL_VERTEX_PROGRAM_TWO_SIDE_NV */
|
||||
GLuint CurrentID; /* currently bound program's ID */
|
||||
struct vp_program *Current; /* ptr to currently bound program */
|
||||
struct vp_machine Machine; /* machine state */
|
||||
GLmatrix Matrix[VP_MAX_MATRICES]; /* Tracking matrices */
|
||||
GLmatrix MatrixStack[VP_MAX_MATRICES][VP_MAX_MATRIX_DEPTH-1]; /* stacks */
|
||||
GLuint MatrixStackDepth[VP_MAX_MATRICES];
|
||||
|
||||
GLenum TrackMatrix[VP_NUM_PROG_REGS / 4];
|
||||
GLenum TrackMatrixTransform[VP_NUM_PROG_REGS / 4];
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
|
@ -1294,6 +1289,9 @@ struct gl_shared_state {
|
|||
struct gl_texture_object *Default3D;
|
||||
struct gl_texture_object *DefaultCubeMap;
|
||||
|
||||
/* GL_NV_vertex_program */
|
||||
struct _mesa_HashTable *VertexPrograms;
|
||||
|
||||
void *DriverData; /* Device driver shared state */
|
||||
};
|
||||
|
||||
|
|
@ -1439,10 +1437,10 @@ struct gl_extensions {
|
|||
/* XXX just an idea */
|
||||
struct matrix_stack
|
||||
{
|
||||
GLmatrix Top;
|
||||
GLmatrix *Stack;
|
||||
GLuint Depth;
|
||||
GLuint MaxDepth;
|
||||
GLmatrix *Top; /* points into Stack */
|
||||
GLmatrix *Stack; /* array [MaxDepth] of GLmatrix */
|
||||
GLuint Depth; /* 0 <= Depth < MaxDepth */
|
||||
GLuint MaxDepth; /* size of Stack[] array */
|
||||
GLuint DirtyFlag; /* _NEW_MODELVIEW or _NEW_PROJECTION, for example */
|
||||
};
|
||||
|
||||
|
|
@ -1654,32 +1652,17 @@ struct __GLcontextRec {
|
|||
/* Core/Driver constants */
|
||||
struct gl_constants Const;
|
||||
|
||||
/* Modelview matrix and stack */
|
||||
GLmatrix ModelView; /* current matrix, not stored on stack */
|
||||
GLuint ModelViewStackDepth;
|
||||
GLmatrix ModelViewStack[MAX_MODELVIEW_STACK_DEPTH - 1];
|
||||
#if 1
|
||||
struct matrix_stack ModelviewStack;
|
||||
#endif
|
||||
|
||||
/* Projection matrix and stack */
|
||||
GLmatrix ProjectionMatrix; /* current matrix, not stored on stack */
|
||||
GLuint ProjectionStackDepth;
|
||||
GLmatrix ProjectionStack[MAX_PROJECTION_STACK_DEPTH - 1];
|
||||
/* The various 4x4 matrix stacks */
|
||||
struct matrix_stack ModelviewMatrixStack;
|
||||
struct matrix_stack ProjectionMatrixStack;
|
||||
struct matrix_stack ColorMatrixStack;
|
||||
struct matrix_stack TextureMatrixStack[MAX_TEXTURE_UNITS];
|
||||
struct matrix_stack ProgramMatrixStack[MAX_PROGRAM_MATRICES];
|
||||
struct matrix_stack *CurrentStack; /* Points to one of the above stacks */
|
||||
|
||||
/* Combined modelview and projection matrix */
|
||||
GLmatrix _ModelProjectMatrix;
|
||||
|
||||
/* Texture matrix and stack */
|
||||
GLmatrix TextureMatrix[MAX_TEXTURE_UNITS];
|
||||
GLuint TextureStackDepth[MAX_TEXTURE_UNITS];
|
||||
GLmatrix TextureStack[MAX_TEXTURE_UNITS][MAX_TEXTURE_STACK_DEPTH - 1];
|
||||
|
||||
/* Color matrix and stack */
|
||||
GLmatrix ColorMatrix;
|
||||
GLuint ColorStackDepth;
|
||||
GLmatrix ColorStack[MAX_COLOR_STACK_DEPTH - 1];
|
||||
|
||||
/* Display lists */
|
||||
GLuint CallDepth; /* Current recursion calling depth */
|
||||
GLboolean ExecuteFlag; /* Execute GL commands? */
|
||||
|
|
@ -1745,7 +1728,7 @@ struct __GLcontextRec {
|
|||
struct gl_color_table PostColorMatrixColorTable;
|
||||
struct gl_color_table ProxyPostColorMatrixColorTable;
|
||||
|
||||
struct gl_vertex_program VertexProgram; /* GL_NV_vertex_program */
|
||||
struct vertex_program_state VertexProgram; /* GL_NV_vertex_program */
|
||||
|
||||
GLenum ErrorValue; /* Last error code */
|
||||
GLenum RenderMode; /* either GL_RENDER, GL_SELECT, GL_FEEDBACK */
|
||||
|
|
@ -1759,13 +1742,13 @@ struct __GLcontextRec {
|
|||
GLuint _NeedEyeCoords;
|
||||
GLuint _NeedNormals; /* Are vertex normal vectors needed? */
|
||||
|
||||
struct gl_shine_tab *_ShineTable[2]; /* Active shine tables */
|
||||
struct gl_shine_tab *_ShineTabList; /* Mru list of inactive shine tables */
|
||||
struct gl_shine_tab *_ShineTable[2]; /* Active shine tables */
|
||||
struct gl_shine_tab *_ShineTabList; /* Mru list of inactive shine tables */
|
||||
|
||||
struct gl_list_extensions listext; /* driver dlist extensions */
|
||||
|
||||
|
||||
GLboolean OcclusionResult; /* GL_HP_occlusion_test */
|
||||
GLboolean OcclusionResult; /* GL_HP_occlusion_test */
|
||||
GLboolean OcclusionResultSaved; /* GL_HP_occlusion_test */
|
||||
|
||||
/* Z buffer stuff */
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: pixel.c,v 1.32 2001/12/04 23:45:31 brianp Exp $ */
|
||||
/* $Id: pixel.c,v 1.33 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -852,7 +852,7 @@ _mesa_transform_rgba(const GLcontext *ctx, GLuint n, GLfloat rgba[][4])
|
|||
const GLfloat bb = ctx->Pixel.PostColorMatrixBias[2];
|
||||
const GLfloat as = ctx->Pixel.PostColorMatrixScale[3];
|
||||
const GLfloat ab = ctx->Pixel.PostColorMatrixBias[3];
|
||||
const GLfloat *m = ctx->ColorMatrix.m;
|
||||
const GLfloat *m = ctx->ColorMatrixStack.Top->m;
|
||||
GLuint i;
|
||||
for (i = 0; i < n; i++) {
|
||||
const GLfloat r = rgba[i][RCOMP];
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: rastpos.c,v 1.33 2001/12/14 02:50:02 brianp Exp $ */
|
||||
/* $Id: rastpos.c,v 1.34 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -286,7 +286,7 @@ raster_pos4f(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
|||
_mesa_update_state( ctx );
|
||||
|
||||
ASSIGN_4V( v, x, y, z, w );
|
||||
TRANSFORM_POINT( eye, ctx->ModelView.m, v );
|
||||
TRANSFORM_POINT( eye, ctx->ModelviewMatrixStack.Top->m, v );
|
||||
|
||||
/* raster color */
|
||||
if (ctx->Light.Enabled) {
|
||||
|
|
@ -294,7 +294,7 @@ raster_pos4f(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
|||
GLfloat *objnorm = ctx->Current.Attrib[VERT_ATTRIB_NORMAL];
|
||||
|
||||
if (ctx->_NeedEyeCoords) {
|
||||
GLfloat *inv = ctx->ModelView.inv;
|
||||
GLfloat *inv = ctx->ModelviewMatrixStack.Top->inv;
|
||||
TRANSFORM_NORMAL( eyenorm, objnorm, inv );
|
||||
norm = eyenorm;
|
||||
}
|
||||
|
|
@ -326,7 +326,7 @@ raster_pos4f(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
|
|||
GL_SQRT( eye[0]*eye[0] + eye[1]*eye[1] + eye[2]*eye[2] );
|
||||
|
||||
/* apply projection matrix: clip = Proj * eye */
|
||||
TRANSFORM_POINT( clip, ctx->ProjectionMatrix.m, eye );
|
||||
TRANSFORM_POINT( clip, ctx->ProjectionMatrixStack.Top->m, eye );
|
||||
|
||||
/* clip to view volume */
|
||||
if (ctx->Transform.RasterPositionUnclipped) {
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: state.c,v 1.74 2001/12/14 03:13:04 brianp Exp $ */
|
||||
/* $Id: state.c,v 1.75 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -557,8 +557,8 @@ calculate_model_project_matrix( GLcontext *ctx )
|
|||
{
|
||||
if (!ctx->_NeedEyeCoords) {
|
||||
_math_matrix_mul_matrix( &ctx->_ModelProjectMatrix,
|
||||
&ctx->ProjectionMatrix,
|
||||
&ctx->ModelView );
|
||||
ctx->ProjectionMatrixStack.Top,
|
||||
ctx->ModelviewMatrixStack.Top );
|
||||
|
||||
_math_matrix_analyse( &ctx->_ModelProjectMatrix );
|
||||
}
|
||||
|
|
@ -568,11 +568,11 @@ static void
|
|||
update_modelview_scale( GLcontext *ctx )
|
||||
{
|
||||
ctx->_ModelViewInvScale = 1.0F;
|
||||
if (ctx->ModelView.flags & (MAT_FLAG_UNIFORM_SCALE |
|
||||
if (ctx->ModelviewMatrixStack.Top->flags & (MAT_FLAG_UNIFORM_SCALE |
|
||||
MAT_FLAG_GENERAL_SCALE |
|
||||
MAT_FLAG_GENERAL_3D |
|
||||
MAT_FLAG_GENERAL) ) {
|
||||
const GLfloat *m = ctx->ModelView.inv;
|
||||
const GLfloat *m = ctx->ModelviewMatrixStack.Top->inv;
|
||||
GLfloat f = m[2] * m[2] + m[6] * m[6] + m[10] * m[10];
|
||||
if (f < 1e-12) f = 1.0;
|
||||
if (ctx->_NeedEyeCoords)
|
||||
|
|
@ -651,7 +651,7 @@ update_drawbuffer( GLcontext *ctx )
|
|||
static void
|
||||
update_projection( GLcontext *ctx )
|
||||
{
|
||||
_math_matrix_analyse( &ctx->ProjectionMatrix );
|
||||
_math_matrix_analyse( ctx->ProjectionMatrixStack.Top );
|
||||
|
||||
/* Recompute clip plane positions in clipspace. This is also done
|
||||
* in _mesa_ClipPlane().
|
||||
|
|
@ -662,7 +662,7 @@ update_projection( GLcontext *ctx )
|
|||
if (ctx->Transform.ClipEnabled[p]) {
|
||||
_mesa_transform_vector( ctx->Transform._ClipUserPlane[p],
|
||||
ctx->Transform.EyeUserPlane[p],
|
||||
ctx->ProjectionMatrix.inv );
|
||||
ctx->ProjectionMatrixStack.Top->inv );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -712,7 +712,7 @@ update_image_transfer_state(GLcontext *ctx)
|
|||
if (ctx->Pixel.PostConvolutionColorTableEnabled)
|
||||
mask |= IMAGE_POST_CONVOLUTION_COLOR_TABLE_BIT;
|
||||
|
||||
if (ctx->ColorMatrix.type != MATRIX_IDENTITY ||
|
||||
if (ctx->ColorMatrixStack.Top->type != MATRIX_IDENTITY ||
|
||||
ctx->Pixel.PostColorMatrixScale[0] != 1.0F ||
|
||||
ctx->Pixel.PostColorMatrixBias[0] != 0.0F ||
|
||||
ctx->Pixel.PostColorMatrixScale[1] != 1.0F ||
|
||||
|
|
@ -754,14 +754,14 @@ update_texture_matrices( GLcontext *ctx )
|
|||
ctx->Texture._TexMatEnabled = 0;
|
||||
|
||||
for (i=0; i < ctx->Const.MaxTextureUnits; i++) {
|
||||
if (ctx->TextureMatrix[i].flags & MAT_DIRTY) {
|
||||
_math_matrix_analyse( &ctx->TextureMatrix[i] );
|
||||
if (ctx->TextureMatrixStack[i].Top->flags & MAT_DIRTY) {
|
||||
_math_matrix_analyse( ctx->TextureMatrixStack[i].Top );
|
||||
|
||||
if (ctx->Driver.TextureMatrix)
|
||||
ctx->Driver.TextureMatrix( ctx, i, &ctx->TextureMatrix[i] );
|
||||
ctx->Driver.TextureMatrix( ctx, i, ctx->TextureMatrixStack[i].Top);
|
||||
|
||||
if (ctx->Texture.Unit[i]._ReallyEnabled &&
|
||||
ctx->TextureMatrix[i].type != MATRIX_IDENTITY)
|
||||
ctx->TextureMatrixStack[i].Top->type != MATRIX_IDENTITY)
|
||||
ctx->Texture._TexMatEnabled |= ENABLE_TEXMAT(i);
|
||||
}
|
||||
}
|
||||
|
|
@ -874,7 +874,7 @@ update_texture_state( GLcontext *ctx )
|
|||
ctx->Texture._GenFlags |= texUnit->_GenFlags;
|
||||
}
|
||||
|
||||
if (ctx->TextureMatrix[i].type != MATRIX_IDENTITY)
|
||||
if (ctx->TextureMatrixStack[i].Top->type != MATRIX_IDENTITY)
|
||||
ctx->Texture._TexMatEnabled |= ENABLE_TEXMAT(i);
|
||||
}
|
||||
|
||||
|
|
@ -915,7 +915,7 @@ void _mesa_update_state( GLcontext *ctx )
|
|||
_mesa_print_state("", new_state);
|
||||
|
||||
if (new_state & _NEW_MODELVIEW)
|
||||
_math_matrix_analyse( &ctx->ModelView );
|
||||
_math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
|
||||
|
||||
if (new_state & _NEW_PROJECTION)
|
||||
update_projection( ctx );
|
||||
|
|
@ -924,7 +924,7 @@ void _mesa_update_state( GLcontext *ctx )
|
|||
update_texture_matrices( ctx );
|
||||
|
||||
if (new_state & _NEW_COLOR_MATRIX)
|
||||
_math_matrix_analyse( &ctx->ColorMatrix );
|
||||
_math_matrix_analyse( ctx->ColorMatrixStack.Top );
|
||||
|
||||
/* References ColorMatrix.type (derived above).
|
||||
*/
|
||||
|
|
@ -953,7 +953,7 @@ void _mesa_update_state( GLcontext *ctx )
|
|||
if (new_state & (_NEW_MODELVIEW|_NEW_LIGHT)) {
|
||||
ctx->_NeedEyeCoords &= ~NEED_EYE_LIGHT_MODELVIEW;
|
||||
if (ctx->Light.Enabled &&
|
||||
!TEST_MAT_FLAGS( &ctx->ModelView, MAT_FLAGS_LENGTH_PRESERVING))
|
||||
!TEST_MAT_FLAGS( ctx->ModelviewMatrixStack.Top, MAT_FLAGS_LENGTH_PRESERVING))
|
||||
ctx->_NeedEyeCoords |= NEED_EYE_LIGHT_MODELVIEW;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: texstate.c,v 1.61 2001/12/13 16:02:11 brianp Exp $ */
|
||||
/* $Id: texstate.c,v 1.62 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -1706,10 +1706,10 @@ _mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
|
|||
GLfloat tmp[4];
|
||||
|
||||
/* Transform plane equation by the inverse modelview matrix */
|
||||
if (ctx->ModelView.flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( &ctx->ModelView );
|
||||
if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
|
||||
}
|
||||
_mesa_transform_vector( tmp, params, ctx->ModelView.inv );
|
||||
_mesa_transform_vector( tmp, params, ctx->ModelviewMatrixStack.Top->inv );
|
||||
if (TEST_EQ_4V(texUnit->EyePlaneS, tmp))
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
|
|
@ -1762,10 +1762,10 @@ _mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
|
|||
else if (pname==GL_EYE_PLANE) {
|
||||
GLfloat tmp[4];
|
||||
/* Transform plane equation by the inverse modelview matrix */
|
||||
if (ctx->ModelView.flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( &ctx->ModelView );
|
||||
if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
|
||||
}
|
||||
_mesa_transform_vector( tmp, params, ctx->ModelView.inv );
|
||||
_mesa_transform_vector( tmp, params, ctx->ModelviewMatrixStack.Top->inv );
|
||||
if (TEST_EQ_4V(texUnit->EyePlaneT, tmp))
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
|
|
@ -1815,10 +1815,10 @@ _mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
|
|||
else if (pname==GL_EYE_PLANE) {
|
||||
GLfloat tmp[4];
|
||||
/* Transform plane equation by the inverse modelview matrix */
|
||||
if (ctx->ModelView.flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( &ctx->ModelView );
|
||||
if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
|
||||
}
|
||||
_mesa_transform_vector( tmp, params, ctx->ModelView.inv );
|
||||
_mesa_transform_vector( tmp, params, ctx->ModelviewMatrixStack.Top->inv );
|
||||
if (TEST_EQ_4V(texUnit->EyePlaneR, tmp))
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
|
|
@ -1862,10 +1862,10 @@ _mesa_TexGenfv( GLenum coord, GLenum pname, const GLfloat *params )
|
|||
else if (pname==GL_EYE_PLANE) {
|
||||
GLfloat tmp[4];
|
||||
/* Transform plane equation by the inverse modelview matrix */
|
||||
if (ctx->ModelView.flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( &ctx->ModelView );
|
||||
if (ctx->ModelviewMatrixStack.Top->flags & MAT_DIRTY_INVERSE) {
|
||||
_math_matrix_analyse( ctx->ModelviewMatrixStack.Top );
|
||||
}
|
||||
_mesa_transform_vector( tmp, params, ctx->ModelView.inv );
|
||||
_mesa_transform_vector( tmp, params, ctx->ModelviewMatrixStack.Top->inv );
|
||||
if (TEST_EQ_4V(texUnit->EyePlaneQ, tmp))
|
||||
return;
|
||||
FLUSH_VERTICES(ctx, _NEW_TEXTURE);
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
/* $Id: m_matrix.c,v 1.9 2001/09/18 23:06:14 kschultz Exp $ */
|
||||
/* $Id: m_matrix.c,v 1.10 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.5
|
||||
* Version: 4.1
|
||||
*
|
||||
* Copyright (C) 1999-2001 Brian Paul All Rights Reserved.
|
||||
*
|
||||
|
|
@ -975,11 +975,10 @@ _math_matrix_loadf( GLmatrix *mat, const GLfloat *m )
|
|||
void
|
||||
_math_matrix_ctr( GLmatrix *m )
|
||||
{
|
||||
if ( m->m == 0 ) {
|
||||
m->m = (GLfloat *) ALIGN_MALLOC( 16 * sizeof(GLfloat), 16 );
|
||||
}
|
||||
MEMCPY( m->m, Identity, sizeof(Identity) );
|
||||
m->inv = 0;
|
||||
m->m = (GLfloat *) ALIGN_MALLOC( 16 * sizeof(GLfloat), 16 );
|
||||
if (m->m)
|
||||
MEMCPY( m->m, Identity, sizeof(Identity) );
|
||||
m->inv = NULL;
|
||||
m->type = MATRIX_IDENTITY;
|
||||
m->flags = 0;
|
||||
}
|
||||
|
|
@ -987,13 +986,13 @@ _math_matrix_ctr( GLmatrix *m )
|
|||
void
|
||||
_math_matrix_dtr( GLmatrix *m )
|
||||
{
|
||||
if ( m->m != 0 ) {
|
||||
if (m->m) {
|
||||
ALIGN_FREE( m->m );
|
||||
m->m = 0;
|
||||
m->m = NULL;
|
||||
}
|
||||
if ( m->inv != 0 ) {
|
||||
if (m->inv) {
|
||||
ALIGN_FREE( m->inv );
|
||||
m->inv = 0;
|
||||
m->inv = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -1001,9 +1000,10 @@ _math_matrix_dtr( GLmatrix *m )
|
|||
void
|
||||
_math_matrix_alloc_inv( GLmatrix *m )
|
||||
{
|
||||
if ( m->inv == 0 ) {
|
||||
if (!m->inv) {
|
||||
m->inv = (GLfloat *) ALIGN_MALLOC( 16 * sizeof(GLfloat), 16 );
|
||||
MEMCPY( m->inv, Identity, 16 * sizeof(GLfloat) );
|
||||
if (m->inv)
|
||||
MEMCPY( m->inv, Identity, 16 * sizeof(GLfloat) );
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: s_fog.c,v 1.15 2001/12/17 04:54:35 brianp Exp $ */
|
||||
/* $Id: s_fog.c,v 1.16 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -195,9 +195,10 @@ compute_fog_factors_from_z( const GLcontext *ctx,
|
|||
const GLdepth z[],
|
||||
GLfloat fogFact[] )
|
||||
{
|
||||
const GLboolean ortho = (ctx->ProjectionMatrix.m[15] != 0.0F);
|
||||
const GLfloat p10 = ctx->ProjectionMatrix.m[10];
|
||||
const GLfloat p14 = ctx->ProjectionMatrix.m[14];
|
||||
const GLfloat *proj = ctx->ProjectionMatrixStack.Top->m;
|
||||
const GLboolean ortho = (proj[15] != 0.0F);
|
||||
const GLfloat p10 = proj[10];
|
||||
const GLfloat p14 = proj[14];
|
||||
const GLfloat tz = ctx->Viewport._WindowMap.m[MAT_TZ];
|
||||
GLfloat szInv;
|
||||
GLuint i;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: ss_vbtmp.h,v 1.17 2001/07/17 19:39:32 keithw Exp $ */
|
||||
/* $Id: ss_vbtmp.h,v 1.18 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -73,8 +73,8 @@ static void TAG(emit)(GLcontext *ctx, GLuint start, GLuint end,
|
|||
}
|
||||
}
|
||||
|
||||
proj = VB->ProjectedClipPtr->data[0];
|
||||
proj_stride = VB->ProjectedClipPtr->stride;
|
||||
proj = VB->NdcPtr->data[0];
|
||||
proj_stride = VB->NdcPtr->stride;
|
||||
|
||||
if (IND & FOG) {
|
||||
fog = VB->FogCoordPtr->data;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_context.c,v 1.22 2001/07/19 15:54:35 brianp Exp $ */
|
||||
/* $Id: t_context.c,v 1.23 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -102,7 +102,7 @@ _tnl_CreateContext( GLcontext *ctx )
|
|||
_tnl_install_pipeline( ctx, _tnl_default_pipeline );
|
||||
|
||||
|
||||
tnl->NeedProjCoords = GL_TRUE;
|
||||
tnl->NeedNdcCoords = GL_TRUE;
|
||||
tnl->LoopbackDListCassettes = GL_FALSE;
|
||||
tnl->CalcDListNormalLengths = GL_TRUE;
|
||||
|
||||
|
|
@ -210,8 +210,8 @@ void
|
|||
_tnl_need_projected_coords( GLcontext *ctx, GLboolean mode )
|
||||
{
|
||||
TNLcontext *tnl = TNL_CONTEXT(ctx);
|
||||
if (tnl->NeedProjCoords != mode) {
|
||||
tnl->NeedProjCoords = mode;
|
||||
if (tnl->NeedNdcCoords != mode) {
|
||||
tnl->NeedNdcCoords = mode;
|
||||
_tnl_InvalidateState( ctx, _NEW_PROJECTION );
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_context.h,v 1.33 2001/12/14 02:51:44 brianp Exp $ */
|
||||
/* $Id: t_context.h,v 1.34 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -260,7 +260,7 @@ typedef struct vertex_buffer
|
|||
GLvector4f *ObjPtr; /* VERT_OBJ_BIT */
|
||||
GLvector4f *EyePtr; /* VERT_EYE */
|
||||
GLvector4f *ClipPtr; /* VERT_CLIP */
|
||||
GLvector4f *ProjectedClipPtr; /* VERT_CLIP (2) */
|
||||
GLvector4f *NdcPtr; /* VERT_CLIP (2) */
|
||||
GLubyte ClipOrMask; /* VERT_CLIP (3) */
|
||||
GLubyte *ClipMask; /* VERT_CLIP (4) */
|
||||
GLvector3f *NormalPtr; /* VERT_NORMAL_BIT */
|
||||
|
|
@ -535,7 +535,7 @@ typedef struct {
|
|||
|
||||
/* Probably need a better configuration mechanism:
|
||||
*/
|
||||
GLboolean NeedProjCoords;
|
||||
GLboolean NeedNdcCoords;
|
||||
GLboolean LoopbackDListCassettes;
|
||||
GLboolean CalcDListNormalLengths;
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_vb_fog.c,v 1.13 2001/12/14 02:51:45 brianp Exp $ */
|
||||
/* $Id: t_vb_fog.c,v 1.14 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -145,7 +145,7 @@ static GLboolean run_fog_stage( GLcontext *ctx,
|
|||
VB->FogCoordPtr = &store->fogcoord;
|
||||
|
||||
if (!ctx->_NeedEyeCoords) {
|
||||
GLfloat *m = ctx->ModelView.m;
|
||||
const GLfloat *m = ctx->ModelviewMatrixStack.Top->m;
|
||||
GLfloat plane[4];
|
||||
|
||||
/* Use this to store calculated eye z values:
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_vb_normals.c,v 1.10 2001/12/14 02:51:45 brianp Exp $ */
|
||||
/* $Id: t_vb_normals.c,v 1.11 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -62,7 +62,7 @@ static GLboolean run_normal_stage( GLcontext *ctx,
|
|||
ASSERT(store->NormalTransform);
|
||||
|
||||
if (stage->changed_inputs)
|
||||
store->NormalTransform( &ctx->ModelView,
|
||||
store->NormalTransform( ctx->ModelviewMatrixStack.Top,
|
||||
ctx->_ModelViewInvScale,
|
||||
VB->NormalPtr,
|
||||
VB->NormalLengthPtr,
|
||||
|
|
@ -84,7 +84,7 @@ static GLboolean run_validate_normal_stage( GLcontext *ctx,
|
|||
if (ctx->_NeedEyeCoords) {
|
||||
GLuint transform = NORM_TRANSFORM_NO_ROT;
|
||||
|
||||
if (ctx->ModelView.flags & (MAT_FLAG_GENERAL |
|
||||
if (ctx->ModelviewMatrixStack.Top->flags & (MAT_FLAG_GENERAL |
|
||||
MAT_FLAG_ROTATION |
|
||||
MAT_FLAG_GENERAL_3D |
|
||||
MAT_FLAG_PERSPECTIVE))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_vb_program.c,v 1.4 2001/12/15 22:31:23 brianp Exp $ */
|
||||
/* $Id: t_vb_program.c,v 1.5 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -718,7 +718,6 @@ static GLboolean run_vp( GLcontext *ctx, struct gl_pipeline_stage *stage )
|
|||
struct vp_stage_data *store = VP_STAGE_DATA(stage);
|
||||
struct vertex_buffer *VB = &tnl->vb;
|
||||
struct vp_machine *machine = &(ctx->VertexProgram.Machine);
|
||||
struct vp_program *program;
|
||||
GLint i;
|
||||
|
||||
/* convenience pointers */
|
||||
|
|
@ -734,9 +733,6 @@ static GLboolean run_vp( GLcontext *ctx, struct gl_pipeline_stage *stage )
|
|||
GLfloat (*texture2)[4] = (GLfloat (*)[4]) store->texCoord[2].data;
|
||||
GLfloat (*texture3)[4] = (GLfloat (*)[4]) store->texCoord[3].data;
|
||||
|
||||
program = (struct vp_program *) _mesa_HashLookup(ctx->VertexProgram.HashTable, ctx->VertexProgram.Binding);
|
||||
assert(program);
|
||||
|
||||
_mesa_init_tracked_matrices(ctx);
|
||||
_mesa_init_vp_registers(ctx); /* sets temp regs to (0,0,0,1) */
|
||||
|
||||
|
|
@ -770,7 +766,8 @@ static GLboolean run_vp( GLcontext *ctx, struct gl_pipeline_stage *stage )
|
|||
}
|
||||
|
||||
/* execute the program */
|
||||
_mesa_exec_program(ctx, program);
|
||||
ASSERT(ctx->VertexProgram.Current);
|
||||
_mesa_exec_program(ctx, ctx->VertexProgram.Current);
|
||||
|
||||
#if 0
|
||||
printf("Output %d: %f, %f, %f, %f\n", i,
|
||||
|
|
@ -819,8 +816,8 @@ static GLboolean run_vp( GLcontext *ctx, struct gl_pipeline_stage *stage )
|
|||
store->ormask = 0;
|
||||
store->andmask = CLIP_ALL_BITS;
|
||||
|
||||
if (tnl->NeedProjCoords) {
|
||||
VB->ProjectedClipPtr =
|
||||
if (tnl->NeedNdcCoords) {
|
||||
VB->NdcPtr =
|
||||
_mesa_clip_tab[VB->ClipPtr->size]( VB->ClipPtr,
|
||||
&store->ndcCoords,
|
||||
store->clipmask,
|
||||
|
|
@ -829,7 +826,7 @@ static GLboolean run_vp( GLcontext *ctx, struct gl_pipeline_stage *stage )
|
|||
|
||||
}
|
||||
else {
|
||||
VB->ProjectedClipPtr = 0;
|
||||
VB->NdcPtr = 0;
|
||||
_mesa_clip_np_tab[VB->ClipPtr->size]( VB->ClipPtr,
|
||||
0,
|
||||
store->clipmask,
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_vb_texmat.c,v 1.6 2001/12/14 02:51:45 brianp Exp $ */
|
||||
/* $Id: t_vb_texmat.c,v 1.7 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -86,7 +86,8 @@ static GLboolean run_texmat_stage( GLcontext *ctx,
|
|||
for (i = 0 ; i < ctx->Const.MaxTextureUnits ; i++)
|
||||
if (ctx->Texture._TexMatEnabled & ENABLE_TEXMAT(i)) {
|
||||
if (stage->changed_inputs & VERT_TEX(i))
|
||||
(void) TransformRaw( &store->texcoord[i], &ctx->TextureMatrix[i],
|
||||
(void) TransformRaw( &store->texcoord[i],
|
||||
ctx->TextureMatrixStack[i].Top,
|
||||
VB->TexCoordPtr[i]);
|
||||
|
||||
VB->TexCoordPtr[i] = &store->texcoord[i];
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: t_vb_vertex.c,v 1.10 2001/12/14 02:51:45 brianp Exp $ */
|
||||
/* $Id: t_vb_vertex.c,v 1.11 2001/12/18 04:06:46 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -57,7 +57,7 @@ struct vertex_stage_data {
|
|||
*/
|
||||
GLvector4f *save_eyeptr;
|
||||
GLvector4f *save_clipptr;
|
||||
GLvector4f *save_projptr;
|
||||
GLvector4f *save_ndcptr;
|
||||
};
|
||||
|
||||
#define VERTEX_STAGE_DATA(stage) ((struct vertex_stage_data *)stage->privatePtr)
|
||||
|
|
@ -142,16 +142,18 @@ static GLboolean run_vertex_stage( GLcontext *ctx,
|
|||
if (ctx->_NeedEyeCoords) {
|
||||
/* Separate modelview and project transformations:
|
||||
*/
|
||||
if (ctx->ModelView.type == MATRIX_IDENTITY)
|
||||
if (ctx->ModelviewMatrixStack.Top->type == MATRIX_IDENTITY)
|
||||
VB->EyePtr = VB->ObjPtr;
|
||||
else
|
||||
VB->EyePtr = TransformRaw( &store->eye, &ctx->ModelView,
|
||||
VB->EyePtr = TransformRaw( &store->eye,
|
||||
ctx->ModelviewMatrixStack.Top,
|
||||
VB->ObjPtr);
|
||||
|
||||
if (ctx->ProjectionMatrix.type == MATRIX_IDENTITY)
|
||||
if (ctx->ProjectionMatrixStack.Top->type == MATRIX_IDENTITY)
|
||||
VB->ClipPtr = VB->EyePtr;
|
||||
else
|
||||
VB->ClipPtr = TransformRaw( &store->clip, &ctx->ProjectionMatrix,
|
||||
VB->ClipPtr = TransformRaw( &store->clip,
|
||||
ctx->ProjectionMatrixStack.Top,
|
||||
VB->EyePtr );
|
||||
}
|
||||
else {
|
||||
|
|
@ -184,16 +186,17 @@ static GLboolean run_vertex_stage( GLcontext *ctx,
|
|||
store->ormask = 0;
|
||||
store->andmask = CLIP_ALL_BITS;
|
||||
|
||||
if (tnl->NeedProjCoords) {
|
||||
VB->ProjectedClipPtr =
|
||||
if (tnl->NeedNdcCoords) {
|
||||
VB->NdcPtr =
|
||||
_mesa_clip_tab[VB->ClipPtr->size]( VB->ClipPtr,
|
||||
&store->proj,
|
||||
store->clipmask,
|
||||
&store->ormask,
|
||||
&store->andmask );
|
||||
|
||||
} else {
|
||||
VB->ProjectedClipPtr = 0;
|
||||
}
|
||||
else {
|
||||
VB->NdcPtr = 0;
|
||||
_mesa_clip_np_tab[VB->ClipPtr->size]( VB->ClipPtr,
|
||||
0,
|
||||
store->clipmask,
|
||||
|
|
@ -227,14 +230,14 @@ static GLboolean run_vertex_stage( GLcontext *ctx,
|
|||
|
||||
store->save_eyeptr = VB->EyePtr;
|
||||
store->save_clipptr = VB->ClipPtr;
|
||||
store->save_projptr = VB->ProjectedClipPtr;
|
||||
store->save_ndcptr = VB->NdcPtr;
|
||||
}
|
||||
else {
|
||||
/* Replay the sideeffects.
|
||||
*/
|
||||
VB->EyePtr = store->save_eyeptr;
|
||||
VB->ClipPtr = store->save_clipptr;
|
||||
VB->ProjectedClipPtr = store->save_projptr;
|
||||
VB->NdcPtr = store->save_ndcptr;
|
||||
VB->ClipMask = store->clipmask;
|
||||
VB->ClipOrMask = store->ormask;
|
||||
if (VB->ClipPtr == VB->ObjPtr && (VB->importable_data & VERT_OBJ_BIT))
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
/* $Id: gen_matypes.c,v 1.4 2001/12/16 11:28:20 brianp Exp $ */
|
||||
/* $Id: gen_matypes.c,v 1.5 2001/12/18 04:06:45 brianp Exp $ */
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
|
|
@ -122,7 +122,7 @@ int main( int argc, char **argv )
|
|||
OFFSET( "VB_OBJ_PTR ", struct vertex_buffer, ObjPtr );
|
||||
OFFSET( "VB_EYE_PTR ", struct vertex_buffer, EyePtr );
|
||||
OFFSET( "VB_CLIP_PTR ", struct vertex_buffer, ClipPtr );
|
||||
OFFSET( "VB_PROJ_CLIP_PTR ", struct vertex_buffer, ProjectedClipPtr );
|
||||
OFFSET( "VB_PROJ_CLIP_PTR ", struct vertex_buffer, NdcPtr );
|
||||
OFFSET( "VB_CLIP_OR_MASK ", struct vertex_buffer, ClipOrMask );
|
||||
OFFSET( "VB_CLIP_MASK ", struct vertex_buffer, ClipMask );
|
||||
OFFSET( "VB_NORMAL_PTR ", struct vertex_buffer, NormalPtr );
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue