diff options
-rw-r--r-- | hw/xwayland/xwayland-glamor-gbm.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/hw/xwayland/xwayland-glamor-gbm.c b/hw/xwayland/xwayland-glamor-gbm.c index 37633ec96..4086e78ba 100644 --- a/hw/xwayland/xwayland-glamor-gbm.c +++ b/hw/xwayland/xwayland-glamor-gbm.c @@ -296,10 +296,14 @@ xwl_glamor_gbm_create_pixmap_internal(struct xwl_screen *xwl_screen, if (xwl_gbm->dmabuf_capable) { uint32_t num_modifiers = 0; uint64_t *modifiers = NULL; + Bool supports_scanout = FALSE; if (drawable) { - xwl_glamor_get_drawable_modifiers(drawable, format, - &num_modifiers, &modifiers); + xwl_glamor_get_drawable_modifiers_and_scanout(drawable, + format, + &num_modifiers, + &modifiers, + &supports_scanout); } if (num_modifiers == 0) { @@ -309,9 +313,12 @@ xwl_glamor_gbm_create_pixmap_internal(struct xwl_screen *xwl_screen, if (num_modifiers > 0) { #ifdef GBM_BO_WITH_MODIFIERS2 + uint32_t usage = GBM_BO_USE_RENDERING; + if (supports_scanout) + usage |= GBM_BO_USE_SCANOUT; bo = gbm_bo_create_with_modifiers2(xwl_gbm->gbm, width, height, format, modifiers, num_modifiers, - GBM_BO_USE_RENDERING); + usage); #else bo = gbm_bo_create_with_modifiers(xwl_gbm->gbm, width, height, format, modifiers, num_modifiers); |