diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-11-04 14:30:16 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-11-04 14:30:16 +0100 |
commit | cb503973cea7c7929c2fcc6fbeb886f2b8a6fa5a (patch) | |
tree | ac8d5cee0ea9c0f7a37f1e89ce80a5eb2fcff5e9 /include | |
parent | 675cf8457ef3493112def366d7090731172ee872 (diff) | |
parent | d592dcdedd78136bbc60193473b230505f94d907 (diff) |
Merge pull request #1350 from emersion/check-gles2-bgra-ext
render/gles2: remove assumptions about supported formats
Diffstat (limited to 'include')
-rw-r--r-- | include/render/gles2.h | 10 | ||||
-rw-r--r-- | include/wlr/render/interface.h | 5 | ||||
-rw-r--r-- | include/wlr/render/wlr_renderer.h | 5 |
3 files changed, 17 insertions, 3 deletions
diff --git a/include/render/gles2.h b/include/render/gles2.h index 7ff2f174..1857383f 100644 --- a/include/render/gles2.h +++ b/include/render/gles2.h @@ -40,6 +40,12 @@ struct wlr_gles2_renderer { const char *exts_str; struct { + bool read_format_bgra_ext; + bool debug_khr; + bool egl_image_external_oes; + } exts; + + struct { struct { GLuint program; GLint proj; @@ -87,7 +93,9 @@ struct wlr_gles2_texture { const struct wlr_gles2_pixel_format *get_gles2_format_from_wl( enum wl_shm_format fmt); -const enum wl_shm_format *get_gles2_formats(size_t *len); +const struct wlr_gles2_pixel_format *get_gles2_format_from_gl( + GLint gl_format, GLint gl_type, bool alpha); +const enum wl_shm_format *get_gles2_wl_formats(size_t *len); struct wlr_gles2_texture *gles2_get_texture( struct wlr_texture *wlr_texture); diff --git a/include/wlr/render/interface.h b/include/wlr/render/interface.h index 905d419f..6b80a077 100644 --- a/include/wlr/render/interface.h +++ b/include/wlr/render/interface.h @@ -34,6 +34,8 @@ struct wlr_renderer_impl { const float color[static 4], const float matrix[static 9]); const enum wl_shm_format *(*formats)( struct wlr_renderer *renderer, size_t *len); + bool (*format_supported)(struct wlr_renderer *renderer, + enum wl_shm_format fmt); bool (*resource_is_wl_drm_buffer)(struct wlr_renderer *renderer, struct wl_resource *resource); void (*wl_drm_buffer_get_size)(struct wlr_renderer *renderer, @@ -41,12 +43,11 @@ struct wlr_renderer_impl { int (*get_dmabuf_formats)(struct wlr_renderer *renderer, int **formats); int (*get_dmabuf_modifiers)(struct wlr_renderer *renderer, int format, uint64_t **modifiers); + enum wl_shm_format (*preferred_read_format)(struct wlr_renderer *renderer); bool (*read_pixels)(struct wlr_renderer *renderer, enum wl_shm_format fmt, uint32_t *flags, uint32_t stride, uint32_t width, uint32_t height, uint32_t src_x, uint32_t src_y, uint32_t dst_x, uint32_t dst_y, void *data); - bool (*format_supported)(struct wlr_renderer *renderer, - enum wl_shm_format fmt); struct wlr_texture *(*texture_from_pixels)(struct wlr_renderer *renderer, enum wl_shm_format fmt, uint32_t stride, uint32_t width, uint32_t height, const void *data); diff --git a/include/wlr/render/wlr_renderer.h b/include/wlr/render/wlr_renderer.h index 9c031b7f..02b4a11e 100644 --- a/include/wlr/render/wlr_renderer.h +++ b/include/wlr/render/wlr_renderer.h @@ -97,6 +97,11 @@ int wlr_renderer_get_dmabuf_formats(struct wlr_renderer *renderer, int wlr_renderer_get_dmabuf_modifiers(struct wlr_renderer *renderer, int format, uint64_t **modifiers); /** + * Get the preferred format for reading pixels. + */ +bool wlr_renderer_preferred_read_format(struct wlr_renderer *renderer, + enum wl_shm_format *fmt); +/** * Reads out of pixels of the currently bound surface into data. `stride` is in * bytes. * |