
The EGL context can only import and blit an EGLImage if the backing DMA buffer has a format modifier combination that is advertised as supported and not marked as "external_only". When the context can't blit the imported image, we can still paint using it GL_OES_EGL_image_external using the texture target GL_TEXTURE_EXTERNAL_OES. However, treat drivers who doesn't support modifiers at all as if they do support blitting, if the modifier is 'linear', to avoid regressions. [jadahl: Make shader path a fallback to allow hardware to utilize copy engines via blitting] Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/6221 Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/2247 Related: https://launchpad.net/bugs/1970291 now only falls back if modifiers are supported, and they mark linear as export only. Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3304>