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 780052d4da
commit 6d281d96cb

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]);