Commit e03a1164 authored by Michael Spang's avatar Michael Spang Committed by Commit Bot

ozone: drm: Inline MockDrmFramebuffer into MockDrmFramebufferGenerator

Prepare for removing mock framebuffers by moving the class into
MockDrmFramebufferGenerator. We don't need a mock framebuffer type.

Bug: 869206

Change-Id: I8a909d385f455fde0776e3cf5ad8d24791753e23
Reviewed-on: https://chromium-review.googlesource.com/1155913
Commit-Queue: Michael Spang <spang@chromium.org>
Reviewed-by: default avatarDaniel Nicoara <dnicoara@chromium.org>
Cr-Commit-Position: refs/heads/master@{#579586}
parent 6da188f9
......@@ -186,8 +186,6 @@ source_set("gbm_unittests") {
"gpu/mock_drm_device.h",
"gpu/mock_dumb_buffer_generator.cc",
"gpu/mock_dumb_buffer_generator.h",
"gpu/mock_drm_framebuffer.cc",
"gpu/mock_drm_framebuffer.h",
"gpu/mock_drm_framebuffer_generator.cc",
"gpu/mock_drm_framebuffer_generator.h",
"gpu/proxy_helpers_unittest.cc",
......
......@@ -22,7 +22,6 @@
#include "ui/ozone/platform/drm/gpu/drm_window.h"
#include "ui/ozone/platform/drm/gpu/hardware_display_controller.h"
#include "ui/ozone/platform/drm/gpu/mock_drm_device.h"
#include "ui/ozone/platform/drm/gpu/mock_drm_framebuffer.h"
#include "ui/ozone/platform/drm/gpu/mock_drm_framebuffer_generator.h"
#include "ui/ozone/platform/drm/gpu/screen_manager.h"
......@@ -62,6 +61,11 @@ class DrmOverlayValidatorTest : public testing::Test {
void AddPlane(const ui::OverlayCheck_Params& params);
scoped_refptr<ui::DrmFramebuffer> CreateBuffer() {
return buffer_generator_->CreateWithModifier(
drm_, DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_NONE, primary_rect_.size());
}
protected:
struct PlaneState {
std::vector<uint32_t> formats;
......@@ -360,10 +364,8 @@ TEST_F(DrmOverlayValidatorTest,
controller->AddCrtc(
std::unique_ptr<ui::CrtcController>(new ui::CrtcController(
drm_.get(), kCrtcIdBase + 1, kConnectorIdBase + 1)));
ui::DrmOverlayPlane plane1(
scoped_refptr<ui::DrmFramebuffer>(
new ui::MockDrmFramebuffer(primary_rect_.size())),
nullptr);
ui::DrmOverlayPlane plane1(CreateBuffer(), nullptr);
EXPECT_TRUE(controller->Modeset(plane1, kDefaultMode));
gfx::RectF crop_rect = gfx::RectF(0, 0, 0.5, 0.5);
......@@ -429,10 +431,7 @@ TEST_F(DrmOverlayValidatorTest, OptimalFormatXRGB_MirroredControllers) {
controller->AddCrtc(
std::unique_ptr<ui::CrtcController>(new ui::CrtcController(
drm_.get(), kCrtcIdBase + 1, kConnectorIdBase + 1)));
ui::DrmOverlayPlane plane1(
scoped_refptr<ui::DrmFramebuffer>(
new ui::MockDrmFramebuffer(primary_rect_.size())),
nullptr);
ui::DrmOverlayPlane plane1(CreateBuffer(), nullptr);
EXPECT_TRUE(controller->Modeset(plane1, kDefaultMode));
overlay_params_.back().buffer_size = overlay_rect_.size();
......
......@@ -2,6 +2,7 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include <drm_fourcc.h>
#include <stdint.h>
#include <unistd.h>
......@@ -22,7 +23,7 @@
#include "ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.h"
#include "ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.h"
#include "ui/ozone/platform/drm/gpu/mock_drm_device.h"
#include "ui/ozone/platform/drm/gpu/mock_drm_framebuffer.h"
#include "ui/ozone/platform/drm/gpu/mock_drm_framebuffer_generator.h"
namespace {
......@@ -61,9 +62,22 @@ class HardwareDisplayPlaneManagerTest
void SetUp() override;
scoped_refptr<ui::DrmFramebuffer> CreateBuffer(const gfx::Size& size) {
return buffer_generator_->CreateWithModifier(fake_drm_, DRM_FORMAT_XRGB8888,
DRM_FORMAT_MOD_NONE, size);
}
scoped_refptr<ui::DrmFramebuffer> CreateBufferWithFormat(
const gfx::Size& size,
uint32_t format) {
return buffer_generator_->CreateWithModifier(fake_drm_, format,
DRM_FORMAT_MOD_NONE, size);
}
protected:
ui::HardwareDisplayPlaneList state_;
scoped_refptr<ui::DrmFramebuffer> fake_buffer_;
std::unique_ptr<ui::MockDrmFramebufferGenerator> buffer_generator_;
scoped_refptr<ui::MockDrmDevice> fake_drm_;
std::vector<ui::MockDrmDevice::CrtcProperties> crtc_properties_;
......@@ -78,11 +92,13 @@ class HardwareDisplayPlaneManagerTest
void HardwareDisplayPlaneManagerTest::SetUp() {
use_atomic_ = GetParam();
fake_buffer_ = new ui::MockDrmFramebuffer(kDefaultBufferSize);
buffer_generator_.reset(new ui::MockDrmFramebufferGenerator());
fake_drm_ = new ui::MockDrmDevice;
fake_drm_->SetPropertyBlob(ui::MockDrmDevice::AllocateInFormatsBlob(
kInFormatsBlobPropId, {DRM_FORMAT_XRGB8888}, {}));
fake_buffer_ = CreateBuffer(kDefaultBufferSize);
}
void HardwareDisplayPlaneManagerTest::InitializeDrmState(
......@@ -154,8 +170,8 @@ void HardwareDisplayPlaneManagerTest::PerformPageFlip(
ui::HardwareDisplayPlaneList* state) {
ui::DrmOverlayPlaneList assigns;
ui::CrtcController crtc(fake_drm_, crtc_properties_[crtc_idx].id, 0);
scoped_refptr<ui::MockDrmFramebuffer> xrgb_buffer =
new ui::MockDrmFramebuffer(kDefaultBufferSize);
scoped_refptr<ui::DrmFramebuffer> xrgb_buffer =
CreateBuffer(kDefaultBufferSize);
assigns.push_back(ui::DrmOverlayPlane(xrgb_buffer, nullptr));
fake_drm_->plane_manager()->BeginFrame(state);
ASSERT_TRUE(fake_drm_->plane_manager()->AssignOverlayPlanes(
......@@ -282,8 +298,8 @@ TEST_P(HardwareDisplayPlaneManagerLegacyTest, MultiplePlanesAndCrtcs) {
TEST_P(HardwareDisplayPlaneManagerLegacyTest, CheckFramebufferFormatMatch) {
ui::DrmOverlayPlaneList assigns;
scoped_refptr<ui::MockDrmFramebuffer> buffer =
new ui::MockDrmFramebuffer(kDefaultBufferSize, kDummyFormat);
scoped_refptr<ui::DrmFramebuffer> buffer =
CreateBufferWithFormat(kDefaultBufferSize, kDummyFormat);
assigns.push_back(ui::DrmOverlayPlane(buffer, nullptr));
InitializeDrmState(/*crtc_count=*/2, /*planes_per_crtc=*/1);
......@@ -296,8 +312,8 @@ TEST_P(HardwareDisplayPlaneManagerLegacyTest, CheckFramebufferFormatMatch) {
EXPECT_FALSE(fake_drm_->plane_manager()->AssignOverlayPlanes(
&state_, assigns, crtc_properties_[0].id, nullptr));
assigns.clear();
scoped_refptr<ui::MockDrmFramebuffer> xrgb_buffer =
new ui::MockDrmFramebuffer(kDefaultBufferSize);
scoped_refptr<ui::DrmFramebuffer> xrgb_buffer =
CreateBuffer(kDefaultBufferSize);
assigns.push_back(ui::DrmOverlayPlane(xrgb_buffer, nullptr));
fake_drm_->plane_manager()->BeginFrame(&state_);
EXPECT_TRUE(fake_drm_->plane_manager()->AssignOverlayPlanes(
......@@ -339,8 +355,7 @@ TEST_P(HardwareDisplayPlaneManagerAtomicTest, MultiplePlanesAndCrtcs) {
TEST_P(HardwareDisplayPlaneManagerAtomicTest, SharedPlanes) {
ui::DrmOverlayPlaneList assigns;
scoped_refptr<ui::MockDrmFramebuffer> buffer =
new ui::MockDrmFramebuffer(gfx::Size(1, 1));
scoped_refptr<ui::DrmFramebuffer> buffer = CreateBuffer(gfx::Size(1, 1));
assigns.push_back(ui::DrmOverlayPlane(fake_buffer_, nullptr));
assigns.push_back(ui::DrmOverlayPlane(buffer, nullptr));
......@@ -371,10 +386,10 @@ TEST_P(HardwareDisplayPlaneManagerAtomicTest, UnusedPlanesAreReleased) {
property_names_, use_atomic_);
ui::DrmOverlayPlaneList assigns;
scoped_refptr<ui::MockDrmFramebuffer> primary_buffer =
new ui::MockDrmFramebuffer(kDefaultBufferSize);
scoped_refptr<ui::MockDrmFramebuffer> overlay_buffer =
new ui::MockDrmFramebuffer(gfx::Size(1, 1));
scoped_refptr<ui::DrmFramebuffer> primary_buffer =
CreateBuffer(kDefaultBufferSize);
scoped_refptr<ui::DrmFramebuffer> overlay_buffer =
CreateBuffer(gfx::Size(1, 1));
assigns.push_back(ui::DrmOverlayPlane(primary_buffer, nullptr));
assigns.push_back(ui::DrmOverlayPlane(overlay_buffer, nullptr));
ui::HardwareDisplayPlaneList hdpl;
......@@ -664,7 +679,7 @@ TEST_P(HardwareDisplayPlaneManagerTest, SetGammaCorrection_Success) {
TEST_P(HardwareDisplayPlaneManagerAtomicTest,
CommitReturnsNullOutFenceIfOutFencePtrNotSupported) {
scoped_refptr<ui::DrmFramebuffer> fake_buffer2 =
new ui::MockDrmFramebuffer(kDefaultBufferSize);
CreateBuffer(kDefaultBufferSize);
InitializeDrmState(/*crtc_count=*/2, /*planes_per_crtc=*/1);
fake_drm_->InitializeState(crtc_properties_, plane_properties_,
......@@ -765,42 +780,56 @@ void FakeFenceFD::Signal() const {
class HardwareDisplayPlaneManagerPlanesReadyTest : public testing::Test {
protected:
HardwareDisplayPlaneManagerPlanesReadyTest()
: planes_without_fences_(CreatePlanesWithoutFences()),
planes_with_fences_(CreatePlanesWithoutFences()) {}
HardwareDisplayPlaneManagerPlanesReadyTest() {}
void SetUp() override {
fake_drm_ = new ui::MockDrmDevice;
buffer_generator_.reset(new ui::MockDrmFramebufferGenerator());
drm_framebuffer_ = CreateBuffer(kDefaultBufferSize);
planes_without_fences_ = CreatePlanesWithoutFences();
planes_with_fences_ = CreatePlanesWithFences();
}
void UseLegacyManager();
void UseAtomicManager();
void RequestPlanesReady(ui::DrmOverlayPlaneList planes);
scoped_refptr<ui::DrmFramebuffer> CreateBuffer(const gfx::Size& size) {
return buffer_generator_->CreateWithModifier(fake_drm_, DRM_FORMAT_XRGB8888,
DRM_FORMAT_MOD_NONE, size);
}
ui::DrmOverlayPlaneList CreatePlanesWithoutFences() {
ui::DrmOverlayPlaneList planes;
planes.push_back(ui::DrmOverlayPlane(drm_framebuffer, nullptr));
planes.push_back(ui::DrmOverlayPlane(drm_framebuffer, nullptr));
planes.push_back(
ui::DrmOverlayPlane(CreateBuffer(kDefaultBufferSize), nullptr));
planes.push_back(
ui::DrmOverlayPlane(CreateBuffer(kDefaultBufferSize), nullptr));
return planes;
}
ui::DrmOverlayPlaneList CreatePlanesWithFences() {
ui::DrmOverlayPlaneList planes;
planes.push_back(
ui::DrmOverlayPlane(drm_framebuffer, fake_fence_fd1.GetGpuFence()));
planes.push_back(
ui::DrmOverlayPlane(drm_framebuffer, fake_fence_fd2.GetGpuFence()));
planes.push_back(ui::DrmOverlayPlane(CreateBuffer(kDefaultBufferSize),
fake_fence_fd1_.GetGpuFence()));
planes.push_back(ui::DrmOverlayPlane(CreateBuffer(kDefaultBufferSize),
fake_fence_fd2_.GetGpuFence()));
return planes;
}
scoped_refptr<ui::MockDrmDevice> fake_drm_;
std::unique_ptr<ui::MockDrmFramebufferGenerator> buffer_generator_;
std::unique_ptr<ui::HardwareDisplayPlaneManager> plane_manager_;
bool callback_called = false;
base::test::ScopedTaskEnvironment task_env_{
base::test::ScopedTaskEnvironment::MainThreadType::DEFAULT,
base::test::ScopedTaskEnvironment::ExecutionMode::QUEUED};
const scoped_refptr<ui::DrmFramebuffer> drm_framebuffer{
new ui::MockDrmFramebuffer(kDefaultBufferSize)};
const FakeFenceFD fake_fence_fd1;
const FakeFenceFD fake_fence_fd2;
scoped_refptr<ui::DrmFramebuffer> drm_framebuffer_;
const FakeFenceFD fake_fence_fd1_;
const FakeFenceFD fake_fence_fd2_;
const ui::DrmOverlayPlaneList planes_without_fences_;
const ui::DrmOverlayPlaneList planes_with_fences_;
ui::DrmOverlayPlaneList planes_without_fences_;
ui::DrmOverlayPlaneList planes_with_fences_;
private:
DISALLOW_COPY_AND_ASSIGN(HardwareDisplayPlaneManagerPlanesReadyTest);
......@@ -840,8 +869,8 @@ TEST_F(HardwareDisplayPlaneManagerPlanesReadyTest,
EXPECT_FALSE(callback_called);
fake_fence_fd1.Signal();
fake_fence_fd2.Signal();
fake_fence_fd1_.Signal();
fake_fence_fd2_.Signal();
EXPECT_FALSE(callback_called);
......@@ -898,10 +927,14 @@ class HardwareDisplayPlaneAtomicMock : public ui::HardwareDisplayPlaneAtomic {
TEST(HardwareDisplayPlaneManagerAtomic, EnableBlend) {
auto plane_manager =
std::make_unique<ui::HardwareDisplayPlaneManagerAtomic>();
auto drm_device = base::MakeRefCounted<ui::MockDrmDevice>();
auto buffer_generator = std::make_unique<ui::MockDrmFramebufferGenerator>();
ui::HardwareDisplayPlaneList plane_list;
HardwareDisplayPlaneAtomicMock hw_plane;
scoped_refptr<ui::DrmFramebuffer> buffer =
new ui::MockDrmFramebuffer(kDefaultBufferSize);
buffer_generator->CreateWithModifier(
drm_device.get(), DRM_FORMAT_XRGB8888, DRM_FORMAT_MOD_NONE,
kDefaultBufferSize);
ui::DrmOverlayPlane overlay(buffer, nullptr);
overlay.enable_blend = true;
plane_manager->SetPlaneData(&plane_list, &hw_plane, overlay, 1, gfx::Rect(),
......
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "ui/ozone/platform/drm/gpu/mock_drm_framebuffer.h"
#include "ui/ozone/platform/drm/gpu/mock_drm_device.h"
namespace ui {
namespace {
uint32_t g_current_framebuffer_id = 1;
} // namespace
MockDrmFramebuffer::MockDrmFramebuffer(const gfx::Size& size,
uint32_t format,
uint64_t modifier,
const scoped_refptr<DrmDevice>& drm)
: size_(size),
format_(format),
modifier_(modifier),
id_(g_current_framebuffer_id++),
opaque_id_(g_current_framebuffer_id++),
drm_(drm) {}
MockDrmFramebuffer::~MockDrmFramebuffer() {}
uint32_t MockDrmFramebuffer::GetFramebufferId() const {
return id_;
}
uint32_t MockDrmFramebuffer::GetOpaqueFramebufferId() const {
return opaque_id_;
}
gfx::Size MockDrmFramebuffer::GetSize() const {
return size_;
}
uint32_t MockDrmFramebuffer::GetFramebufferPixelFormat() const {
return format_;
}
uint32_t MockDrmFramebuffer::GetOpaqueFramebufferPixelFormat() const {
return format_;
}
uint64_t MockDrmFramebuffer::GetFormatModifier() const {
return modifier_;
}
const DrmDevice* MockDrmFramebuffer::GetDrmDevice() const {
return drm_.get();
}
} // namespace ui
// Copyright 2015 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#ifndef UI_OZONE_PLATFORM_DRM_GPU_MOCK_SCANOUT_BUFFER_H_
#define UI_OZONE_PLATFORM_DRM_GPU_MOCK_SCANOUT_BUFFER_H_
#include <drm_fourcc.h>
#include <stdint.h>
#include "base/macros.h"
#include "ui/ozone/platform/drm/gpu/drm_framebuffer.h"
namespace ui {
class DrmDevice;
class MockDrmFramebuffer : public DrmFramebuffer {
public:
MockDrmFramebuffer(const gfx::Size& size,
uint32_t format = DRM_FORMAT_XRGB8888,
uint64_t modifier = DRM_FORMAT_MOD_NONE,
const scoped_refptr<DrmDevice>& drm = nullptr);
// DrmFramebuffer:
uint32_t GetFramebufferId() const override;
uint32_t GetOpaqueFramebufferId() const override;
gfx::Size GetSize() const override;
uint32_t GetFramebufferPixelFormat() const override;
uint32_t GetOpaqueFramebufferPixelFormat() const override;
uint64_t GetFormatModifier() const override;
const DrmDevice* GetDrmDevice() const override;
private:
~MockDrmFramebuffer() override;
gfx::Size size_;
uint32_t format_;
uint64_t modifier_;
uint32_t id_;
uint32_t opaque_id_;
scoped_refptr<DrmDevice> drm_;
DISALLOW_COPY_AND_ASSIGN(MockDrmFramebuffer);
};
} // namespace ui
#endif // UI_OZONE_PLATFORM_DRM_GPU_MOCK_SCANOUT_BUFFER_H_
......@@ -4,11 +4,54 @@
#include "ui/ozone/platform/drm/gpu/mock_drm_framebuffer_generator.h"
#include <drm_fourcc.h>
#include "ui/ozone/platform/drm/common/drm_util.h"
#include "ui/ozone/platform/drm/gpu/mock_drm_framebuffer.h"
#include "ui/ozone/platform/drm/gpu/drm_device.h"
namespace ui {
namespace {
uint32_t g_current_framebuffer_id = 1;
class MockDrmFramebuffer : public DrmFramebuffer {
public:
MockDrmFramebuffer(const gfx::Size& size,
uint32_t format,
uint64_t modifier,
const scoped_refptr<DrmDevice>& drm)
: size_(size),
format_(format),
modifier_(modifier),
id_(g_current_framebuffer_id++),
opaque_id_(g_current_framebuffer_id++),
drm_(drm) {}
// DrmFramebuffer:
uint32_t GetFramebufferId() const override { return id_; }
uint32_t GetOpaqueFramebufferId() const override { return opaque_id_; }
gfx::Size GetSize() const override { return size_; }
uint32_t GetFramebufferPixelFormat() const override { return format_; }
uint32_t GetOpaqueFramebufferPixelFormat() const override { return format_; }
uint64_t GetFormatModifier() const override { return modifier_; }
const DrmDevice* GetDrmDevice() const override { return drm_.get(); }
private:
~MockDrmFramebuffer() override {}
gfx::Size size_;
uint32_t format_;
uint64_t modifier_;
uint32_t id_;
uint32_t opaque_id_;
scoped_refptr<DrmDevice> drm_;
DISALLOW_COPY_AND_ASSIGN(MockDrmFramebuffer);
};
} // namespace
MockDrmFramebufferGenerator::MockDrmFramebufferGenerator() {}
MockDrmFramebufferGenerator::~MockDrmFramebufferGenerator() {}
......@@ -31,7 +74,7 @@ scoped_refptr<DrmFramebuffer> MockDrmFramebufferGenerator::CreateWithModifier(
if (allocation_failure_)
return nullptr;
scoped_refptr<MockDrmFramebuffer> buffer(
scoped_refptr<DrmFramebuffer> buffer(
new MockDrmFramebuffer(size, format, modifier, drm));
return buffer;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment