mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-06 02:58:05 +02:00
mesa: Add support for the GL_KHR_context_flush_control extension
The GL side of this extension just provides an accessor via glGetIntegerv for the value of GL_CONTEXT_RELEASE_BEHAVIOR so it is trivial to implement. There is a constant on the context for the value of the enum which is initialised to GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH. The extension is always enabled because it doesn't need any driver interaction to retrieve the value. If the value of the enum is anything but FLUSH then _mesa_make_current will now refrain from calling _mesa_flush. This should only affect drivers that explicitly change the enum to a non-default value. Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
This commit is contained in:
parent
1ecf6e1595
commit
60ec95fa1e
6 changed files with 27 additions and 2 deletions
11
src/mapi/glapi/gen/KHR_context_flush_control.xml
Normal file
11
src/mapi/glapi/gen/KHR_context_flush_control.xml
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
|
||||
|
||||
<OpenGLAPI>
|
||||
|
||||
<category name="GL_KHR_context_flush_control" number="168">
|
||||
<enum name="CONTEXT_RELEASE_BEHAVIOR" value="0x82FB"/>
|
||||
<enum name="CONTEXT_RELEASE_BEHAVIOR_FLUSH" value="0x82FC"/>
|
||||
</category>
|
||||
|
||||
</OpenGLAPI>
|
||||
|
|
@ -8379,6 +8379,8 @@
|
|||
|
||||
<xi:include href="ARB_texture_barrier.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
|
||||
|
||||
<xi:include href="KHR_context_flush_control.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
|
||||
|
||||
<!-- Non-ARB extensions sorted by extension number. -->
|
||||
|
||||
<category name="GL_EXT_blend_color" number="2">
|
||||
|
|
|
|||
|
|
@ -719,6 +719,9 @@ _mesa_init_constants(struct gl_constants *consts, gl_api api)
|
|||
/** GL_ARB_gpu_shader5 */
|
||||
consts->MinFragmentInterpolationOffset = MIN_FRAGMENT_INTERPOLATION_OFFSET;
|
||||
consts->MaxFragmentInterpolationOffset = MAX_FRAGMENT_INTERPOLATION_OFFSET;
|
||||
|
||||
/** GL_KHR_context_flush_control */
|
||||
consts->ContextReleaseBehavior = GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH;
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -1622,9 +1625,11 @@ _mesa_make_current( struct gl_context *newCtx,
|
|||
}
|
||||
|
||||
if (curCtx &&
|
||||
(curCtx->WinSysDrawBuffer || curCtx->WinSysReadBuffer) &&
|
||||
(curCtx->WinSysDrawBuffer || curCtx->WinSysReadBuffer) &&
|
||||
/* make sure this context is valid for flushing */
|
||||
curCtx != newCtx)
|
||||
curCtx != newCtx &&
|
||||
curCtx->Const.ContextReleaseBehavior ==
|
||||
GL_CONTEXT_RELEASE_BEHAVIOR_FLUSH)
|
||||
_mesa_flush(curCtx);
|
||||
|
||||
/* We used to call _glapi_check_multithread() here. Now do it in drivers */
|
||||
|
|
|
|||
|
|
@ -320,6 +320,7 @@ static const struct extension extension_table[] = {
|
|||
|
||||
/* KHR extensions */
|
||||
{ "GL_KHR_debug", o(dummy_true), GL, 2012 },
|
||||
{ "GL_KHR_context_flush_control", o(dummy_true), GL | ES2, 2014 },
|
||||
|
||||
/* Vendor extensions */
|
||||
{ "GL_3DFX_texture_compression_FXT1", o(TDFX_texture_compression_FXT1), GL, 1999 },
|
||||
|
|
|
|||
|
|
@ -318,6 +318,9 @@ descriptor=[
|
|||
[ "PERFQUERY_COUNTER_NAME_LENGTH_MAX_INTEL", "CONST(MAX_PERFQUERY_COUNTER_NAME_LENGTH), extra_INTEL_performance_query" ],
|
||||
[ "PERFQUERY_COUNTER_DESC_LENGTH_MAX_INTEL", "CONST(MAX_PERFQUERY_COUNTER_DESC_LENGTH), extra_INTEL_performance_query" ],
|
||||
[ "PERFQUERY_GPA_EXTENDED_COUNTERS_INTEL", "CONST(PERFQUERY_HAVE_GPA_EXTENDED_COUNTERS), extra_INTEL_performance_query" ],
|
||||
|
||||
# GL_KHR_context_flush_control
|
||||
[ "CONTEXT_RELEASE_BEHAVIOR", "CONTEXT_ENUM(Const.ContextReleaseBehavior), NO_EXTRA" ],
|
||||
]},
|
||||
|
||||
# GLES3 is not a typo.
|
||||
|
|
|
|||
|
|
@ -3680,6 +3680,9 @@ struct gl_constants
|
|||
|
||||
GLboolean FakeSWMSAA;
|
||||
|
||||
/** GL_KHR_context_flush_control */
|
||||
GLenum ContextReleaseBehavior;
|
||||
|
||||
struct gl_shader_compiler_options ShaderCompilerOptions[MESA_SHADER_STAGES];
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue