diff --git a/include/render/gles2.h b/include/render/gles2.h index 817ec62d..858960d5 100644 --- a/include/render/gles2.h +++ b/include/render/gles2.h @@ -44,6 +44,7 @@ struct wlr_gles2_renderer { struct wlr_egl *egl; + const char *exts_str; struct { bool read_format_bgra_ext; bool debug_khr; diff --git a/include/wlr/render/gles2.h b/include/wlr/render/gles2.h index c53353d3..631b11a2 100644 --- a/include/wlr/render/gles2.h +++ b/include/wlr/render/gles2.h @@ -18,6 +18,8 @@ struct wlr_egl; struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl); struct wlr_egl *wlr_gles2_renderer_get_egl(struct wlr_renderer *renderer); +bool wlr_gles2_renderer_check_ext(struct wlr_renderer *renderer, + const char *ext); struct wlr_texture *wlr_gles2_texture_from_pixels(struct wlr_egl *egl, enum wl_shm_format wl_fmt, uint32_t stride, uint32_t width, uint32_t height, diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c index cba338a1..8d197f42 100644 --- a/render/gles2/renderer.c +++ b/render/gles2/renderer.c @@ -575,6 +575,8 @@ struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_egl *egl) { return NULL; } + renderer->exts_str = exts_str; + wlr_log(WLR_INFO, "Using %s", glGetString(GL_VERSION)); wlr_log(WLR_INFO, "GL vendor: %s", glGetString(GL_VENDOR)); wlr_log(WLR_INFO, "GL renderer: %s", glGetString(GL_RENDERER)); @@ -687,3 +689,9 @@ error: free(renderer); return NULL; } + +bool wlr_gles2_renderer_check_ext(struct wlr_renderer *wlr_renderer, + const char *ext) { + struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer); + return check_gl_ext(renderer->exts_str, ext); +}