render/gles2: export gl fromat on texture attribs

When importing a wlr_texture as an external resource into Qt, Qt needs
to know its pixel format. This is similar to the usage scenario of the
format field in wlr_vk_image_attribs. Although it is possible to query
GL_TEXTURE_INTERNAL_FORMAT through the OpenGL API, it is not the same
value as the format that was originally passed to OpenGL when the
wlr_texture was created. The internal_format and format do not have a
one-to-one correspondence, and the correct original format cannot be
retrieved from outside.
This commit is contained in:
JiDe Zhang 2026-01-31 14:00:13 +08:00 committed by JiDe Zhang
parent 4477ca7d32
commit 834b00a1ce
3 changed files with 4 additions and 0 deletions

View file

@ -124,6 +124,7 @@ struct wlr_gles2_texture {
// case.
GLuint tex;
GLuint fbo;
GLint format;
bool has_alpha;

View file

@ -40,6 +40,7 @@ struct wlr_gles2_texture_attribs {
GLuint tex;
bool has_alpha;
GLint format;
};
bool wlr_renderer_is_gles2(struct wlr_renderer *wlr_renderer);

View file

@ -325,6 +325,7 @@ static struct wlr_texture *gles2_texture_from_pixels(
}
texture->target = GL_TEXTURE_2D;
texture->has_alpha = pixel_format_has_alpha(fmt->drm_format);
texture->format = fmt->gl_format;
texture->drm_format = fmt->drm_format;
GLint internal_format = fmt->gl_internalformat;
@ -436,5 +437,6 @@ void wlr_gles2_texture_get_attribs(struct wlr_texture *wlr_texture,
.target = texture->target,
.tex = texture->tex,
.has_alpha = texture->has_alpha,
.format = texture->format,
};
}