Mesa (master): st/glx: define/set new ST_CONTEXT_FLAG_bits

Brian Paul brianp at kemper.freedesktop.org
Fri May 20 03:19:21 UTC 2011


Module: Mesa
Branch: master
Commit: 38f89c7008b5ed9a70439f4e6590f00a4e220b10
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=38f89c7008b5ed9a70439f4e6590f00a4e220b10

Author: Brian Paul <brianp at vmware.com>
Date:   Thu May 19 19:40:32 2011 -0600

st/glx: define/set new ST_CONTEXT_FLAG_bits

---

 src/gallium/include/state_tracker/st_api.h   |   24 +++++++++++++-----------
 src/gallium/state_trackers/glx/xlib/xm_api.c |   12 ++++++++++++
 2 files changed, 25 insertions(+), 11 deletions(-)

diff --git a/src/gallium/include/state_tracker/st_api.h b/src/gallium/include/state_tracker/st_api.h
index d4973a1..04fc7c6 100644
--- a/src/gallium/include/state_tracker/st_api.h
+++ b/src/gallium/include/state_tracker/st_api.h
@@ -70,6 +70,15 @@ enum st_profile_type
 #define ST_PROFILE_OPENGL_ES2_MASK   (1 << ST_PROFILE_OPENGL_ES2)
 
 /**
+ * New context flags for GL 3.0 and beyond.
+ */
+#define ST_CONTEXT_FLAG_CORE_PROFILE        (1 << 0)
+#define ST_CONTEXT_FLAG_COMPATIBLE_PROFILE  (1 << 1)
+#define ST_CONTEXT_FLAG_FORWARD_COMPATIBLE  (1 << 2)
+#define ST_CONTEXT_FLAG_DEBUG               (1 << 3)
+#define ST_CONTEXT_FLAG_ROBUST_ACCESS       (1 << 4)
+
+/**
  * Used in st_context_iface->teximage.
  */
 enum st_texture_type {
@@ -207,21 +216,14 @@ struct st_context_attribs
     * The profile and minimal version to support.
     *
     * The valid profiles and versions are rendering API dependent.  The latest
-    * version satisfying the request should be returned, unless
-    * forward_compatiible is true.
+    * version satisfying the request should be returned, unless the
+    * ST_CONTEXT_FLAG_FORWARD_COMPATIBLE bit is set.
     */
    enum st_profile_type profile;
    int major, minor;
 
-   /**
-    * Enable debugging.
-    */
-   boolean debug;
-
-   /**
-    * Return the exact version and disallow the use of deprecated features.
-    */
-   boolean forward_compatible;
+   /** Mask of ST_CONTEXT_FLAG_x bits */
+   unsigned flags;
 
    /**
     * The visual of the framebuffers the context will be bound to.
diff --git a/src/gallium/state_trackers/glx/xlib/xm_api.c b/src/gallium/state_trackers/glx/xlib/xm_api.c
index dfdc723..ab4f675 100644
--- a/src/gallium/state_trackers/glx/xlib/xm_api.c
+++ b/src/gallium/state_trackers/glx/xlib/xm_api.c
@@ -876,6 +876,18 @@ XMesaContext XMesaCreateContext( XMesaVisual v, XMesaContext share_list,
    memset(&attribs, 0, sizeof(attribs));
    attribs.profile = ST_PROFILE_DEFAULT;
    attribs.visual = v->stvis;
+   attribs.major = major;
+   attribs.minor = minor;
+   if (contextFlags & GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB)
+      attribs.flags |= ST_CONTEXT_FLAG_FORWARD_COMPATIBLE;
+   if (contextFlags & GLX_CONTEXT_DEBUG_BIT_ARB)
+      attribs.flags |= ST_CONTEXT_FLAG_DEBUG;
+   if (contextFlags & GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB)
+      attribs.flags |= ST_CONTEXT_FLAG_ROBUST_ACCESS;
+   if (profileMask & GLX_CONTEXT_CORE_PROFILE_BIT_ARB)
+      attribs.flags |= ST_CONTEXT_FLAG_CORE_PROFILE;
+   if (profileMask & GLX_CONTEXT_COMPATIBILITY_PROFILE_BIT_ARB)
+      attribs.flags |= ST_CONTEXT_FLAG_COMPATIBLE_PROFILE;
 
    c->st = stapi->create_context(stapi, xmdpy->smapi,
          &attribs, (share_list) ? share_list->st : NULL);




More information about the mesa-commit mailing list