Commit 5e4ce1ef authored by Mark Yacoub's avatar Mark Yacoub Committed by Commit Bot

Ozone: Use connectors props in ozone tests

BUG=987274
TEST=DrmOverlayValidatorTest, HardwareDisplayControllerTest,
HardwareDisplayManagerTest

Change-Id: I693464b560384bf42cc9bed9fbe2e68cea5474ca
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2036641
Commit-Queue: Mark Yacoub <markyacoub@google.com>
Reviewed-by: default avatarDaniel Nicoara <dnicoara@chromium.org>
Cr-Commit-Position: refs/heads/master@{#738201}
parent 846da990
...@@ -40,8 +40,8 @@ constexpr uint32_t kConnectorIdBase = 100; ...@@ -40,8 +40,8 @@ constexpr uint32_t kConnectorIdBase = 100;
constexpr uint32_t kPlaneIdBase = 200; constexpr uint32_t kPlaneIdBase = 200;
constexpr uint32_t kInFormatsBlobPropIdBase = 400; constexpr uint32_t kInFormatsBlobPropIdBase = 400;
constexpr uint32_t kTypePropId = 300; constexpr uint32_t kTypePropId = 3010;
constexpr uint32_t kInFormatsPropId = 301; constexpr uint32_t kInFormatsPropId = 3011;
} // namespace } // namespace
...@@ -166,19 +166,36 @@ void DrmOverlayValidatorTest::InitializeDrmState( ...@@ -166,19 +166,36 @@ void DrmOverlayValidatorTest::InitializeDrmState(
const std::vector<CrtcState>& crtc_states) { const std::vector<CrtcState>& crtc_states) {
std::vector<ui::MockDrmDevice::CrtcProperties> crtc_properties( std::vector<ui::MockDrmDevice::CrtcProperties> crtc_properties(
crtc_states.size()); crtc_states.size());
std::map<uint32_t, std::string> crtc_property_names = {
{1000, "ACTIVE"},
{1001, "MODE_ID"},
};
std::vector<ui::MockDrmDevice::ConnectorProperties> connector_properties(2);
std::map<uint32_t, std::string> connector_property_names = {
{2000, "CRTC_ID"},
};
for (size_t i = 0; i < connector_properties.size(); ++i) {
connector_properties[i].id = kConnectorIdBase + i;
for (const auto& pair : connector_property_names) {
connector_properties[i].properties.push_back(
{/* .id = */ pair.first, /* .value = */ 0});
}
}
std::vector<ui::MockDrmDevice::PlaneProperties> plane_properties; std::vector<ui::MockDrmDevice::PlaneProperties> plane_properties;
std::map<uint32_t, std::string> property_names = { std::map<uint32_t, std::string> plane_property_names = {
// Add all required properties. // Add all required properties.
{1000, "CRTC_ID"}, {3000, "CRTC_ID"},
{1001, "CRTC_X"}, {3001, "CRTC_X"},
{1002, "CRTC_Y"}, {3002, "CRTC_Y"},
{1003, "CRTC_W"}, {3003, "CRTC_W"},
{1004, "CRTC_H"}, {3004, "CRTC_H"},
{1005, "FB_ID"}, {3005, "FB_ID"},
{1006, "SRC_X"}, {3006, "SRC_X"},
{1007, "SRC_Y"}, {3007, "SRC_Y"},
{1008, "SRC_W"}, {3008, "SRC_W"},
{1009, "SRC_H"}, {3009, "SRC_H"},
// Defines some optional properties we use for convenience. // Defines some optional properties we use for convenience.
{kTypePropId, "type"}, {kTypePropId, "type"},
{kInFormatsPropId, "IN_FORMATS"}, {kInFormatsPropId, "IN_FORMATS"},
...@@ -189,6 +206,10 @@ void DrmOverlayValidatorTest::InitializeDrmState( ...@@ -189,6 +206,10 @@ void DrmOverlayValidatorTest::InitializeDrmState(
for (size_t crtc_idx = 0; crtc_idx < crtc_states.size(); ++crtc_idx) { for (size_t crtc_idx = 0; crtc_idx < crtc_states.size(); ++crtc_idx) {
crtc_properties[crtc_idx].id = kCrtcIdBase + crtc_idx; crtc_properties[crtc_idx].id = kCrtcIdBase + crtc_idx;
for (const auto& pair : crtc_property_names) {
crtc_properties[crtc_idx].properties.push_back(
{/* .id = */ pair.first, /* .value = */ 0});
}
std::vector<ui::MockDrmDevice::PlaneProperties> crtc_plane_properties( std::vector<ui::MockDrmDevice::PlaneProperties> crtc_plane_properties(
crtc_states[crtc_idx].planes.size()); crtc_states[crtc_idx].planes.size());
...@@ -197,7 +218,7 @@ void DrmOverlayValidatorTest::InitializeDrmState( ...@@ -197,7 +218,7 @@ void DrmOverlayValidatorTest::InitializeDrmState(
crtc_plane_properties[plane_idx].id = plane_id++; crtc_plane_properties[plane_idx].id = plane_id++;
crtc_plane_properties[plane_idx].crtc_mask = 1 << crtc_idx; crtc_plane_properties[plane_idx].crtc_mask = 1 << crtc_idx;
for (const auto& pair : property_names) { for (const auto& pair : plane_property_names) {
uint64_t value = 0; uint64_t value = 0;
if (pair.first == kTypePropId) { if (pair.first == kTypePropId) {
value = value =
...@@ -219,9 +240,12 @@ void DrmOverlayValidatorTest::InitializeDrmState( ...@@ -219,9 +240,12 @@ void DrmOverlayValidatorTest::InitializeDrmState(
crtc_plane_properties.end()); crtc_plane_properties.end());
} }
std::vector<ui::MockDrmDevice::ConnectorProperties> connector_properties(1); std::map<uint32_t, std::string> property_names;
connector_properties[0].id = kConnectorIdBase; property_names.insert(crtc_property_names.begin(), crtc_property_names.end());
property_names.insert(connector_property_names.begin(),
connector_property_names.end());
property_names.insert(plane_property_names.begin(),
plane_property_names.end());
drm_->InitializeState(crtc_properties, connector_properties, plane_properties, drm_->InitializeState(crtc_properties, connector_properties, plane_properties,
property_names, property_names,
/* use_atomic= */ true); /* use_atomic= */ true);
......
...@@ -99,6 +99,10 @@ void HardwareDisplayController::Disable() { ...@@ -99,6 +99,10 @@ void HardwareDisplayController::Disable() {
TRACE_EVENT0("drm", "HDC::Disable"); TRACE_EVENT0("drm", "HDC::Disable");
for (const auto& controller : crtc_controllers_) for (const auto& controller : crtc_controllers_)
// TODO(crbug.com/1015104): Modeset and Disable operations should go
// together. The current split is due to how the legacy/atomic split
// evolved. It should be cleaned up under the more generic
// HardwareDisplayPlaneManager{Legacy,Atomic} calls.
controller->Disable(); controller->Disable();
bool ret = GetDrmDevice()->plane_manager()->DisableOverlayPlanes( bool ret = GetDrmDevice()->plane_manager()->DisableOverlayPlanes(
......
...@@ -33,8 +33,7 @@ const drmModeModeInfo kDefaultMode = {0, 6, 0, 0, 0, 0, 4, 0, ...@@ -33,8 +33,7 @@ const drmModeModeInfo kDefaultMode = {0, 6, 0, 0, 0, 0, 4, 0,
constexpr uint32_t kCrtcIdBase = 1; constexpr uint32_t kCrtcIdBase = 1;
constexpr uint32_t kPrimaryCrtc = kCrtcIdBase; constexpr uint32_t kPrimaryCrtc = kCrtcIdBase;
constexpr uint32_t kSecondaryCrtc = kCrtcIdBase + 1; constexpr uint32_t kSecondaryCrtc = kCrtcIdBase + 1;
constexpr uint32_t kPrimaryConnector = 10; constexpr uint32_t kConnectorIdBase = 10;
constexpr uint32_t kSecondaryConnector = 11;
constexpr uint32_t kPlaneOffset = 1000; constexpr uint32_t kPlaneOffset = 1000;
const gfx::Size kDefaultModeSize(kDefaultMode.hdisplay, kDefaultMode.vdisplay); const gfx::Size kDefaultModeSize(kDefaultMode.hdisplay, kDefaultMode.vdisplay);
...@@ -94,7 +93,7 @@ void HardwareDisplayControllerTest::SetUp() { ...@@ -94,7 +93,7 @@ void HardwareDisplayControllerTest::SetUp() {
controller_ = std::make_unique<ui::HardwareDisplayController>( controller_ = std::make_unique<ui::HardwareDisplayController>(
std::make_unique<ui::CrtcController>(drm_.get(), kPrimaryCrtc, std::make_unique<ui::CrtcController>(drm_.get(), kPrimaryCrtc,
kPrimaryConnector), kConnectorIdBase),
gfx::Point()); gfx::Point());
} }
...@@ -104,24 +103,41 @@ void HardwareDisplayControllerTest::TearDown() { ...@@ -104,24 +103,41 @@ void HardwareDisplayControllerTest::TearDown() {
} }
void HardwareDisplayControllerTest::InitializeDrmDevice(bool use_atomic) { void HardwareDisplayControllerTest::InitializeDrmDevice(bool use_atomic) {
constexpr uint32_t kTypePropId = 300; constexpr uint32_t kTypePropId = 3010;
constexpr uint32_t kInFormatsPropId = 301; constexpr uint32_t kInFormatsPropId = 3011;
constexpr uint32_t kInFormatsBlobPropId = 400; constexpr uint32_t kInFormatsBlobPropId = 400;
std::vector<ui::MockDrmDevice::CrtcProperties> crtc_properties(2); std::vector<ui::MockDrmDevice::CrtcProperties> crtc_properties(2);
std::map<uint32_t, std::string> crtc_property_names = {
{1000, "ACTIVE"},
{1001, "MODE_ID"},
};
std::vector<ui::MockDrmDevice::ConnectorProperties> connector_properties(2);
std::map<uint32_t, std::string> connector_property_names = {
{2000, "CRTC_ID"},
};
for (size_t i = 0; i < connector_properties.size(); ++i) {
connector_properties[i].id = kConnectorIdBase + i;
for (const auto& pair : connector_property_names) {
connector_properties[i].properties.push_back(
{/* .id = */ pair.first, /* .value = */ 0});
}
}
std::vector<ui::MockDrmDevice::PlaneProperties> plane_properties; std::vector<ui::MockDrmDevice::PlaneProperties> plane_properties;
std::map<uint32_t, std::string> property_names = { std::map<uint32_t, std::string> plane_property_names = {
// Add all required properties. // Add all required properties.
{200, "CRTC_ID"}, {3000, "CRTC_ID"},
{201, "CRTC_X"}, {3001, "CRTC_X"},
{202, "CRTC_Y"}, {3002, "CRTC_Y"},
{203, "CRTC_W"}, {3003, "CRTC_W"},
{204, "CRTC_H"}, {3004, "CRTC_H"},
{205, "FB_ID"}, {3005, "FB_ID"},
{206, "SRC_X"}, {3006, "SRC_X"},
{207, "SRC_Y"}, {3007, "SRC_Y"},
{208, "SRC_W"}, {3008, "SRC_W"},
{209, "SRC_H"}, {3009, "SRC_H"},
// Add some optional properties we use for convenience. // Add some optional properties we use for convenience.
{kTypePropId, "type"}, {kTypePropId, "type"},
{kInFormatsPropId, "IN_FORMATS"}, {kInFormatsPropId, "IN_FORMATS"},
...@@ -129,6 +145,10 @@ void HardwareDisplayControllerTest::InitializeDrmDevice(bool use_atomic) { ...@@ -129,6 +145,10 @@ void HardwareDisplayControllerTest::InitializeDrmDevice(bool use_atomic) {
for (size_t i = 0; i < crtc_properties.size(); ++i) { for (size_t i = 0; i < crtc_properties.size(); ++i) {
crtc_properties[i].id = kCrtcIdBase + i; crtc_properties[i].id = kCrtcIdBase + i;
for (const auto& pair : crtc_property_names) {
crtc_properties[i].properties.push_back(
{/* .id = */ pair.first, /* .value = */ 0});
}
for (size_t j = 0; j < 2; ++j) { for (size_t j = 0; j < 2; ++j) {
const uint32_t offset = plane_properties.size(); const uint32_t offset = plane_properties.size();
...@@ -136,7 +156,7 @@ void HardwareDisplayControllerTest::InitializeDrmDevice(bool use_atomic) { ...@@ -136,7 +156,7 @@ void HardwareDisplayControllerTest::InitializeDrmDevice(bool use_atomic) {
ui::MockDrmDevice::PlaneProperties plane; ui::MockDrmDevice::PlaneProperties plane;
plane.id = kPlaneOffset + offset; plane.id = kPlaneOffset + offset;
plane.crtc_mask = 1 << i; plane.crtc_mask = 1 << i;
for (const auto& pair : property_names) { for (const auto& pair : plane_property_names) {
uint32_t value = 0; uint32_t value = 0;
if (pair.first == kTypePropId) if (pair.first == kTypePropId)
value = j == 0 ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY; value = j == 0 ? DRM_PLANE_TYPE_PRIMARY : DRM_PLANE_TYPE_OVERLAY;
...@@ -163,10 +183,12 @@ void HardwareDisplayControllerTest::InitializeDrmDevice(bool use_atomic) { ...@@ -163,10 +183,12 @@ void HardwareDisplayControllerTest::InitializeDrmDevice(bool use_atomic) {
} }
} }
std::vector<ui::MockDrmDevice::ConnectorProperties> connector_properties(2); std::map<uint32_t, std::string> property_names;
connector_properties[0].id = kPrimaryConnector; property_names.insert(crtc_property_names.begin(), crtc_property_names.end());
connector_properties[1].id = kSecondaryConnector; property_names.insert(connector_property_names.begin(),
connector_property_names.end());
property_names.insert(plane_property_names.begin(),
plane_property_names.end());
drm_->InitializeState(crtc_properties, connector_properties, plane_properties, drm_->InitializeState(crtc_properties, connector_properties, plane_properties,
property_names, use_atomic); property_names, use_atomic);
} }
...@@ -379,8 +401,9 @@ TEST_F(HardwareDisplayControllerTest, AcceptUnderlays) { ...@@ -379,8 +401,9 @@ TEST_F(HardwareDisplayControllerTest, AcceptUnderlays) {
} }
TEST_F(HardwareDisplayControllerTest, PageflipMirroredControllers) { TEST_F(HardwareDisplayControllerTest, PageflipMirroredControllers) {
controller_->AddCrtc(std::unique_ptr<ui::CrtcController>( controller_->AddCrtc(
new ui::CrtcController(drm_.get(), kSecondaryCrtc, kSecondaryConnector))); std::unique_ptr<ui::CrtcController>(new ui::CrtcController(
drm_.get(), kSecondaryCrtc, kConnectorIdBase + 1)));
ui::DrmOverlayPlane plane1(CreateBuffer(), nullptr); ui::DrmOverlayPlane plane1(CreateBuffer(), nullptr);
EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
...@@ -404,8 +427,9 @@ TEST_F(HardwareDisplayControllerTest, PageflipMirroredControllers) { ...@@ -404,8 +427,9 @@ TEST_F(HardwareDisplayControllerTest, PageflipMirroredControllers) {
} }
TEST_F(HardwareDisplayControllerTest, PlaneStateAfterRemoveCrtc) { TEST_F(HardwareDisplayControllerTest, PlaneStateAfterRemoveCrtc) {
controller_->AddCrtc(std::unique_ptr<ui::CrtcController>( controller_->AddCrtc(
new ui::CrtcController(drm_.get(), kSecondaryCrtc, kSecondaryConnector))); std::unique_ptr<ui::CrtcController>(new ui::CrtcController(
drm_.get(), kSecondaryCrtc, kConnectorIdBase + 1)));
ui::DrmOverlayPlane plane1(CreateBuffer(), nullptr); ui::DrmOverlayPlane plane1(CreateBuffer(), nullptr);
EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
...@@ -476,8 +500,9 @@ TEST_F(HardwareDisplayControllerTest, PlaneStateAfterDestroyingCrtc) { ...@@ -476,8 +500,9 @@ TEST_F(HardwareDisplayControllerTest, PlaneStateAfterDestroyingCrtc) {
} }
TEST_F(HardwareDisplayControllerTest, PlaneStateAfterAddCrtc) { TEST_F(HardwareDisplayControllerTest, PlaneStateAfterAddCrtc) {
controller_->AddCrtc(std::unique_ptr<ui::CrtcController>( controller_->AddCrtc(
new ui::CrtcController(drm_.get(), kSecondaryCrtc, kSecondaryConnector))); std::unique_ptr<ui::CrtcController>(new ui::CrtcController(
drm_.get(), kSecondaryCrtc, kConnectorIdBase + 1)));
ui::DrmOverlayPlane plane1(CreateBuffer(), nullptr); ui::DrmOverlayPlane plane1(CreateBuffer(), nullptr);
EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode)); EXPECT_TRUE(controller_->Modeset(plane1, kDefaultMode));
...@@ -569,8 +594,9 @@ TEST_F(HardwareDisplayControllerTest, AddCrtcMidPageFlip) { ...@@ -569,8 +594,9 @@ TEST_F(HardwareDisplayControllerTest, AddCrtcMidPageFlip) {
planes.push_back(plane1.Clone()); planes.push_back(plane1.Clone());
SchedulePageFlip(std::move(planes)); SchedulePageFlip(std::move(planes));
controller_->AddCrtc(std::unique_ptr<ui::CrtcController>( controller_->AddCrtc(
new ui::CrtcController(drm_.get(), kSecondaryCrtc, kSecondaryConnector))); std::unique_ptr<ui::CrtcController>(new ui::CrtcController(
drm_.get(), kSecondaryCrtc, kConnectorIdBase + 1)));
drm_->RunCallbacks(); drm_->RunCallbacks();
EXPECT_EQ(gfx::SwapResult::SWAP_ACK, last_swap_result_); EXPECT_EQ(gfx::SwapResult::SWAP_ACK, last_swap_result_);
......
...@@ -31,17 +31,19 @@ ...@@ -31,17 +31,19 @@
namespace { namespace {
constexpr uint32_t kPlaneOffset = 100; constexpr uint32_t kPlaneOffset = 100;
constexpr uint32_t kTypePropId = 300; constexpr uint32_t kConnectorIdBase = 700;
constexpr uint32_t kInFormatsPropId = 301;
constexpr uint32_t kPlaneCtmId = 302; constexpr uint32_t kTypePropId = 3010;
constexpr uint32_t kCtmPropId = 303; constexpr uint32_t kInFormatsPropId = 3011;
constexpr uint32_t kGammaLutPropId = 304; constexpr uint32_t kPlaneCtmId = 3012;
constexpr uint32_t kGammaLutSizePropId = 305; constexpr uint32_t kBackgroundColorPropId = 1002;
constexpr uint32_t kDegammaLutPropId = 306; constexpr uint32_t kCtmPropId = 1003;
constexpr uint32_t kDegammaLutSizePropId = 307; constexpr uint32_t kGammaLutPropId = 1004;
constexpr uint32_t kOutFencePtrPropId = 308; constexpr uint32_t kGammaLutSizePropId = 1005;
constexpr uint32_t kDegammaLutPropId = 1006;
constexpr uint32_t kDegammaLutSizePropId = 1007;
constexpr uint32_t kOutFencePtrPropId = 1008;
constexpr uint32_t kInFormatsBlobPropId = 400; constexpr uint32_t kInFormatsBlobPropId = 400;
constexpr uint32_t kBackgroundColorPropId = 401;
const gfx::Size kDefaultBufferSize(2, 2); const gfx::Size kDefaultBufferSize(2, 2);
// Create a basic mode for a 6x4 screen. // Create a basic mode for a 6x4 screen.
...@@ -110,35 +112,60 @@ void HardwareDisplayPlaneManagerTest::SetUp() { ...@@ -110,35 +112,60 @@ void HardwareDisplayPlaneManagerTest::SetUp() {
void HardwareDisplayPlaneManagerTest::InitializeDrmState( void HardwareDisplayPlaneManagerTest::InitializeDrmState(
size_t crtc_count, size_t crtc_count,
size_t planes_per_crtc) { size_t planes_per_crtc) {
property_names_ = { std::map<uint32_t, std::string> crtc_property_names = {
{1000, "ACTIVE"},
{1001, "MODE_ID"},
};
std::vector<ui::MockDrmDevice::ConnectorProperties> connector_properties(1);
std::map<uint32_t, std::string> connector_property_names = {
{2000, "CRTC_ID"},
};
for (size_t i = 0; i < connector_properties.size(); ++i) {
connector_properties[i].id = kConnectorIdBase + i;
for (const auto& pair : connector_property_names) {
connector_properties[i].properties.push_back(
{/* .id = */ pair.first, /* .value = */ 0});
}
}
connector_properties_ = connector_properties;
std::vector<ui::MockDrmDevice::PlaneProperties> plane_properties(
planes_per_crtc * crtc_count);
std::map<uint32_t, std::string> plane_property_names = {
// Add all required properties. // Add all required properties.
{200, "CRTC_ID"}, {3000, "CRTC_ID"},
{201, "CRTC_X"}, {3001, "CRTC_X"},
{202, "CRTC_Y"}, {3002, "CRTC_Y"},
{203, "CRTC_W"}, {3003, "CRTC_W"},
{204, "CRTC_H"}, {3004, "CRTC_H"},
{205, "FB_ID"}, {3005, "FB_ID"},
{206, "SRC_X"}, {3006, "SRC_X"},
{207, "SRC_Y"}, {3007, "SRC_Y"},
{208, "SRC_W"}, {3008, "SRC_W"},
{209, "SRC_H"}, {3009, "SRC_H"},
// Defines some optional properties we use for convenience. // Defines some optional properties we use for convenience.
{kTypePropId, "type"}, {kTypePropId, "type"},
{kInFormatsPropId, "IN_FORMATS"}, {kInFormatsPropId, "IN_FORMATS"},
}; };
// Always add an additional cursor plane. // Always add an additional cursor plane.
++planes_per_crtc; ++planes_per_crtc;
for (size_t i = 0; i < crtc_count; ++i) { for (size_t i = 0; i < crtc_count; ++i) {
ui::MockDrmDevice::CrtcProperties crtc_prop; ui::MockDrmDevice::CrtcProperties crtc_prop;
// Start ID at 1 cause 0 is an invalid ID. // Start ID at 1 cause 0 is an invalid ID.
crtc_prop.id = i + 1; crtc_prop.id = i + 1;
for (const auto& pair : crtc_property_names) {
crtc_prop.properties.push_back(
{/* .id = */ pair.first, /* .value = */ 0});
}
crtc_properties_.emplace_back(std::move(crtc_prop)); crtc_properties_.emplace_back(std::move(crtc_prop));
for (size_t j = 0; j < planes_per_crtc; ++j) { for (size_t j = 0; j < planes_per_crtc; ++j) {
ui::MockDrmDevice::PlaneProperties plane_prop; ui::MockDrmDevice::PlaneProperties plane_prop;
plane_prop.id = kPlaneOffset + i * planes_per_crtc + j; plane_prop.id = kPlaneOffset + i * planes_per_crtc + j;
plane_prop.crtc_mask = 1 << i; plane_prop.crtc_mask = 1 << i;
for (const auto& pair : property_names_) { for (const auto& pair : plane_property_names) {
uint32_t value = 0; uint32_t value = 0;
if (pair.first == kTypePropId) { if (pair.first == kTypePropId) {
if (j == 0) if (j == 0)
...@@ -158,23 +185,26 @@ void HardwareDisplayPlaneManagerTest::InitializeDrmState( ...@@ -158,23 +185,26 @@ void HardwareDisplayPlaneManagerTest::InitializeDrmState(
} }
} }
property_names_.insert(crtc_property_names.begin(),
crtc_property_names.end());
property_names_.insert(connector_property_names.begin(),
connector_property_names.end());
property_names_.insert(plane_property_names.begin(),
plane_property_names.end());
// Separately add optional properties that will be used in some tests, but the // Separately add optional properties that will be used in some tests, but the
// tests will append the property to the planes on a case-by-case basis. // tests will append the property to the planes on a case-by-case basis.
// //
// Plane properties: // Plane properties:
property_names_.insert({kPlaneCtmId, "PLANE_CTM"}); property_names_.insert({kPlaneCtmId, "PLANE_CTM"});
// CRTC properties: // CRTC properties:
property_names_.insert({kBackgroundColorPropId, "BACKGROUND_COLOR"});
property_names_.insert({kCtmPropId, "CTM"}); property_names_.insert({kCtmPropId, "CTM"});
property_names_.insert({kGammaLutPropId, "GAMMA_LUT"}); property_names_.insert({kGammaLutPropId, "GAMMA_LUT"});
property_names_.insert({kGammaLutSizePropId, "GAMMA_LUT_SIZE"}); property_names_.insert({kGammaLutSizePropId, "GAMMA_LUT_SIZE"});
property_names_.insert({kDegammaLutPropId, "DEGAMMA_LUT"}); property_names_.insert({kDegammaLutPropId, "DEGAMMA_LUT"});
property_names_.insert({kDegammaLutSizePropId, "DEGAMMA_LUT_SIZE"}); property_names_.insert({kDegammaLutSizePropId, "DEGAMMA_LUT_SIZE"});
property_names_.insert({kOutFencePtrPropId, "OUT_FENCE_PTR"}); property_names_.insert({kOutFencePtrPropId, "OUT_FENCE_PTR"});
property_names_.insert({kBackgroundColorPropId, "BACKGROUND_COLOR"});
ui::MockDrmDevice::ConnectorProperties connector_prop;
connector_prop.id = 1000;
connector_properties_.emplace_back(std::move(connector_prop));
} }
void HardwareDisplayPlaneManagerTest::PerformPageFlip( void HardwareDisplayPlaneManagerTest::PerformPageFlip(
......
...@@ -146,6 +146,7 @@ bool MockDrmDevice::InitializeStateWithResult( ...@@ -146,6 +146,7 @@ bool MockDrmDevice::InitializeStateWithResult(
const std::map<uint32_t, std::string>& property_names, const std::map<uint32_t, std::string>& property_names,
bool use_atomic) { bool use_atomic) {
crtc_properties_ = crtc_properties; crtc_properties_ = crtc_properties;
connector_properties_ = connector_properties;
plane_properties_ = plane_properties; plane_properties_ = plane_properties;
property_names_ = property_names; property_names_ = property_names;
if (use_atomic) { if (use_atomic) {
...@@ -167,6 +168,12 @@ ScopedDrmResourcesPtr MockDrmDevice::GetResources() { ...@@ -167,6 +168,12 @@ ScopedDrmResourcesPtr MockDrmDevice::GetResources() {
for (size_t i = 0; i < crtc_properties_.size(); ++i) for (size_t i = 0; i < crtc_properties_.size(); ++i)
resources->crtcs[i] = crtc_properties_[i].id; resources->crtcs[i] = crtc_properties_[i].id;
resources->count_connectors = connector_properties_.size();
resources->connectors = static_cast<uint32_t*>(
drmMalloc(sizeof(uint32_t) * resources->count_connectors));
for (size_t i = 0; i < connector_properties_.size(); ++i)
resources->connectors[i] = connector_properties_[i].id;
return resources; return resources;
} }
...@@ -192,6 +199,11 @@ ScopedDrmObjectPropertyPtr MockDrmDevice::GetObjectProperties( ...@@ -192,6 +199,11 @@ ScopedDrmObjectPropertyPtr MockDrmDevice::GetObjectProperties(
CrtcProperties* properties = FindObjectById(object_id, crtc_properties_); CrtcProperties* properties = FindObjectById(object_id, crtc_properties_);
if (properties) if (properties)
return CreatePropertyObject(properties->properties); return CreatePropertyObject(properties->properties);
} else if (object_type == DRM_MODE_OBJECT_CONNECTOR) {
ConnectorProperties* properties =
FindObjectById(object_id, connector_properties_);
if (properties)
return CreatePropertyObject(properties->properties);
} }
return nullptr; return nullptr;
...@@ -485,6 +497,13 @@ bool MockDrmDevice::UpdateProperty(uint32_t object_id, ...@@ -485,6 +497,13 @@ bool MockDrmDevice::UpdateProperty(uint32_t object_id,
if (crtc_properties) if (crtc_properties)
return UpdateProperty(property_id, value, &crtc_properties->properties); return UpdateProperty(property_id, value, &crtc_properties->properties);
ConnectorProperties* connector_properties =
FindObjectById(object_id, connector_properties_);
if (connector_properties) {
return UpdateProperty(property_id, value,
&connector_properties->properties);
}
return false; return false;
} }
......
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