From c740fccc9dd0913908c0632c10f8c6d10b2b1ca4 Mon Sep 17 00:00:00 2001 From: Simon Ser Date: Tue, 16 Mar 2021 11:20:12 +0100 Subject: [PATCH] Fix buffer blit matrices There was a missing wlr_matrix_scale call, so we ended up with black frames. Closes: https://github.com/swaywm/wlroots/issues/2780 --- backend/drm/renderer.c | 1 + types/wlr_screencopy_v1.c | 1 + 2 files changed, 2 insertions(+) diff --git a/backend/drm/renderer.c b/backend/drm/renderer.c index 260d041f..2793c00b 100644 --- a/backend/drm/renderer.c +++ b/backend/drm/renderer.c @@ -157,6 +157,7 @@ static struct wlr_buffer *drm_surface_blit(struct wlr_drm_surface *surf, float mat[9]; wlr_matrix_identity(mat); + wlr_matrix_scale(mat, surf->width, surf->height); wlr_renderer_begin(renderer, surf->width, surf->height); wlr_renderer_clear(renderer, (float[]){ 0.0, 0.0, 0.0, 0.0 }); diff --git a/types/wlr_screencopy_v1.c b/types/wlr_screencopy_v1.c index 9de3172c..87f3127f 100644 --- a/types/wlr_screencopy_v1.c +++ b/types/wlr_screencopy_v1.c @@ -287,6 +287,7 @@ static bool blit_dmabuf(struct wlr_renderer *renderer, float mat[9]; wlr_matrix_identity(mat); + wlr_matrix_scale(mat, dst_buffer->width, dst_buffer->height); wlr_renderer_begin(renderer, dst_buffer->width, dst_buffer->height); wlr_renderer_clear(renderer, (float[]){ 0.0, 0.0, 0.0, 0.0 });