Index: ui/ozone/platform/drm/gpu/gbm_buffer_base.cc |
diff --git a/ui/ozone/platform/drm/gpu/gbm_buffer_base.cc b/ui/ozone/platform/drm/gpu/gbm_buffer_base.cc |
index a031b80061ae8be172e7b6a3f371be508d4dc7ad..83cea290d14e8aeab3df0883959e8de900573cdb 100644 |
--- a/ui/ozone/platform/drm/gpu/gbm_buffer_base.cc |
+++ b/ui/ozone/platform/drm/gpu/gbm_buffer_base.cc |
@@ -15,7 +15,9 @@ namespace ui { |
GbmBufferBase::GbmBufferBase(const scoped_refptr<GbmDevice>& drm, |
gbm_bo* bo, |
uint32_t format, |
- uint32_t flags) |
+ uint32_t flags, |
+ uint64_t modifier, |
+ uint32_t addfb_flags) |
: drm_(drm), bo_(bo) { |
if (flags & GBM_BO_USE_SCANOUT) { |
DCHECK(bo_); |
@@ -27,10 +29,17 @@ GbmBufferBase::GbmBufferBase(const scoped_refptr<GbmDevice>& drm, |
uint32_t strides[4] = {0}; |
strides[0] = gbm_bo_get_stride(bo); |
uint32_t offsets[4] = {0}; |
+ uint64_t modifiers[4] = {0}; |
+ modifiers[0] = modifier; |
+ // AddFramebuffer2 only considers the modifiers if addfb_flags has |
+ // DRM_MODE_FB_MODIFIERS set. We only set that when we've created |
+ // a bo with modifiers, otherwise, we rely on the "no modifiers" |
+ // behavior doing the right thing. |
if (!drm_->AddFramebuffer2(gbm_bo_get_width(bo), gbm_bo_get_height(bo), |
framebuffer_pixel_format_, handles, strides, |
- offsets, &framebuffer_, 0)) { |
+ offsets, modifiers, &framebuffer_, |
+ addfb_flags)) { |
PLOG(ERROR) << "Failed to register buffer"; |
return; |
} |