Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5054e3bc authored by Brian Lindahl's avatar Brian Lindahl
Browse files

Add unsupported check for getMaxLayerPictureProfiles

Also migrate V3 tests to V4.

Bug: 378013440
Fixes: 378013440
Test: atest GraphicsComposerAidlCommandV4Test
Flag: TEST_ONLY
Change-Id: Iced729bb56cbf321510ac4a7ad75952d08b1be15
parent 7d5443de
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -71,6 +71,7 @@ cc_test {
        "libarect",
        "libbase",
        "libfmq",
        "libgmock",
        "libgtest",
        "libmath",
        "librenderengine",
+36 −26
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@
#include <android/hardware/graphics/composer3/ComposerClientWriter.h>
#include <binder/ProcessState.h>
#include <cutils/ashmem.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include <ui/Fence.h>
#include <ui/GraphicBuffer.h>
@@ -47,6 +48,8 @@
#undef LOG_TAG
#define LOG_TAG "VtsHalGraphicsComposer3_TargetTest"

using testing::Ge;

namespace aidl::android::hardware::graphics::composer3::vts {

using namespace std::chrono_literals;
@@ -1399,14 +1402,6 @@ TEST_P(GraphicsComposerAidlV3Test, GetDisplayConfigsIsSubsetOfGetDisplayConfigur
    }
}

TEST_P(GraphicsComposerAidlV3Test, GetMaxLayerPictureProfiles) {
    for (const auto& display : mDisplays) {
        const auto& [status, maxPorfiles] =
                mComposerClient->getMaxLayerPictureProfiles(display.getDisplayId());
        EXPECT_TRUE(status.isOk());
    }
}

// Tests for Command.
class GraphicsComposerAidlCommandTest : public GraphicsComposerAidlTest {
  protected:
@@ -3239,19 +3234,44 @@ TEST_P(GraphicsComposerAidlCommandV3Test, frameIntervalChangeAtPresentFrame) {
    });
}

