diff options
Diffstat (limited to 'src/mesa/main/mfeatures.h')
| -rw-r--r-- | src/mesa/main/mfeatures.h | 48 | 
1 files changed, 44 insertions, 4 deletions
| diff --git a/src/mesa/main/mfeatures.h b/src/mesa/main/mfeatures.h index e23cdb1f42..4e68bc15d8 100644 --- a/src/mesa/main/mfeatures.h +++ b/src/mesa/main/mfeatures.h @@ -36,12 +36,53 @@  #define _HAVE_FULL_GL 1  #endif +/* assert that a feature is disabled and should never be used */ +#define ASSERT_NO_FEATURE() ASSERT(0) + +/** + * A feature can be anything.  But most of them share certain characteristics. + * + * When a feature defines driver entries, they can be initialized by + *   _MESA_INIT_<FEATURE>_FUNCTIONS + * + * When a feature defines vtxfmt entries, they can be initialized and + * installed by + *   _MESA_INIT_<FEATURE>_VTXFMT + *   _mesa_install_<feature>_vtxfmt + * + * When a feature defines dispatch entries, they are initialized by + *   _mesa_init_<feature>_dispatch + * + * When a feature has states, they are initialized and freed by + *   _mesa_init_<feature> + *   _mesa_free_<feature>_data + * + * Except for states, the others compile to no-op when a feature is disabled. + * + * The GLAPIENTRYs and helper functions defined by a feature should also + * compile to no-op when it is disabled.  But to save typings and to catch + * bugs, some of them may be unavailable, or compile to ASSERT_NO_FEATURE() + * when the feature is disabled. + * + * A feature following the conventions may be used without knowing if it is + * enabled or not. + */ + +#ifdef IN_DRI_DRIVER +#define FEATURE_remap_table 1 +#else +#define FEATURE_remap_table 0 +#endif +  #define FEATURE_accum  _HAVE_FULL_GL +#define FEATURE_arrayelt  _HAVE_FULL_GL  #define FEATURE_attrib_stack  _HAVE_FULL_GL +/* this disables vtxfmt, api_loopback, and api_noop completely */ +#define FEATURE_beginend  _HAVE_FULL_GL  #define FEATURE_colortable  _HAVE_FULL_GL  #define FEATURE_convolve  _HAVE_FULL_GL  #define FEATURE_dispatch  _HAVE_FULL_GL -#define FEATURE_dlist  _HAVE_FULL_GL +#define FEATURE_dlist  (_HAVE_FULL_GL && FEATURE_arrayelt && FEATURE_beginend)  #define FEATURE_draw_read_buffer  _HAVE_FULL_GL  #define FEATURE_drawpix  _HAVE_FULL_GL  #define FEATURE_evaluators  _HAVE_FULL_GL @@ -50,15 +91,15 @@  #define FEATURE_histogram  _HAVE_FULL_GL  #define FEATURE_pixel_transfer  _HAVE_FULL_GL  #define FEATURE_point_size_array 0 +#define FEATURE_queryobj  _HAVE_FULL_GL +#define FEATURE_rastpos  _HAVE_FULL_GL  #define FEATURE_texgen  _HAVE_FULL_GL  #define FEATURE_texture_fxt1  _HAVE_FULL_GL  #define FEATURE_texture_s3tc  _HAVE_FULL_GL  #define FEATURE_userclip  _HAVE_FULL_GL  #define FEATURE_vertex_array_byte 0 -#define FEATURE_windowpos  _HAVE_FULL_GL  #define FEATURE_es2_glsl 0 -#define FEATURE_ARB_occlusion_query  _HAVE_FULL_GL  #define FEATURE_ARB_fragment_program  _HAVE_FULL_GL  #define FEATURE_ARB_framebuffer_object  _HAVE_FULL_GL  #define FEATURE_ARB_map_buffer_range  _HAVE_FULL_GL @@ -76,7 +117,6 @@  #define FEATURE_EXT_framebuffer_object _HAVE_FULL_GL  #define FEATURE_EXT_pixel_buffer_object  _HAVE_FULL_GL  #define FEATURE_EXT_texture_sRGB _HAVE_FULL_GL -#define FEATURE_EXT_timer_query  _HAVE_FULL_GL  #define FEATURE_ATI_fragment_shader _HAVE_FULL_GL  #define FEATURE_NV_fence  _HAVE_FULL_GL  #define FEATURE_NV_fragment_program  _HAVE_FULL_GL | 
