summaryrefslogtreecommitdiffstats
path: root/src/mesa/main/extensions.c
diff options
context:
space:
mode:
authorNanley Chery <[email protected]>2015-09-02 11:53:16 -0700
committerNanley Chery <[email protected]>2015-11-12 13:10:37 -0800
commitf6a818e76d09633c37057703ba1796ecd5678317 (patch)
tree85043d9db47314104a482ac9b692427263acb672 /src/mesa/main/extensions.c
parentf47df8f729abfda177120a1437197372fd19b83f (diff)
mesa/extensions: Create _mesa_extension_supported()
Create a function which determines if an extension is supported in the current context. v2: Use common variable names (Emil) Insert new line between variables and return statement (Chad) Rename api_set variable to api_bit (Chad) Signed-off-by: Nanley Chery <[email protected]> Reviewed-by: Chad Versace <[email protected]>
Diffstat (limited to 'src/mesa/main/extensions.c')
-rw-r--r--src/mesa/main/extensions.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/mesa/main/extensions.c b/src/mesa/main/extensions.c
index 4fd7487e7e2..83c492130f2 100644
--- a/src/mesa/main/extensions.c
+++ b/src/mesa/main/extensions.c
@@ -426,6 +426,24 @@ typedef unsigned short extension_index;
/**
+ * Given an extension enum, return whether or not the extension is supported
+ * dependent on the following factors:
+ * There's driver support and the OpenGL/ES version is at least that
+ * specified in the extension_table.
+ */
+static inline bool
+_mesa_extension_supported(const struct gl_context *ctx, extension_index i)
+{
+ const bool *base = (bool *) &ctx->Extensions;
+ const struct extension *ext = extension_table + i;
+ const uint8_t api_bit = 1 << ctx->API;
+
+ return (ext->api_set & api_bit) &&
+ (ctx->Version >= ext->version[ctx->API]) &&
+ base[ext->offset];
+}
+
+/**
* Compare two entries of the extensions table. Sorts first by year,
* then by name.
*