TEST_P(GraphicsComposerAidlCommandV3Test, getMaxLayerPictureProfiles_success) {
class GraphicsComposerAidlCommandV4Test : public GraphicsComposerAidlCommandTest {
  protected:
    void SetUp() override {
        GraphicsComposerAidlTest::SetUp();
        if (getInterfaceVersion() <= 3) {
            GTEST_SKIP() << "Device interface version is expected to be >= 4";
        }
    }
};

TEST_P(GraphicsComposerAidlCommandV4Test, getMaxLayerPictureProfiles_success) {
    for (auto& display : mDisplays) {
        int64_t displayId = display.getDisplayId();
        if (!hasDisplayCapability(displayId, DisplayCapability::PICTURE_PROCESSING)) {
            continue;
        }
        const auto& [status, maxProfiles] =
                mComposerClient->getMaxLayerPictureProfiles(getPrimaryDisplayId());
                mComposerClient->getMaxLayerPictureProfiles(displayId);
        EXPECT_TRUE(status.isOk());
        EXPECT_THAT(maxProfiles, Ge(0));
    }
}

TEST_P(GraphicsComposerAidlCommandV3Test, setDisplayPictureProfileId_success) {
TEST_P(GraphicsComposerAidlCommandV4Test, getMaxLayerPictureProfiles_unsupported) {
    for (auto& display : mDisplays) {
        int64_t displayId = display.getDisplayId();
        if (hasDisplayCapability(displayId, DisplayCapability::PICTURE_PROCESSING)) {
            continue;
        }
        const auto& [status, maxProfiles] =
                mComposerClient->getMaxLayerPictureProfiles(displayId);
        EXPECT_FALSE(status.isOk());
        EXPECT_NO_FATAL_FAILURE(
                assertServiceSpecificError(status, IComposerClient::EX_UNSUPPORTED));
    }
}

TEST_P(GraphicsComposerAidlCommandV4Test, setDisplayPictureProfileId_success) {
    for (auto& display : mDisplays) {
        int64_t displayId = display.getDisplayId();
        if (!hasDisplayCapability(displayId, DisplayCapability::PICTURE_PROCESSING)) {
@@ -3262,7 +3282,7 @@ TEST_P(GraphicsComposerAidlCommandV3Test, setDisplayPictureProfileId_success) {
        const auto layer = createOnScreenLayer(display);
        const auto buffer = allocate(::android::PIXEL_FORMAT_RGBA_8888);
        ASSERT_NE(nullptr, buffer->handle);
        // TODO(b/337330263): Lookup profile IDs from PictureProfileService
        // TODO(b/337330263): Lookup profile IDs from MediaQualityManager
        writer.setDisplayPictureProfileId(displayId, PictureProfileId(1));
        writer.setLayerBuffer(displayId, layer, /*slot*/ 0, buffer->handle,
                              /*acquireFence*/ -1);
@@ -3271,7 +3291,7 @@ TEST_P(GraphicsComposerAidlCommandV3Test, setDisplayPictureProfileId_success) {
    }
}

TEST_P(GraphicsComposerAidlCommandV3Test, setLayerPictureProfileId_success) {
TEST_P(GraphicsComposerAidlCommandV4Test, setLayerPictureProfileId_success) {
    for (auto& display : mDisplays) {
        int64_t displayId = display.getDisplayId();
        if (!hasDisplayCapability(displayId, DisplayCapability::PICTURE_PROCESSING)) {
@@ -3289,14 +3309,14 @@ TEST_P(GraphicsComposerAidlCommandV3Test, setLayerPictureProfileId_success) {
        ASSERT_NE(nullptr, buffer->handle);
        writer.setLayerBuffer(displayId, layer, /*slot*/ 0, buffer->handle,
                              /*acquireFence*/ -1);
        // TODO(b/337330263): Lookup profile IDs from PictureProfileService
        // TODO(b/337330263): Lookup profile IDs from MediaQualityManager
        writer.setLayerPictureProfileId(displayId, layer, PictureProfileId(1));
        execute();
        ASSERT_TRUE(mReader.takeErrors().empty());
    }
}

TEST_P(GraphicsComposerAidlCommandV3Test, setLayerPictureProfileId_failsWithTooManyProfiles) {
TEST_P(GraphicsComposerAidlCommandV4Test, setLayerPictureProfileId_failsWithTooManyProfiles) {
    for (auto& display : mDisplays) {
        int64_t displayId = display.getDisplayId();
        if (!hasDisplayCapability(displayId, DisplayCapability::PICTURE_PROCESSING)) {
@@ -3315,7 +3335,7 @@ TEST_P(GraphicsComposerAidlCommandV3Test, setLayerPictureProfileId_failsWithTooM
            ASSERT_NE(nullptr, buffer->handle);
            writer.setLayerBuffer(displayId, layer, /*slot*/ 0, buffer->handle,
                                  /*acquireFence*/ -1);
            // TODO(b/337330263): Lookup profile IDs from PictureProfileService
            // TODO(b/337330263): Lookup profile IDs from MediaQualityManager
            writer.setLayerPictureProfileId(displayId, layer, PictureProfileId(profileId));
        }
        execute();
@@ -3325,16 +3345,6 @@ TEST_P(GraphicsComposerAidlCommandV3Test, setLayerPictureProfileId_failsWithTooM
    }
}

class GraphicsComposerAidlCommandV4Test : public GraphicsComposerAidlCommandTest {
  protected:
    void SetUp() override {
        GraphicsComposerAidlTest::SetUp();
        if (getInterfaceVersion() <= 3) {
            GTEST_SKIP() << "Device interface version is expected to be >= 4";
        }
    }
};

TEST_P(GraphicsComposerAidlCommandV4Test, SetUnsupportedLayerLuts) {
    auto& writer = getWriter(getPrimaryDisplayId());
    const auto& [layerStatus, layer] =