render/drm_format_set: remove special LINEAR case

This was used to make the intersection of INVALID and LINEAR result
in LINEAR. We can now just require LINEAR to be in both lists.
This commit is contained in:
Simon Ser 2021-03-31 22:07:54 +02:00 committed by Simon Zeni
parent d5df8d5cbf
commit 98f2efde98

View file

@ -144,18 +144,6 @@ struct wlr_drm_format *wlr_drm_format_intersect(
const struct wlr_drm_format *a, const struct wlr_drm_format *b) { const struct wlr_drm_format *a, const struct wlr_drm_format *b) {
assert(a->format == b->format); assert(a->format == b->format);
// Special case: if a format only supports LINEAR and the other supports
// implicit modifiers, force LINEAR. This will force the allocator to
// create a buffer with a linear layout instead of an implicit modifier.
if (a->len == 1 && a->modifiers[0] == DRM_FORMAT_MOD_LINEAR &&
wlr_drm_format_has(b, DRM_FORMAT_MOD_INVALID)) {
return wlr_drm_format_dup(a);
}
if (b->len == 1 && b->modifiers[0] == DRM_FORMAT_MOD_LINEAR &&
wlr_drm_format_has(a, DRM_FORMAT_MOD_INVALID)) {
return wlr_drm_format_dup(b);
}
size_t format_cap = a->len < b->len ? a->len : b->len; size_t format_cap = a->len < b->len ? a->len : b->len;
size_t format_size = sizeof(struct wlr_drm_format) + size_t format_size = sizeof(struct wlr_drm_format) +
format_cap * sizeof(a->modifiers[0]); format_cap * sizeof(a->modifiers[0]);