Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(864)

Unified Diff: ui/ozone/platform/dri/hardware_display_controller_unittest.cc

Issue 393233005: [Ozone-DRI] Convert HardwareDisplayController to use scanout buffers (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ui/ozone/platform/dri/hardware_display_controller.cc ('k') | ui/ozone/platform/dri/ozone_platform_dri.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/ozone/platform/dri/hardware_display_controller_unittest.cc
diff --git a/ui/ozone/platform/dri/hardware_display_controller_unittest.cc b/ui/ozone/platform/dri/hardware_display_controller_unittest.cc
index 0aa2fde22d205ecc34a4421cfa551d095762470e..7de72b06b8a87e64a497790e0bba2fa9dc0e9fe9 100644
--- a/ui/ozone/platform/dri/hardware_display_controller_unittest.cc
+++ b/ui/ozone/platform/dri/hardware_display_controller_unittest.cc
@@ -5,7 +5,6 @@
#include "testing/gtest/include/gtest/gtest.h"
#include "third_party/skia/include/core/SkCanvas.h"
#include "ui/ozone/platform/dri/dri_buffer.h"
-#include "ui/ozone/platform/dri/dri_surface.h"
#include "ui/ozone/platform/dri/dri_wrapper.h"
#include "ui/ozone/platform/dri/hardware_display_controller.h"
#include "ui/ozone/platform/dri/test/mock_dri_wrapper.h"
@@ -20,6 +19,23 @@ const drmModeModeInfo kDefaultMode =
const gfx::Size kDefaultModeSize(kDefaultMode.hdisplay, kDefaultMode.vdisplay);
const gfx::SizeF kDefaultModeSizeF(1.0, 1.0);
+class MockScanoutBuffer : public ui::ScanoutBuffer {
+ public:
+ MockScanoutBuffer(const gfx::Size& size) : size_(size) {}
+
+ // ScanoutBuffer:
+ virtual uint32_t GetFramebufferId() const OVERRIDE {return 0; }
+ virtual uint32_t GetHandle() const OVERRIDE { return 0; }
+ virtual gfx::Size GetSize() const OVERRIDE { return size_; }
+
+ private:
+ virtual ~MockScanoutBuffer() {}
+
+ gfx::Size size_;
+
+ DISALLOW_COPY_AND_ASSIGN(MockScanoutBuffer);
+};
+
} // namespace
class HardwareDisplayControllerTest : public testing::Test {
@@ -47,122 +63,97 @@ void HardwareDisplayControllerTest::TearDown() {
drm_.reset();
}
-TEST_F(HardwareDisplayControllerTest, CheckStateAfterSurfaceIsBound) {
- scoped_ptr<ui::ScanoutSurface> surface(
- new ui::DriSurface(drm_.get(), kDefaultModeSize));
+TEST_F(HardwareDisplayControllerTest, CheckModesettingResult) {
+ ui::OverlayPlane plane(scoped_refptr<ui::ScanoutBuffer>(
+ new MockScanoutBuffer(kDefaultModeSize)));
- EXPECT_TRUE(surface->Initialize());
- EXPECT_TRUE(controller_->BindSurfaceToController(surface.Pass(),
- kDefaultMode));
- EXPECT_TRUE(controller_->surface() != NULL);
+ EXPECT_TRUE(controller_->Modeset(plane, kDefaultMode));
+ EXPECT_FALSE(plane.buffer->HasOneRef());
}
TEST_F(HardwareDisplayControllerTest, CheckStateAfterPageFlip) {
- scoped_ptr<ui::ScanoutSurface> surface(
- new ui::DriSurface(drm_.get(), kDefaultModeSize));
+ ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
+ new MockScanoutBuffer(kDefaultModeSize)));
+
+ EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
- EXPECT_TRUE(surface->Initialize());
- EXPECT_TRUE(controller_->BindSurfaceToController(surface.Pass(),
- kDefaultMode));
+ ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>(
+ new MockScanoutBuffer(kDefaultModeSize)));
EXPECT_TRUE(controller_->SchedulePageFlip(
- std::vector<ui::OzoneOverlayPlane>(), NULL));
- EXPECT_TRUE(controller_->surface() != NULL);
+ std::vector<ui::OverlayPlane>(1, plane2)));
+ controller_->WaitForPageFlipEvent();
+ EXPECT_TRUE(plane1.buffer->HasOneRef());
+ EXPECT_FALSE(plane2.buffer->HasOneRef());
+
+ EXPECT_EQ(1, drm_->get_page_flip_call_count());
+ EXPECT_EQ(0, drm_->get_overlay_flip_call_count());
}
TEST_F(HardwareDisplayControllerTest, CheckStateIfModesetFails) {
drm_->set_set_crtc_expectation(false);
- scoped_ptr<ui::ScanoutSurface> surface(
- new ui::DriSurface(drm_.get(), kDefaultModeSize));
+ ui::OverlayPlane plane(scoped_refptr<ui::ScanoutBuffer>(new MockScanoutBuffer(
+ kDefaultModeSize)));
- EXPECT_TRUE(surface->Initialize());
- EXPECT_FALSE(controller_->BindSurfaceToController(surface.Pass(),
- kDefaultMode));
- EXPECT_EQ(NULL, controller_->surface());
+ EXPECT_FALSE(controller_->Modeset(plane, kDefaultMode));
+ EXPECT_TRUE(plane.buffer->HasOneRef());
}
TEST_F(HardwareDisplayControllerTest, CheckStateIfPageFlipFails) {
drm_->set_page_flip_expectation(false);
- scoped_ptr<ui::ScanoutSurface> surface(
- new ui::DriSurface(drm_.get(), kDefaultModeSize));
+ ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
+ new MockScanoutBuffer(kDefaultModeSize)));
+
+ EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
- EXPECT_TRUE(surface->Initialize());
- EXPECT_TRUE(controller_->BindSurfaceToController(surface.Pass(),
- kDefaultMode));
+ ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>(
+ new MockScanoutBuffer(kDefaultModeSize)));
EXPECT_FALSE(controller_->SchedulePageFlip(
- std::vector<ui::OzoneOverlayPlane>(), NULL));
+ std::vector<ui::OverlayPlane>(1, plane2)));
+ EXPECT_FALSE(plane1.buffer->HasOneRef());
+ EXPECT_TRUE(plane2.buffer->HasOneRef());
}
TEST_F(HardwareDisplayControllerTest, VerifyNoDRMCallsWhenDisabled) {
- scoped_ptr<ui::ScanoutSurface> surface(
- new ui::DriSurface(drm_.get(), kDefaultModeSize));
+ ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
+ new MockScanoutBuffer(kDefaultModeSize)));
- EXPECT_TRUE(surface->Initialize());
- EXPECT_TRUE(controller_->BindSurfaceToController(surface.Pass(),
- kDefaultMode));
+ EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
controller_->Disable();
+ ui::OverlayPlane plane2(scoped_refptr<ui::ScanoutBuffer>(
+ new MockScanoutBuffer(kDefaultModeSize)));
EXPECT_TRUE(controller_->SchedulePageFlip(
- std::vector<ui::OzoneOverlayPlane>(), NULL));
+ std::vector<ui::OverlayPlane>(1, plane2)));
+ controller_->WaitForPageFlipEvent();
EXPECT_EQ(0, drm_->get_page_flip_call_count());
- surface.reset(new ui::DriSurface(drm_.get(), kDefaultModeSize));
-
- EXPECT_TRUE(surface->Initialize());
- EXPECT_TRUE(controller_->BindSurfaceToController(surface.Pass(),
- kDefaultMode));
+ EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
EXPECT_TRUE(controller_->SchedulePageFlip(
- std::vector<ui::OzoneOverlayPlane>(), NULL));
+ std::vector<ui::OverlayPlane>(1, plane2)));
+ controller_->WaitForPageFlipEvent();
EXPECT_EQ(1, drm_->get_page_flip_call_count());
}
-TEST_F(HardwareDisplayControllerTest, CheckOverlayMainSurfaceReplacement) {
- scoped_ptr<ui::ScanoutSurface> surface(
- new ui::DriSurface(drm_.get(), kDefaultModeSize));
- scoped_ptr<ui::ScanoutSurface> overlay(
- new ui::DriSurface(drm_.get(), kDefaultModeSize));
-
- EXPECT_TRUE(surface->Initialize());
- EXPECT_TRUE(
- controller_->BindSurfaceToController(surface.Pass(), kDefaultMode));
- EXPECT_TRUE(overlay->Initialize());
-
- std::vector<ui::OzoneOverlayPlane> overlays;
- std::vector<scoped_refptr<ui::NativePixmap> > overlay_refs;
-
- overlays.push_back(ui::OzoneOverlayPlane(overlay.get(),
- 0,
- gfx::OVERLAY_TRANSFORM_NONE,
- gfx::Rect(kDefaultModeSize),
- gfx::RectF(kDefaultModeSizeF)));
-
- EXPECT_TRUE(controller_->SchedulePageFlip(overlays, &overlay_refs));
- EXPECT_EQ(1, drm_->get_page_flip_call_count());
- EXPECT_EQ(0, drm_->get_overlay_flip_call_count());
-}
-
TEST_F(HardwareDisplayControllerTest, CheckOverlayPresent) {
- scoped_ptr<ui::ScanoutSurface> surface(
- new ui::DriSurface(drm_.get(), kDefaultModeSize));
- scoped_ptr<ui::ScanoutSurface> overlay(
- new ui::DriSurface(drm_.get(), kDefaultModeSize));
-
- EXPECT_TRUE(surface->Initialize());
- EXPECT_TRUE(
- controller_->BindSurfaceToController(surface.Pass(), kDefaultMode));
- EXPECT_TRUE(overlay->Initialize());
-
- std::vector<ui::OzoneOverlayPlane> overlays;
- std::vector<scoped_refptr<ui::NativePixmap> > overlay_refs;
-
- overlays.push_back(ui::OzoneOverlayPlane(overlay.get(),
- 1,
- gfx::OVERLAY_TRANSFORM_NONE,
- gfx::Rect(kDefaultModeSize),
- gfx::RectF(kDefaultModeSizeF)));
- overlays.back().overlay_plane = 1; // Force association with a plane.
-
- EXPECT_TRUE(controller_->SchedulePageFlip(overlays, &overlay_refs));
+ ui::OverlayPlane plane1(scoped_refptr<ui::ScanoutBuffer>(
+ new MockScanoutBuffer(kDefaultModeSize)));
+ ui::OverlayPlane plane2(
+ scoped_refptr<ui::ScanoutBuffer>(new MockScanoutBuffer(kDefaultModeSize)),
+ 1,
+ gfx::OVERLAY_TRANSFORM_NONE,
+ gfx::Rect(kDefaultModeSize),
+ gfx::RectF(kDefaultModeSizeF));
+ plane2.overlay_plane = 1; // Force association with a plane.
+
+ EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
+
+ std::vector<ui::OverlayPlane> overlays;
+ overlays.push_back(plane1);
+ overlays.push_back(plane2);
+
+ EXPECT_TRUE(controller_->SchedulePageFlip(overlays));
+ controller_->WaitForPageFlipEvent();
EXPECT_EQ(1, drm_->get_page_flip_call_count());
EXPECT_EQ(1, drm_->get_overlay_flip_call_count());
}
« no previous file with comments | « ui/ozone/platform/dri/hardware_display_controller.cc ('k') | ui/ozone/platform/dri/ozone_platform_dri.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698