diff --git a/hw/xfree86/drivers/video/modesetting/drmmode_display.c b/hw/xfree86/drivers/video/modesetting/drmmode_display.c index 4b967417d4..1d884b36d6 100644 --- a/hw/xfree86/drivers/video/modesetting/drmmode_display.c +++ b/hw/xfree86/drivers/video/modesetting/drmmode_display.c @@ -2452,9 +2452,13 @@ populate_format_modifiers(xf86CrtcPtr crtc, const drmModePlane *kplane, if ((i < mod->offset) || (i > mod->offset + 63)) continue; + if (!(mod->formats & (1 << (i - mod->offset)))) continue; + if (mod->modifier == DRM_FORMAT_MOD_INVALID) + continue; + num_modifiers++; tmp = realloc(modifiers, num_modifiers * sizeof(modifiers[0])); if (!tmp) {