diff options
author | kalyan.kondapally <kalyan.kondapally@intel.com> | 2015-09-16 11:03:23 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-09-16 18:04:04 +0000 |
commit | 9ee0841722352577f208463072d0c812d3b50765 (patch) | |
tree | c7df0162d713da7e74cec847e5ccadbb1080c972 | |
parent | a54b6d269ac27c5ebb7b1b8d6fe8159c1f5d6dbb (diff) | |
download | chromium_src-9ee0841722352577f208463072d0c812d3b50765.zip chromium_src-9ee0841722352577f208463072d0c812d3b50765.tar.gz chromium_src-9ee0841722352577f208463072d0c812d3b50765.tar.bz2 |
Explicitly pass format to ScanoutBufferGenerator
Currently, we assume it's always going to be RGBX format and create
appropriate buffer. However, we also want to support creation of buffers
with other formats(i.e YUV) to test overlay candidates in TestPageFlip.
This patch adds needed support for this.
BUG=370522
Review URL: https://codereview.chromium.org/1348643002
Cr-Commit-Position: refs/heads/master@{#349160}
-rw-r--r-- | ui/ozone/platform/drm/gpu/drm_buffer.cc | 1 | ||||
-rw-r--r-- | ui/ozone/platform/drm/gpu/drm_buffer.h | 1 | ||||
-rw-r--r-- | ui/ozone/platform/drm/gpu/drm_window.cc | 3 | ||||
-rw-r--r-- | ui/ozone/platform/drm/gpu/scanout_buffer.h | 2 | ||||
-rw-r--r-- | ui/ozone/platform/drm/gpu/screen_manager.cc | 4 | ||||
-rw-r--r-- | ui/ozone/platform/drm/gpu/screen_manager_unittest.cc | 4 | ||||
-rw-r--r-- | ui/ozone/platform/drm/ozone_platform_gbm.cc | 3 |
7 files changed, 12 insertions, 6 deletions
diff --git a/ui/ozone/platform/drm/gpu/drm_buffer.cc b/ui/ozone/platform/drm/gpu/drm_buffer.cc index ec3d99a..e36c696 100644 --- a/ui/ozone/platform/drm/gpu/drm_buffer.cc +++ b/ui/ozone/platform/drm/gpu/drm_buffer.cc @@ -135,6 +135,7 @@ DrmBufferGenerator::~DrmBufferGenerator() { scoped_refptr<ScanoutBuffer> DrmBufferGenerator::Create( const scoped_refptr<DrmDevice>& drm, + gfx::BufferFormat format, const gfx::Size& size) { scoped_refptr<DrmBuffer> buffer(new DrmBuffer(drm)); SkImageInfo info = SkImageInfo::MakeN32Premul(size.width(), size.height()); diff --git a/ui/ozone/platform/drm/gpu/drm_buffer.h b/ui/ozone/platform/drm/gpu/drm_buffer.h index 76027b6..a04d4b6 100644 --- a/ui/ozone/platform/drm/gpu/drm_buffer.h +++ b/ui/ozone/platform/drm/gpu/drm_buffer.h @@ -73,6 +73,7 @@ class OZONE_EXPORT DrmBufferGenerator : public ScanoutBufferGenerator { // ScanoutBufferGenerator: scoped_refptr<ScanoutBuffer> Create(const scoped_refptr<DrmDevice>& drm, + gfx::BufferFormat format, const gfx::Size& size) override; private: diff --git a/ui/ozone/platform/drm/gpu/drm_window.cc b/ui/ozone/platform/drm/gpu/drm_window.cc index 910683a..0aa6284 100644 --- a/ui/ozone/platform/drm/gpu/drm_window.cc +++ b/ui/ozone/platform/drm/gpu/drm_window.cc @@ -167,7 +167,8 @@ bool DrmWindow::TestPageFlip(const std::vector<OverlayCheck_Params>& overlays, for (const auto& overlay : overlays) { gfx::Size size = (overlay.plane_z_order == 0) ? bounds().size() : overlay.buffer_size; - scoped_refptr<ScanoutBuffer> buffer = buffer_generator->Create(drm, size); + scoped_refptr<ScanoutBuffer> buffer = + buffer_generator->Create(drm, overlay.format, size); if (!buffer) return false; planes.push_back(OverlayPlane(buffer, overlay.plane_z_order, diff --git a/ui/ozone/platform/drm/gpu/scanout_buffer.h b/ui/ozone/platform/drm/gpu/scanout_buffer.h index d8712fa..53412e8 100644 --- a/ui/ozone/platform/drm/gpu/scanout_buffer.h +++ b/ui/ozone/platform/drm/gpu/scanout_buffer.h @@ -8,6 +8,7 @@ #include <stdint.h> #include "base/memory/ref_counted.h" +#include "ui/gfx/buffer_types.h" #include "ui/gfx/geometry/size.h" namespace ui { @@ -43,6 +44,7 @@ class ScanoutBufferGenerator { virtual scoped_refptr<ScanoutBuffer> Create( const scoped_refptr<DrmDevice>& drm, + gfx::BufferFormat format, const gfx::Size& size) = 0; }; diff --git a/ui/ozone/platform/drm/gpu/screen_manager.cc b/ui/ozone/platform/drm/gpu/screen_manager.cc index 2aba0d9..434f8c4 100644 --- a/ui/ozone/platform/drm/gpu/screen_manager.cc +++ b/ui/ozone/platform/drm/gpu/screen_manager.cc @@ -342,8 +342,8 @@ OverlayPlane ScreenManager::GetModesetBuffer( } scoped_refptr<DrmDevice> drm = controller->GetAllocationDrmDevice(); - scoped_refptr<ScanoutBuffer> buffer = - buffer_generator_->Create(drm, bounds.size()); + scoped_refptr<ScanoutBuffer> buffer = buffer_generator_->Create( + drm, gfx::BufferFormat::BGRA_8888, bounds.size()); if (!buffer) { LOG(ERROR) << "Failed to create scanout buffer"; return OverlayPlane(nullptr, 0, gfx::OVERLAY_TRANSFORM_INVALID, gfx::Rect(), diff --git a/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc b/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc index 662aba9..8d8a96ee 100644 --- a/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc +++ b/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc @@ -460,8 +460,8 @@ TEST_F(ScreenManagerTest, EnableControllerWhenWindowHasBuffer) { new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get())); window->Initialize(); window->OnBoundsChanged(GetPrimaryBounds()); - scoped_refptr<ui::ScanoutBuffer> buffer = - buffer_generator_->Create(drm_, GetPrimaryBounds().size()); + scoped_refptr<ui::ScanoutBuffer> buffer = buffer_generator_->Create( + drm_, gfx::BufferFormat::BGRA_8888, GetPrimaryBounds().size()); window->QueueOverlayPlane(ui::OverlayPlane(buffer)); window->SchedulePageFlip(false /* is_sync */, base::Bind(&EmptySwapCallback)); screen_manager_->AddWindow(1, window.Pass()); diff --git a/ui/ozone/platform/drm/ozone_platform_gbm.cc b/ui/ozone/platform/drm/ozone_platform_gbm.cc index c496fd8..0a6e08c 100644 --- a/ui/ozone/platform/drm/ozone_platform_gbm.cc +++ b/ui/ozone/platform/drm/ozone_platform_gbm.cc @@ -78,9 +78,10 @@ class GbmBufferGenerator : public ScanoutBufferGenerator { // ScanoutBufferGenerator: scoped_refptr<ScanoutBuffer> Create(const scoped_refptr<DrmDevice>& drm, + gfx::BufferFormat format, const gfx::Size& size) override { scoped_refptr<GbmDevice> gbm(static_cast<GbmDevice*>(drm.get())); - return GbmBuffer::CreateBuffer(gbm, gfx::BufferFormat::BGRA_8888, size, + return GbmBuffer::CreateBuffer(gbm, format, size, gfx::BufferUsage::SCANOUT); } |