const drmModeObjectProperties *props);
int
drm_plane_populate_formats(struct drm_plane *plane, const drmModePlane *kplane,
- const drmModeObjectProperties *props);
+ const drmModeObjectProperties *props,
+ const bool use_modifiers);
void
drm_property_info_free(struct drm_property_info *info, int num_props);
plane->zpos_max = DRM_PLANE_ZPOS_INVALID_PLANE;
}
- if (drm_plane_populate_formats(plane, kplane, props) < 0) {
+ if (drm_plane_populate_formats(plane, kplane, props,
+ b->fb_modifiers) < 0) {
drmModeFreeObjectProperties(props);
goto err;
}
*/
int
drm_plane_populate_formats(struct drm_plane *plane, const drmModePlane *kplane,
- const drmModeObjectProperties *props)
+ const drmModeObjectProperties *props,
+ const bool use_modifiers)
{
unsigned i;
drmModePropertyBlobRes *blob;
uint32_t *blob_formats;
uint32_t blob_id;
+ if (!use_modifiers)
+ goto fallback;
+
blob_id = drm_property_get_value(&plane->props[WDRM_PLANE_IN_FORMATS],
props,
0);
weston_log("DRM: %s atomic modesetting\n",
b->atomic_modeset ? "supports" : "does not support");
- ret = drmGetCap(b->drm.fd, DRM_CAP_ADDFB2_MODIFIERS, &cap);
- if (ret == 0)
- b->fb_modifiers = cap;
- else
- b->fb_modifiers = 0;
+ if (!getenv("WESTON_DISABLE_GBM_MODIFIERS")) {
+ ret = drmGetCap(b->drm.fd, DRM_CAP_ADDFB2_MODIFIERS, &cap);
+ if (ret == 0)
+ b->fb_modifiers = cap;
+ }
+ weston_log("DRM: %s GBM modifiers\n",
+ b->fb_modifiers ? "supports" : "does not support");
/*
* KMS support for hardware planes cannot properly synchronize