summaryrefslogtreecommitdiff
path: root/chromium/ui/ozone
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/ozone')
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc4
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc2
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/drm_thread.cc9
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/drm_window_unittest.cc2
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.cc1
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h1
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.cc5
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h1
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/scanout_buffer.h1
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/screen_manager.cc5
-rw-r--r--chromium/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc3
11 files changed, 24 insertions, 10 deletions
diff --git a/chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc b/chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
index d0a82568e4a..186f4cc7cb7 100644
--- a/chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
+++ b/chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc
@@ -32,8 +32,10 @@ scoped_refptr<ScanoutBuffer> GetBufferForPageFlipTest(
}
}
+ const std::vector<uint64_t>
+ modifiers; // TODO(dcastagna): use the right modifiers.
scoped_refptr<ScanoutBuffer> scanout_buffer =
- buffer_generator->Create(drm_device, format, size);
+ buffer_generator->Create(drm_device, format, modifiers, size);
if (scanout_buffer)
reusable_buffers->push_back(scanout_buffer);
diff --git a/chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc b/chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc
index 3b3642b8d88..31fc4af5cbf 100644
--- a/chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc
+++ b/chromium/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc
@@ -134,7 +134,7 @@ void DrmOverlayValidatorTest::AddPlane(const ui::OverlayCheck_Params& params) {
scoped_refptr<ui::DrmDevice> drm =
window_->GetController()->GetAllocationDrmDevice();
scoped_refptr<ui::ScanoutBuffer> scanout_buffer = buffer_generator_->Create(
- drm, ui::GetFourCCFormatFromBufferFormat(params.format),
+ drm, ui::GetFourCCFormatFromBufferFormat(params.format), {},
params.buffer_size);
ui::OverlayPlane plane(std::move(scanout_buffer), params.plane_z_order,
params.transform, params.display_rect,
diff --git a/chromium/ui/ozone/platform/drm/gpu/drm_thread.cc b/chromium/ui/ozone/platform/drm/gpu/drm_thread.cc
index 6e187761ea9..d53e4acf1be 100644
--- a/chromium/ui/ozone/platform/drm/gpu/drm_thread.cc
+++ b/chromium/ui/ozone/platform/drm/gpu/drm_thread.cc
@@ -41,10 +41,15 @@ class GbmBufferGenerator : public ScanoutBufferGenerator {
// ScanoutBufferGenerator:
scoped_refptr<ScanoutBuffer> Create(const scoped_refptr<DrmDevice>& drm,
uint32_t format,
+ const std::vector<uint64_t>& modifiers,
const gfx::Size& size) override {
scoped_refptr<GbmDevice> gbm(static_cast<GbmDevice*>(drm.get()));
- // TODO(dcastagna): Use GBM_BO_USE_MAP modifier once minigbm exposes it.
- return GbmBuffer::CreateBuffer(gbm, format, size, GBM_BO_USE_SCANOUT);
+ if (modifiers.size() > 0) {
+ return GbmBuffer::CreateBufferWithModifiers(
+ gbm, format, size, GBM_BO_USE_SCANOUT, modifiers);
+ } else {
+ return GbmBuffer::CreateBuffer(gbm, format, size, GBM_BO_USE_SCANOUT);
+ }
}
protected:
diff --git a/chromium/ui/ozone/platform/drm/gpu/drm_window_unittest.cc b/chromium/ui/ozone/platform/drm/gpu/drm_window_unittest.cc
index 40a207ec1c3..0fa311fbfe4 100644
--- a/chromium/ui/ozone/platform/drm/gpu/drm_window_unittest.cc
+++ b/chromium/ui/ozone/platform/drm/gpu/drm_window_unittest.cc
@@ -175,7 +175,7 @@ TEST_F(DrmWindowTest, CheckCallbackOnFailedSwap) {
ui::MockDumbBufferGenerator buffer_generator;
ui::DrmWindow* window = screen_manager_->GetWindow(kDefaultWidgetHandle);
ui::OverlayPlane plane(
- buffer_generator.Create(drm_, DRM_FORMAT_XRGB8888, window_size),
+ buffer_generator.Create(drm_, DRM_FORMAT_XRGB8888, {}, window_size),
base::kInvalidPlatformFile);
drm_->set_page_flip_expectation(false);
diff --git a/chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.cc b/chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.cc
index d6d0cf7efd1..0276dea0317 100644
--- a/chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.cc
+++ b/chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.cc
@@ -16,6 +16,7 @@ MockDumbBufferGenerator::~MockDumbBufferGenerator() {}
scoped_refptr<ScanoutBuffer> MockDumbBufferGenerator::Create(
const scoped_refptr<DrmDevice>& drm,
uint32_t format,
+ const std::vector<uint64_t>& modifiers,
const gfx::Size& size) {
scoped_refptr<DrmBuffer> buffer(new DrmBuffer(drm));
SkImageInfo info = SkImageInfo::MakeN32Premul(size.width(), size.height());
diff --git a/chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h b/chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h
index ecba7c761e9..f29f7e20ede 100644
--- a/chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h
+++ b/chromium/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h
@@ -19,6 +19,7 @@ class MockDumbBufferGenerator : public ScanoutBufferGenerator {
// ScanoutBufferGenerator:
scoped_refptr<ScanoutBuffer> Create(const scoped_refptr<DrmDevice>& drm,
uint32_t format,
+ const std::vector<uint64_t>& modifiers,
const gfx::Size& size) override;
private:
diff --git a/chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.cc b/chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.cc
index 08cd50acd63..c934a1db040 100644
--- a/chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.cc
+++ b/chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.cc
@@ -16,8 +16,11 @@ MockScanoutBufferGenerator::~MockScanoutBufferGenerator() {}
scoped_refptr<ScanoutBuffer> MockScanoutBufferGenerator::Create(
const scoped_refptr<DrmDevice>& drm,
uint32_t format,
+ const std::vector<uint64_t>& modifiers,
const gfx::Size& size) {
- return CreateWithModifier(drm, format, DRM_FORMAT_MOD_NONE, size);
+ return CreateWithModifier(
+ drm, format, modifiers.empty() ? DRM_FORMAT_MOD_NONE : modifiers.front(),
+ size);
}
scoped_refptr<ScanoutBuffer> MockScanoutBufferGenerator::CreateWithModifier(
diff --git a/chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h b/chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h
index 2cb3161abaf..c904501b58b 100644
--- a/chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h
+++ b/chromium/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h
@@ -19,6 +19,7 @@ class MockScanoutBufferGenerator : public ScanoutBufferGenerator {
// ScanoutBufferGenerator:
scoped_refptr<ScanoutBuffer> Create(const scoped_refptr<DrmDevice>& drm,
uint32_t format,
+ const std::vector<uint64_t>& modifiers,
const gfx::Size& size) override;
scoped_refptr<ScanoutBuffer> CreateWithModifier(
diff --git a/chromium/ui/ozone/platform/drm/gpu/scanout_buffer.h b/chromium/ui/ozone/platform/drm/gpu/scanout_buffer.h
index b6b588562df..3d4f2c37f4b 100644
--- a/chromium/ui/ozone/platform/drm/gpu/scanout_buffer.h
+++ b/chromium/ui/ozone/platform/drm/gpu/scanout_buffer.h
@@ -61,6 +61,7 @@ class ScanoutBufferGenerator {
virtual scoped_refptr<ScanoutBuffer> Create(
const scoped_refptr<DrmDevice>& drm,
uint32_t format,
+ const std::vector<uint64_t>& modifiers,
const gfx::Size& size) = 0;
};
diff --git a/chromium/ui/ozone/platform/drm/gpu/screen_manager.cc b/chromium/ui/ozone/platform/drm/gpu/screen_manager.cc
index e8e477733e4..68cfa2a9735 100644
--- a/chromium/ui/ozone/platform/drm/gpu/screen_manager.cc
+++ b/chromium/ui/ozone/platform/drm/gpu/screen_manager.cc
@@ -351,7 +351,7 @@ OverlayPlane ScreenManager::GetModesetBuffer(
gfx::BufferFormat format = display::DisplaySnapshot::PrimaryFormat();
uint32_t fourcc_format = ui::GetFourCCFormatForOpaqueFramebuffer(format);
-
+ const auto& modifiers = controller->GetFormatModifiers(fourcc_format);
if (window) {
const OverlayPlane* primary = window->GetLastModesetBuffer();
const DrmDevice* drm = controller->GetAllocationDrmDevice().get();
@@ -361,7 +361,6 @@ OverlayPlane ScreenManager::GetModesetBuffer(
// modifier either and we can reuse the buffer. Otherwise, check
// to see if the controller supports the buffers format
// modifier.
- const auto& modifiers = controller->GetFormatModifiers(fourcc_format);
if (modifiers.empty())
return *primary;
for (const uint64_t modifier : modifiers) {
@@ -373,7 +372,7 @@ OverlayPlane ScreenManager::GetModesetBuffer(
scoped_refptr<DrmDevice> drm = controller->GetAllocationDrmDevice();
scoped_refptr<ScanoutBuffer> buffer =
- buffer_generator_->Create(drm, fourcc_format, bounds.size());
+ buffer_generator_->Create(drm, fourcc_format, modifiers, bounds.size());
if (!buffer) {
LOG(ERROR) << "Failed to create scanout buffer";
return OverlayPlane(nullptr, 0, gfx::OVERLAY_TRANSFORM_INVALID, gfx::Rect(),
diff --git a/chromium/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc b/chromium/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc
index a50a0ac275a..24c7bdd0fec 100644
--- a/chromium/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc
+++ b/chromium/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc
@@ -498,8 +498,9 @@ TEST_F(ScreenManagerTest, EnableControllerWhenWindowHasBuffer) {
new ui::DrmWindow(1, device_manager_.get(), screen_manager_.get()));
window->Initialize(buffer_generator_.get());
window->SetBounds(GetPrimaryBounds());
+
scoped_refptr<ui::ScanoutBuffer> buffer = buffer_generator_->Create(
- drm_, DRM_FORMAT_XRGB8888, GetPrimaryBounds().size());
+ drm_, DRM_FORMAT_XRGB8888, {}, GetPrimaryBounds().size());
window->SchedulePageFlip(
std::vector<ui::OverlayPlane>(
1, ui::OverlayPlane(buffer, base::kInvalidPlatformFile)),