test-hwc2: validate display
Test: Add "#define HAVE_NO_SURFACE_FLINGER" to
frameworks/native/libs/gui/BufferQueueCore.cpp.
Recompile and flash.
Run "mm" in frameworks/native/services/surfaceflinger/tests/hwc2.
Push test-hwc2 to device.
Run "adb root && adb shell stop".
Run test case. Ex: "./test-hwc2"
Change-Id: I9a9df2902213d99d4f043e3bdea1e5e2fc77b01d
diff --git a/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.cpp b/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.cpp
index a79909a..e00c560 100644
--- a/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.cpp
+++ b/services/surfaceflinger/tests/hwc2/Hwc2TestProperties.cpp
@@ -29,7 +29,7 @@
Hwc2TestBufferArea::Hwc2TestBufferArea(Hwc2TestCoverage coverage,
const Area& displayArea)
- : Hwc2TestProperty(mBufferAreas),
+ : Hwc2TestProperty(mBufferAreas, mCompositionSupport),
mScalars((coverage == Hwc2TestCoverage::Complete)? mCompleteScalars:
(coverage == Hwc2TestCoverage::Basic)? mBasicScalars:
mDefaultScalars),
@@ -115,7 +115,7 @@
Hwc2TestBlendMode::Hwc2TestBlendMode(Hwc2TestCoverage coverage)
: Hwc2TestProperty(coverage, mCompleteBlendModes, mBasicBlendModes,
- mDefaultBlendModes) { }
+ mDefaultBlendModes, mCompositionSupport) { }
std::string Hwc2TestBlendMode::dump() const
{
@@ -154,7 +154,7 @@
Hwc2TestColor::Hwc2TestColor(Hwc2TestCoverage coverage,
hwc2_blend_mode_t blendMode)
- : Hwc2TestProperty(mColors),
+ : Hwc2TestProperty(mColors, mCompositionSupport),
mBaseColors((coverage == Hwc2TestCoverage::Complete)? mCompleteBaseColors:
(coverage == Hwc2TestCoverage::Basic)? mBasicBaseColors:
mDefaultBaseColors),
@@ -228,7 +228,7 @@
Hwc2TestComposition::Hwc2TestComposition(Hwc2TestCoverage coverage)
: Hwc2TestProperty(coverage, mCompleteCompositions, mBasicCompositions,
- mDefaultCompositions) { }
+ mDefaultCompositions, mCompositionSupport) { }
std::string Hwc2TestComposition::dump() const
{
@@ -257,7 +257,7 @@
Hwc2TestDataspace::Hwc2TestDataspace(Hwc2TestCoverage coverage)
: Hwc2TestProperty(coverage, completeDataspaces, basicDataspaces,
- defaultDataspaces) { }
+ defaultDataspaces, mCompositionSupport) { }
std::string Hwc2TestDataspace::dump() const
{
@@ -323,7 +323,7 @@
Hwc2TestDisplayFrame::Hwc2TestDisplayFrame(Hwc2TestCoverage coverage,
const Area& displayArea)
- : Hwc2TestProperty(mDisplayFrames),
+ : Hwc2TestProperty(mDisplayFrames, mCompositionSupport),
mFrectScalars((coverage == Hwc2TestCoverage::Complete)? mCompleteFrectScalars:
(coverage == Hwc2TestCoverage::Basic)? mBasicFrectScalars:
mDefaultFrectScalars),
@@ -383,7 +383,7 @@
Hwc2TestPlaneAlpha::Hwc2TestPlaneAlpha(Hwc2TestCoverage coverage)
: Hwc2TestProperty(coverage, mCompletePlaneAlphas, mBasicPlaneAlphas,
- mDefaultPlaneAlphas) { }
+ mDefaultPlaneAlphas, mCompositionSupport) { }
std::string Hwc2TestPlaneAlpha::dump() const
{
@@ -407,7 +407,7 @@
Hwc2TestSourceCrop::Hwc2TestSourceCrop(Hwc2TestCoverage coverage,
const Area& bufferArea)
- : Hwc2TestProperty(mSourceCrops),
+ : Hwc2TestProperty(mSourceCrops, mCompositionSupport),
mFrectScalars((coverage == Hwc2TestCoverage::Complete)? mCompleteFrectScalars:
(coverage == Hwc2TestCoverage::Basic)? mBasicFrectScalars:
mDefaultFrectScalars),
@@ -470,7 +470,7 @@
Hwc2TestSurfaceDamage::Hwc2TestSurfaceDamage(Hwc2TestCoverage coverage)
- : Hwc2TestProperty(mSurfaceDamages),
+ : Hwc2TestProperty(mSurfaceDamages, mCompositionSupport),
mRegionScalars((coverage == Hwc2TestCoverage::Complete)? mCompleteRegionScalars:
(coverage == Hwc2TestCoverage::Basic)? mBasicRegionScalars:
mDefaultRegionScalars)
@@ -568,7 +568,7 @@
Hwc2TestTransform::Hwc2TestTransform(Hwc2TestCoverage coverage)
: Hwc2TestProperty(coverage, mCompleteTransforms, mBasicTransforms,
- mDefaultTransforms) { }
+ mDefaultTransforms, mCompositionSupport) { }
std::string Hwc2TestTransform::dump() const
{
@@ -654,3 +654,67 @@
mVisibleRegion.rects = nullptr;
mVisibleRegion.numRects = 0;
}
+
+/* Identifies which layer properties are supported by each composition type.
+ * hwc2_composition_t values range from:
+ * HWC2_COMPOSITION_INVALID = 0,
+ * HWC2_COMPOSITION_CLIENT = 1,
+ * HWC2_COMPOSITION_DEVICE = 2,
+ * HWC2_COMPOSITION_SOLID_COLOR = 3,
+ * HWC2_COMPOSITION_CURSOR = 4,
+ * HWC2_COMPOSITION_SIDEBAND = 5,
+ *
+ * Each property array can be indexed by a hwc2_composition_t value.
+ * By using an array instead of a more complex data structure, runtimes for
+ * some test cases showed a noticeable improvement.
+ */
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestBufferArea::mCompositionSupport = {{
+ false, true, true, false, true, true,
+}};
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestBlendMode::mCompositionSupport = {{
+ false, true, true, false, true, true,
+}};
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestColor::mCompositionSupport = {{
+ false, false, false, true, false, false,
+}};
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestComposition::mCompositionSupport = {{
+ false, true, true, true, true, true,
+}};
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestDataspace::mCompositionSupport = {{
+ false, true, true, true, true, false,
+}};
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestDisplayFrame::mCompositionSupport = {{
+ false, true, true, true, false, true,
+}};
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestPlaneAlpha::mCompositionSupport = {{
+ false, true, true, true, true, true,
+}};
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestSourceCrop::mCompositionSupport = {{
+ false, true, true, false, true, false,
+}};
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestSurfaceDamage::mCompositionSupport = {{
+ false, false, true, false, true, false,
+}};
+
+/* INVALID CLIENT DEVICE COLOR CURSOR SIDEBAND */
+const std::array<bool, 6> Hwc2TestTransform::mCompositionSupport = {{
+ false, true, true, false, true, true,
+}};