From 2a6ef4e566a9aaaeaff1aee18a2a1127479816ce Mon Sep 17 00:00:00 2001 From: Alec Mouri Date: Fri, 16 Apr 2021 16:36:21 +0000 Subject: [PATCH] Revert "Revert "Update Readback VTS to align with RenderEngine i..." Revert "Revert "Update WaylandRenderSurface to accomodate interf..." Revert "Revert "Add ExternalTexture class into RenderEngine inte..." Revert submission 14199598-revert-14086921-renderengine-external-tex-QJNBWQMQEU Reason for revert: Prepare for relanding Reverted Changes: I01e65a7f4:Revert "Update WaylandRenderSurface to accomodate ... I7d58118c1:Revert "Update Readback VTS to align with RenderEn... I1501890f4:Revert "Add ExternalTexture class into RenderEngin... Change-Id: Ic2ee9311d22658ac77c8a94f6070324cf07b601b --- .../composer/2.2/utils/vts/ReadbackVts.cpp | 15 ++++--- .../2.2/utils/vts/RenderEngineVts.cpp | 4 +- .../include/composer-vts/2.2/ReadbackVts.h | 6 ++- .../composer-vts/2.2/RenderEngineVts.h | 6 +++ ...VtsHalGraphicsComposerV2_2ReadbackTest.cpp | 44 +++++++++---------- 5 files changed, 46 insertions(+), 29 deletions(-) diff --git a/graphics/composer/2.2/utils/vts/ReadbackVts.cpp b/graphics/composer/2.2/utils/vts/ReadbackVts.cpp index b179f35109..19f5e8c614 100644 --- a/graphics/composer/2.2/utils/vts/ReadbackVts.cpp +++ b/graphics/composer/2.2/utils/vts/ReadbackVts.cpp @@ -15,6 +15,8 @@ */ #include +#include +#include "renderengine/ExternalTexture.h" namespace android { namespace hardware { @@ -257,10 +259,11 @@ LayerSettings TestColorLayer::toRenderEngineLayerSettings() { } TestBufferLayer::TestBufferLayer(const std::shared_ptr& client, - const std::shared_ptr& gralloc, Display display, - int32_t width, int32_t height, PixelFormat format, + const std::shared_ptr& gralloc, + TestRenderEngine& renderEngine, Display display, int32_t width, + int32_t height, PixelFormat format, IComposerClient::Composition composition) - : TestLayer{client, display} { + : TestLayer{client, display}, mRenderEngine(renderEngine) { mGralloc = gralloc; mComposition = composition; mWidth = width; @@ -293,9 +296,11 @@ void TestBufferLayer::write(const std::shared_ptr& writer) { LayerSettings TestBufferLayer::toRenderEngineLayerSettings() { LayerSettings layerSettings = TestLayer::toRenderEngineLayerSettings(); - layerSettings.source.buffer.buffer = + layerSettings.source.buffer.buffer = std::make_shared( new GraphicBuffer(mBufferHandle, GraphicBuffer::CLONE_HANDLE, mWidth, mHeight, - static_cast(mFormat), 1, mUsage, mStride); + static_cast(mFormat), 1, mUsage, mStride), + mRenderEngine.getInternalRenderEngine(), + renderengine::ExternalTexture::Usage::READABLE); layerSettings.source.buffer.usePremultipliedAlpha = mBlendMode == IComposerClient::BlendMode::PREMULTIPLIED; diff --git a/graphics/composer/2.2/utils/vts/RenderEngineVts.cpp b/graphics/composer/2.2/utils/vts/RenderEngineVts.cpp index 3becacea91..f78dda2689 100644 --- a/graphics/composer/2.2/utils/vts/RenderEngineVts.cpp +++ b/graphics/composer/2.2/utils/vts/RenderEngineVts.cpp @@ -69,7 +69,9 @@ void TestRenderEngine::drawLayers() { [](renderengine::LayerSettings& settings) -> renderengine::LayerSettings* { return &settings; }); - mRenderEngine->drawLayers(mDisplaySettings, compositionLayerPointers, mGraphicBuffer, true, + auto texture = std::make_shared( + mGraphicBuffer, *mRenderEngine, renderengine::ExternalTexture::Usage::WRITEABLE); + mRenderEngine->drawLayers(mDisplaySettings, compositionLayerPointers, texture, true, std::move(bufferFence), &readyFence); int fd = readyFence.release(); if (fd != -1) { diff --git a/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/ReadbackVts.h b/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/ReadbackVts.h index d5eedf122c..b24e3b63bd 100644 --- a/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/ReadbackVts.h +++ b/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/ReadbackVts.h @@ -50,6 +50,8 @@ static const IComposerClient::Color TRANSLUCENT_RED = {0xff, 0, 0, 0x33}; static const IComposerClient::Color GREEN = {0, 0xff, 0, 0xff}; static const IComposerClient::Color BLUE = {0, 0, 0xff, 0xff}; +class TestRenderEngine; + class TestLayer { public: TestLayer(const std::shared_ptr& client, Display display) @@ -110,7 +112,8 @@ class TestBufferLayer : public TestLayer { public: TestBufferLayer( const std::shared_ptr& client, const std::shared_ptr& gralloc, - Display display, int32_t width, int32_t height, PixelFormat format, + TestRenderEngine& renderEngine, Display display, int32_t width, int32_t height, + PixelFormat format, IComposerClient::Composition composition = IComposerClient::Composition::DEVICE); ~TestBufferLayer(); @@ -138,6 +141,7 @@ class TestBufferLayer : public TestLayer { protected: IComposerClient::Composition mComposition; std::shared_ptr mGralloc; + TestRenderEngine& mRenderEngine; int32_t mFillFence; const native_handle_t* mBufferHandle = nullptr; }; diff --git a/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/RenderEngineVts.h b/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/RenderEngineVts.h index f2d5f1933f..26027d33a2 100644 --- a/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/RenderEngineVts.h +++ b/graphics/composer/2.2/utils/vts/include/composer-vts/2.2/RenderEngineVts.h @@ -14,9 +14,12 @@ * limitations under the License. */ +#pragma once + #include #include #include +#include #include #include #include @@ -51,12 +54,15 @@ class TestRenderEngine { void drawLayers(); void checkColorBuffer(std::vector& expectedColors); + renderengine::RenderEngine& getInternalRenderEngine() { return *mRenderEngine; } + private: common::V1_1::PixelFormat mFormat; std::vector mCompositionLayers; std::unique_ptr mRenderEngine; std::vector mRenderLayers; sp mGraphicBuffer; + DisplaySettings mDisplaySettings; }; diff --git a/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2ReadbackTest.cpp b/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2ReadbackTest.cpp index 1463c3be6c..8d52173e59 100644 --- a/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2ReadbackTest.cpp +++ b/graphics/composer/2.2/vts/functional/VtsHalGraphicsComposerV2_2ReadbackTest.cpp @@ -288,9 +288,9 @@ TEST_P(GraphicsCompositionTest, SetLayerBuffer) { {0, mDisplayHeight / 2, mDisplayWidth, mDisplayHeight}, BLUE); - auto layer = std::make_shared(mComposerClient, mGralloc, mPrimaryDisplay, - mDisplayWidth, mDisplayHeight, - PixelFormat::RGBA_8888); + auto layer = std::make_shared( + mComposerClient, mGralloc, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, + mDisplayHeight, PixelFormat::RGBA_8888); layer->setDisplayFrame({0, 0, mDisplayWidth, mDisplayHeight}); layer->setZOrder(10); layer->setDataspace(ReadbackHelper::getDataspaceForColorMode(mode), mWriter); @@ -422,9 +422,9 @@ TEST_P(GraphicsCompositionTest, ClientComposition) { {0, mDisplayHeight / 2, mDisplayWidth, mDisplayHeight}, BLUE); - auto layer = std::make_shared(mComposerClient, mGralloc, mPrimaryDisplay, - mDisplayWidth, mDisplayHeight, - PixelFormat::RGBA_FP16); + auto layer = std::make_shared( + mComposerClient, mGralloc, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, + mDisplayHeight, PixelFormat::RGBA_FP16); layer->setDisplayFrame({0, 0, mDisplayWidth, mDisplayHeight}); layer->setZOrder(10); layer->setDataspace(ReadbackHelper::getDataspaceForColorMode(mode), mWriter); @@ -538,8 +538,8 @@ TEST_P(GraphicsCompositionTest, DeviceAndClientComposition) { ASSERT_NO_FATAL_FAILURE(readbackBuffer.setReadbackBuffer()); auto deviceLayer = std::make_shared( - mComposerClient, mGralloc, mPrimaryDisplay, mDisplayWidth, mDisplayHeight / 2, - PixelFormat::RGBA_8888); + mComposerClient, mGralloc, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, + mDisplayHeight / 2, PixelFormat::RGBA_8888); std::vector deviceColors(deviceLayer->mWidth * deviceLayer->mHeight); ReadbackHelper::fillColorsArea(deviceColors, deviceLayer->mWidth, @@ -575,8 +575,8 @@ TEST_P(GraphicsCompositionTest, DeviceAndClientComposition) { } auto clientLayer = std::make_shared( - mComposerClient, mGralloc, mPrimaryDisplay, clientWidth, clientHeight, - PixelFormat::RGBA_FP16, IComposerClient::Composition::DEVICE); + mComposerClient, mGralloc, *mTestRenderEngine, mPrimaryDisplay, clientWidth, + clientHeight, PixelFormat::RGBA_FP16, IComposerClient::Composition::DEVICE); IComposerClient::Rect clientFrame = {0, mDisplayHeight / 2, mDisplayWidth, mDisplayHeight}; clientLayer->setDisplayFrame(clientFrame); clientLayer->setZOrder(0); @@ -657,9 +657,9 @@ TEST_P(GraphicsCompositionTest, SetLayerDamage) { std::vector expectedColors(mDisplayWidth * mDisplayHeight); ReadbackHelper::fillColorsArea(expectedColors, mDisplayWidth, redRect, RED); - auto layer = std::make_shared(mComposerClient, mGralloc, mPrimaryDisplay, - mDisplayWidth, mDisplayHeight, - PixelFormat::RGBA_8888); + auto layer = std::make_shared( + mComposerClient, mGralloc, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, + mDisplayHeight, PixelFormat::RGBA_8888); layer->setDisplayFrame({0, 0, mDisplayWidth, mDisplayHeight}); layer->setZOrder(10); layer->setDataspace(ReadbackHelper::getDataspaceForColorMode(mode), mWriter); @@ -805,9 +805,9 @@ TEST_P(GraphicsCompositionTest, SetLayerSourceCrop) { {0, mDisplayHeight / 2, mDisplayWidth, mDisplayHeight}, BLUE); - auto layer = std::make_shared(mComposerClient, mGralloc, mPrimaryDisplay, - mDisplayWidth, mDisplayHeight, - PixelFormat::RGBA_8888); + auto layer = std::make_shared( + mComposerClient, mGralloc, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, + mDisplayHeight, PixelFormat::RGBA_8888); layer->setDisplayFrame({0, 0, mDisplayWidth, mDisplayHeight}); layer->setZOrder(10); layer->setDataspace(ReadbackHelper::getDataspaceForColorMode(mode), mWriter); @@ -957,9 +957,9 @@ class GraphicsBlendModeCompositionTest backgroundLayer->setZOrder(0); backgroundLayer->setColor(mBackgroundColor); - auto layer = std::make_shared(mComposerClient, mGralloc, mPrimaryDisplay, - mDisplayWidth, mDisplayHeight, - PixelFormat::RGBA_8888); + auto layer = std::make_shared( + mComposerClient, mGralloc, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, + mDisplayHeight, PixelFormat::RGBA_8888); layer->setDisplayFrame({0, 0, mDisplayWidth, mDisplayHeight}); layer->setZOrder(10); layer->setDataspace(Dataspace::UNKNOWN, mWriter); @@ -1195,9 +1195,9 @@ class GraphicsTransformCompositionTest : public GraphicsCompositionTest { IComposerClient::Rect blueRect = {mSideLength / 2, mSideLength / 2, mSideLength, mSideLength}; - mLayer = - std::make_shared(mComposerClient, mGralloc, mPrimaryDisplay, - mSideLength, mSideLength, PixelFormat::RGBA_8888); + mLayer = std::make_shared(mComposerClient, mGralloc, *mTestRenderEngine, + mPrimaryDisplay, mSideLength, mSideLength, + PixelFormat::RGBA_8888); mLayer->setDisplayFrame({0, 0, mSideLength, mSideLength}); mLayer->setZOrder(10);