From d737db87349f4d3e9d5ff2cb4758d270cb8f1db7 Mon Sep 17 00:00:00 2001 From: Laszlo Agocs Date: Wed, 22 Apr 2020 14:40:47 +0200 Subject: [PATCH] Clarify ResetNotification in QSurfaceFormat a bit Add some more details to make it a bit easier for advanced users to grasp what this is about. Task-number: QTBUG-80257 Pick-to: 5.15 Change-Id: I9969b5b62384a25d5e90b57ef25c83a8a2a6c9c7 Reviewed-by: Andy Nichols --- src/gui/kernel/qopenglcontext.cpp | 8 ++++++++ src/gui/kernel/qsurfaceformat.cpp | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/gui/kernel/qopenglcontext.cpp b/src/gui/kernel/qopenglcontext.cpp index 9a03333537..d164f44e73 100644 --- a/src/gui/kernel/qopenglcontext.cpp +++ b/src/gui/kernel/qopenglcontext.cpp @@ -524,6 +524,14 @@ QOpenGLContext::~QOpenGLContext() OpenGL context by calling create(), call makeCurrent() again and then reinitialize all OpenGL resources. + On some platforms context loss situations is not something that can + avoided. On others however, they may need to be opted-in to. This can be + done by enabling \l{QSurfaceFormat::ResetNotification}{ResetNotification} in + the QSurfaceFormat. This will lead to setting + \c{RESET_NOTIFICATION_STRATEGY_EXT} to \c{LOSE_CONTEXT_ON_RESET_EXT} in the + underlying native OpenGL context. QOpenGLContext will then monitor the + status via \c{glGetGraphicsResetStatusEXT()} in every makeCurrent(). + \sa create() */ bool QOpenGLContext::isValid() const diff --git a/src/gui/kernel/qsurfaceformat.cpp b/src/gui/kernel/qsurfaceformat.cpp index 571b820409..6c04abc293 100644 --- a/src/gui/kernel/qsurfaceformat.cpp +++ b/src/gui/kernel/qsurfaceformat.cpp @@ -148,7 +148,10 @@ public: \value ResetNotification Enables notifications about resets of the OpenGL context. The status is then queryable via the context's \l{QOpenGLContext::isValid()}{isValid()} function. Note that not setting this flag does not guarantee that context state loss never occurs. Additionally, some implementations - may choose to report context loss regardless of this flag. + may choose to report context loss regardless of this flag. Platforms that support dynamically enabling + the monitoring of the loss of context, such as, Windows with WGL, or Linux/X11 (xcb) with GLX, will + monitor the status in every call to \l{QOpenGLContext::makeCurrent()}{makeCurrent()}. See + \l{QOpenGLContext::isValid()}{isValid()} for more information on this. */ /*!