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:
Bilal Elmoussaoui 2024-07-15 22:09:31 +02:00 committed by Marge Bot
parent 2c5f874eaa
commit a7b87f250f
6 changed files with 1 additions and 59 deletions

View File

@ -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

View File

@ -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;

View File

@ -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

View File

@ -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

View File

@ -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"))
{

View File

@ -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;
}