mesa/main: Make FEATURE_attrib_stack follow feature conventions.

As shown in mfeatures.h, this allows users of attrib.h to work without
knowing if the feature is available.
This commit is contained in:
Chia-I Wu
2009-09-07 18:20:10 +08:00
committed by Brian Paul
parent a833ff0f53
commit 2b36db496d
4 changed files with 47 additions and 25 deletions

View File

@@ -39,9 +39,7 @@
#if FEATURE_ATI_fragment_shader #if FEATURE_ATI_fragment_shader
#include "shader/atifragshader.h" #include "shader/atifragshader.h"
#endif #endif
#if FEATURE_attrib_stack
#include "attrib.h" #include "attrib.h"
#endif
#include "blend.h" #include "blend.h"
#if FEATURE_ARB_vertex_buffer_object #if FEATURE_ARB_vertex_buffer_object
#include "bufferobj.h" #include "bufferobj.h"
@@ -283,12 +281,9 @@ _mesa_init_exec_table(struct _glapi_table *exec)
SET_PolygonMode(exec, _mesa_PolygonMode); SET_PolygonMode(exec, _mesa_PolygonMode);
SET_PolygonOffset(exec, _mesa_PolygonOffset); SET_PolygonOffset(exec, _mesa_PolygonOffset);
SET_PolygonStipple(exec, _mesa_PolygonStipple); SET_PolygonStipple(exec, _mesa_PolygonStipple);
#if FEATURE_attrib_stack
SET_PopAttrib(exec, _mesa_PopAttrib); _mesa_init_attrib_dispatch(exec);
SET_PushAttrib(exec, _mesa_PushAttrib);
SET_PopClientAttrib(exec, _mesa_PopClientAttrib);
SET_PushClientAttrib(exec, _mesa_PushClientAttrib);
#endif
#if FEATURE_drawpix #if FEATURE_drawpix
SET_RasterPos2f(exec, _mesa_RasterPos2f); SET_RasterPos2f(exec, _mesa_RasterPos2f);
SET_RasterPos2fv(exec, _mesa_RasterPos2fv); SET_RasterPos2fv(exec, _mesa_RasterPos2fv);

View File

@@ -57,6 +57,7 @@
#include "varray.h" #include "varray.h"
#include "viewport.h" #include "viewport.h"
#include "mtypes.h" #include "mtypes.h"
#include "glapi/dispatch.h"
/** /**
@@ -174,6 +175,9 @@ struct texture_state
}; };
#if FEATURE_attrib_stack
/** /**
* Allocate new attribute node of given type/kind. Attach payload data. * Allocate new attribute node of given type/kind. Attach payload data.
* Insert it into the linked list named by 'head'. * Insert it into the linked list named by 'head'.
@@ -1464,6 +1468,19 @@ _mesa_PopClientAttrib(void)
} }
void
_mesa_init_attrib_dispatch(struct _glapi_table *disp)
{
SET_PopAttrib(disp, _mesa_PopAttrib);
SET_PushAttrib(disp, _mesa_PushAttrib);
SET_PopClientAttrib(disp, _mesa_PopClientAttrib);
SET_PushClientAttrib(disp, _mesa_PushClientAttrib);
}
#endif /* FEATURE_attrib_stack */
/** /**
* Free any attribute state data that might be attached to the context. * Free any attribute state data that might be attached to the context.
*/ */

View File

@@ -26,10 +26,10 @@
#define ATTRIB_H #define ATTRIB_H
#include "mtypes.h" #include "main/mtypes.h"
#if _HAVE_FULL_GL #if FEATURE_attrib_stack
extern void GLAPIENTRY extern void GLAPIENTRY
_mesa_PushAttrib( GLbitfield mask ); _mesa_PushAttrib( GLbitfield mask );
@@ -43,18 +43,34 @@ _mesa_PushClientAttrib( GLbitfield mask );
extern void GLAPIENTRY extern void GLAPIENTRY
_mesa_PopClientAttrib( void ); _mesa_PopClientAttrib( void );
extern void
_mesa_init_attrib_dispatch(struct _glapi_table *disp);
#else /* FEATURE_attrib_stack */
static INLINE void
_mesa_PushClientAttrib( GLbitfield mask )
{
ASSERT_NO_FEATURE();
}
static INLINE void
_mesa_PopClientAttrib( void )
{
ASSERT_NO_FEATURE();
}
static INLINE void
_mesa_init_attrib_dispatch(struct _glapi_table *disp)
{
}
#endif /* FEATURE_attrib_stack */
extern void extern void
_mesa_init_attrib( GLcontext *ctx ); _mesa_init_attrib( GLcontext *ctx );
extern void extern void
_mesa_free_attrib_data( GLcontext *ctx ); _mesa_free_attrib_data( GLcontext *ctx );
#else #endif /* ATTRIB_H */
/** No-op */
#define _mesa_init_attrib( c ) ((void)0)
#define _mesa_free_attrib_data( c ) ((void)0)
#endif
#endif

View File

@@ -82,9 +82,7 @@
#include "accum.h" #include "accum.h"
#include "api_exec.h" #include "api_exec.h"
#include "arrayobj.h" #include "arrayobj.h"
#if FEATURE_attrib_stack
#include "attrib.h" #include "attrib.h"
#endif
#include "blend.h" #include "blend.h"
#include "buffers.h" #include "buffers.h"
#include "bufferobj.h" #include "bufferobj.h"
@@ -675,9 +673,7 @@ init_attrib_groups(GLcontext *ctx)
/* Attribute Groups */ /* Attribute Groups */
_mesa_init_accum( ctx ); _mesa_init_accum( ctx );
#if FEATURE_attrib_stack
_mesa_init_attrib( ctx ); _mesa_init_attrib( ctx );
#endif
_mesa_init_buffer_objects( ctx ); _mesa_init_buffer_objects( ctx );
_mesa_init_color( ctx ); _mesa_init_color( ctx );
_mesa_init_colortables( ctx ); _mesa_init_colortables( ctx );
@@ -997,9 +993,7 @@ _mesa_free_context_data( GLcontext *ctx )
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram._Current, NULL); _mesa_reference_fragprog(ctx, &ctx->FragmentProgram._Current, NULL);
_mesa_reference_fragprog(ctx, &ctx->FragmentProgram._TexEnvProgram, NULL); _mesa_reference_fragprog(ctx, &ctx->FragmentProgram._TexEnvProgram, NULL);
#if FEATURE_attrib_stack
_mesa_free_attrib_data(ctx); _mesa_free_attrib_data(ctx);
#endif
_mesa_free_lighting_data( ctx ); _mesa_free_lighting_data( ctx );
#if FEATURE_evaluators #if FEATURE_evaluators
_mesa_free_eval_data( ctx ); _mesa_free_eval_data( ctx );