[Mesa-dev] [PATCH v3] mesa: Enable GL_KHR_robustness
Kristian Høgsberg
krh at bitplanet.net
Wed May 25 04:01:06 UTC 2016
On Tue, May 24, 2016 at 8:19 PM, Ilia Mirkin <imirkin at alum.mit.edu> wrote:
> On Tue, May 24, 2016 at 10:41 PM, Kristian Høgsberg <krh at bitplanet.net> wrote:
>> From: Kristian Høgsberg Kristensen <krh at bitplanet.net>
>>
>> GL_KHR_robustness adds the GL_CONTEXT_LOST error and five new entry
>> points that we already implement. This patch adds a new dispatch
>> table that returns GL_CONTEXT_LOST from all entry points and
>> implements the GL_LOSE_CONTEXT_ON_RESET by setting that table when we
>> learn that we've lost the context.
>>
>> With the GL_CONTEXT_LOST reporting in place and dispatch for the new
>> entry points we can turn on GL_KHR_robustness.
>>
>> Signed-off-by: Kristian Høgsberg Kristensen <krh at bitplanet.net>
>> Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
>>
>> ---
>>
>> v3: Only advertise for GLES2.0+, fix typo and dispatch_sanity
>> issue. Reword commit message to say we're enabling GL_KHR_robustness,
>> not just turning on GL_CONTEXT_LOST.
>>
>> docs/GL3.txt | 2 +-
>> docs/relnotes/11.3.0.html | 1 +
>> src/mapi/glapi/gen/KHR_robustness.xml | 66 +++++++++++++++++++++
>> src/mapi/glapi/gen/KHR_robustness_es.xml | 63 ++++++++++++++++++++
>> src/mapi/glapi/gen/Makefile.am | 2 +
>> src/mapi/glapi/gen/es_EXT.xml | 2 +
>> src/mapi/glapi/gen/gl_API.xml | 3 +
>> src/mesa/drivers/dri/i965/brw_context.h | 2 +
>> src/mesa/drivers/dri/i965/brw_reset.c | 20 +++++++
>> src/mesa/drivers/dri/i965/intel_batchbuffer.c | 3 +
>> src/mesa/drivers/dri/i965/intel_extensions.c | 1 +
>> src/mesa/main/context.c | 1 +
>> src/mesa/main/context.h | 2 +
>> src/mesa/main/extensions_table.h | 1 +
>> src/mesa/main/getstring.c | 82 ++++++++++++++++++++++++++-
>> src/mesa/main/mtypes.h | 7 ++-
>> src/mesa/main/tests/dispatch_sanity.cpp | 15 ++++-
>> 17 files changed, 269 insertions(+), 4 deletions(-)
>> create mode 100644 src/mapi/glapi/gen/KHR_robustness.xml
>> create mode 100644 src/mapi/glapi/gen/KHR_robustness_es.xml
>>
>> diff --git a/docs/GL3.txt b/docs/GL3.txt
>> index b5f03af..21ab46a 100644
>> --- a/docs/GL3.txt
>> +++ b/docs/GL3.txt
>> @@ -218,7 +218,7 @@ GL 4.5, GLSL 4.50:
>> GL_ARB_shader_texture_image_samples DONE (i965, nv50, nvc0, r600, radeonsi)
>> GL_ARB_texture_barrier DONE (i965, nv50, nvc0, r600, radeonsi)
>> GL_KHR_context_flush_control DONE (all - but needs GLX/EGL extension to be useful)
>> - GL_KHR_robustness not started (90% done with the ARB variant)
>> + GL_KHR_robustness DONE (i965)
>> GL_EXT_shader_integer_mix DONE (all drivers that support GLSL)
>>
>> These are the extensions cherry-picked to make GLES 3.1
>> diff --git a/docs/relnotes/11.3.0.html b/docs/relnotes/11.3.0.html
>> index 5871ec8..d5bb292 100644
>> --- a/docs/relnotes/11.3.0.html
>> +++ b/docs/relnotes/11.3.0.html
>> @@ -59,6 +59,7 @@ Note: some of the new features are only available with certain drivers.
>> <li>GL_ARB_shader_storage_buffer_objects on radeonsi, softpipe</li>
>> <li>GL_ATI_fragment_shader on all Gallium drivers</li>
>> <li>GL_EXT_base_instance on all drivers that support GL_ARB_base_instance</li>
>> +<li>GL_KHR_robustness on i965</li>
>> <li>GL_OES_draw_buffers_indexed and GL_EXT_draw_buffers_indexed on all drivers that support GL_ARB_draw_buffers_blend</li>
>> <li>GL_OES_sample_shading on i965, nvc0, r600, radeonsi</li>
>> <li>GL_OES_sample_variables on i965, nvc0, r600, radeonsi</li>
>> diff --git a/src/mapi/glapi/gen/KHR_robustness.xml b/src/mapi/glapi/gen/KHR_robustness.xml
>> new file mode 100644
>> index 0000000..56bcfcc
>> --- /dev/null
>> +++ b/src/mapi/glapi/gen/KHR_robustness.xml
>> @@ -0,0 +1,66 @@
>> +<?xml version="1.0"?>
>> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
>> +
>> +<!-- Note: no GLX protocol info yet. -->
>> +
>> +
>> +<OpenGLAPI>
>> +
>> +<category name="GL_KHR_robustness" number="170">
>> +
>> + <enum name="GUILTY_CONTEXT_RESET" value="0x8253"/>
>> + <enum name="INNOCENT_CONTEXT_RESET" value="0x8254"/>
>> + <enum name="UNKNOWN_CONTEXT_RESET" value="0x8255"/>
>> +
>> + <enum name="RESET_NOTIFICATION_STRATEGY" count="1" value="0x8256">
>> + <size name="Get" mode="get"/>
>> + </enum>
>> + <enum name="LOSE_CONTEXT_ON_RESET" value="0x8252"/>
>> + <enum name="NO_RESET_NOTIFICATION" value="0x8261"/>
>> +
>> + <enum name="CONTEXT_FLAG_ROBUST_ACCESS_BIT" value="0x00000004"/>
>> +
>> + <!-- This extension applies to both GL and ES. GL entrypoints have
>> + no suffix, ES entrypoints have the KHR suffix. This file
>> + defines entry points for GL. -->
>> +
>> + <!-- GL definitions -->
>> + <function name="GetGraphicsResetStatus" alias="GetGraphicsResetStatusARB">
>> + <return type="GLenum"/>
>> + </function>
>> +
>> + <function name="ReadnPixels" alias="ReadnPixelsARB">
>> + <param name="x" type="GLint"/>
>> + <param name="y" type="GLint"/>
>> + <param name="width" type="GLsizei"/>
>> + <param name="height" type="GLsizei"/>
>> + <param name="format" type="GLenum"/>
>> + <param name="type" type="GLenum"/>
>> + <param name="bufSize" type="GLsizei"/>
>> + <param name="data" type="GLvoid *" output="true"/>
>> + </function>
>> +
>> + <function name="GetnUniformfv" alias="GetnUniformfvARB">
>> + <param name="program" type="GLuint"/>
>> + <param name="location" type="GLint"/>
>> + <param name="bufSize" type="GLsizei"/>
>> + <param name="params" type="GLfloat *" output="true"/>
>> + </function>
>> +
>> + <function name="GetnUniformiv" alias="GetnUniformivARB">
>> + <param name="program" type="GLuint"/>
>> + <param name="location" type="GLint"/>
>> + <param name="bufSize" type="GLsizei"/>
>> + <param name="params" type="GLint *" output="true"/>
>> + </function>
>> +
>> + <function name="GetnUniformuiv" alias="GetnUniformuivARB">
>> + <param name="program" type="GLuint"/>
>> + <param name="location" type="GLint"/>
>> + <param name="bufSize" type="GLsizei"/>
>> + <param name="params" type="GLuint *" output="true"/>
>> + </function>
>> +
>> +</category>
>> +
>> +</OpenGLAPI>
>> diff --git a/src/mapi/glapi/gen/KHR_robustness_es.xml b/src/mapi/glapi/gen/KHR_robustness_es.xml
>> new file mode 100644
>> index 0000000..84f6fd2
>> --- /dev/null
>> +++ b/src/mapi/glapi/gen/KHR_robustness_es.xml
>> @@ -0,0 +1,63 @@
>> +<?xml version="1.0"?>
>> +<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
>> +
>> +<OpenGLAPI>
>> +
>> +<category name="GL_KHR_robustness" number="190">
>> +
>> + <enum name="GUILTY_CONTEXT_RESET_KHR" value="0x8253"/>
>> + <enum name="INNOCENT_CONTEXT_RESET_KHR" value="0x8254"/>
>> + <enum name="UNKNOWN_CONTEXT_RESET_KHR" value="0x8255"/>
>> +
>> + <enum name="RESET_NOTIFICATION_STRATEGY_KHR" count="1" value="0x8256">
>> + <size name="Get" mode="get"/>
>> + </enum>
>> + <enum name="LOSE_CONTEXT_ON_RESET_KHR" value="0x8252"/>
>> + <enum name="NO_RESET_NOTIFICATION_KHR" value="0x8261"/>
>> +
>> + <enum name="CONTEXT_FLAG_ROBUST_ACCESS_BIT_KHR" value="0x00000004"/>
>> +
>> + <!-- This extension applies to both GL and ES. GL entrypoints have
>> + no suffix, ES entrypoints have the KHR suffix. This file
>> + defines entry points for ES. -->
>> +
>> + <function name="GetGraphicsResetStatusKHR"
>> + alias="GetGraphicsResetStatusARB" es2="2.0">
>> + <return type="GLenum"/>
>> + </function>
>> +
>> + <function name="ReadnPixelsKHR" alias="ReadnPixelsARB" es2="2.0">
>> + <param name="x" type="GLint"/>
>> + <param name="y" type="GLint"/>
>> + <param name="width" type="GLsizei"/>
>> + <param name="height" type="GLsizei"/>
>> + <param name="format" type="GLenum"/>
>> + <param name="type" type="GLenum"/>
>> + <param name="bufSize" type="GLsizei"/>
>> + <param name="data" type="GLvoid *" output="true"/>
>> + </function>
>> +
>> + <function name="GetnUniformfvKHR" alias="GetnUniformfvARB" es2="2.0">
>> + <param name="program" type="GLuint"/>
>> + <param name="location" type="GLint"/>
>> + <param name="bufSize" type="GLsizei"/>
>> + <param name="params" type="GLfloat *" output="true"/>
>> + </function>
>> +
>> + <function name="GetnUniformivKHR" alias="GetnUniformivARB" es2="2.0">
>> + <param name="program" type="GLuint"/>
>> + <param name="location" type="GLint"/>
>> + <param name="bufSize" type="GLsizei"/>
>> + <param name="params" type="GLint *" output="true"/>
>> + </function>
>> +
>> + <function name="GetnUniformuivKHR" alias="GetnUniformuivARB" es2="2.0">
>> + <param name="program" type="GLuint"/>
>> + <param name="location" type="GLint"/>
>> + <param name="bufSize" type="GLsizei"/>
>> + <param name="params" type="GLuint *" output="true"/>
>> + </function>
>> +
>> +</category>
>> +
>> +</OpenGLAPI>
>> diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
>> index 0759819..c511de9 100644
>> --- a/src/mapi/glapi/gen/Makefile.am
>> +++ b/src/mapi/glapi/gen/Makefile.am
>> @@ -192,6 +192,8 @@ API_XML = \
>> INTEL_performance_query.xml \
>> KHR_debug.xml \
>> KHR_context_flush_control.xml \
>> + KHR_robustness.xml \
>> + KHR_robustness_es.xml \
>> KHR_texture_compression_astc.xml \
>> NV_conditional_render.xml \
>> NV_primitive_restart.xml \
>> diff --git a/src/mapi/glapi/gen/es_EXT.xml b/src/mapi/glapi/gen/es_EXT.xml
>> index ce4c4c4..6886dab 100644
>> --- a/src/mapi/glapi/gen/es_EXT.xml
>> +++ b/src/mapi/glapi/gen/es_EXT.xml
>> @@ -924,6 +924,8 @@
>>
>> </category>
>>
>> +<xi:include href="KHR_robustness_es.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>> +
>> <category name="GL_EXT_base_instance" number="203">
>>
>> <function name="DrawArraysInstancedBaseInstanceEXT" es2="3.0"
>> diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
>> index 2fcba0b..766fe3c 100644
>> --- a/src/mapi/glapi/gen/gl_API.xml
>> +++ b/src/mapi/glapi/gen/gl_API.xml
>> @@ -8288,6 +8288,9 @@
>>
>> <xi:include href="KHR_context_flush_control.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>>
>> +<!-- ARB extension 170 -->
>> +<xi:include href="KHR_robustness.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>> +
>> <!-- ARB extension 171 -->
>> <xi:include href="ARB_pipeline_statistics_query.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
>>
>> diff --git a/src/mesa/drivers/dri/i965/brw_context.h b/src/mesa/drivers/dri/i965/brw_context.h
>> index 5155475..4b22201 100644
>> --- a/src/mesa/drivers/dri/i965/brw_context.h
>> +++ b/src/mesa/drivers/dri/i965/brw_context.h
>> @@ -1704,6 +1704,8 @@ gen7_emit_urb_state(struct brw_context *brw,
>> /* brw_reset.c */
>> extern GLenum
>> brw_get_graphics_reset_status(struct gl_context *ctx);
>> +void
>> +brw_check_for_reset(struct brw_context *brw);
>>
>> /* brw_compute.c */
>> extern void
>> diff --git a/src/mesa/drivers/dri/i965/brw_reset.c b/src/mesa/drivers/dri/i965/brw_reset.c
>> index e3182b1..df734e5 100644
>> --- a/src/mesa/drivers/dri/i965/brw_reset.c
>> +++ b/src/mesa/drivers/dri/i965/brw_reset.c
>> @@ -20,6 +20,9 @@
>> * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
>> * DEALINGS IN THE SOFTWARE.
>> */
>> +
>> +#include "main/context.h"
>> +
>> #include "brw_context.h"
>>
>> /**
>> @@ -73,3 +76,20 @@ brw_get_graphics_reset_status(struct gl_context *ctx)
>>
>> return GL_NO_ERROR;
>> }
>> +
>> +void
>> +brw_check_for_reset(struct brw_context *brw)
>> +{
>> + uint32_t reset_count;
>> + uint32_t active;
>> + uint32_t pending;
>> + int err;
>> +
>> + err = drm_intel_get_reset_stats(brw->hw_ctx, &reset_count, &active,
>> + &pending);
>> + if (err)
>> + return;
>> +
>> + if (active > 0 || pending > 0)
>> + _mesa_set_context_lost_dispatch(&brw->ctx);
>> +}
>> diff --git a/src/mesa/drivers/dri/i965/intel_batchbuffer.c b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
>> index f220311..5a0db9f 100644
>> --- a/src/mesa/drivers/dri/i965/intel_batchbuffer.c
>> +++ b/src/mesa/drivers/dri/i965/intel_batchbuffer.c
>> @@ -368,6 +368,9 @@ do_flush_locked(struct brw_context *brw)
>> if (unlikely(INTEL_DEBUG & DEBUG_BATCH))
>> do_batch_dump(brw);
>>
>> + if (brw->ctx.Const.ResetStrategy == GL_LOSE_CONTEXT_ON_RESET_ARB)
>> + brw_check_for_reset(brw);
>> +
>> if (ret != 0) {
>> fprintf(stderr, "intel_do_flush_locked failed: %s\n", strerror(-ret));
>> exit(1);
>> diff --git a/src/mesa/drivers/dri/i965/intel_extensions.c b/src/mesa/drivers/dri/i965/intel_extensions.c
>> index feea6ca..b8d7517 100644
>> --- a/src/mesa/drivers/dri/i965/intel_extensions.c
>> +++ b/src/mesa/drivers/dri/i965/intel_extensions.c
>> @@ -246,6 +246,7 @@ intelInitExtensions(struct gl_context *ctx)
>> ctx->Extensions.EXT_texture_sRGB_decode = true;
>> ctx->Extensions.EXT_texture_swizzle = true;
>> ctx->Extensions.EXT_vertex_array_bgra = true;
>> + ctx->Extensions.KHR_robustness = true;
>> ctx->Extensions.AMD_seamless_cubemap_per_texture = true;
>> ctx->Extensions.APPLE_object_purgeable = true;
>> ctx->Extensions.ATI_separate_stencil = true;
>> diff --git a/src/mesa/main/context.c b/src/mesa/main/context.c
>> index 7c0a6ef..172c854 100644
>> --- a/src/mesa/main/context.c
>> +++ b/src/mesa/main/context.c
>> @@ -1367,6 +1367,7 @@ _mesa_free_context_data( struct gl_context *ctx )
>> free(ctx->BeginEnd);
>> free(ctx->OutsideBeginEnd);
>> free(ctx->Save);
>> + free(ctx->ContextLost);
>>
>> /* Shared context state (display lists, textures, etc) */
>> _mesa_reference_shared_state(ctx, &ctx->Shared, NULL);
>> diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h
>> index 46444d2..ef19cc6 100644
>> --- a/src/mesa/main/context.h
>> +++ b/src/mesa/main/context.h
>> @@ -158,6 +158,8 @@ _mesa_notifySwapBuffers(struct gl_context *gc);
>> extern struct _glapi_table *
>> _mesa_get_dispatch(struct gl_context *ctx);
>>
>> +extern void
>> +_mesa_set_context_lost_dispatch(struct gl_context *ctx);
>>
>> extern GLboolean
>> _mesa_valid_to_render(struct gl_context *ctx, const char *where);
>> diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
>> index a809023..e3c91ef 100644
>> --- a/src/mesa/main/extensions_table.h
>> +++ b/src/mesa/main/extensions_table.h
>> @@ -279,6 +279,7 @@ EXT(INTEL_performance_query , INTEL_performance_query
>> EXT(KHR_context_flush_control , dummy_true , GLL, GLC, x , ES2, 2014)
>> EXT(KHR_debug , dummy_true , GLL, GLC, 11, ES2, 2012)
>> EXT(KHR_robust_buffer_access_behavior , ARB_robust_buffer_access_behavior , GLL, GLC, x , ES2, 2014)
>> +EXT(KHR_robustness , KHR_robustness , GLL, GLC, x , ES2, 2012)
>> EXT(KHR_texture_compression_astc_hdr , KHR_texture_compression_astc_hdr , GLL, GLC, x , ES2, 2012)
>> EXT(KHR_texture_compression_astc_ldr , KHR_texture_compression_astc_ldr , GLL, GLC, x , ES2, 2012)
>>
>> diff --git a/src/mesa/main/getstring.c b/src/mesa/main/getstring.c
>> index 92f8a38..125b03a 100644
>> --- a/src/mesa/main/getstring.c
>> +++ b/src/mesa/main/getstring.c
>> @@ -31,7 +31,8 @@
>> #include "enums.h"
>> #include "extensions.h"
>> #include "mtypes.h"
>> -
>> +#include "macros.h"
>> +#include "main/dispatch.h" /* for _gloffset_COUNT */
>>
>> /**
>> * Return the string for a glGetString(GL_SHADING_LANGUAGE_VERSION) query.
>> @@ -310,6 +311,82 @@ _mesa_GetError( void )
>> return e;
>> }
>>
>> +static void
>> +_context_lost_GetSynciv(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei *length,
>> + GLint *values)
>> +{
>> + GET_CURRENT_CONTEXT(ctx);
>> + if (ctx)
>> + _mesa_error(ctx, GL_CONTEXT_LOST, "GetSynciv(invalid call)");
>> +
>> + if (pname == GL_SYNC_STATUS && bufSize >= 1)
>> + *values = GL_SIGNALED;
>> +}
>> +
>> +static void
>> +_context_lost_GetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params)
>> +{
>> + GET_CURRENT_CONTEXT(ctx);
>> + if (ctx)
>> + _mesa_error(ctx, GL_CONTEXT_LOST, "GetQueryObjectuiv(context lost)");
>> +
>> + if (pname == GL_QUERY_RESULT_AVAILABLE)
>> + *params = GL_TRUE;
>> +}
>> +
>> +static int
>> +context_lost_nop_handler(void)
>> +{
>> + GET_CURRENT_CONTEXT(ctx);
>> + if (ctx)
>> + _mesa_error(ctx, GL_CONTEXT_LOST, "context lost");
>> +
>> + return 0;
>> +}
>> +
>> +void
>> +_mesa_set_context_lost_dispatch(struct gl_context *ctx)
>> +{
>> + if (ctx->ContextLost == NULL) {
>> + int numEntries = MAX2(_glapi_get_dispatch_table_size(), _gloffset_COUNT);
>> +
>> + ctx->ContextLost = malloc(numEntries * sizeof(_glapi_proc));
>> + if (!ctx->ContextLost)
>> + return;
>> +
>> + _glapi_proc *entry = (_glapi_proc *) ctx->ContextLost;
>> + unsigned i;
>> + for (i = 0; i < numEntries; i++)
>> + entry[i] = (_glapi_proc) context_lost_nop_handler;
>> +
>> + /* The ARB_robustness specification says:
>> + *
>> + * "* GetError and GetGraphicsResetStatus behave normally following a
>> + * graphics reset, so that the application can determine a reset
>> + * has occurred, and when it is safe to destroy and recreate the
>> + * context.
>> + *
>> + * * Any commands which might cause a polling application to block
>> + * indefinitely will generate a CONTEXT_LOST error, but will also
>> + * return a value indicating completion to the application. Such
>> + * commands include:
>> + *
>> + * + GetSynciv with <pname> SYNC_STATUS ignores the other
>> + * parameters and returns SIGNALED in <values>.
>> + *
>> + * + GetQueryObjectuiv with <pname> QUERY_RESULT_AVAILABLE
>> + * ignores the other parameters and returns TRUE in <params>."
>> + */
>> + SET_GetError(ctx->ContextLost, _mesa_GetError);
>> + SET_GetGraphicsResetStatusARB(ctx->ContextLost, _mesa_GetGraphicsResetStatusARB);
>> + SET_GetSynciv(ctx->ContextLost, _context_lost_GetSynciv);
>> + SET_GetQueryObjectuiv(ctx->ContextLost, _context_lost_GetQueryObjectuiv);
>> + }
>> +
>> + ctx->CurrentDispatch = ctx->ContextLost;
>> + _glapi_set_dispatch(ctx->CurrentDispatch);
>> +}
>> +
>> /**
>> * Returns an error code specified by GL_ARB_robustness, or GL_NO_ERROR.
>> * \return current context status
>> @@ -358,6 +435,9 @@ _mesa_GetGraphicsResetStatusARB( void )
>> mtx_unlock(&ctx->Shared->Mutex);
>> }
>>
>> + if (status != GL_NO_ERROR)
>> + _mesa_set_context_lost_dispatch(ctx);
>> +
>> if (!ctx->Driver.GetGraphicsResetStatus && (MESA_VERBOSE & VERBOSE_API))
>> _mesa_debug(ctx,
>> "glGetGraphicsResetStatusARB always returns GL_NO_ERROR "
>> diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
>> index b7b3ede..e16663d 100644
>> --- a/src/mesa/main/mtypes.h
>> +++ b/src/mesa/main/mtypes.h
>> @@ -3899,6 +3899,7 @@ struct gl_extensions
>> GLboolean ATI_separate_stencil;
>> GLboolean GREMEDY_string_marker;
>> GLboolean INTEL_performance_query;
>> + GLboolean KHR_robustness;
>> GLboolean KHR_texture_compression_astc_hdr;
>> GLboolean KHR_texture_compression_astc_ldr;
>> GLboolean MESA_pack_invert;
>> @@ -4302,7 +4303,11 @@ struct gl_context
>> */
>> struct _glapi_table *BeginEnd;
>> /**
>> - * Tracks the current dispatch table out of the 3 above, so that it can be
>> + * Dispatch table for when a graphics reset has happened.
>> + */
>> + struct _glapi_table *ContextLost;
>> + /**
>> + * Tracks the current dispatch table out of the 4 above, so that it can be
>> * re-set on glXMakeCurrent().
>> */
>> struct _glapi_table *CurrentDispatch;
>> diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
>> index c85bc54..f70b7d9 100644
>> --- a/src/mesa/main/tests/dispatch_sanity.cpp
>> +++ b/src/mesa/main/tests/dispatch_sanity.cpp
>> @@ -852,7 +852,13 @@ const struct function common_desktop_functions_possible[] = {
>> // { "glTextureStorage3DMultisampleEXT", 43, -1 }, // XXX: Add to xml
>>
>> /* GL 4.5 */
>> - { "glMemoryBarrierByRegion", 45, -1 },
>> + /* aliased versions checked above */
>> + //{ "glGetGraphicsResetStatus", 45, -1 },
>> + //{ "glReadnPixels", 45, -1 },
>> + //{ "glGetnUniformfv", 45, -1 },
>> + //{ "glGetnUniformiv", 45, -1 },
>> + //{ "glGetnUniformuiv", 45, -1 },
>> + //{ "glMemoryBarrierByRegion", 45, -1 },
>
> I don't think you wanted to comment glMemoryBarrierByRegion out.
> (Surprised it passes with that...)
Argh, sure didn't mean to do that, and it didn't pass :-( Fixed locally.
> With that fixed, all my (surface-level) concerns are addressed. You
> can include a
>
> Acked-by: Ilia Mirkin <imirkin at alum.mit.edu>
>
> but please wait for someone to do a full review of the intel bits, as
> I'm obviously not qualified for those.
>
> Cheers,
Thanks
Kristian
> -ilia
>
>>
>> /* GL_ARB_internalformat_query */
>> { "glGetInternalformativ", 30, -1 },
>> @@ -2306,6 +2312,13 @@ const struct function gles2_functions_possible[] = {
>> /* GL_EXT_polygon_offset_clamp */
>> { "glPolygonOffsetClampEXT", 11, -1 },
>>
>> + /* GL_KHR_robustness */
>> + { "glGetGraphicsResetStatusKHR", 20, -1 },
>> + { "glReadnPixelsKHR", 20, -1 },
>> + { "glGetnUniformfvKHR", 20, -1 },
>> + { "glGetnUniformivKHR", 20, -1 },
>> + { "glGetnUniformuivKHR", 20, -1 },
>> +
>> { NULL, 0, -1 }
>> };
>>
>> --
>> 2.5.0
>>
>> _______________________________________________
>> mesa-dev mailing list
>> mesa-dev at lists.freedesktop.org
>> https://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list