aboutsummaryrefslogtreecommitdiff
path: root/render/gles2/renderer.c
diff options
context:
space:
mode:
Diffstat (limited to 'render/gles2/renderer.c')
-rw-r--r--render/gles2/renderer.c86
1 files changed, 0 insertions, 86 deletions
diff --git a/render/gles2/renderer.c b/render/gles2/renderer.c
index 1b106af5..93fe292c 100644
--- a/render/gles2/renderer.c
+++ b/render/gles2/renderer.c
@@ -288,90 +288,6 @@ static const struct wlr_drm_format_set *gles2_get_render_formats(
return wlr_egl_get_dmabuf_render_formats(renderer->egl);
}
-static uint32_t gles2_preferred_read_format(
- struct wlr_renderer *wlr_renderer) {
- struct wlr_gles2_renderer *renderer =
- gles2_get_renderer_in_context(wlr_renderer);
-
- push_gles2_debug(renderer);
-
- GLint gl_format = -1, gl_type = -1, alpha_size = -1;
- glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_FORMAT, &gl_format);
- glGetIntegerv(GL_IMPLEMENTATION_COLOR_READ_TYPE, &gl_type);
- glGetIntegerv(GL_ALPHA_BITS, &alpha_size);
-
- pop_gles2_debug(renderer);
-
- const struct wlr_gles2_pixel_format *fmt =
- get_gles2_format_from_gl(gl_format, gl_type, alpha_size > 0);
- if (fmt != NULL) {
- return fmt->drm_format;
- }
-
- if (renderer->exts.EXT_read_format_bgra) {
- return DRM_FORMAT_XRGB8888;
- }
- return DRM_FORMAT_XBGR8888;
-}
-
-static bool gles2_read_pixels(struct wlr_renderer *wlr_renderer,
- uint32_t drm_format, 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, void *data) {
- struct wlr_gles2_renderer *renderer =
- gles2_get_renderer_in_context(wlr_renderer);
-
- const struct wlr_gles2_pixel_format *fmt =
- get_gles2_format_from_drm(drm_format);
- if (fmt == NULL || !is_gles2_pixel_format_supported(renderer, fmt)) {
- wlr_log(WLR_ERROR, "Cannot read pixels: unsupported pixel format 0x%"PRIX32, drm_format);
- return false;
- }
-
- if (fmt->gl_format == GL_BGRA_EXT && !renderer->exts.EXT_read_format_bgra) {
- wlr_log(WLR_ERROR,
- "Cannot read pixels: missing GL_EXT_read_format_bgra extension");
- return false;
- }
-
- const struct wlr_pixel_format_info *drm_fmt =
- drm_get_pixel_format_info(fmt->drm_format);
- assert(drm_fmt);
- if (pixel_format_info_pixels_per_block(drm_fmt) != 1) {
- wlr_log(WLR_ERROR, "Cannot read pixels: block formats are not supported");
- return false;
- }
-
- push_gles2_debug(renderer);
-
- // Make sure any pending drawing is finished before we try to read it
- glFinish();
-
- glGetError(); // Clear the error flag
-
- unsigned char *p = (unsigned char *)data + dst_y * stride;
- glPixelStorei(GL_PACK_ALIGNMENT, 1);
- uint32_t pack_stride = pixel_format_info_min_stride(drm_fmt, width);
- if (pack_stride == stride && dst_x == 0) {
- // Under these particular conditions, we can read the pixels with only
- // one glReadPixels call
-
- glReadPixels(src_x, src_y, width, height, fmt->gl_format, fmt->gl_type, p);
- } else {
- // Unfortunately GLES2 doesn't support GL_PACK_ROW_LENGTH, so we have to read
- // the lines out row by row
- for (size_t i = 0; i < height; ++i) {
- uint32_t y = src_y + i;
- glReadPixels(src_x, y, width, 1, fmt->gl_format,
- fmt->gl_type, p + i * stride + dst_x * drm_fmt->bytes_per_block);
- }
- }
-
- pop_gles2_debug(renderer);
-
- return glGetError() == GL_NO_ERROR;
-}
-
static int gles2_get_drm_fd(struct wlr_renderer *wlr_renderer) {
struct wlr_gles2_renderer *renderer =
gles2_get_renderer(wlr_renderer);
@@ -536,8 +452,6 @@ static const struct wlr_renderer_impl renderer_impl = {
.get_shm_texture_formats = gles2_get_shm_texture_formats,
.get_dmabuf_texture_formats = gles2_get_dmabuf_texture_formats,
.get_render_formats = gles2_get_render_formats,
- .preferred_read_format = gles2_preferred_read_format,
- .read_pixels = gles2_read_pixels,
.get_drm_fd = gles2_get_drm_fd,
.get_render_buffer_caps = gles2_get_render_buffer_caps,
.texture_from_buffer = gles2_texture_from_buffer,