From f34a1b75ebd9dbebf4fb9c2cf34d878fce902c03 Mon Sep 17 00:00:00 2001
From: emersion <contact@emersion.fr>
Date: Fri, 26 Jan 2018 23:13:41 +0100
Subject: render/gles2: use format bpp when reading pixels

---
 render/gles2/pixel_format.c | 4 ++++
 render/gles2/renderer.c     | 2 +-
 2 files changed, 5 insertions(+), 1 deletion(-)

diff --git a/render/gles2/pixel_format.c b/render/gles2/pixel_format.c
index 9cc75923..a544077b 100644
--- a/render/gles2/pixel_format.c
+++ b/render/gles2/pixel_format.c
@@ -25,12 +25,16 @@ struct pixel_format formats[] = {
 	},
 	{
 		.wl_format = WL_SHM_FORMAT_XBGR8888,
+		.depth = 24,
+		.bpp = 32,
 		.gl_format = GL_RGBA,
 		.gl_type = GL_UNSIGNED_BYTE,
 		.shader = &shaders.rgbx
 	},
 	{
 		.wl_format = WL_SHM_FORMAT_ABGR8888,
+		.depth = 32,
+		.bpp = 32,
 		.gl_format = GL_RGBA,
 		.gl_type = GL_UNSIGNED_BYTE,
 		.shader = &shaders.rgba
diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c
index 6b1a9c59..cc06ad08 100644
--- a/render/gles2/renderer.c
+++ b/render/gles2/renderer.c
@@ -229,7 +229,7 @@ static bool wlr_gles2_read_pixels(struct wlr_renderer *renderer,
 	unsigned char *p = data + dst_y * stride;
 	for (size_t i = src_y; i < src_y + height; ++i) {
 		glReadPixels(src_x, src_y + height - i - 1, width, 1, fmt->gl_format,
-			fmt->gl_type, p + i * stride + dst_x * 4);
+			fmt->gl_type, p + i * stride + dst_x * fmt->bpp / 8);
 	}
 
 	return true;
-- 
cgit v1.2.3