From a7b87f250fa6f8758660e2fe7cf97ffdefac782f Mon Sep 17 00:00:00 2001 From: Bilal Elmoussaoui Date: Mon, 15 Jul 2024 22:09:31 +0200 Subject: [PATCH] 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: --- cogl/cogl/cogl-context.h | 4 --- cogl/cogl/cogl-renderer-private.h | 1 - cogl/cogl/cogl-renderer.c | 10 ------- cogl/cogl/cogl-xlib-renderer.h | 41 ---------------------------- cogl/cogl/winsys/cogl-winsys-glx.c | 3 +- src/backends/x11/meta-renderer-x11.c | 1 - 6 files changed, 1 insertion(+), 59 deletions(-) diff --git a/cogl/cogl/cogl-context.h b/cogl/cogl/cogl-context.h index 742903be2..3ad937df4 100644 --- a/cogl/cogl/cogl-context.h +++ b/cogl/cogl/cogl-context.h @@ -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 diff --git a/cogl/cogl/cogl-renderer-private.h b/cogl/cogl/cogl-renderer-private.h index d5e832e55..955fe91e4 100644 --- a/cogl/cogl/cogl-renderer-private.h +++ b/cogl/cogl/cogl-renderer-private.h @@ -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; diff --git a/cogl/cogl/cogl-renderer.c b/cogl/cogl/cogl-renderer.c index 2a9e3cb53..b2454b556 100644 --- a/cogl/cogl/cogl-renderer.c +++ b/cogl/cogl/cogl-renderer.c @@ -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 diff --git a/cogl/cogl/cogl-xlib-renderer.h b/cogl/cogl/cogl-xlib-renderer.h index 61f0127d9..5cbc0b36b 100644 --- a/cogl/cogl/cogl-xlib-renderer.h +++ b/cogl/cogl/cogl-xlib-renderer.h @@ -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 diff --git a/cogl/cogl/winsys/cogl-winsys-glx.c b/cogl/cogl/winsys/cogl-winsys-glx.c index f332637a3..f179553ac 100644 --- a/cogl/cogl/winsys/cogl-winsys-glx.c +++ b/cogl/cogl/winsys/cogl-winsys-glx.c @@ -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")) { diff --git a/src/backends/x11/meta-renderer-x11.c b/src/backends/x11/meta-renderer-x11.c index b60238229..248d475dd 100644 --- a/src/backends/x11/meta-renderer-x11.c +++ b/src/backends/x11/meta-renderer-x11.c @@ -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; }