diff options
Diffstat (limited to 'backend')
-rw-r--r-- | backend/drm/drm.c | 18 | ||||
-rw-r--r-- | backend/x11/backend.c | 1 |
2 files changed, 10 insertions, 9 deletions
diff --git a/backend/drm/drm.c b/backend/drm/drm.c index 4b92d767..abfd1c2f 100644 --- a/backend/drm/drm.c +++ b/backend/drm/drm.c @@ -118,14 +118,9 @@ static bool add_plane(struct wlr_drm_backend *drm, p->id = drm_plane->plane_id; p->props = *props; - for (size_t i = 0; i < drm_plane->count_formats; ++i) { - // Force a LINEAR layout for the cursor if the driver doesn't support - // modifiers - uint64_t mod = DRM_FORMAT_MOD_INVALID; - if (type == DRM_PLANE_TYPE_CURSOR) { - mod = DRM_FORMAT_MOD_LINEAR; - } - wlr_drm_format_set_add(&p->formats, drm_plane->formats[i], mod); + for (size_t j = 0; j < drm_plane->count_formats; ++j) { + wlr_drm_format_set_add(&p->formats, drm_plane->formats[j], + DRM_FORMAT_MOD_INVALID); } if (p->props.in_formats && drm->addfb2_modifiers) { @@ -155,6 +150,13 @@ static bool add_plane(struct wlr_drm_backend *drm, } drmModeFreePropertyBlob(blob); + } else if (type == DRM_PLANE_TYPE_CURSOR) { + // Force a LINEAR layout for the cursor if the driver doesn't support + // modifiers + for (size_t i = 0; i < p->formats.len; ++i) { + wlr_drm_format_set_add(&p->formats, p->formats.formats[i]->format, + DRM_FORMAT_MOD_LINEAR); + } } switch (type) { diff --git a/backend/x11/backend.c b/backend/x11/backend.c index c15b92da..9eaf5664 100644 --- a/backend/x11/backend.c +++ b/backend/x11/backend.c @@ -354,7 +354,6 @@ static bool query_formats(struct wlr_x11_backend *x11) { } if (x11->have_dri3) { - // X11 always supports implicit modifiers wlr_drm_format_set_add(&x11->dri3_formats, format->drm, DRM_FORMAT_MOD_INVALID); if (!query_dri3_modifiers(x11, format)) { |