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

Commit 7c8eb680 authored by Valerie Hau's avatar Valerie Hau
Browse files

Add support for different color modes for readback

Bug: 135045017
Test: build, boot, VtsHalGraphicsComposerV2_2TargetTest
Change-Id: I07868d95120068bee1d98432888109313da33119
parent 19e97ea9
Loading
Loading
Loading
Loading
+27 −1
Original line number Diff line number Diff line
@@ -34,6 +34,32 @@ void TestLayer::write(const std::shared_ptr<CommandWriterBase>& writer) {
    writer->setLayerBlendMode(mBlendMode);
}

const std::vector<ColorMode> ReadbackHelper::colorModes = {ColorMode::SRGB, ColorMode::DISPLAY_P3};
const std::vector<Dataspace> ReadbackHelper::dataspaces = {Dataspace::V0_SRGB,
                                                           Dataspace::DISPLAY_P3};

std::string ReadbackHelper::getColorModeString(ColorMode mode) {
    switch (mode) {
        case ColorMode::SRGB:
            return std::string("SRGB");
        case ColorMode::DISPLAY_P3:
            return std::string("DISPLAY_P3");
        default:
            return std::string("Unsupported color mode for readback");
    }
}

std::string ReadbackHelper::getDataspaceString(Dataspace dataspace) {
    switch (dataspace) {
        case Dataspace::V0_SRGB:
            return std::string("V0_SRGB");
        case Dataspace::DISPLAY_P3:
            return std::string("DISPLAY_P3");
        default:
            return std::string("Unsupported dataspace for readback");
    }
}

int32_t ReadbackHelper::GetBytesPerPixel(PixelFormat pixelFormat) {
    switch (pixelFormat) {
        case PixelFormat::RGBA_8888:
@@ -99,7 +125,7 @@ bool ReadbackHelper::readbackSupported(const PixelFormat& pixelFormat, const Dat
    if (pixelFormat != PixelFormat::RGB_888 && pixelFormat != PixelFormat::RGBA_8888) {
        return false;
    }
    if (dataspace != Dataspace::V0_SRGB) {
    if (std::find(dataspaces.begin(), dataspaces.end(), dataspace) == dataspaces.end()) {
        return false;
    }
    return true;
+7 −0
Original line number Diff line number Diff line
@@ -133,6 +133,10 @@ class TestBufferLayer : public TestLayer {

class ReadbackHelper : public ::testing::VtsHalHidlTargetTestBase {
  public:
    static std::string getColorModeString(ColorMode mode);

    static std::string getDataspaceString(Dataspace dataspace);

    static int32_t GetBytesPerPixel(PixelFormat pixelFormat);

    static void fillBuffer(int32_t width, int32_t height, uint32_t stride, void* bufferData,
@@ -147,6 +151,9 @@ class ReadbackHelper : public ::testing::VtsHalHidlTargetTestBase {

    static bool readbackSupported(const PixelFormat& pixelFormat, const Dataspace& dataspace,
                                  const Error error);

    static const std::vector<ColorMode> colorModes;
    static const std::vector<Dataspace> dataspaces;
};

class ReadbackBuffer {
+589 −425

File changed.

Preview size limit exceeded, changes collapsed.