diff options
author | Tony Crisci <tony@dubstepdish.com> | 2018-03-28 00:20:39 -0400 |
---|---|---|
committer | Tony Crisci <tony@dubstepdish.com> | 2018-03-28 00:20:39 -0400 |
commit | 41e54ba632ae5804d09f75f1af4a708ea33932cf (patch) | |
tree | 79a523c5dc4bdf148361ebcda47c4d6a9027e98a /include/render | |
parent | edb643fc6c55b47dd766b4e516b16108719d1ecd (diff) | |
parent | 330ee081269790922a46091399b616b12ce14f51 (diff) |
Merge branch 'master' into xdg-positioner
Diffstat (limited to 'include/render')
-rw-r--r-- | include/render/gles2.h | 41 |
1 files changed, 35 insertions, 6 deletions
diff --git a/include/render/gles2.h b/include/render/gles2.h index 43a8d648..32cb3221 100644 --- a/include/render/gles2.h +++ b/include/render/gles2.h @@ -28,6 +28,7 @@ struct wlr_gles2_renderer { struct wlr_renderer wlr_renderer; struct wlr_egl *egl; + const char *exts_str; struct { GLuint quad; @@ -38,21 +39,49 @@ struct wlr_gles2_renderer { } shaders; }; +enum wlr_gles2_texture_type { + WLR_GLES2_TEXTURE_GLTEX, + WLR_GLES2_TEXTURE_WL_DRM_GL, + WLR_GLES2_TEXTURE_WL_DRM_EXT, + WLR_GLES2_TEXTURE_DMABUF, +}; + struct wlr_gles2_texture { struct wlr_texture wlr_texture; - struct wlr_egl *egl; - GLuint tex_id; - const struct gles2_pixel_format *pixel_format; + struct wlr_gles2_renderer *renderer; + enum wlr_gles2_texture_type type; + int width, height; + bool has_alpha; + bool inverted_y; + + // Not set if WLR_GLES2_TEXTURE_GLTEX EGLImageKHR image; - GLenum target; + GLuint image_tex; + + union { + GLuint gl_tex; + struct wl_resource *wl_drm; + }; }; const struct gles2_pixel_format *gles2_format_from_wl(enum wl_shm_format fmt); const enum wl_shm_format *gles2_formats(size_t *len); -struct wlr_texture *gles2_texture_create(); -struct wlr_gles2_texture *gles2_get_texture(struct wlr_texture *wlr_texture); +struct wlr_gles2_renderer *gles2_get_renderer( + struct wlr_renderer *wlr_renderer); +struct wlr_gles2_renderer *gles2_get_renderer_in_context( + struct wlr_renderer *wlr_renderer); + +struct wlr_gles2_texture *gles2_get_texture_in_context( + struct wlr_texture *wlr_texture); +struct wlr_texture *gles2_texture_from_pixels(struct wlr_renderer *wlr_renderer, + enum wl_shm_format wl_fmt, uint32_t stride, uint32_t width, uint32_t height, + const void *data); +struct wlr_texture *gles2_texture_from_wl_drm(struct wlr_renderer *wlr_renderer, + struct wl_resource *data); +struct wlr_texture *gles2_texture_from_dmabuf(struct wlr_renderer *wlr_renderer, + struct wlr_dmabuf_buffer_attribs *attribs); void gles2_push_marker(const char *file, const char *func); void gles2_pop_marker(void); |