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 355b0afdc665c17f567182eb3b9859e94080a32f..f8bd9f155fd56e4aec6db6690bf92651ba5c9558 100644 |
--- a/ui/ozone/platform/drm/gpu/gbm_buffer_base.cc |
+++ b/ui/ozone/platform/drm/gpu/gbm_buffer_base.cc |
@@ -26,20 +26,37 @@ GbmBufferBase::GbmBufferBase(const scoped_refptr<DrmDevice>& drm, |
bool scanout) |
: drm_(drm), bo_(bo) { |
if (scanout) { |
- if (!drm_->AddFramebuffer(gbm_bo_get_width(bo), gbm_bo_get_height(bo), |
- kColorDepth, kPixelDepth, gbm_bo_get_stride(bo), |
- gbm_bo_get_handle(bo).u32, &framebuffer_)) { |
- PLOG(ERROR) << "Failed to register buffer"; |
- return; |
- } |
- |
fb_pixel_format_ = gbm_bo_get_format(bo); |
if (fb_pixel_format_ == GBM_FORMAT_ARGB8888) |
fb_pixel_format_ = GBM_FORMAT_XRGB8888; |
- // For now, we always create a frame buffer of 24 bit color depth and |
- // support only XRGB format. |
- DCHECK(fb_pixel_format_ == GBM_FORMAT_XRGB8888); |
+ switch (fb_pixel_format_) { |
+ case GBM_FORMAT_XRGB8888: |
+ if (!drm_->AddFramebuffer(gbm_bo_get_width(bo), gbm_bo_get_height(bo), |
kalyank
2015/10/22 22:22:28
As @marcheu1 pointed out we should just use AddFra
william.xie1
2015/10/23 00:23:32
Done.
|
+ kColorDepth, kPixelDepth, |
+ gbm_bo_get_stride(bo), |
+ gbm_bo_get_handle(bo).u32, &framebuffer_)) { |
+ PLOG(ERROR) << "Failed to register buffer"; |
+ return; |
+ } |
+ break; |
+ case GBM_FORMAT_UYVY: |
+ uint32_t handles[4] = {0}; |
+ handles[0] = gbm_bo_get_handle(bo).u32; |
+ uint32_t strides[4] = {0}; |
+ strides[0] = gbm_bo_get_stride(bo); |
+ 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)) { |
+ PLOG(ERROR) << "Failed to register buffer"; |
+ return; |
+ } |
+ break; |
+ default: |
+ NOTIMPLEMENTED(); |
+ } |
} |
} |