diff --git a/src/backend/x11/mod.rs b/src/backend/x11/mod.rs index a32d48f..ec98786 100644 --- a/src/backend/x11/mod.rs +++ b/src/backend/x11/mod.rs @@ -367,7 +367,12 @@ impl X11Handle { return Err(X11Error::InvalidWindow); } - let modifiers = modifiers.collect::>(); + let mut modifiers = modifiers.collect::>(); + // older dri3 versions do only support buffers with one plane. + // we need to make sure, we don't accidently allocate buffers with more. + if window.0.extensions.dri3 < Some((1, 2)) { + modifiers.retain(|modi| modi == &DrmModifier::Invalid || modi == &DrmModifier::Linear); + } let format = window.0.format; let size = window.size();