Merge pull request #744 from emersion/texture-redesign

Redesign wlr_texture
This commit is contained in:
Tony Crisci 2018-03-28 00:14:57 -04:00 committed by GitHub
commit 330ee08126
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
24 changed files with 579 additions and 650 deletions

View file

@ -39,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);