summaryrefslogtreecommitdiff
path: root/src/mesa
diff options
context:
space:
mode:
authorChia-I Wu <olvaffe@gmail.com>2009-09-07 17:51:33 +0800
committerChia-I Wu <olvaffe@gmail.com>2009-09-12 20:55:54 +0800
commitb565e7b88c5604197a1393dda7b4ad57a835d4e5 (patch)
tree6c6d52848fe6bf3f897378754ae57e7c41233762 /src/mesa
parentc7ebd40185abfd9daa59b92d18f9f0269c82a2fa (diff)
mesa/main: Add comments to mfeatures.h.
The comments document the conventions that a feature may follow.
Diffstat (limited to 'src/mesa')
-rw-r--r--src/mesa/main/mfeatures.h33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/mesa/main/mfeatures.h b/src/mesa/main/mfeatures.h
index e23cdb1f42..b05cfab1bf 100644
--- a/src/mesa/main/mfeatures.h
+++ b/src/mesa/main/mfeatures.h
@@ -31,11 +31,44 @@
#ifndef FEATURES_H
#define FEATURES_H
+#include "compiler.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 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 convensions may be used without knowing if it is
+ * enabled or not.
+ */
+
#define FEATURE_accum _HAVE_FULL_GL
#define FEATURE_attrib_stack _HAVE_FULL_GL
#define FEATURE_colortable _HAVE_FULL_GL