aboutsummaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorSimon Ser <contact@emersion.fr>2020-12-18 16:24:36 +0100
committerSimon Ser <contact@emersion.fr>2021-01-10 11:24:44 +0100
commitc94728b53ade17d152ba1f600475140660db7a75 (patch)
treeafe3bbf109603ff26534574cfd1fe06acdcd7986 /backend
parentd9bbc416a62c2d280e6921da6b25128a1b3a9e22 (diff)
backend/drm: stop using surface size for BO
Stop using wlr_drm_surface.{width,height} to figure out the size of a gbm_bo. In the future we'll stop using wlr_drm_plane.surf, so these will be zero. Instead, rely on gbm_bo_get_{width,height}.
Diffstat (limited to 'backend')
-rw-r--r--backend/drm/atomic.c11
-rw-r--r--backend/drm/legacy.c8
2 files changed, 12 insertions, 7 deletions
diff --git a/backend/drm/atomic.c b/backend/drm/atomic.c
index a6a12278..75c79525 100644
--- a/backend/drm/atomic.c
+++ b/backend/drm/atomic.c
@@ -139,13 +139,16 @@ static void set_plane_props(struct atomic *atom, struct wlr_drm_backend *drm,
goto error;
}
+ uint32_t width = gbm_bo_get_width(fb->bo);
+ uint32_t height = gbm_bo_get_height(fb->bo);
+
// The src_* properties are in 16.16 fixed point
atomic_add(atom, id, props->src_x, 0);
atomic_add(atom, id, props->src_y, 0);
- atomic_add(atom, id, props->src_w, (uint64_t)plane->surf.width << 16);
- atomic_add(atom, id, props->src_h, (uint64_t)plane->surf.height << 16);
- atomic_add(atom, id, props->crtc_w, plane->surf.width);
- atomic_add(atom, id, props->crtc_h, plane->surf.height);
+ atomic_add(atom, id, props->src_w, (uint64_t)width << 16);
+ atomic_add(atom, id, props->src_h, (uint64_t)height << 16);
+ atomic_add(atom, id, props->crtc_w, width);
+ atomic_add(atom, id, props->crtc_h, height);
atomic_add(atom, id, props->fb_id, fb->id);
atomic_add(atom, id, props->crtc_id, crtc_id);
atomic_add(atom, id, props->crtc_x, (uint64_t)x);
diff --git a/backend/drm/legacy.c b/backend/drm/legacy.c
index accb18ff..da2e0d9f 100644
--- a/backend/drm/legacy.c
+++ b/backend/drm/legacy.c
@@ -81,9 +81,11 @@ static bool legacy_crtc_commit(struct wlr_drm_backend *drm,
return false;
}
- if (drmModeSetCursor(drm->fd, crtc->id,
- gbm_bo_get_handle(cursor_fb->bo).u32,
- cursor->surf.width, cursor->surf.height)) {
+ uint32_t cursor_handle = gbm_bo_get_handle(cursor_fb->bo).u32;
+ uint32_t cursor_width = gbm_bo_get_width(cursor_fb->bo);
+ uint32_t cursor_height = gbm_bo_get_height(cursor_fb->bo);
+ if (drmModeSetCursor(drm->fd, crtc->id, cursor_handle,
+ cursor_width, cursor_height)) {
wlr_drm_conn_log_errno(conn, WLR_DEBUG, "drmModeSetCursor failed");
return false;
}