From 520e0adb58ea871d2a5d3ae3c102e08bc8060d65 Mon Sep 17 00:00:00 2001 From: Alec Mouri Date: Thu, 15 Apr 2021 16:27:01 +0000 Subject: [PATCH 1/4] Revert "Update Readback VTS to align with RenderEngine interface..." Revert "Update WaylandRenderSurface to accomodate interface change" Revert "Add ExternalTexture class into RenderEngine interface" Revert submission 14086921-renderengine-external-tex Reason for revert: Potential culprit for b/185361988 Reverted Changes: I7796764e2:Update WaylandRenderSurface to accomodate interfac... I13904eec4:Update Readback VTS to align with RenderEngine int... I222c71e6e:Add ExternalTexture class into RenderEngine interf... Change-Id: I7d58118c1c2284a04eb52e992e901d82faaf5bb0 (cherry picked from commit 51daee615fd434d768986b8dc8e5207165c2a603) --- .../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, 29 insertions(+), 46 deletions(-) diff --git a/graphics/composer/2.2/utils/vts/ReadbackVts.cpp b/graphics/composer/2.2/utils/vts/ReadbackVts.cpp index 19f5e8c614..b179f35109 100644 --- a/graphics/composer/2.2/utils/vts/ReadbackVts.cpp +++ b/graphics/composer/2.2/utils/vts/ReadbackVts.cpp @@ -15,8 +15,6 @@ */ #include -#include -#include "renderengine/ExternalTexture.h" namespace android { namespace hardware { @@ -259,11 +257,10 @@ LayerSettings TestColorLayer::toRenderEngineLayerSettings() { } TestBufferLayer::TestBufferLayer(const std::shared_ptr& client, - const std::shared_ptr& gralloc, - TestRenderEngine& renderEngine, Display display, int32_t width, - int32_t height, PixelFormat format, + const std::shared_ptr& gralloc, Display display, + int32_t width, int32_t height, PixelFormat format, IComposerClient::Composition composition) - : TestLayer{client, display}, mRenderEngine(renderEngine) { + : TestLayer{client, display} { mGralloc = gralloc; mComposition = composition; mWidth = width; @@ -296,11 +293,9 @@ void TestBufferLayer::write(const std::shared_ptr& writer) { LayerSettings TestBufferLayer::toRenderEngineLayerSettings() { LayerSettings layerSettings = TestLayer::toRenderEngineLayerSettings(); - layerSettings.source.buffer.buffer = std::make_shared( + layerSettings.source.buffer.buffer = new GraphicBuffer(mBufferHandle, GraphicBuffer::CLONE_HANDLE, mWidth, mHeight, - static_cast(mFormat), 1, mUsage, mStride), - mRenderEngine.getInternalRenderEngine(), - renderengine::ExternalTexture::Usage::READABLE); + static_cast(mFormat), 1, mUsage, mStride); 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 f78dda2689..3becacea91 100644 --- a/graphics/composer/2.2/utils/vts/RenderEngineVts.cpp +++ b/graphics/composer/2.2/utils/vts/RenderEngineVts.cpp @@ -69,9 +69,7 @@ void TestRenderEngine::drawLayers() { [](renderengine::LayerSettings& settings) -> renderengine::LayerSettings* { return &settings; }); - auto texture = std::make_shared( - mGraphicBuffer, *mRenderEngine, renderengine::ExternalTexture::Usage::WRITEABLE); - mRenderEngine->drawLayers(mDisplaySettings, compositionLayerPointers, texture, true, + mRenderEngine->drawLayers(mDisplaySettings, compositionLayerPointers, mGraphicBuffer, 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 b24e3b63bd..d5eedf122c 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,8 +50,6 @@ 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) @@ -112,8 +110,7 @@ class TestBufferLayer : public TestLayer { public: TestBufferLayer( const std::shared_ptr& client, const std::shared_ptr& gralloc, - TestRenderEngine& renderEngine, Display display, int32_t width, int32_t height, - PixelFormat format, + Display display, int32_t width, int32_t height, PixelFormat format, IComposerClient::Composition composition = IComposerClient::Composition::DEVICE); ~TestBufferLayer(); @@ -141,7 +138,6 @@ 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 26027d33a2..f2d5f1933f 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,12 +14,9 @@ * limitations under the License. */ -#pragma once - #include #include #include -#include #include #include #include @@ -54,15 +51,12 @@ 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 8d52173e59..1463c3be6c 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, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, - mDisplayHeight, PixelFormat::RGBA_8888); + auto layer = std::make_shared(mComposerClient, mGralloc, 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, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, - mDisplayHeight, PixelFormat::RGBA_FP16); + auto layer = std::make_shared(mComposerClient, mGralloc, 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, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, - mDisplayHeight / 2, PixelFormat::RGBA_8888); + mComposerClient, mGralloc, 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, *mTestRenderEngine, mPrimaryDisplay, clientWidth, - clientHeight, PixelFormat::RGBA_FP16, IComposerClient::Composition::DEVICE); + mComposerClient, mGralloc, 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, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, - mDisplayHeight, PixelFormat::RGBA_8888); + auto layer = std::make_shared(mComposerClient, mGralloc, 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, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, - mDisplayHeight, PixelFormat::RGBA_8888); + auto layer = std::make_shared(mComposerClient, mGralloc, 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, *mTestRenderEngine, mPrimaryDisplay, mDisplayWidth, - mDisplayHeight, PixelFormat::RGBA_8888); + auto layer = std::make_shared(mComposerClient, mGralloc, 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, *mTestRenderEngine, - mPrimaryDisplay, mSideLength, mSideLength, - PixelFormat::RGBA_8888); + mLayer = + std::make_shared(mComposerClient, mGralloc, mPrimaryDisplay, + mSideLength, mSideLength, PixelFormat::RGBA_8888); mLayer->setDisplayFrame({0, 0, mSideLength, mSideLength}); mLayer->setZOrder(10); From 6d29f096eedfdbcda5aedf9646fa1fd312b26100 Mon Sep 17 00:00:00 2001 From: Leon Scroggins Date: Thu, 23 Dec 2021 15:28:46 +0000 Subject: [PATCH 2/4] Revert "Update documentation for DISPLAY_DECORATION" Revert "Add/plumb SurfaceControl.DISPLAY_DECORATION" Revert "Add eLayerIsDisplayDecoration flag" Revert submission 16511727-wm_DISPLAY_DECORATION Reason for revert: b/211835607 Reverted Changes: I1da3199ba:Allow changing composition from DISPLAY_DECORATION... I1fae74b36:Update documentation for DISPLAY_DECORATION I1da03a88f:Add eLayerIsDisplayDecoration flag I7f22dfd03:Add/plumb SurfaceControl.DISPLAY_DECORATION Change-Id: I7238bcc96325873ec7dbdd42894192c48e7cf92e (cherry picked from commit fa7e058b5e641bea32ecf8ea6a229dda630c50fe) Merged-In:I7238bcc96325873ec7dbdd42894192c48e7cf92e --- .../hardware/graphics/composer3/Composition.aidl | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/graphics/composer/aidl/android/hardware/graphics/composer3/Composition.aidl b/graphics/composer/aidl/android/hardware/graphics/composer3/Composition.aidl index 49cdffcf20..4947463ba9 100644 --- a/graphics/composer/aidl/android/hardware/graphics/composer3/Composition.aidl +++ b/graphics/composer/aidl/android/hardware/graphics/composer3/Composition.aidl @@ -74,20 +74,16 @@ enum Composition { */ SIDEBAND = 5, /** - * A display decoration layer contains a buffer which is used to provide + * A display decoration layer contains a buffer which is an 8 bit + * alpha mask. Pixels in the mask with an alpha of 0 (transparent) will + * show the content underneath, and pixels with an alpha of 255 will be + * be rendered in black. An alpha in between will show the content + * blended with black. This is useful, for example, to provide * anti-aliasing on the cutout region/rounded corners on the top and * bottom of a display. * - * Pixels in the buffer with an alpha of 0 (transparent) will show the - * content underneath, and pixels with an alpha of 255 will be rendered in - * black. An alpha in between will show the underlying content blended with - * black. - * - * Some devices may support this flag with a buffer containing an 8 bit - * alpha mask. - * * Upon validateDisplay, the device may request a change from this type - * to either DEVICE or CLIENT. + * to CLIENT. */ DISPLAY_DECORATION = 6, } From 8c75b834f4267d4e46c52ebc84425c087e2c355f Mon Sep 17 00:00:00 2001 From: Midas Chien Date: Tue, 7 Jun 2022 02:32:28 +0800 Subject: [PATCH 3/4] composer: vts: configure layer for DisplayDecoration Some HW may not support crop function for decoration and current API can't query this capability. Configure decoration layer to full screen to avoid this limitation. Bug: 225765061 Test: VtsHalGraphicsComposer3_TargetTest --gtest_filter=*DisplayDecoration* Change-Id: If47154adf9d48f9c1b8390b4bee090d8bf40ff3b (cherry picked from commit 7d55d4269d5ec7247c00f9f1a84c33a6d6f53a00) Merged-In: If47154adf9d48f9c1b8390b4bee090d8bf40ff3b (cherry picked from commit 308f4ac90690febbac077c297302890772ada495) Merged-In: If47154adf9d48f9c1b8390b4bee090d8bf40ff3b --- .../composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp index 759bfecca3..047109e35f 100644 --- a/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp +++ b/graphics/composer/aidl/vts/VtsHalGraphicsComposer3_TargetTest.cpp @@ -1719,10 +1719,10 @@ TEST_P(GraphicsComposerAidlCommandTest, DisplayDecoration) { } } + configureLayer(display, layer, Composition::DISPLAY_DECORATION, display.getFrameRect(), + display.getCrop()); mWriter.setLayerBuffer(display.getDisplayId(), layer, /*slot*/ 0, decorBuffer->handle, /*acquireFence*/ -1); - mWriter.setLayerCompositionType(display.getDisplayId(), layer, - Composition::DISPLAY_DECORATION); mWriter.validateDisplay(display.getDisplayId(), ComposerClientWriter::kNoTimestamp); execute(); if (support) { From 03fba7a807b8dc573f76a99838753663e016c933 Mon Sep 17 00:00:00 2001 From: Arun Johnson Date: Fri, 24 Jun 2022 18:17:00 +0000 Subject: [PATCH 4/4] Allowing OMX.google* codecs for Devices launching with S S AOSP did not remove the OMX.google* codecs, so this cannot be enforced for devices launching with S bug: 230582620 Change-Id: I25e8f827645db8e83c8c3142f5e76a912fdf7b22 (cherry picked from commit 6973e79b917ff1b7b0febddee69dd245f4222b22) Merged-In: I25e8f827645db8e83c8c3142f5e76a912fdf7b22 --- .../store/VtsHalMediaOmxV1_0TargetStoreTest.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/media/omx/1.0/vts/functional/store/VtsHalMediaOmxV1_0TargetStoreTest.cpp b/media/omx/1.0/vts/functional/store/VtsHalMediaOmxV1_0TargetStoreTest.cpp index 2ae9c2b001..00e9837710 100755 --- a/media/omx/1.0/vts/functional/store/VtsHalMediaOmxV1_0TargetStoreTest.cpp +++ b/media/omx/1.0/vts/functional/store/VtsHalMediaOmxV1_0TargetStoreTest.cpp @@ -400,9 +400,18 @@ TEST_P(StoreHidlTest, OmxCodecAllowedTest) { << " Component: " << info.mName.c_str() << " Role: " << role.c_str() << " not allowed for devices launching with Android T and above"; } else { - ASSERT_LT(getFirstApiLevel(), __ANDROID_API_S__) + std::string codecName = info.mName; + bool isAndroidCodec = (codecName.rfind("OMX.google", 0) != std::string::npos); + if (isAndroidCodec && (getFirstApiLevel() <= __ANDROID_API_S__)) { + // refer b/230582620 + // S AOSP build did not remove the OMX.google video codecs + // so it is infeasible to require no OMX.google.* video codecs + // on S launching devices + } else { + ASSERT_LT(getFirstApiLevel(), __ANDROID_API_S__) << " Component: " << info.mName.c_str() << " Role: " << role.c_str() << " not allowed for devices launching with Android S and above"; + } } } if (role.find("audio_decoder") != std::string::npos ||