Index: ui/ozone/platform/drm/gpu/drm_buffer.cc |
diff --git a/ui/ozone/platform/drm/gpu/drm_buffer.cc b/ui/ozone/platform/drm/gpu/drm_buffer.cc |
index 7f9e5ea0600308e5e68cc58f5a68c92397fd6b98..21647e3765e2456775aa2e82715abfa2f6f4723b 100644 |
--- a/ui/ozone/platform/drm/gpu/drm_buffer.cc |
+++ b/ui/ozone/platform/drm/gpu/drm_buffer.cc |
@@ -13,27 +13,6 @@ namespace ui { |
namespace { |
-// Modesetting cannot happen from a buffer with transparencies. Return the size |
-// of a pixel without alpha. |
-uint8_t GetColorDepth(SkColorType type) { |
- switch (type) { |
- case kUnknown_SkColorType: |
- case kAlpha_8_SkColorType: |
- return 0; |
- case kIndex_8_SkColorType: |
- return 8; |
- case kRGB_565_SkColorType: |
- return 16; |
- case kARGB_4444_SkColorType: |
- return 12; |
- case kN32_SkColorType: |
- return 24; |
- default: |
- NOTREACHED(); |
- return 0; |
- } |
-} |
- |
// We always ignore Alpha. |
uint32_t GetFourCCCodeForSkColorType(SkColorType type) { |
switch (type) { |
@@ -87,14 +66,17 @@ bool DrmBuffer::Initialize(const SkImageInfo& info, |
} |
if (should_register_framebuffer) { |
- if (!drm_->AddFramebuffer( |
- info.width(), info.height(), GetColorDepth(info.colorType()), |
- info.bytesPerPixel() << 3, stride_, handle_, &framebuffer_)) { |
- PLOG(ERROR) << "DrmBuffer: AddFramebuffer: handle " << handle_; |
+ uint32_t handles[4] = {0}; |
+ handles[0] = handle_; |
+ uint32_t strides[4] = {0}; |
+ strides[0] = stride_; |
+ uint32_t offsets[4] = {0}; |
+ fb_pixel_format_ = GetFourCCCodeForSkColorType(info.colorType()); |
+ if (!drm_->AddFramebuffer2(info.width(), info.height(), fb_pixel_format_, |
+ handles, strides, offsets, &framebuffer_, 0)) { |
+ PLOG(ERROR) << "DrmBuffer: AddFramebuffer2: handle " << handle_; |
return false; |
} |
- |
- fb_pixel_format_ = GetFourCCCodeForSkColorType(info.colorType()); |
} |
surface_ = |