cogl/renderer: Always try to use GLX_NV_robustness_video_memory_purge
It was always set to TRUE and mutter is the only user. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3887>
This commit is contained in:
parent
2c5f874eaa
commit
a7b87f250f
@ -253,10 +253,6 @@ typedef enum _CoglGraphicsResetStatus
|
||||
* extension in which case this will only ever return
|
||||
* #COGL_GRAPHICS_RESET_STATUS_NO_ERROR.
|
||||
*
|
||||
* Applications must explicitly use a backend specific method to
|
||||
* request that errors get reported such as X11's
|
||||
* cogl_xlib_renderer_request_reset_on_video_memory_purge().
|
||||
*
|
||||
* Return value: a #CoglGraphicsResetStatus
|
||||
*/
|
||||
COGL_EXPORT CoglGraphicsResetStatus
|
||||
|
@ -63,7 +63,6 @@ struct _CoglRenderer
|
||||
#ifdef HAVE_X11
|
||||
Display *foreign_xdpy;
|
||||
gboolean xlib_enable_event_retrieval;
|
||||
gboolean xlib_want_reset_on_video_memory_purge;
|
||||
#endif
|
||||
|
||||
CoglDriver driver;
|
||||
|
@ -224,16 +224,6 @@ cogl_xlib_renderer_set_foreign_display (CoglRenderer *renderer,
|
||||
it will also do its own event retrieval */
|
||||
renderer->xlib_enable_event_retrieval = FALSE;
|
||||
}
|
||||
|
||||
void
|
||||
cogl_xlib_renderer_request_reset_on_video_memory_purge (CoglRenderer *renderer,
|
||||
gboolean enable)
|
||||
{
|
||||
g_return_if_fail (COGL_IS_RENDERER (renderer));
|
||||
g_return_if_fail (!renderer->connected);
|
||||
|
||||
renderer->xlib_want_reset_on_video_memory_purge = enable;
|
||||
}
|
||||
#endif /* HAVE_X11 */
|
||||
|
||||
gboolean
|
||||
|
@ -112,45 +112,4 @@ COGL_EXPORT void
|
||||
cogl_xlib_renderer_set_foreign_display (CoglRenderer *renderer,
|
||||
Display *display);
|
||||
|
||||
/**
|
||||
* cogl_xlib_renderer_request_reset_on_video_memory_purge: (skip)
|
||||
* @renderer: a #CoglRenderer
|
||||
* @enable: The new value
|
||||
*
|
||||
* Sets whether Cogl should make use of the
|
||||
* NV_robustness_video_memory_purge extension, if exposed by the
|
||||
* driver, by initializing the GLX context appropriately.
|
||||
*
|
||||
* The extension is only useful when running on certain versions of
|
||||
* the NVIDIA driver. Quoting from the spec:
|
||||
*
|
||||
* "The NVIDIA OpenGL driver architecture on Linux has a limitation:
|
||||
* resources located in video memory are not persistent across certain
|
||||
* events. VT switches, suspend/resume events, and mode switching
|
||||
* events may erase the contents of video memory. Any resource that
|
||||
* is located exclusively in video memory, such as framebuffer objects
|
||||
* (FBOs), will be lost."
|
||||
*
|
||||
* "This extension provides a way for applications to discover when video
|
||||
* memory content has been lost, so that the application can re-populate
|
||||
* the video memory content as necessary."
|
||||
*
|
||||
* "Any driver that exposes this extension is a driver that considers
|
||||
* video memory to be volatile. Once the driver stack has been
|
||||
* improved, the extension will no longer be exposed."
|
||||
*
|
||||
* cogl_get_graphics_reset_status() needs to be called at least once
|
||||
* every frame to find out if video memory was purged.
|
||||
*
|
||||
* Note that this doesn't cause Cogl to enable robust buffer access
|
||||
* but other context reset errors may still happen and be reported via
|
||||
* cogl_get_graphics_reset_status() if external factors cause the
|
||||
* driver to trigger them.
|
||||
*
|
||||
* This defaults to %FALSE and is effective only if called before
|
||||
* cogl_display_setup() .
|
||||
*/
|
||||
COGL_EXPORT void
|
||||
cogl_xlib_renderer_request_reset_on_video_memory_purge (CoglRenderer *renderer,
|
||||
gboolean enable);
|
||||
G_END_DECLS
|
||||
|
@ -628,8 +628,7 @@ create_gl3_context (CoglDisplay *display,
|
||||
/* We can't check the presence of this extension with the usual
|
||||
COGL_WINSYS_FEATURE machinery because that only gets initialized
|
||||
later when the CoglContext is created. */
|
||||
if (display->renderer->xlib_want_reset_on_video_memory_purge &&
|
||||
strstr (glx_renderer->glXQueryExtensionsString (xlib_renderer->xdpy,
|
||||
if (strstr (glx_renderer->glXQueryExtensionsString (xlib_renderer->xdpy,
|
||||
DefaultScreen (xlib_renderer->xdpy)),
|
||||
"GLX_NV_robustness_video_memory_purge"))
|
||||
{
|
||||
|
@ -88,7 +88,6 @@ meta_renderer_x11_create_cogl_renderer (MetaRenderer *renderer)
|
||||
cogl_renderer_set_custom_winsys (cogl_renderer, get_x11_cogl_winsys_vtable,
|
||||
NULL);
|
||||
cogl_xlib_renderer_set_foreign_display (cogl_renderer, xdisplay);
|
||||
cogl_xlib_renderer_request_reset_on_video_memory_purge (cogl_renderer, TRUE);
|
||||
|
||||
return cogl_renderer;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user