gbm: gbm_bo_get_handle_for_plane fallback to nonplanar handle
authorAlex Villacís Lasso <a_villacis@palosanto.com>
Mon, 13 May 2019 01:34:28 +0000 (20:34 -0500)
committerDaniel Stone <daniels@collabora.com>
Wed, 15 May 2019 17:27:30 +0000 (18:27 +0100)
Commit f9567ab435217a72cbae628336ead84dc0b2a803 (gbm: Export a getter for per
plane handles) contains an API version check that fails on i915 (API version 7
vs. check for minimum API version 13). Any client that migrates to the planar
API will start failing on i915 (see https://gitlab.gnome.org/GNOME/mutter/issues/127
for mutter, and https://bugs.freedesktop.org/show_bug.cgi?id=108487 for weston).

This commit adds a fallback for plane 0 when the API check fails and returns the
non-planar handle in this scenario, making the call equivalent to
gbm_bo_get_handle(). This is enough for weston 6.0.0 to start working again on an
i915 system.

Fixes: https://bugs.freedesktop.org/show_bug.cgi?id=108487
Signed-off-by: Alex Villacís Lasso <a_villacis@palosanto.com>
Reviewed-by: Daniel Stone <daniels@collabora.com>
src/gbm/backends/dri/gbm_dri.c

index 99396f658f2f037420a9abd34c1a54bc0f9e690a..8d7e4babc3a596b8d3ade8ceefb1b103f9c38eaa 100644 (file)
@@ -681,6 +681,12 @@ gbm_dri_bo_get_handle_for_plane(struct gbm_bo *_bo, int plane)
    ret.s32 = -1;
 
    if (!dri->image || dri->image->base.version < 13 || !dri->image->fromPlanar) {
+      /* Preserve legacy behavior if plane is 0 */
+      if (plane == 0) {
+         /* NOTE: return _bo->handle, *NOT* bo->handle which is invalid at this point */
+         return _bo->handle;
+      }
+
       errno = ENOSYS;
       return ret;
    }