From cd28637187149a0f90429e63408bacd98033e59f Mon Sep 17 00:00:00 2001 From: nyorain Date: Mon, 15 Oct 2018 23:56:56 +0200 Subject: Remove fmt parameter from wlr_texture_write_pixels It's not allowed to change the format of a texture so remove the confusing parameter. --- render/gles2/texture.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'render/gles2') diff --git a/render/gles2/texture.c b/render/gles2/texture.c index 22d02cde..d32cd458 100644 --- a/render/gles2/texture.c +++ b/render/gles2/texture.c @@ -44,9 +44,9 @@ static bool gles2_texture_is_opaque(struct wlr_texture *wlr_texture) { } static bool gles2_texture_write_pixels(struct wlr_texture *wlr_texture, - enum wl_shm_format wl_fmt, 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, const void *data) { + 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, + const void *data) { struct wlr_gles2_texture *texture = get_gles2_texture_in_context(wlr_texture); @@ -55,11 +55,9 @@ static bool gles2_texture_write_pixels(struct wlr_texture *wlr_texture, return false; } - const struct wlr_gles2_pixel_format *fmt = get_gles2_format_from_wl(wl_fmt); - if (fmt == NULL) { - wlr_log(WLR_ERROR, "Unsupported pixel format %"PRIu32, wl_fmt); - return false; - } + const struct wlr_gles2_pixel_format *fmt = get_gles2_format_from_wl( + texture->wl_format); + assert(fmt); // TODO: what if the unpack subimage extension isn't supported? PUSH_GLES2_DEBUG; @@ -167,6 +165,7 @@ struct wlr_texture *wlr_gles2_texture_from_pixels(struct wlr_egl *egl, texture->height = height; texture->type = WLR_GLES2_TEXTURE_GLTEX; texture->has_alpha = fmt->has_alpha; + texture->wl_format = fmt->wl_format; PUSH_GLES2_DEBUG; @@ -203,6 +202,7 @@ struct wlr_texture *wlr_gles2_texture_from_wl_drm(struct wlr_egl *egl, texture->wl_drm = data; EGLint fmt; + texture->wl_format = 0xFFFFFFFF; // texture can't be written anyways texture->image = wlr_egl_create_image_from_wl_drm(egl, data, &fmt, &texture->width, &texture->height, &texture->inverted_y); if (texture->image == NULL) { @@ -283,6 +283,7 @@ struct wlr_texture *wlr_gles2_texture_from_dmabuf(struct wlr_egl *egl, texture->height = attribs->height; texture->type = WLR_GLES2_TEXTURE_DMABUF; texture->has_alpha = true; + texture->wl_format = 0xFFFFFFFF; // texture can't be written anyways texture->inverted_y = (attribs->flags & WLR_DMABUF_ATTRIBUTES_FLAGS_Y_INVERT) != 0; -- cgit v1.2.3 From cb03a41a3b73e35b3bd6295fc413900874d611bb Mon Sep 17 00:00:00 2001 From: nyorain Date: Tue, 16 Oct 2018 09:35:28 +0200 Subject: Use enum wl_shm_format for gles2 texture formats Also rephrase the write_pixels comment. --- include/render/gles2.h | 4 ++-- include/wlr/render/wlr_texture.h | 7 +++---- render/gles2/texture.c | 4 ++-- 3 files changed, 7 insertions(+), 8 deletions(-) (limited to 'render/gles2') diff --git a/include/render/gles2.h b/include/render/gles2.h index 04a73e27..7ff2f174 100644 --- a/include/render/gles2.h +++ b/include/render/gles2.h @@ -19,7 +19,7 @@ extern PFNGLEGLIMAGETARGETTEXTURE2DOESPROC glEGLImageTargetTexture2DOES; struct wlr_gles2_pixel_format { - uint32_t wl_format; + enum wl_shm_format wl_format; GLint gl_format, gl_type; int depth, bpp; bool has_alpha; @@ -72,7 +72,7 @@ struct wlr_gles2_texture { enum wlr_gles2_texture_type type; int width, height; bool has_alpha; - uint32_t wl_format; // used to interpret upload data + enum wl_shm_format wl_format; // used to interpret upload data bool inverted_y; // Not set if WLR_GLES2_TEXTURE_GLTEX diff --git a/include/wlr/render/wlr_texture.h b/include/wlr/render/wlr_texture.h index 2eb5d6aa..f210717a 100644 --- a/include/wlr/render/wlr_texture.h +++ b/include/wlr/render/wlr_texture.h @@ -54,10 +54,9 @@ void wlr_texture_get_size(struct wlr_texture *texture, int *width, int *height); bool wlr_texture_is_opaque(struct wlr_texture *texture); /** - * Update a texture with raw pixels. The texture must be mutable. - * The given data is interpreted as being in the format the - * texture was created with. - */ + * Update a texture with raw pixels. The texture must be mutable, and the input + * data must have the same pixel format that the texture was created with. + */ bool wlr_texture_write_pixels(struct wlr_texture *texture, 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, diff --git a/render/gles2/texture.c b/render/gles2/texture.c index d32cd458..d035841e 100644 --- a/render/gles2/texture.c +++ b/render/gles2/texture.c @@ -55,8 +55,8 @@ static bool gles2_texture_write_pixels(struct wlr_texture *wlr_texture, return false; } - const struct wlr_gles2_pixel_format *fmt = get_gles2_format_from_wl( - texture->wl_format); + const struct wlr_gles2_pixel_format *fmt = + get_gles2_format_from_wl(texture->wl_format); assert(fmt); // TODO: what if the unpack subimage extension isn't supported? -- cgit v1.2.3