diff options
author | 2020-02-11 08:58:26 -0800 | |
---|---|---|
committer | 2020-02-11 08:58:26 -0800 | |
commit | fa247b1870da660a722551d6eb944dab1c8f0b53 (patch) | |
tree | 49df584b3d3fa63e662690e32e15ef7f538f3e66 | |
parent | 44da297691f11200b65b8f17fb4ad8d0b09d0320 (diff) |
Rename ColorLayer to EffectLayer to handle both shadows and color fill
We want the ability for a layer to render shadows without any content.
This new layer type will be able to combine effects as needed.
Test: presubmit tests (no functional changes)
Test: go/wm-smoke
Change-Id: I8663d126a23263a3d7dc799d39a9cf44b3b6e4a0
25 files changed, 112 insertions, 108 deletions
diff --git a/libs/gui/include/gui/ISurfaceComposerClient.h b/libs/gui/include/gui/ISurfaceComposerClient.h index 2b65d2f42d..6366529a10 100644 --- a/libs/gui/include/gui/ISurfaceComposerClient.h +++ b/libs/gui/include/gui/ISurfaceComposerClient.h @@ -44,7 +44,7 @@ public: eCursorWindow = 0x00002000, eFXSurfaceBufferQueue = 0x00000000, - eFXSurfaceColor = 0x00020000, + eFXSurfaceEffect = 0x00020000, eFXSurfaceBufferState = 0x00040000, eFXSurfaceContainer = 0x00080000, eFXSurfaceMask = 0x000F0000, diff --git a/libs/gui/tests/BLASTBufferQueue_test.cpp b/libs/gui/tests/BLASTBufferQueue_test.cpp index e184c7f33b..a87ccd664e 100644 --- a/libs/gui/tests/BLASTBufferQueue_test.cpp +++ b/libs/gui/tests/BLASTBufferQueue_test.cpp @@ -403,7 +403,7 @@ TEST_F(BLASTBufferQueueTest, SetCrop_ScalingModeScaleCrop) { int32_t finalCropSideLength = bufferSideLength / 2; auto bg = mClient->createSurface(String8("BGTest"), 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor); + ISurfaceComposerClient::eFXSurfaceEffect); ASSERT_NE(nullptr, bg.get()); Transaction t; t.setLayerStack(bg, 0) diff --git a/libs/gui/tests/EndToEndNativeInputTest.cpp b/libs/gui/tests/EndToEndNativeInputTest.cpp index 1a623e21dc..c59afba87c 100644 --- a/libs/gui/tests/EndToEndNativeInputTest.cpp +++ b/libs/gui/tests/EndToEndNativeInputTest.cpp @@ -82,7 +82,8 @@ public: int width, int height) { sp<SurfaceControl> surfaceControl = scc->createSurface(String8("Test Surface"), 0 /* bufHeight */, 0 /* bufWidth */, - PIXEL_FORMAT_RGBA_8888, ISurfaceComposerClient::eFXSurfaceColor); + PIXEL_FORMAT_RGBA_8888, + ISurfaceComposerClient::eFXSurfaceEffect); return std::make_unique<InputSurface>(surfaceControl, width, height); } diff --git a/libs/gui/tests/RegionSampling_test.cpp b/libs/gui/tests/RegionSampling_test.cpp index c9de37d957..dbd4ef9d7e 100644 --- a/libs/gui/tests/RegionSampling_test.cpp +++ b/libs/gui/tests/RegionSampling_test.cpp @@ -183,7 +183,7 @@ protected: mBackgroundLayer = mSurfaceComposerClient->createSurface(String8("Background RegionSamplingTest"), 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor); + ISurfaceComposerClient::eFXSurfaceEffect); uint32_t layerPositionBottom = 0x7E000000; SurfaceComposerClient::Transaction{} .setLayer(mBackgroundLayer, layerPositionBottom) diff --git a/libs/gui/tests/SamplingDemo.cpp b/libs/gui/tests/SamplingDemo.cpp index 9891587fe2..5c1bebb960 100644 --- a/libs/gui/tests/SamplingDemo.cpp +++ b/libs/gui/tests/SamplingDemo.cpp @@ -39,7 +39,7 @@ public: sp<SurfaceComposerClient> client = new SurfaceComposerClient; mButton = client->createSurface(String8(name), 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor); + ISurfaceComposerClient::eFXSurfaceEffect); const int32_t width = samplingArea.getWidth(); const int32_t height = samplingArea.getHeight(); @@ -55,7 +55,7 @@ public: .apply(); mButtonBlend = client->createSurface(String8(name) + "Blend", 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor); + ISurfaceComposerClient::eFXSurfaceEffect); SurfaceComposerClient::Transaction{} .setLayer(mButtonBlend, 0x7ffffffe) @@ -73,7 +73,7 @@ public: if (HIGHLIGHT_SAMPLING_AREA) { mSamplingArea = client->createSurface(String8("SamplingArea"), 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor); + ISurfaceComposerClient::eFXSurfaceEffect); SurfaceComposerClient::Transaction{} .setLayer(mSamplingArea, 0x7ffffffd) diff --git a/services/surfaceflinger/Android.bp b/services/surfaceflinger/Android.bp index 1b1e8890ab..4ffdf9761e 100644 --- a/services/surfaceflinger/Android.bp +++ b/services/surfaceflinger/Android.bp @@ -136,7 +136,7 @@ filegroup { "BufferStateLayer.cpp", "ClientCache.cpp", "Client.cpp", - "ColorLayer.cpp", + "EffectLayer.cpp", "ContainerLayer.cpp", "DisplayDevice.cpp", "DisplayHardware/ComposerHal.cpp", diff --git a/services/surfaceflinger/BufferStateLayer.cpp b/services/surfaceflinger/BufferStateLayer.cpp index 923a81c093..6e0d13a732 100644 --- a/services/surfaceflinger/BufferStateLayer.cpp +++ b/services/surfaceflinger/BufferStateLayer.cpp @@ -32,7 +32,7 @@ #include <private/gui/SyncFeatures.h> #include <renderengine/Image.h> -#include "ColorLayer.h" +#include "EffectLayer.h" #include "FrameTracer/FrameTracer.h" #include "TimeStats/TimeStats.h" diff --git a/services/surfaceflinger/ColorLayer.cpp b/services/surfaceflinger/EffectLayer.cpp index 83050c4774..e928c57929 100644 --- a/services/surfaceflinger/ColorLayer.cpp +++ b/services/surfaceflinger/EffectLayer.cpp @@ -20,9 +20,9 @@ // #define LOG_NDEBUG 0 #undef LOG_TAG -#define LOG_TAG "ColorLayer" +#define LOG_TAG "EffectLayer" -#include "ColorLayer.h" +#include "EffectLayer.h" #include <stdint.h> #include <stdlib.h> @@ -41,13 +41,13 @@ namespace android { // --------------------------------------------------------------------------- -ColorLayer::ColorLayer(const LayerCreationArgs& args) +EffectLayer::EffectLayer(const LayerCreationArgs& args) : Layer(args), mCompositionState{mFlinger->getCompositionEngine().createLayerFECompositionState()} {} -ColorLayer::~ColorLayer() = default; +EffectLayer::~EffectLayer() = default; -std::optional<compositionengine::LayerFE::LayerSettings> ColorLayer::prepareClientComposition( +std::optional<compositionengine::LayerFE::LayerSettings> EffectLayer::prepareClientComposition( compositionengine::LayerFE::ClientCompositionTargetSettings& targetSettings) { auto result = Layer::prepareClientComposition(targetSettings); if (!result) { @@ -57,11 +57,11 @@ std::optional<compositionengine::LayerFE::LayerSettings> ColorLayer::prepareClie return result; } -bool ColorLayer::isVisible() const { +bool EffectLayer::isVisible() const { return !isHiddenByPolicy() && getAlpha() > 0.0_hf; } -bool ColorLayer::setColor(const half3& color) { +bool EffectLayer::setColor(const half3& color) { if (mCurrentState.color.r == color.r && mCurrentState.color.g == color.g && mCurrentState.color.b == color.b) { return false; @@ -76,7 +76,7 @@ bool ColorLayer::setColor(const half3& color) { return true; } -bool ColorLayer::setDataspace(ui::Dataspace dataspace) { +bool EffectLayer::setDataspace(ui::Dataspace dataspace) { if (mCurrentState.dataspace == dataspace) { return false; } @@ -88,7 +88,7 @@ bool ColorLayer::setDataspace(ui::Dataspace dataspace) { return true; } -void ColorLayer::preparePerFrameCompositionState() { +void EffectLayer::preparePerFrameCompositionState() { Layer::preparePerFrameCompositionState(); auto* compositionState = editCompositionState(); @@ -96,30 +96,30 @@ void ColorLayer::preparePerFrameCompositionState() { compositionState->compositionType = Hwc2::IComposerClient::Composition::SOLID_COLOR; } -sp<compositionengine::LayerFE> ColorLayer::getCompositionEngineLayerFE() const { +sp<compositionengine::LayerFE> EffectLayer::getCompositionEngineLayerFE() const { return asLayerFE(); } -compositionengine::LayerFECompositionState* ColorLayer::editCompositionState() { +compositionengine::LayerFECompositionState* EffectLayer::editCompositionState() { return mCompositionState.get(); } -const compositionengine::LayerFECompositionState* ColorLayer::getCompositionState() const { +const compositionengine::LayerFECompositionState* EffectLayer::getCompositionState() const { return mCompositionState.get(); } -bool ColorLayer::isOpaque(const Layer::State& s) const { +bool EffectLayer::isOpaque(const Layer::State& s) const { // Consider the layer to be opaque if its opaque flag is set or its effective // alpha (considering the alpha of its parents as well) is 1.0; return (s.flags & layer_state_t::eLayerOpaque) != 0 || getAlpha() == 1.0_hf; } -ui::Dataspace ColorLayer::getDataSpace() const { +ui::Dataspace EffectLayer::getDataSpace() const { return mDrawingState.dataspace; } -sp<Layer> ColorLayer::createClone() { - sp<ColorLayer> layer = mFlinger->getFactory().createColorLayer( +sp<Layer> EffectLayer::createClone() { + sp<EffectLayer> layer = mFlinger->getFactory().createEffectLayer( LayerCreationArgs(mFlinger.get(), nullptr, mName + " (Mirror)", 0, 0, 0, LayerMetadata())); layer->setInitialValuesForClone(this); diff --git a/services/surfaceflinger/ColorLayer.h b/services/surfaceflinger/EffectLayer.h index 4deb162191..8694283760 100644 --- a/services/surfaceflinger/ColorLayer.h +++ b/services/surfaceflinger/EffectLayer.h @@ -23,15 +23,19 @@ namespace android { -class ColorLayer : public Layer { +// A layer that can render a combination of the following effects. +// * fill the bounds of the layer with a color +// * render a shadow cast by the bounds of the layer +// If no effects are enabled, the layer is considered to be invisible. +class EffectLayer : public Layer { public: - explicit ColorLayer(const LayerCreationArgs&); - ~ColorLayer() override; + explicit EffectLayer(const LayerCreationArgs&); + ~EffectLayer() override; sp<compositionengine::LayerFE> getCompositionEngineLayerFE() const override; compositionengine::LayerFECompositionState* editCompositionState() override; - const char* getType() const override { return "ColorLayer"; } + const char* getType() const override { return "EffectLayer"; } bool isVisible() const override; bool setColor(const half3& color) override; diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index effbed67b8..8eb5c22fa8 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -56,10 +56,10 @@ #include <sstream> #include "BufferLayer.h" -#include "ColorLayer.h" #include "Colorizer.h" #include "DisplayDevice.h" #include "DisplayHardware/HWComposer.h" +#include "EffectLayer.h" #include "FrameTracer/FrameTracer.h" #include "LayerProtoHelper.h" #include "LayerRejecter.h" @@ -165,7 +165,7 @@ LayerCreationArgs::LayerCreationArgs(SurfaceFlinger* flinger, const sp<Client> c /* * onLayerDisplayed is only meaningful for BufferLayer, but, is called through * Layer. So, the implementation is done in BufferLayer. When called on a - * ColorLayer object, it's essentially a NOP. + * EffectLayer object, it's essentially a NOP. */ void Layer::onLayerDisplayed(const sp<Fence>& /*releaseFence*/) {} @@ -1092,9 +1092,9 @@ bool Layer::setBackgroundColor(const half3& color, float alpha, ui::Dataspace da if (!mCurrentState.bgColorLayer && alpha != 0) { // create background color layer if one does not yet exist - uint32_t flags = ISurfaceComposerClient::eFXSurfaceColor; + uint32_t flags = ISurfaceComposerClient::eFXSurfaceEffect; std::string name = mName + "BackgroundColorLayer"; - mCurrentState.bgColorLayer = mFlinger->getFactory().createColorLayer( + mCurrentState.bgColorLayer = mFlinger->getFactory().createEffectLayer( LayerCreationArgs(mFlinger.get(), nullptr, std::move(name), 0, 0, flags, LayerMetadata())); diff --git a/services/surfaceflinger/Layer.h b/services/surfaceflinger/Layer.h index de4a08070c..a249726739 100644 --- a/services/surfaceflinger/Layer.h +++ b/services/surfaceflinger/Layer.h @@ -212,7 +212,7 @@ public: InputWindowInfo inputInfo; wp<Layer> touchableRegionCrop; - // dataspace is only used by BufferStateLayer and ColorLayer + // dataspace is only used by BufferStateLayer and EffectLayer ui::Dataspace dataspace; // The fields below this point are only used by BufferStateLayer diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index e8c7a55bc6..55166c0ab3 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -83,10 +83,10 @@ #include "BufferQueueLayer.h" #include "BufferStateLayer.h" #include "Client.h" -#include "ColorLayer.h" #include "Colorizer.h" #include "ContainerLayer.h" #include "DisplayDevice.h" +#include "EffectLayer.h" #include "Layer.h" #include "LayerVector.h" #include "MonitoredProducer.h" @@ -3694,7 +3694,7 @@ status_t SurfaceFlinger::createLayer(const String8& name, const sp<Client>& clie result = createBufferStateLayer(client, std::move(uniqueName), w, h, flags, std::move(metadata), handle, outTransformHint, &layer); break; - case ISurfaceComposerClient::eFXSurfaceColor: + case ISurfaceComposerClient::eFXSurfaceEffect: // check if buffer size is set for color layer. if (w > 0 || h > 0) { ALOGE("createLayer() failed, w or h cannot be set for color layer (w=%d, h=%d)", @@ -3702,8 +3702,8 @@ status_t SurfaceFlinger::createLayer(const String8& name, const sp<Client>& clie return BAD_VALUE; } - result = createColorLayer(client, std::move(uniqueName), w, h, flags, - std::move(metadata), handle, &layer); + result = createEffectLayer(client, std::move(uniqueName), w, h, flags, + std::move(metadata), handle, &layer); break; case ISurfaceComposerClient::eFXSurfaceContainer: // check if buffer size is set for container layer. @@ -3821,10 +3821,10 @@ status_t SurfaceFlinger::createBufferStateLayer(const sp<Client>& client, std::s return NO_ERROR; } -status_t SurfaceFlinger::createColorLayer(const sp<Client>& client, std::string name, uint32_t w, - uint32_t h, uint32_t flags, LayerMetadata metadata, - sp<IBinder>* handle, sp<Layer>* outLayer) { - *outLayer = getFactory().createColorLayer( +status_t SurfaceFlinger::createEffectLayer(const sp<Client>& client, std::string name, uint32_t w, + uint32_t h, uint32_t flags, LayerMetadata metadata, + sp<IBinder>* handle, sp<Layer>* outLayer) { + *outLayer = getFactory().createEffectLayer( {this, client, std::move(name), w, h, flags, std::move(metadata)}); *handle = (*outLayer)->getHandle(); return NO_ERROR; diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index ccf57946ab..3a48bdadff 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -648,9 +648,9 @@ private: sp<IBinder>* outHandle, uint32_t* outTransformHint, sp<Layer>* outLayer); - status_t createColorLayer(const sp<Client>& client, std::string name, uint32_t w, uint32_t h, - uint32_t flags, LayerMetadata metadata, sp<IBinder>* outHandle, - sp<Layer>* outLayer); + status_t createEffectLayer(const sp<Client>& client, std::string name, uint32_t w, uint32_t h, + uint32_t flags, LayerMetadata metadata, sp<IBinder>* outHandle, + sp<Layer>* outLayer); status_t createContainerLayer(const sp<Client>& client, std::string name, uint32_t w, uint32_t h, uint32_t flags, LayerMetadata metadata, diff --git a/services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp b/services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp index f9658a78d6..d49133d1fc 100644 --- a/services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp +++ b/services/surfaceflinger/SurfaceFlingerDefaultFactory.cpp @@ -25,9 +25,9 @@ #include "BufferLayerConsumer.h" #include "BufferQueueLayer.h" #include "BufferStateLayer.h" -#include "ColorLayer.h" #include "ContainerLayer.h" #include "DisplayDevice.h" +#include "EffectLayer.h" #include "Layer.h" #include "MonitoredProducer.h" #include "NativeWindowSurface.h" @@ -139,8 +139,8 @@ sp<BufferStateLayer> DefaultFactory::createBufferStateLayer(const LayerCreationA return new BufferStateLayer(args); } -sp<ColorLayer> DefaultFactory::createColorLayer(const LayerCreationArgs& args) { - return new ColorLayer(args); +sp<EffectLayer> DefaultFactory::createEffectLayer(const LayerCreationArgs& args) { + return new EffectLayer(args); } } // namespace android::surfaceflinger diff --git a/services/surfaceflinger/SurfaceFlingerDefaultFactory.h b/services/surfaceflinger/SurfaceFlingerDefaultFactory.h index 36fae217ce..89194c7ad1 100644 --- a/services/surfaceflinger/SurfaceFlingerDefaultFactory.h +++ b/services/surfaceflinger/SurfaceFlingerDefaultFactory.h @@ -55,7 +55,7 @@ public: std::unique_ptr<compositionengine::CompositionEngine> createCompositionEngine() override; sp<BufferQueueLayer> createBufferQueueLayer(const LayerCreationArgs& args) override; sp<BufferStateLayer> createBufferStateLayer(const LayerCreationArgs& args) override; - sp<ColorLayer> createColorLayer(const LayerCreationArgs& args) override; + sp<EffectLayer> createEffectLayer(const LayerCreationArgs& args) override; sp<ContainerLayer> createContainerLayer(const LayerCreationArgs& args) override; }; diff --git a/services/surfaceflinger/SurfaceFlingerFactory.h b/services/surfaceflinger/SurfaceFlingerFactory.h index 951bd09293..1eab3b1302 100644 --- a/services/surfaceflinger/SurfaceFlingerFactory.h +++ b/services/surfaceflinger/SurfaceFlingerFactory.h @@ -31,7 +31,7 @@ typedef int32_t PixelFormat; class BufferQueueLayer; class BufferStateLayer; class BufferLayerConsumer; -class ColorLayer; +class EffectLayer; class ContainerLayer; class DisplayDevice; class DispSync; @@ -104,7 +104,7 @@ public: virtual sp<BufferQueueLayer> createBufferQueueLayer(const LayerCreationArgs& args) = 0; virtual sp<BufferStateLayer> createBufferStateLayer(const LayerCreationArgs& args) = 0; - virtual sp<ColorLayer> createColorLayer(const LayerCreationArgs& args) = 0; + virtual sp<EffectLayer> createEffectLayer(const LayerCreationArgs& args) = 0; virtual sp<ContainerLayer> createContainerLayer(const LayerCreationArgs& args) = 0; protected: diff --git a/services/surfaceflinger/tests/LayerRenderTypeTransaction_test.cpp b/services/surfaceflinger/tests/LayerRenderTypeTransaction_test.cpp index 24874b010b..6c8eb27bd0 100644 --- a/services/surfaceflinger/tests/LayerRenderTypeTransaction_test.cpp +++ b/services/surfaceflinger/tests/LayerRenderTypeTransaction_test.cpp @@ -531,7 +531,7 @@ TEST_P(LayerRenderTypeTransactionTest, SetColorBasic) { ASSERT_NO_FATAL_FAILURE(fillBufferQueueLayerColor(bufferLayer, Color::RED, 32, 32)); ASSERT_NO_FATAL_FAILURE(colorLayer = createLayer("test", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor)); + ISurfaceComposerClient::eFXSurfaceEffect)); Transaction() .setCrop_legacy(colorLayer, Rect(0, 0, 32, 32)) @@ -570,7 +570,7 @@ void LayerRenderTypeTransactionTest::setBackgroundColorHelper(uint32_t layerType Color priorBgColor = Color::BLUE; Color expectedColor = Color::BLACK; switch (layerType) { - case ISurfaceComposerClient::eFXSurfaceColor: + case ISurfaceComposerClient::eFXSurfaceEffect: ASSERT_NO_FATAL_FAILURE(layer = createLayer("test", 0, 0, layerType)); Transaction() .setCrop_legacy(layer, Rect(0, 0, width, height)) @@ -599,7 +599,7 @@ void LayerRenderTypeTransactionTest::setBackgroundColorHelper(uint32_t layerType return; } - if (priorColor && layerType != ISurfaceComposerClient::eFXSurfaceColor) { + if (priorColor && layerType != ISurfaceComposerClient::eFXSurfaceEffect) { Transaction() .setBackgroundColor(layer, half3(0, 0, 1.0f), 1.0f, ui::Dataspace::UNKNOWN) .apply(); @@ -628,7 +628,7 @@ TEST_P(LayerRenderTypeTransactionTest, SetBackgroundColor_Color_NoEffect) { bool bufferFill = false; float alpha = 1.0f; Color finalColor = Color::RED; - ASSERT_NO_FATAL_FAILURE(setBackgroundColorHelper(ISurfaceComposerClient::eFXSurfaceColor, + ASSERT_NO_FATAL_FAILURE(setBackgroundColorHelper(ISurfaceComposerClient::eFXSurfaceEffect, priorColor, bufferFill, alpha, finalColor)); } @@ -744,7 +744,7 @@ TEST_P(LayerRenderTypeTransactionTest, SetColorClamped) { sp<SurfaceControl> colorLayer; ASSERT_NO_FATAL_FAILURE(colorLayer = createLayer("test", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor)); + ISurfaceComposerClient::eFXSurfaceEffect)); Transaction() .setCrop_legacy(colorLayer, Rect(0, 0, 32, 32)) .setColor(colorLayer, half3(2.0f, -1.0f, 0.0f)) @@ -760,7 +760,7 @@ TEST_P(LayerRenderTypeTransactionTest, SetColorWithAlpha) { ASSERT_NO_FATAL_FAILURE(fillBufferQueueLayerColor(bufferLayer, Color::RED, 32, 32)); ASSERT_NO_FATAL_FAILURE(colorLayer = createLayer("test", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor)); + ISurfaceComposerClient::eFXSurfaceEffect)); Transaction().setCrop_legacy(colorLayer, Rect(0, 0, 32, 32)).apply(); const half3 color(15.0f / 255.0f, 51.0f / 255.0f, 85.0f / 255.0f); @@ -787,7 +787,7 @@ TEST_P(LayerRenderTypeTransactionTest, SetColorWithParentAlpha_Bug74220420) { ASSERT_NO_FATAL_FAILURE(fillBufferQueueLayerColor(bufferLayer, Color::RED, 32, 32)); ASSERT_NO_FATAL_FAILURE(colorLayer = createLayer("childWithColor", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor)); + ISurfaceComposerClient::eFXSurfaceEffect)); Transaction().setCrop_legacy(colorLayer, Rect(0, 0, 32, 32)).apply(); const half3 color(15.0f / 255.0f, 51.0f / 255.0f, 85.0f / 255.0f); const float alpha = 0.25f; @@ -1663,7 +1663,7 @@ TEST_P(LayerRenderTypeTransactionTest, SetColorTransformBasic) { sp<SurfaceControl> colorLayer; ASSERT_NO_FATAL_FAILURE(colorLayer = createLayer("test", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor)); + ISurfaceComposerClient::eFXSurfaceEffect)); Transaction() .setCrop_legacy(colorLayer, Rect(0, 0, 32, 32)) .setLayer(colorLayer, mLayerZBase + 1) @@ -1719,7 +1719,7 @@ TEST_P(LayerRenderTypeTransactionTest, SetColorTransformOnParent) { ISurfaceComposerClient::eFXSurfaceContainer)); ASSERT_NO_FATAL_FAILURE( colorLayer = createLayer("test", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor, parentLayer.get())); + ISurfaceComposerClient::eFXSurfaceEffect, parentLayer.get())); Transaction() .setCrop_legacy(parentLayer, Rect(0, 0, 100, 100)) @@ -1780,7 +1780,7 @@ TEST_P(LayerRenderTypeTransactionTest, SetColorTransformOnChildAndParent) { ISurfaceComposerClient::eFXSurfaceContainer)); ASSERT_NO_FATAL_FAILURE( colorLayer = createLayer("test", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor, parentLayer.get())); + ISurfaceComposerClient::eFXSurfaceEffect, parentLayer.get())); Transaction() .setCrop_legacy(parentLayer, Rect(0, 0, 100, 100)) diff --git a/services/surfaceflinger/tests/LayerTransactionTest.h b/services/surfaceflinger/tests/LayerTransactionTest.h index 5eb1739219..932c7c86fa 100644 --- a/services/surfaceflinger/tests/LayerTransactionTest.h +++ b/services/surfaceflinger/tests/LayerTransactionTest.h @@ -89,7 +89,7 @@ protected: SurfaceControl* parent = nullptr) { auto colorLayer = createSurface(mClient, name, 0 /* buffer width */, 0 /* buffer height */, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor, parent); + ISurfaceComposerClient::eFXSurfaceEffect, parent); asTransaction([&](Transaction& t) { t.setColor(colorLayer, half3{color.r / 255.0f, color.g / 255.0f, color.b / 255.0f}); t.setAlpha(colorLayer, color.a / 255.0f); @@ -268,7 +268,7 @@ private: mBlackBgSurface = createSurface(mClient, "BaseSurface", 0 /* buffer width */, 0 /* buffer height */, - PIXEL_FORMAT_RGBA_8888, ISurfaceComposerClient::eFXSurfaceColor); + PIXEL_FORMAT_RGBA_8888, ISurfaceComposerClient::eFXSurfaceEffect); // set layer stack (b/68888219) Transaction t; diff --git a/services/surfaceflinger/tests/LayerTypeTransaction_test.cpp b/services/surfaceflinger/tests/LayerTypeTransaction_test.cpp index 7e9202bb82..84780ba73b 100644 --- a/services/surfaceflinger/tests/LayerTypeTransaction_test.cpp +++ b/services/surfaceflinger/tests/LayerTypeTransaction_test.cpp @@ -69,13 +69,13 @@ TEST_P(LayerTypeTransactionTest, SetRelativeZNegative) { TEST_P(LayerTypeTransactionTest, SetLayerAndRelative) { sp<SurfaceControl> parent = LayerTransactionTest::createLayer("Parent", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor); + ISurfaceComposerClient::eFXSurfaceEffect); sp<SurfaceControl> childLayer; ASSERT_NO_FATAL_FAILURE( childLayer = LayerTransactionTest::createLayer("childLayer", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor, + ISurfaceComposerClient::eFXSurfaceEffect, parent.get())); Transaction() .setColor(childLayer, half3{1.0f, 0.0f, 0.0f}) @@ -116,17 +116,17 @@ TEST_P(LayerTypeTransactionTest, SetLayerAndRelative) { TEST_P(LayerTypeTransactionTest, HideRelativeParentHidesLayer) { sp<SurfaceControl> parent = LayerTransactionTest::createLayer("Parent", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor); + ISurfaceComposerClient::eFXSurfaceEffect); sp<SurfaceControl> relativeParent = LayerTransactionTest::createLayer("RelativeParent", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor); + ISurfaceComposerClient::eFXSurfaceEffect); sp<SurfaceControl> childLayer; ASSERT_NO_FATAL_FAILURE( childLayer = LayerTransactionTest::createLayer("childLayer", 0 /* buffer width */, 0 /* buffer height */, - ISurfaceComposerClient::eFXSurfaceColor, + ISurfaceComposerClient::eFXSurfaceEffect, parent.get())); Transaction() .setColor(childLayer, half3{1.0f, 0.0f, 0.0f}) diff --git a/services/surfaceflinger/tests/LayerUpdate_test.cpp b/services/surfaceflinger/tests/LayerUpdate_test.cpp index a1c412801d..cf3f8e8865 100644 --- a/services/surfaceflinger/tests/LayerUpdate_test.cpp +++ b/services/surfaceflinger/tests/LayerUpdate_test.cpp @@ -1114,7 +1114,7 @@ TEST_F(BoundlessLayerTest, BufferLayerIgnoresSize) { TEST_F(BoundlessLayerTest, BoundlessColorLayerFillsParentBufferBounds) { sp<SurfaceControl> colorLayer = createSurface(mClient, "ColorLayer", 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor, mFGSurfaceControl.get()); + ISurfaceComposerClient::eFXSurfaceEffect, mFGSurfaceControl.get()); ASSERT_TRUE(colorLayer->isValid()); asTransaction([&](Transaction& t) { t.setColor(colorLayer, half3{0, 0, 0}); @@ -1139,7 +1139,7 @@ TEST_F(BoundlessLayerTest, BoundlessColorLayerFillsParentCropBounds) { ASSERT_TRUE(cropLayer->isValid()); sp<SurfaceControl> colorLayer = createSurface(mClient, "ColorLayer", 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor, cropLayer.get()); + ISurfaceComposerClient::eFXSurfaceEffect, cropLayer.get()); ASSERT_TRUE(colorLayer->isValid()); asTransaction([&](Transaction& t) { t.setCrop_legacy(cropLayer, Rect(5, 5, 10, 10)); @@ -1164,7 +1164,7 @@ TEST_F(BoundlessLayerTest, BoundlessColorLayerFillsParentCropBounds) { TEST_F(BoundlessLayerTest, BoundlessColorLayerTransformHasNoEffect) { sp<SurfaceControl> colorLayer = createSurface(mClient, "ColorLayer", 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor, mFGSurfaceControl.get()); + ISurfaceComposerClient::eFXSurfaceEffect, mFGSurfaceControl.get()); ASSERT_TRUE(colorLayer->isValid()); asTransaction([&](Transaction& t) { t.setPosition(colorLayer, 320, 320); @@ -1195,7 +1195,7 @@ TEST_F(BoundlessLayerTest, IntermediateBoundlessLayerCanSetTransform) { ASSERT_TRUE(boundlessLayerDownShift->isValid()); sp<SurfaceControl> colorLayer = createSurface(mClient, "ColorLayer", 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor, boundlessLayerDownShift.get()); + ISurfaceComposerClient::eFXSurfaceEffect, boundlessLayerDownShift.get()); ASSERT_TRUE(colorLayer->isValid()); asTransaction([&](Transaction& t) { t.setPosition(boundlessLayerRightShift, 32, 0); @@ -1229,7 +1229,7 @@ TEST_F(BoundlessLayerTest, IntermediateBoundlessLayerDoNotCrop) { ASSERT_TRUE(boundlessLayer->isValid()); sp<SurfaceControl> colorLayer = mClient->createSurface(String8("ColorLayer"), 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor, boundlessLayer.get()); + ISurfaceComposerClient::eFXSurfaceEffect, boundlessLayer.get()); ASSERT_TRUE(colorLayer != nullptr); ASSERT_TRUE(colorLayer->isValid()); asTransaction([&](Transaction& t) { @@ -1261,7 +1261,7 @@ TEST_F(BoundlessLayerTest, RootBoundlessLayerCanSetTransform) { ASSERT_TRUE(rootBoundlessLayer->isValid()); sp<SurfaceControl> colorLayer = createSurface(mClient, "ColorLayer", 0, 0, PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor, rootBoundlessLayer.get()); + ISurfaceComposerClient::eFXSurfaceEffect, rootBoundlessLayer.get()); ASSERT_TRUE(colorLayer->isValid()); asTransaction([&](Transaction& t) { diff --git a/services/surfaceflinger/tests/MultiDisplayLayerBounds_test.cpp b/services/surfaceflinger/tests/MultiDisplayLayerBounds_test.cpp index c9fdc3b799..f8a5b4094d 100644 --- a/services/surfaceflinger/tests/MultiDisplayLayerBounds_test.cpp +++ b/services/surfaceflinger/tests/MultiDisplayLayerBounds_test.cpp @@ -66,7 +66,7 @@ protected: void createColorLayer(uint32_t layerStack) { mColorLayer = createSurface(mClient, "ColorLayer", 0 /* buffer width */, 0 /* buffer height */, - PIXEL_FORMAT_RGBA_8888, ISurfaceComposerClient::eFXSurfaceColor); + PIXEL_FORMAT_RGBA_8888, ISurfaceComposerClient::eFXSurfaceEffect); ASSERT_TRUE(mColorLayer != nullptr); ASSERT_TRUE(mColorLayer->isValid()); asTransaction([&](Transaction& t) { diff --git a/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp b/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp index e75149653c..32c58ad390 100644 --- a/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp +++ b/services/surfaceflinger/tests/fakehwc/SFFakeHwc_test.cpp @@ -1827,10 +1827,11 @@ class ChildColorLayerTest : public ChildLayerTest<FakeComposerService> { protected: void SetUp() override { Base::SetUp(); - Base::mChild = Base::mComposerClient->createSurface(String8("Child surface"), 0, 0, - PIXEL_FORMAT_RGBA_8888, - ISurfaceComposerClient::eFXSurfaceColor, - Base::mFGSurfaceControl.get()); + Base::mChild = + Base::mComposerClient->createSurface(String8("Child surface"), 0, 0, + PIXEL_FORMAT_RGBA_8888, + ISurfaceComposerClient::eFXSurfaceEffect, + Base::mFGSurfaceControl.get()); { TransactionScope ts(*Base::sFakeComposer); ts.setColor(Base::mChild, diff --git a/services/surfaceflinger/tests/unittests/CompositionTest.cpp b/services/surfaceflinger/tests/unittests/CompositionTest.cpp index 888e009282..6e83166a80 100644 --- a/services/surfaceflinger/tests/unittests/CompositionTest.cpp +++ b/services/surfaceflinger/tests/unittests/CompositionTest.cpp @@ -35,7 +35,7 @@ #include <utils/String8.h> #include "BufferQueueLayer.h" -#include "ColorLayer.h" +#include "EffectLayer.h" #include "Layer.h" #include "TestableSurfaceFlinger.h" #include "mock/DisplayHardware/MockComposer.h" @@ -713,7 +713,7 @@ struct BaseLayerProperties { struct DefaultLayerProperties : public BaseLayerProperties<DefaultLayerProperties> {}; -struct ColorLayerProperties : public BaseLayerProperties<ColorLayerProperties> { +struct EffectLayerProperties : public BaseLayerProperties<EffectLayerProperties> { static constexpr IComposerClient::BlendMode BLENDMODE = IComposerClient::BlendMode::NONE; }; @@ -866,16 +866,16 @@ struct BaseLayerVariant { }; template <typename LayerProperties> -struct ColorLayerVariant : public BaseLayerVariant<LayerProperties> { +struct EffectLayerVariant : public BaseLayerVariant<LayerProperties> { using Base = BaseLayerVariant<LayerProperties>; - using FlingerLayerType = sp<ColorLayer>; + using FlingerLayerType = sp<EffectLayer>; static FlingerLayerType createLayer(CompositionTest* test) { - FlingerLayerType layer = Base::template createLayerWithFactory<ColorLayer>(test, [test]() { - return new ColorLayer(LayerCreationArgs(test->mFlinger.mFlinger.get(), sp<Client>(), - "test-layer", LayerProperties::WIDTH, - LayerProperties::HEIGHT, - LayerProperties::LAYER_FLAGS, LayerMetadata())); + FlingerLayerType layer = Base::template createLayerWithFactory<EffectLayer>(test, [test]() { + return new EffectLayer( + LayerCreationArgs(test->mFlinger.mFlinger.get(), sp<Client>(), "test-layer", + LayerProperties::WIDTH, LayerProperties::HEIGHT, + LayerProperties::LAYER_FLAGS, LayerMetadata())); }); auto& layerDrawingState = test->mFlinger.mutableLayerDrawingState(layer); @@ -1228,31 +1228,31 @@ TEST_F(CompositionTest, captureScreenNormalBufferLayer) { * Single-color layers */ -TEST_F(CompositionTest, HWCComposedColorLayerWithDirtyGeometry) { +TEST_F(CompositionTest, HWCComposedEffectLayerWithDirtyGeometry) { displayRefreshCompositionDirtyGeometry< - CompositionCase<DefaultDisplaySetupVariant, ColorLayerVariant<ColorLayerProperties>, + CompositionCase<DefaultDisplaySetupVariant, EffectLayerVariant<EffectLayerProperties>, KeepCompositionTypeVariant<IComposerClient::Composition::SOLID_COLOR>, HwcCompositionResultVariant>>(); } -TEST_F(CompositionTest, HWCComposedColorLayerWithDirtyFrame) { +TEST_F(CompositionTest, HWCComposedEffectLayerWithDirtyFrame) { displayRefreshCompositionDirtyFrame< - CompositionCase<DefaultDisplaySetupVariant, ColorLayerVariant<ColorLayerProperties>, + CompositionCase<DefaultDisplaySetupVariant, EffectLayerVariant<EffectLayerProperties>, KeepCompositionTypeVariant<IComposerClient::Composition::SOLID_COLOR>, HwcCompositionResultVariant>>(); } -TEST_F(CompositionTest, REComposedColorLayer) { +TEST_F(CompositionTest, REComposedEffectLayer) { displayRefreshCompositionDirtyFrame< - CompositionCase<DefaultDisplaySetupVariant, ColorLayerVariant<ColorLayerProperties>, + CompositionCase<DefaultDisplaySetupVariant, EffectLayerVariant<EffectLayerProperties>, ChangeCompositionTypeVariant<IComposerClient::Composition::SOLID_COLOR, IComposerClient::Composition::CLIENT>, RECompositionResultVariant>>(); } -TEST_F(CompositionTest, captureScreenColorLayer) { +TEST_F(CompositionTest, captureScreenEffectLayer) { captureScreenComposition< - CompositionCase<DefaultDisplaySetupVariant, ColorLayerVariant<ColorLayerProperties>, + CompositionCase<DefaultDisplaySetupVariant, EffectLayerVariant<EffectLayerProperties>, NoCompositionTypeVariant, REScreenshotResultVariant>>(); } diff --git a/services/surfaceflinger/tests/unittests/RefreshRateSelectionTest.cpp b/services/surfaceflinger/tests/unittests/RefreshRateSelectionTest.cpp index cffdc14df7..edd9de46ab 100644 --- a/services/surfaceflinger/tests/unittests/RefreshRateSelectionTest.cpp +++ b/services/surfaceflinger/tests/unittests/RefreshRateSelectionTest.cpp @@ -27,7 +27,7 @@ #include "BufferQueueLayer.h" #include "BufferStateLayer.h" -#include "ColorLayer.h" +#include "EffectLayer.h" #include "Layer.h" #include "TestableSurfaceFlinger.h" #include "mock/DisplayHardware/MockComposer.h" @@ -68,7 +68,7 @@ protected: void setupComposer(int virtualDisplayCount); sp<BufferQueueLayer> createBufferQueueLayer(); sp<BufferStateLayer> createBufferStateLayer(); - sp<ColorLayer> createColorLayer(); + sp<EffectLayer> createEffectLayer(); void setParent(Layer* child, Layer* parent); void commitTransaction(Layer* layer); @@ -111,11 +111,11 @@ sp<BufferStateLayer> RefreshRateSelectionTest::createBufferStateLayer() { return new BufferStateLayer(args); } -sp<ColorLayer> RefreshRateSelectionTest::createColorLayer() { +sp<EffectLayer> RefreshRateSelectionTest::createEffectLayer() { sp<Client> client; LayerCreationArgs args(mFlinger.flinger(), client, "color-layer", WIDTH, HEIGHT, LAYER_FLAGS, LayerMetadata()); - return new ColorLayer(args); + return new EffectLayer(args); } void RefreshRateSelectionTest::setParent(Layer* child, Layer* parent) { @@ -244,11 +244,11 @@ TEST_F(RefreshRateSelectionTest, testPriorityOnBufferStateLayers) { ASSERT_EQ(1, mGrandChild->getFrameRateSelectionPriority()); } -TEST_F(RefreshRateSelectionTest, testPriorityOnColorLayers) { - mParent = createColorLayer(); - mChild = createColorLayer(); +TEST_F(RefreshRateSelectionTest, testPriorityOnEffectLayers) { + mParent = createEffectLayer(); + mChild = createEffectLayer(); setParent(mChild.get(), mParent.get()); - mGrandChild = createColorLayer(); + mGrandChild = createEffectLayer(); setParent(mGrandChild.get(), mChild.get()); ASSERT_EQ(PRIORITY_UNSET, mParent->getFrameRateSelectionPriority()); diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h index 798ba766fc..685cfaf450 100644 --- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h @@ -25,9 +25,9 @@ #include "BufferQueueLayer.h" #include "BufferStateLayer.h" -#include "ColorLayer.h" #include "ContainerLayer.h" #include "DisplayDevice.h" +#include "EffectLayer.h" #include "FakePhaseOffsets.h" #include "Layer.h" #include "NativeWindowSurface.h" @@ -147,9 +147,7 @@ public: return nullptr; } - sp<ColorLayer> createColorLayer(const LayerCreationArgs&) override { - return nullptr; - } + sp<EffectLayer> createEffectLayer(const LayerCreationArgs&) override { return nullptr; } sp<ContainerLayer> createContainerLayer(const LayerCreationArgs&) override { return nullptr; |