mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-05 13:29:47 -05:00
Redesign wlr_texture
- Textures are now immutable (apart from those created from raw pixels), no more invalid textures - Move all wl_drm stuff in wlr_renderer - Most of wlr_texture fields are now private - Remove some duplicated DMA-BUF code in the DRM backend - Add more assertions - Stride is now always given as bytes rather than pixels - Drop wl_shm functions Fun fact: this patch has been written 10,000 meters up in the air.
This commit is contained in:
parent
80d3561d32
commit
c63d94483b
24 changed files with 577 additions and 647 deletions
|
|
@ -38,21 +38,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);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue