On 01/10/2011 12:53 AM, Chad Versace wrote:
Place GL, GLES1, and GLES2 extensions in a unified extension table. This
allows one to enable, disable, and query the status of GLES1 and GLES2
extensions by name.
When tested on Intel Ironlake, this patch did not alter the extension
string [as given by glGetString(GL_EXTENSIONS)] for any API.
---
src/mesa/main/extensions.c | 904 ++++++++++++++++++++------------------------
src/mesa/main/mtypes.h | 3 +
2 files changed, 417 insertions(+), 490 deletions(-)
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 4262615..a771d62 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -24,6 +24,12 @@
*/
+/**
+ * \file
+ * \brief Extension handling
+ */
+
+
#include "glheader.h"
#include "imports.h"
#include "context.h"
@@ -31,200 +37,342 @@
#include "mfeatures.h"
#include "mtypes.h"
+static const uint8_t GL = 1<< 0;
+static const uint8_t ES1 = 1<< 1;
+static const uint8_t ES2 = 1<< 2;
-#define F(x) offsetof(struct gl_extensions, x)
-#define ON GL_TRUE
-#define OFF GL_FALSE
+static unsigned
+api_bit(struct gl_context* ctx)
+{
+ switch(ctx->API) {
+ case API_OPENGL: return GL;
+ case API_OPENGLES: return ES1;
+ case API_OPENGLES2: return ES2;
+ default:
+ assert(0);
+ return 0;
+ }
+}
Why not just defined the GL, ES1 and ES2 bits to be 1 << gl_api like this:
GL = 1 << API_OPENGL
ES1 = 1 << API_OPENGLES
ES2 = 1 << API_OPENGLES2
That'd make api_bit() trivial.
[...]
GL },
+ { "GL_SGIS_texture_edge_clamp", o(SGIS_texture_edge_clamp),
GL },
+ { "GL_SGIS_texture_lod", o(SGIS_texture_lod),
GL },
+ { "GL_SGI_texture_color_table", o(SGI_texture_color_table),
GL },
+ { "GL_SUN_multi_draw_arrays", o(EXT_multi_draw_arrays),
GL },
+
+ { 0, 0, 0, },
Some compilers will complain about the trailing comma after the 0 there.
-Brian
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev