mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2025-11-02 09:01:38 -05:00
Move read_pixels from output to renderer
This commit is contained in:
parent
55c063f440
commit
0ce3135304
9 changed files with 64 additions and 36 deletions
|
|
@ -226,7 +226,23 @@ static bool wlr_gles2_buffer_is_drm(struct wlr_renderer *_renderer,
|
|||
(struct wlr_gles2_renderer *)_renderer;
|
||||
EGLint format;
|
||||
return wlr_egl_query_buffer(renderer->egl, buffer,
|
||||
EGL_TEXTURE_FORMAT, &format);
|
||||
EGL_TEXTURE_FORMAT, &format);
|
||||
}
|
||||
|
||||
static void rgba_to_argb(uint32_t *data, size_t height, size_t stride) {
|
||||
size_t n = height*stride/4;
|
||||
for (size_t i = 0; i < n; ++i) {
|
||||
uint32_t v = data[i];
|
||||
uint32_t rgb = (v & 0xffffff00) >> 8;
|
||||
uint32_t a = v & 0x000000ff;
|
||||
data[i] = rgb | (a << 24);
|
||||
}
|
||||
}
|
||||
|
||||
static void wlr_gles2_read_pixels(struct wlr_renderer *renderer, int x, int y,
|
||||
int width, int height, void *out_data) {
|
||||
glReadPixels(x, y, width, height, GL_RGBA, GL_UNSIGNED_BYTE, out_data);
|
||||
rgba_to_argb(out_data, height, width*4);
|
||||
}
|
||||
|
||||
static struct wlr_renderer_impl wlr_renderer_impl = {
|
||||
|
|
@ -238,6 +254,7 @@ static struct wlr_renderer_impl wlr_renderer_impl = {
|
|||
.render_ellipse = wlr_gles2_render_ellipse,
|
||||
.formats = wlr_gles2_formats,
|
||||
.buffer_is_drm = wlr_gles2_buffer_is_drm,
|
||||
.read_pixels = wlr_gles2_read_pixels,
|
||||
};
|
||||
|
||||
struct wlr_renderer *wlr_gles2_renderer_create(struct wlr_backend *backend) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue