blob: 14dbfa8655b0e0c2877a8b6ea112619426402cbd [file] [log] [blame]
// Copyright 2024 The Fuchsia 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 "src/graphics/display/lib/designware-dsi/dsi-packet-handler-config.h"
#include <lib/mipi-dsi/mipi-dsi.h>
#include <gtest/gtest.h>
#include "src/graphics/display/lib/designware-dsi/dpi-interface-config.h"
namespace designware_dsi {
namespace {
TEST(DsiPacketHandlerConfigTest, ValidityFor20BitYcbcr422Loosely) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format =
mipi_dsi::DsiPixelStreamPacketFormat::k20BitYcbcr422LooselyPacked,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityFor24BitYcbcr422) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::k24BitYcbcr422,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityFor16BitYcbcr422) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::k16BitYcbcr422,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityFor30BitR10G10B10) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::k30BitR10G10B10,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityFor36BitR12G12B12) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::k36BitR12G12B12,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityFor12BitYcbcr420) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::k12BitYcbcr420,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityFor16BitR5G6B5) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::k16BitR5G6B5,
};
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityFor18BitR6G6B6) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::k18BitR6G6B6,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityFor18BitR6G6B6Loosely) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::k18BitR6G6B6LooselyPacked,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityFor24BitR8G8B8) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::k24BitR8G8B8,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
TEST(DsiPacketHandlerConfigTest, ValidityForCompressed) {
static constexpr DsiPacketHandlerConfig kConfig = {
.packet_sequencing = mipi_dsi::DsiVideoModePacketSequencing::kBurst,
.pixel_stream_packet_format = mipi_dsi::DsiPixelStreamPacketFormat::kCompressed,
};
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitR5G6B5Config3));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config1));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k18BitR6G6B6Config2));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitR8G8B8));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k20BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k24BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k16BitYcbcr422));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k30BitR10G10B10));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k36BitR12G12B12));
EXPECT_FALSE(kConfig.IsValid(DpiColorComponentMapping::k12BitYcbcr420));
EXPECT_TRUE(kConfig.IsValid(DpiColorComponentMapping::kDsc24Compressed));
}
} // namespace
} // namespace designware_dsi