[waffle] [PATCH 2/6] glx: Add support for robust access contexts.
Bas Nieuwenhuizen
bas at basnieuwenhuizen.nl
Wed Apr 6 15:59:26 UTC 2016
Signed-off-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>
---
src/waffle/glx/glx_config.c | 7 +++++++
src/waffle/glx/glx_context.c | 4 ++++
src/waffle/glx/glx_display.c | 1 +
src/waffle/glx/glx_display.h | 1 +
4 files changed, 13 insertions(+)
diff --git a/src/waffle/glx/glx_config.c b/src/waffle/glx/glx_config.c
index 7792aa0..5561e28 100644
--- a/src/waffle/glx/glx_config.c
+++ b/src/waffle/glx/glx_config.c
@@ -68,6 +68,13 @@ glx_config_check_context_attrs(struct glx_display *dpy,
return false;
}
+ if (attrs->context_robust && !dpy->ARB_create_context_robustness) {
+ wcore_errorf(WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM,
+ "GLX_ARB_create_context_robustness is required in order to "
+ "request a robust access context");
+ return false;
+ }
+
switch (attrs->context_api) {
case WAFFLE_CONTEXT_OPENGL:
if (!wcore_config_attrs_version_eq(attrs, 10) && !dpy->ARB_create_context) {
diff --git a/src/waffle/glx/glx_context.c b/src/waffle/glx/glx_context.c
index 1f9290b..c6cd813 100644
--- a/src/waffle/glx/glx_context.c
+++ b/src/waffle/glx/glx_context.c
@@ -151,6 +151,10 @@ glx_context_fill_attrib_list(struct glx_config *config,
context_flags |= GLX_CONTEXT_DEBUG_BIT_ARB;
}
+ if (attrs->context_robust) {
+ context_flags |= GLX_CONTEXT_ROBUST_ACCESS_BIT_ARB;
+ }
+
if (context_flags != 0) {
attrib_list[i++] = GLX_CONTEXT_FLAGS_ARB;
attrib_list[i++] = context_flags;
diff --git a/src/waffle/glx/glx_display.c b/src/waffle/glx/glx_display.c
index 24e967c..0c6851d 100644
--- a/src/waffle/glx/glx_display.c
+++ b/src/waffle/glx/glx_display.c
@@ -63,6 +63,7 @@ glx_display_set_extensions(struct glx_display *self)
self->ARB_create_context = waffle_is_extension_in_string(s, "GLX_ARB_create_context");
self->ARB_create_context_profile = waffle_is_extension_in_string(s, "GLX_ARB_create_context_profile");
+ self->ARB_create_context_robustness = waffle_is_extension_in_string(s, "GLX_ARB_create_context_robustness");
self->EXT_create_context_es_profile = waffle_is_extension_in_string(s, "GLX_EXT_create_context_es_profile");
// The GLX_EXT_create_context_es2_profile spec, version 4 2012/03/28,
diff --git a/src/waffle/glx/glx_display.h b/src/waffle/glx/glx_display.h
index 4b8f687..b8bb875 100644
--- a/src/waffle/glx/glx_display.h
+++ b/src/waffle/glx/glx_display.h
@@ -46,6 +46,7 @@ struct glx_display {
bool ARB_create_context;
bool ARB_create_context_profile;
+ bool ARB_create_context_robustness;
bool EXT_create_context_es_profile;
bool EXT_create_context_es2_profile;
};
--
2.8.0
More information about the waffle
mailing list