| 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 5f27c51e7e9f04c1625622f7384e6f4765448932..09c102da747dbd4e6be795de459d09426aa21a66 100644
|
| --- a/ui/ozone/platform/drm/gpu/gbm_buffer_base.cc
|
| +++ b/ui/ozone/platform/drm/gpu/gbm_buffer_base.cc
|
| @@ -7,22 +7,18 @@
|
| #include <gbm.h>
|
|
|
| #include "base/logging.h"
|
| +#include "ui/ozone/platform/drm/common/drm_util.h"
|
| #include "ui/ozone/platform/drm/gpu/drm_device.h"
|
|
|
| namespace ui {
|
|
|
| GbmBufferBase::GbmBufferBase(const scoped_refptr<DrmDevice>& drm,
|
| gbm_bo* bo,
|
| - bool scanout)
|
| + gfx::BufferFormat format,
|
| + gfx::BufferUsage usage)
|
| : drm_(drm), bo_(bo) {
|
| - if (scanout) {
|
| - fb_pixel_format_ = gbm_bo_get_format(bo);
|
| - if (fb_pixel_format_ == GBM_FORMAT_ARGB8888)
|
| - fb_pixel_format_ = GBM_FORMAT_XRGB8888;
|
| -
|
| - // For now, we only support XRGB and UYVY format.
|
| - DCHECK(fb_pixel_format_ == GBM_FORMAT_XRGB8888 ||
|
| - fb_pixel_format_ == GBM_FORMAT_UYVY);
|
| + if (usage == gfx::BufferUsage::SCANOUT) {
|
| + framebuffer_pixel_format_ = GetFourCCFormatForFramebuffer(format);
|
|
|
| uint32_t handles[4] = {0};
|
| handles[0] = gbm_bo_get_handle(bo).u32;
|
| @@ -31,8 +27,8 @@ GbmBufferBase::GbmBufferBase(const scoped_refptr<DrmDevice>& drm,
|
| uint32_t offsets[4] = {0};
|
|
|
| if (!drm_->AddFramebuffer2(gbm_bo_get_width(bo), gbm_bo_get_height(bo),
|
| - fb_pixel_format_, handles, strides, offsets,
|
| - &framebuffer_, 0)) {
|
| + framebuffer_pixel_format_, handles, strides,
|
| + offsets, &framebuffer_, 0)) {
|
| PLOG(ERROR) << "Failed to register buffer";
|
| return;
|
| }
|
| @@ -57,7 +53,8 @@ gfx::Size GbmBufferBase::GetSize() const {
|
| }
|
|
|
| uint32_t GbmBufferBase::GetFramebufferPixelFormat() const {
|
| - return fb_pixel_format_;
|
| + DCHECK(framebuffer_);
|
| + return framebuffer_pixel_format_;
|
| }
|
|
|
| bool GbmBufferBase::RequiresGlFinish() const {
|
|
|