summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFredrik Höglund <fredrik@kde.org>2017-07-19 16:35:40 +0200
committerFredrik Höglund <fredrik@kde.org>2017-07-19 16:35:40 +0200
commitd1b5c02315641455389b7e7bde45d61505128b94 (patch)
treef0673cdcd5c0d1726381159cc2f0f145ac840489
parentb359957469008665018e3cf2d44af8cdead01b22 (diff)
mesa: Add GL_MESA_simulate_graphics_resetsimulate-graphics-reset
This extension adds a glSimulateGraphicsResetMESA entry point, which when called makes the context behave as if a graphics reset has occurred. The status parameter is the status that will be returned by glGetGraphicsResetStatus.
-rw-r--r--src/mapi/glapi/gen/MESA_simulate_graphics_reset.xml10
-rw-r--r--src/mapi/glapi/gen/Makefile.am1
-rw-r--r--src/mapi/glapi/gen/gl_API.xml2
-rw-r--r--src/mapi/glapi/tests/check_table.cpp1
-rw-r--r--src/mesa/main/context.h3
-rw-r--r--src/mesa/main/extensions_table.h1
-rw-r--r--src/mesa/main/mtypes.h5
-rw-r--r--src/mesa/main/robustness.c21
-rw-r--r--src/mesa/main/tests/dispatch_sanity.cpp6
9 files changed, 50 insertions, 0 deletions
diff --git a/src/mapi/glapi/gen/MESA_simulate_graphics_reset.xml b/src/mapi/glapi/gen/MESA_simulate_graphics_reset.xml
new file mode 100644
index 0000000000..04080110b7
--- /dev/null
+++ b/src/mapi/glapi/gen/MESA_simulate_graphics_reset.xml
@@ -0,0 +1,10 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+<category name="GL_MESA_simulate_graphics_reset" number="0">
+ <function name="SimulateGraphicsResetMESA" es2="2.0">
+ <param name="status" type="GLenum"/>
+ </function>
+</category>
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/Makefile.am b/src/mapi/glapi/gen/Makefile.am
index bd04519f80..9473b87d57 100644
--- a/src/mapi/glapi/gen/Makefile.am
+++ b/src/mapi/glapi/gen/Makefile.am
@@ -208,6 +208,7 @@ API_XML = \
KHR_robustness.xml \
KHR_robustness_es.xml \
KHR_texture_compression_astc.xml \
+ MESA_simulate_graphics_reset.xml \
NV_conditional_render.xml \
NV_primitive_restart.xml \
NV_texture_barrier.xml \
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index 18839ec70c..fb3a273a20 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -13060,6 +13060,8 @@
<xi:include href="NV_vdpau_interop.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="MESA_simulate_graphics_reset.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
<xi:include href="GL4x.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
</OpenGLAPI>
diff --git a/src/mapi/glapi/tests/check_table.cpp b/src/mapi/glapi/tests/check_table.cpp
index 09bf4f3585..311ec5f7cf 100644
--- a/src/mapi/glapi/tests/check_table.cpp
+++ b/src/mapi/glapi/tests/check_table.cpp
@@ -1509,6 +1509,7 @@ const struct name_offset known_dispatch[] = {
{ "glGetQueryObjectui64v", _O(GetQueryObjectui64v) },
{ "glEGLImageTargetRenderbufferStorageOES", _O(EGLImageTargetRenderbufferStorageOES) },
{ "glEGLImageTargetTexture2DOES", _O(EGLImageTargetTexture2DOES) },
+ { "glSimulateGraphicsResetMESA", _O(SimulateGraphicsResetMESA) },
{ NULL, 0 }
};
diff --git a/src/mesa/main/context.h b/src/mesa/main/context.h
index 4f75f57713..ad87c10381 100644
--- a/src/mesa/main/context.h
+++ b/src/mesa/main/context.h
@@ -170,6 +170,9 @@ _mesa_Finish( void );
extern void GLAPIENTRY
_mesa_Flush( void );
+extern void GLAPIENTRY
+_mesa_SimulateGraphicsResetMESA(GLenum status);
+
/*@}*/
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 757b7bf942..f4e58f9adf 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -312,6 +312,7 @@ EXT(KHR_texture_compression_astc_sliced_3d , KHR_texture_compression_astc_slice
EXT(MESA_pack_invert , MESA_pack_invert , GLL, GLC, x , x , 2002)
EXT(MESA_shader_integer_functions , MESA_shader_integer_functions , GLL, GLC, x , 30, 2016)
+EXT(MESA_simulate_graphics_reset , dummy_true , GLL, GLC, x , ES2, 2017)
EXT(MESA_texture_signed_rgba , EXT_texture_snorm , GLL, GLC, x , x , 2009)
EXT(MESA_window_pos , dummy_true , GLL, x , x , x , 2000)
EXT(MESA_ycbcr_texture , MESA_ycbcr_texture , GLL, GLC, x , x , 2002)
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 0cb002469b..f211797df2 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -4997,6 +4997,11 @@ struct gl_context
GLboolean ShareGroupReset;
/**
+ * \name GL_MESA_simulate_graphics_reset
+ */
+ GLenum SimulatedGraphicsResetStatus;
+
+ /**
* \name OES_primitive_bounding_box
*
* Stores the arguments to glPrimitiveBoundingBox
diff --git a/src/mesa/main/robustness.c b/src/mesa/main/robustness.c
index 47402a2930..f21bee9f04 100644
--- a/src/mesa/main/robustness.c
+++ b/src/mesa/main/robustness.c
@@ -105,6 +105,15 @@ _mesa_set_context_lost_dispatch(struct gl_context *ctx)
_glapi_set_dispatch(ctx->CurrentServerDispatch);
}
+static GLenum
+get_simulated_graphics_reset_status(void)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ GLenum status = ctx->SimulatedGraphicsResetStatus;
+ ctx->SimulatedGraphicsResetStatus = GL_NO_ERROR;
+ return status;
+}
+
/**
* Returns an error code specified by GL_ARB_robustness, or GL_NO_ERROR.
* \return current context status
@@ -163,3 +172,15 @@ _mesa_GetGraphicsResetStatusARB( void )
return status;
}
+
+/**
+ * Makes the context behave as if a graphics reset has occurred.
+ */
+void GLAPIENTRY
+_mesa_SimulateGraphicsResetMESA(GLenum status)
+{
+ GET_CURRENT_CONTEXT(ctx);
+ ctx->SimulatedGraphicsResetStatus = status;
+ _mesa_set_context_lost_dispatch(ctx);
+ SET_GetGraphicsResetStatusARB(ctx->ContextLost, get_simulated_graphics_reset_status);
+}
diff --git a/src/mesa/main/tests/dispatch_sanity.cpp b/src/mesa/main/tests/dispatch_sanity.cpp
index 724c22ee9b..d1c59155cc 100644
--- a/src/mesa/main/tests/dispatch_sanity.cpp
+++ b/src/mesa/main/tests/dispatch_sanity.cpp
@@ -983,6 +983,9 @@ const struct function common_desktop_functions_possible[] = {
{ "glVertexAttribL1ui64vARB", 40, -1 },
{ "glGetVertexAttribLui64vARB", 40, -1 },
+ /* GL_MESA_simulate_graphics_reset */
+ { "glSimulateGraphicsResetMESA", 40, -1 },
+
{ NULL, 0, -1 }
};
@@ -2392,6 +2395,9 @@ const struct function gles2_functions_possible[] = {
/* GL_KHR_blend_equation_advanced */
{ "glBlendBarrierKHR", 20, -1 },
+ /* GL_MESA_simulate_graphics_reset */
+ { "glSimulateGraphicsResetMESA", 40, -1 },
+
{ NULL, 0, -1 }
};