1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
/*
* Mesa 3-D graphics library
* Version: 7.1
*
* Copyright (C) 1999-2008 Brian Paul All Rights Reserved.
*
* Permission is hereby granted, free of charge, to any person obtaining a
* copy of this software and associated documentation files (the "Software"),
* to deal in the Software without restriction, including without limitation
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
* and/or sell copies of the Software, and to permit persons to whom the
* Software is furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
* BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
* AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
/**
* \file mfeatures.h
* Flags to enable/disable specific parts of the API.
*/
#ifndef FEATURES_H
#define FEATURES_H
#ifndef _HAVE_FULL_GL
#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 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.
*/
#ifndef FEATURE_ES1
#define FEATURE_ES1 0
#endif
#ifndef FEATURE_ES2
#define FEATURE_ES2 0
#endif
#define FEATURE_ES (FEATURE_ES1 || FEATURE_ES2)
#ifndef FEATURE_GL
#define FEATURE_GL !FEATURE_ES
#endif
#if defined(IN_DRI_DRIVER) || (FEATURE_GL + FEATURE_ES1 + FEATURE_ES2 > 1)
#define FEATURE_remap_table 1
#else
#define FEATURE_remap_table 0
#endif
#define FEATURE_dispatch 1
#define FEATURE_texgen 1
#define FEATURE_userclip 1
#define FEATURE_accum FEATURE_GL
#define FEATURE_arrayelt FEATURE_GL
#define FEATURE_attrib_stack FEATURE_GL
/* this disables vtxfmt, api_loopback, and api_noop completely */
#define FEATURE_beginend FEATURE_GL
#define FEATURE_colortable FEATURE_GL
#define FEATURE_convolve FEATURE_GL
#define FEATURE_dlist (FEATURE_GL && FEATURE_arrayelt && FEATURE_beginend)
#define FEATURE_draw_read_buffer FEATURE_GL
#define FEATURE_drawpix FEATURE_GL
#define FEATURE_evaluators FEATURE_GL
#define FEATURE_feedback FEATURE_GL
#define FEATURE_pixel_transfer FEATURE_GL
#define FEATURE_queryobj FEATURE_GL
#define FEATURE_rastpos FEATURE_GL
#define FEATURE_texture_fxt1 FEATURE_GL
#define FEATURE_texture_s3tc FEATURE_GL
#define FEATURE_extra_context_init FEATURE_ES
#define FEATURE_point_size_array FEATURE_ES
#define FEATURE_es2_glsl FEATURE_ES2
#define FEATURE_ARB_fragment_program 1
#define FEATURE_ARB_vertex_program 1
#define FEATURE_ARB_vertex_shader 1
#define FEATURE_ARB_fragment_shader 1
#define FEATURE_ARB_shader_objects (FEATURE_ARB_vertex_shader || FEATURE_ARB_fragment_shader)
#define FEATURE_ARB_shading_language_100 FEATURE_ARB_shader_objects
#define FEATURE_ARB_geometry_shader4 FEATURE_ARB_shader_objects
#define FEATURE_ARB_framebuffer_object (FEATURE_GL && FEATURE_EXT_framebuffer_object)
#define FEATURE_ARB_map_buffer_range FEATURE_GL
#define FEATURE_ARB_pixel_buffer_object (FEATURE_GL && FEATURE_EXT_pixel_buffer_object)
#define FEATURE_ARB_sampler_objects FEATURE_GL
#define FEATURE_ARB_sync FEATURE_GL
#define FEATURE_ARB_vertex_buffer_object 1
#define FEATURE_EXT_framebuffer_blit FEATURE_GL
#define FEATURE_EXT_framebuffer_object 1
#define FEATURE_EXT_pixel_buffer_object 1
#define FEATURE_EXT_texture_sRGB FEATURE_GL
#define FEATURE_EXT_transform_feedback FEATURE_GL
#define FEATURE_APPLE_object_purgeable FEATURE_GL
#define FEATURE_ATI_fragment_shader FEATURE_GL
#define FEATURE_NV_fence FEATURE_GL
#define FEATURE_NV_fragment_program FEATURE_GL
#define FEATURE_NV_vertex_program FEATURE_GL
#define FEATURE_OES_EGL_image 1
#define FEATURE_OES_draw_texture FEATURE_ES1
#define FEATURE_OES_framebuffer_object FEATURE_ES
#define FEATURE_OES_mapbuffer FEATURE_ES
#endif /* FEATURES_H */
|