Class KHRContextFlushControl
OpenGL and OpenGL ES have long supported multiple contexts. The semantics of switching contexts is generally left to window system binding APIs such as WGL, GLX and EGL. Most of these APIs (if not all) specify that when the current context for a thread is changed, the outgoing context performs an implicit flush of any commands that have been issued to that point. OpenGL and OpenGL ES define a flush as sending any pending commands for execution and that this action will result in their completion in finite time.
This behavior has subtle consequences. For example, if an application is rendering to the front buffer and switches contexts, it may assume that any rendering performed thus far will eventually be visible to the user. With recent introduction of shared memory buffers, there become inumerable ways in which applications may observe side effects of an implicit flush (or lack thereof).
In general, a full flush is not the desired behavior of the application. Nonetheless, applications that switch contexts frequently suffer the performance consequences of this unless implementations make special considerations for them, which is generally untenable.
The EGL, GLX, and WGL extensions add new context creation parameters that allow an application to specify the behavior that is desired when a context is made non-current, and specifically to opt out of the implicit flush behavior. The GL extension allows querying the context flush behavior.
-
Field Summary
Modifier and TypeFieldDescriptionstatic final int
Accepted as an attribute value forCONTEXT_RELEASE_BEHAVIOR_KHR
in the*attrib_list
argument toCreateContext
.static final int
Accepted as an attribute name in the*attrib_list
argument toCreateContext
.static final int
Accepted as an attribute value forCONTEXT_RELEASE_BEHAVIOR_KHR
in the*attrib_list
argument toCreateContext
. -
Method Summary
-
Field Details
-
EGL_CONTEXT_RELEASE_BEHAVIOR_KHR
public static final int EGL_CONTEXT_RELEASE_BEHAVIOR_KHRAccepted as an attribute name in the*attrib_list
argument toCreateContext
.- See Also:
-
EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHR
public static final int EGL_CONTEXT_RELEASE_BEHAVIOR_NONE_KHRAccepted as an attribute value forCONTEXT_RELEASE_BEHAVIOR_KHR
in the*attrib_list
argument toCreateContext
.- See Also:
-
EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHR
public static final int EGL_CONTEXT_RELEASE_BEHAVIOR_FLUSH_KHRAccepted as an attribute value forCONTEXT_RELEASE_BEHAVIOR_KHR
in the*attrib_list
argument toCreateContext
.- See Also:
-