mirror of
https://github.com/hyprwm/wlroots-hyprland.git
synced 2024-11-22 04:45:58 +01:00
render/egl: enable EGL_LOSE_CONTEXT_ON_RESET
This allows the GLES2 renderer to figure out when a GPU reset happens.
This commit is contained in:
parent
261d6998fb
commit
165352e32f
2 changed files with 10 additions and 1 deletions
|
@ -15,6 +15,7 @@ struct wlr_egl {
|
||||||
bool EXT_image_dma_buf_import;
|
bool EXT_image_dma_buf_import;
|
||||||
bool EXT_image_dma_buf_import_modifiers;
|
bool EXT_image_dma_buf_import_modifiers;
|
||||||
bool IMG_context_priority;
|
bool IMG_context_priority;
|
||||||
|
bool EXT_create_context_robustness;
|
||||||
|
|
||||||
// Device extensions
|
// Device extensions
|
||||||
bool EXT_device_drm;
|
bool EXT_device_drm;
|
||||||
|
|
10
render/egl.c
10
render/egl.c
|
@ -288,6 +288,9 @@ static bool egl_init_display(struct wlr_egl *egl, EGLDisplay display) {
|
||||||
"eglQueryDmaBufModifiersEXT");
|
"eglQueryDmaBufModifiersEXT");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
egl->exts.EXT_create_context_robustness =
|
||||||
|
check_egl_ext(display_exts_str, "EGL_EXT_create_context_robustness");
|
||||||
|
|
||||||
const char *device_exts_str = NULL, *driver_name = NULL;
|
const char *device_exts_str = NULL, *driver_name = NULL;
|
||||||
if (egl->exts.EXT_device_query) {
|
if (egl->exts.EXT_device_query) {
|
||||||
EGLAttrib device_attrib;
|
EGLAttrib device_attrib;
|
||||||
|
@ -385,7 +388,7 @@ static bool egl_init(struct wlr_egl *egl, EGLenum platform,
|
||||||
}
|
}
|
||||||
|
|
||||||
size_t atti = 0;
|
size_t atti = 0;
|
||||||
EGLint attribs[5];
|
EGLint attribs[7];
|
||||||
attribs[atti++] = EGL_CONTEXT_CLIENT_VERSION;
|
attribs[atti++] = EGL_CONTEXT_CLIENT_VERSION;
|
||||||
attribs[atti++] = 2;
|
attribs[atti++] = 2;
|
||||||
|
|
||||||
|
@ -400,6 +403,11 @@ static bool egl_init(struct wlr_egl *egl, EGLenum platform,
|
||||||
attribs[atti++] = EGL_CONTEXT_PRIORITY_HIGH_IMG;
|
attribs[atti++] = EGL_CONTEXT_PRIORITY_HIGH_IMG;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (egl->exts.EXT_create_context_robustness) {
|
||||||
|
attribs[atti++] = EGL_CONTEXT_OPENGL_RESET_NOTIFICATION_STRATEGY_EXT;
|
||||||
|
attribs[atti++] = EGL_LOSE_CONTEXT_ON_RESET_EXT;
|
||||||
|
}
|
||||||
|
|
||||||
attribs[atti++] = EGL_NONE;
|
attribs[atti++] = EGL_NONE;
|
||||||
assert(atti <= sizeof(attribs)/sizeof(attribs[0]));
|
assert(atti <= sizeof(attribs)/sizeof(attribs[0]));
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue