aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/wlr/render/gles2.h4
-rw-r--r--include/wlr/render/pixman.h5
-rw-r--r--render/gles2/renderer.c6
-rw-r--r--render/pixman/renderer.c7
4 files changed, 22 insertions, 0 deletions
diff --git a/include/wlr/render/gles2.h b/include/wlr/render/gles2.h
index a97b495c..dabe49dd 100644
--- a/include/wlr/render/gles2.h
+++ b/include/wlr/render/gles2.h
@@ -21,6 +21,10 @@ 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);
+/**
+ * Returns the OpenGL FBO of current buffer.
+ */
+GLuint wlr_gles2_renderer_get_current_fbo(struct wlr_renderer *wlr_renderer);
struct wlr_gles2_texture_attribs {
GLenum target; /* either GL_TEXTURE_2D or GL_TEXTURE_EXTERNAL_OES */
diff --git a/include/wlr/render/pixman.h b/include/wlr/render/pixman.h
index f417efa2..9a7be877 100644
--- a/include/wlr/render/pixman.h
+++ b/include/wlr/render/pixman.h
@@ -14,6 +14,11 @@
#include <wlr/render/wlr_renderer.h>
struct wlr_renderer *wlr_pixman_renderer_create(void);
+/**
+ * Returns the image of current buffer.
+ */
+pixman_image_t *wlr_pixman_renderer_get_current_image(
+ struct wlr_renderer *wlr_renderer);
bool wlr_renderer_is_pixman(struct wlr_renderer *wlr_renderer);
bool wlr_texture_is_pixman(struct wlr_texture *texture);
diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c
index dad18975..baf53c72 100644
--- a/render/gles2/renderer.c
+++ b/render/gles2/renderer.c
@@ -919,3 +919,9 @@ bool wlr_gles2_renderer_check_ext(struct wlr_renderer *wlr_renderer,
struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
return check_gl_ext(renderer->exts_str, ext);
}
+
+GLuint wlr_gles2_renderer_get_current_fbo(struct wlr_renderer *wlr_renderer) {
+ struct wlr_gles2_renderer *renderer = gles2_get_renderer(wlr_renderer);
+ assert(renderer->current_buffer);
+ return renderer->current_buffer->fbo;
+}
diff --git a/render/pixman/renderer.c b/render/pixman/renderer.c
index 56960fc2..f1c1a3d5 100644
--- a/render/pixman/renderer.c
+++ b/render/pixman/renderer.c
@@ -567,3 +567,10 @@ pixman_image_t *wlr_pixman_texture_get_image(struct wlr_texture *wlr_texture) {
struct wlr_pixman_texture *texture = get_texture(wlr_texture);
return texture->image;
}
+
+pixman_image_t *wlr_pixman_renderer_get_current_image(
+ struct wlr_renderer *wlr_renderer) {
+ struct wlr_pixman_renderer *renderer = get_renderer(wlr_renderer);
+ assert(renderer->current_buffer);
+ return renderer->current_buffer->image;
+}