summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Paul <brianp@vmware.com>2011-05-19 19:40:32 -0600
committerBrian Paul <brianp@vmware.com>2011-05-19 21:18:33 -0600
commit38f89c7008b5ed9a70439f4e6590f00a4e220b10 (patch)
treef68ed44c12ca9f84267f869473711018587abf5e
parent1929d52fd907b4e42e31ad459dd50a1de53df26c (diff)
st/glx: define/set new ST_CONTEXT_FLAG_bits
-rw-r--r--src/gallium/include/state_tracker/st_api.h24
-rw-r--r--src/gallium/state_trackers/glx/xlib/xm_api.c12
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 d4973a10cc7..04fc7c6c5de 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 dfdc723a705..ab4f6753e11 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);