Signed-off-by: Bas Nieuwenhuizen <b...@basnieuwenhuizen.nl> --- src/waffle/wgl/wgl_config.c | 7 +++++++ src/waffle/wgl/wgl_context.c | 4 ++++ src/waffle/wgl/wgl_display.c | 1 + src/waffle/wgl/wgl_display.h | 1 + 4 files changed, 13 insertions(+)
diff --git a/src/waffle/wgl/wgl_config.c b/src/waffle/wgl/wgl_config.c index 59a70a6..80d45fc 100644 --- a/src/waffle/wgl/wgl_config.c +++ b/src/waffle/wgl/wgl_config.c @@ -71,6 +71,13 @@ wgl_config_check_context_attrs(struct wgl_display *dpy, return false; } + if (attrs->context_robust && !dpy->ARB_create_context_robustness) { + wcore_errorf(WAFFLE_ERROR_UNSUPPORTED_ON_PLATFORM, + "WGL_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/wgl/wgl_context.c b/src/waffle/wgl/wgl_context.c index dd45f81..c7a351f 100644 --- a/src/waffle/wgl/wgl_context.c +++ b/src/waffle/wgl/wgl_context.c @@ -135,6 +135,10 @@ wgl_context_fill_attrib_list(struct wgl_config *config, context_flags |= WGL_CONTEXT_DEBUG_BIT_ARB; } + if (attrs->context_robust) { + context_flags |= WGL_CONTEXT_ROBUST_ACCESS_BIT_ARB; + } + if (context_flags != 0) { attrib_list[i++] = WGL_CONTEXT_FLAGS_ARB; attrib_list[i++] = context_flags; diff --git a/src/waffle/wgl/wgl_display.c b/src/waffle/wgl/wgl_display.c index 9b3b38e..c0b547a 100644 --- a/src/waffle/wgl/wgl_display.c +++ b/src/waffle/wgl/wgl_display.c @@ -153,6 +153,7 @@ wgl_display_set_extensions(struct wgl_display *dpy) dpy->ARB_create_context = waffle_is_extension_in_string(extensions, "WGL_ARB_create_context"); dpy->ARB_create_context_profile = waffle_is_extension_in_string(extensions, "WGL_ARB_create_context_profile"); + dpy->ARB_create_context_robustness = waffle_is_extension_in_string(extensions, "WGL_ARB_create_context_robustness"); dpy->EXT_create_context_es_profile = waffle_is_extension_in_string(extensions, "WGL_EXT_create_context_es_profile"); // The WGL_EXT_create_context_es2_profile spec, version 5 2012/04/06, diff --git a/src/waffle/wgl/wgl_display.h b/src/waffle/wgl/wgl_display.h index d0d94fe..c8dfb81 100644 --- a/src/waffle/wgl/wgl_display.h +++ b/src/waffle/wgl/wgl_display.h @@ -55,6 +55,7 @@ struct wgl_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; bool ARB_pixel_format; -- 2.8.0 _______________________________________________ waffle mailing list waffle@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/waffle