backend/drm: fix missing plane formats

The loop populating the format list was exiting early if ARGB8888 was found.
master
Simon Ser 5 years ago committed by Scott Anderson
parent 540e23d102
commit 8d2ea9544b

@ -98,11 +98,15 @@ static bool add_plane(struct wlr_drm_backend *drm,
p->id = drm_plane->plane_id; p->id = drm_plane->plane_id;
p->props = *props; p->props = *props;
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);
}
// Choose an RGB format for the plane // Choose an RGB format for the plane
uint32_t rgb_format = DRM_FORMAT_INVALID; uint32_t rgb_format = DRM_FORMAT_INVALID;
for (size_t j = 0; j < drm_plane->count_formats; ++j) { for (size_t j = 0; j < drm_plane->count_formats; ++j) {
uint32_t fmt = drm_plane->formats[j]; uint32_t fmt = drm_plane->formats[j];
wlr_drm_format_set_add(&p->formats, fmt, DRM_FORMAT_MOD_INVALID);
if (fmt == DRM_FORMAT_ARGB8888) { if (fmt == DRM_FORMAT_ARGB8888) {
// Prefer formats with alpha channel // Prefer formats with alpha channel

Loading…
Cancel
Save