aboutsummaryrefslogtreecommitdiff
path: root/include/wlr/render
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2019-11-06 11:19:52 +0100
committerDrew DeVault <sir@cmpwn.com>2019-11-07 14:24:03 -0500
commit447835afc108fe17906a5acaecc65666786df1ab (patch)
tree6e39c8c3c59146e950c4157b354d7ba8585cd8a5 /include/wlr/render
parenteaa98f6aff6baa13e5370e37a8422bd27d0f3348 (diff)
render/gles2: provide public API to access GL texture
Prior to this commit, compositors needed to render the texture to an intermediate off-screen buffer using wlr_renderer APIs if they wanted to use a custom rendering path (e.g. render to a 3D scene). A new wlr_gles2_texture_get_attribs exposes the GL texture target and ID so that compositors can render wlr_textures with their own shaders. An example of a compositor doing so is available at [1]. [1]: https://git.sr.ht/~sircmpwn/wxrc/tree/3db905b7842ac42cf1878876e647005b41f00a52/src/render.c#L227
Diffstat (limited to 'include/wlr/render')
-rw-r--r--include/wlr/render/gles2.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/include/wlr/render/gles2.h b/include/wlr/render/gles2.h
index fca11ab8..b8c9a41a 100644
--- a/include/wlr/render/gles2.h
+++ b/include/wlr/render/gles2.h
@@ -9,6 +9,7 @@
#ifndef WLR_RENDER_GLES2_H
#define WLR_RENDER_GLES2_H
+#include <GLES2/gl2.h>
#include <wlr/backend.h>
#include <wlr/render/wlr_renderer.h>
@@ -24,4 +25,16 @@ struct wlr_texture *wlr_gles2_texture_from_wl_drm(struct wlr_egl *egl,
struct wlr_texture *wlr_gles2_texture_from_dmabuf(struct wlr_egl *egl,
struct wlr_dmabuf_attributes *attribs);
+struct wlr_gles2_texture_attribs {
+ GLenum target; /* either GL_TEXTURE_2D or GL_TEXTURE_EXTERNAL_OES */
+ GLuint tex;
+
+ bool inverted_y;
+ bool has_alpha;
+};
+
+bool wlr_texture_is_gles2(struct wlr_texture *texture);
+void wlr_gles2_texture_get_attribs(struct wlr_texture *texture,
+ struct wlr_gles2_texture_attribs *attribs);
+
#endif