diff options
author | 2020-08-10 18:33:24 +0000 | |
---|---|---|
committer | 2020-08-10 18:33:24 +0000 | |
commit | de7a38f44ba8397a0ce38d00ffe12518f837e7ce (patch) | |
tree | c8a979ee828287b5aa6dcad1e9d238f3f19cb109 | |
parent | 772bb8f14c633f53dab83299516d704927f83a6d (diff) | |
parent | c6ad8afa768607852a1ad2c937b4687e947d6fca (diff) |
Merge "Remove rotation and use flag useIdentityTransform for screenshots."
-rw-r--r-- | libs/gui/LayerState.cpp | 10 | ||||
-rw-r--r-- | libs/gui/include/gui/LayerState.h | 1 | ||||
-rw-r--r-- | services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h | 6 | ||||
-rw-r--r-- | services/surfaceflinger/CompositionEngine/src/Output.cpp | 2 | ||||
-rw-r--r-- | services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp | 21 | ||||
-rw-r--r-- | services/surfaceflinger/DisplayRenderArea.cpp | 70 | ||||
-rw-r--r-- | services/surfaceflinger/DisplayRenderArea.h | 4 | ||||
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 8 | ||||
-rw-r--r-- | services/surfaceflinger/RegionSamplingThread.cpp | 3 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.cpp | 53 | ||||
-rw-r--r-- | services/surfaceflinger/SurfaceFlinger.h | 11 | ||||
-rw-r--r-- | services/surfaceflinger/tests/LayerState_test.cpp | 2 | ||||
-rw-r--r-- | services/surfaceflinger/tests/unittests/CompositionTest.cpp | 3 | ||||
-rw-r--r-- | services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h | 9 |
14 files changed, 41 insertions, 162 deletions
diff --git a/libs/gui/LayerState.cpp b/libs/gui/LayerState.cpp index d07d4352ec..7742503575 100644 --- a/libs/gui/LayerState.cpp +++ b/libs/gui/LayerState.cpp @@ -532,23 +532,17 @@ status_t DisplayCaptureArgs::write(Parcel& output) const { status |= output.writeStrongBinder(displayToken) ?: output.writeUint32(width) ?: output.writeUint32(height) ?: - output.writeBool(useIdentityTransform) ?: - output.writeInt32(static_cast<int32_t>(rotation)); + output.writeBool(useIdentityTransform); return status; } status_t DisplayCaptureArgs::read(const Parcel& input) { status_t status = CaptureArgs::read(input); - int32_t rotationInt = 0; - status |= input.readStrongBinder(&displayToken) ?: input.readUint32(&width) ?: input.readUint32(&height) ?: - input.readBool(&useIdentityTransform) ?: - input.readInt32(&rotationInt); - - rotation = ui::toRotation(rotationInt); + input.readBool(&useIdentityTransform); return status; } diff --git a/libs/gui/include/gui/LayerState.h b/libs/gui/include/gui/LayerState.h index 387ddea2bf..6a304ef2d8 100644 --- a/libs/gui/include/gui/LayerState.h +++ b/libs/gui/include/gui/LayerState.h @@ -332,7 +332,6 @@ struct DisplayCaptureArgs : CaptureArgs { uint32_t width{0}; uint32_t height{0}; bool useIdentityTransform{false}; - ui::Rotation rotation{ui::ROTATION_0}; status_t write(Parcel& output) const override; status_t read(const Parcel& input) override; diff --git a/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h b/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h index 6cc90cb3ee..5c7f12dd3d 100644 --- a/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h +++ b/services/surfaceflinger/CompositionEngine/include/compositionengine/LayerFE.h @@ -80,10 +80,6 @@ public: // The clip region, or visible region that is being rendered to const Region& clip; - // If true, the layer should use an identity transform for its position - // transform. Used only by the captureScreen API call. - const bool useIdentityTransform; - // If set to true, the layer should enable filtering when rendering. const bool needsFiltering; @@ -148,7 +144,6 @@ using LayerFESet = std::unordered_set<sp<LayerFE>, LayerFESpHash>; static inline bool operator==(const LayerFE::ClientCompositionTargetSettings& lhs, const LayerFE::ClientCompositionTargetSettings& rhs) { return lhs.clip.hasSameRects(rhs.clip) && - lhs.useIdentityTransform == rhs.useIdentityTransform && lhs.needsFiltering == rhs.needsFiltering && lhs.isSecure == rhs.isSecure && lhs.supportsProtectedContent == rhs.supportsProtectedContent && lhs.clearRegion.hasSameRects(rhs.clearRegion) && lhs.viewport == rhs.viewport && @@ -170,7 +165,6 @@ static inline void PrintTo(const LayerFE::ClientCompositionTargetSettings& setti *os << "ClientCompositionTargetSettings{"; *os << "\n .clip = \n"; PrintTo(settings.clip, os); - *os << "\n .useIdentityTransform = " << settings.useIdentityTransform; *os << "\n .needsFiltering = " << settings.needsFiltering; *os << "\n .isSecure = " << settings.isSecure; *os << "\n .supportsProtectedContent = " << settings.supportsProtectedContent; diff --git a/services/surfaceflinger/CompositionEngine/src/Output.cpp b/services/surfaceflinger/CompositionEngine/src/Output.cpp index 09b3dd7053..670b969e17 100644 --- a/services/surfaceflinger/CompositionEngine/src/Output.cpp +++ b/services/surfaceflinger/CompositionEngine/src/Output.cpp @@ -946,7 +946,6 @@ std::vector<LayerFE::LayerSettings> Output::generateClientCompositionRequests( const auto& outputState = getState(); const Region viewportRegion(outputState.viewport); - const bool useIdentityTransform = false; bool firstLayer = true; // Used when a layer clears part of the buffer. Region stubRegion; @@ -984,7 +983,6 @@ std::vector<LayerFE::LayerSettings> Output::generateClientCompositionRequests( if (clientComposition || clearClientComposition) { compositionengine::LayerFE::ClientCompositionTargetSettings targetSettings{ clip, - useIdentityTransform, layer->needsFiltering() || outputState.needsFiltering, outputState.isSecure, supportsProtectedContent, diff --git a/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp b/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp index 6ba06a632c..fdaf907e8a 100644 --- a/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp +++ b/services/surfaceflinger/CompositionEngine/tests/OutputTest.cpp @@ -3579,7 +3579,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, clearsHWCLayersIfOpaqu compositionengine::LayerFE::ClientCompositionTargetSettings layer1TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3591,7 +3590,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, clearsHWCLayersIfOpaqu }; compositionengine::LayerFE::ClientCompositionTargetSettings layer2TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3635,7 +3633,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, compositionengine::LayerFE::ClientCompositionTargetSettings layer0TargetSettings{ Region(Rect(10, 10, 20, 20)), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3647,7 +3644,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer1TargetSettings{ Region(Rect(0, 0, 30, 30)), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3659,7 +3655,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer2TargetSettings{ Region(Rect(0, 0, 40, 201)), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3691,7 +3686,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, compositionengine::LayerFE::ClientCompositionTargetSettings layer0TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ true, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3703,7 +3697,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer1TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3715,7 +3708,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer2TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3747,7 +3739,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, compositionengine::LayerFE::ClientCompositionTargetSettings layer0TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ true, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3760,7 +3751,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer1TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ true, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3772,7 +3762,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer2TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ true, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -3803,7 +3792,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, compositionengine::LayerFE::ClientCompositionTargetSettings layer0TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ true, /* secure */ false, /* supports protected content */ @@ -3815,7 +3803,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer1TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ true, /* secure */ false, /* supports protected content */ @@ -3827,7 +3814,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer2TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ true, /* secure */ false, /* supports protected content */ @@ -3856,7 +3842,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, compositionengine::LayerFE::ClientCompositionTargetSettings layer0TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ true, /* supports protected content */ @@ -3868,7 +3853,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer1TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ true, /* supports protected content */ @@ -3880,7 +3864,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, }; compositionengine::LayerFE::ClientCompositionTargetSettings layer2TargetSettings{ Region(kDisplayFrame), - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ true, /* supports protected content */ @@ -3972,7 +3955,6 @@ TEST_F(GenerateClientCompositionRequestsTest, handlesLandscapeModeSplitScreenReq compositionengine::LayerFE::ClientCompositionTargetSettings leftLayerSettings{ Region(Rect(0, 0, 1000, 1000)), - false, /* identity transform */ false, /* needs filtering */ true, /* secure */ true, /* supports protected content */ @@ -3990,7 +3972,6 @@ TEST_F(GenerateClientCompositionRequestsTest, handlesLandscapeModeSplitScreenReq compositionengine::LayerFE::ClientCompositionTargetSettings rightLayerSettings{ Region(Rect(1000, 0, 2000, 1000)), - false, /* identity transform */ false, /* needs filtering */ true, /* secure */ true, /* supports protected content */ @@ -4024,7 +4005,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, Region accumClearRegion(Rect(10, 11, 12, 13)); compositionengine::LayerFE::ClientCompositionTargetSettings layer2Settings{ Region(Rect(60, 40, 70, 80)).merge(Rect(40, 80, 70, 90)), /* visible region */ - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ false, /* supports protected content */ @@ -4070,7 +4050,6 @@ TEST_F(GenerateClientCompositionRequestsTest_ThreeLayers, Region accumClearRegion(Rect(10, 11, 12, 13)); compositionengine::LayerFE::ClientCompositionTargetSettings layer2Settings{ Region(Rect(50, 40, 70, 80)).merge(Rect(40, 80, 70, 90)), /* visible region */ - false, /* identity transform */ false, /* needs filtering */ false, /* secure */ false, /* supports protected content */ diff --git a/services/surfaceflinger/DisplayRenderArea.cpp b/services/surfaceflinger/DisplayRenderArea.cpp index 4bae669d7c..d7157b1607 100644 --- a/services/surfaceflinger/DisplayRenderArea.cpp +++ b/services/surfaceflinger/DisplayRenderArea.cpp @@ -20,49 +20,14 @@ namespace android { namespace { -RenderArea::RotationFlags applyDeviceOrientation(RenderArea::RotationFlags rotation, +RenderArea::RotationFlags applyDeviceOrientation(bool useIdentityTransform, const DisplayDevice& display) { - uint32_t inverseRotate90 = 0; - uint32_t inverseReflect = 0; - - // Reverse the logical orientation. - ui::Rotation logicalOrientation = display.getOrientation(); - if (logicalOrientation == ui::Rotation::Rotation90) { - logicalOrientation = ui::Rotation::Rotation270; - } else if (logicalOrientation == ui::Rotation::Rotation270) { - logicalOrientation = ui::Rotation::Rotation90; + if (!useIdentityTransform) { + return RenderArea::RotationFlags::ROT_0; } - const ui::Rotation orientation = display.getPhysicalOrientation() + logicalOrientation; - - switch (orientation) { - case ui::ROTATION_0: - return rotation; - - case ui::ROTATION_90: - inverseRotate90 = ui::Transform::ROT_90; - inverseReflect = ui::Transform::ROT_180; - break; - - case ui::ROTATION_180: - inverseReflect = ui::Transform::ROT_180; - break; - - case ui::ROTATION_270: - inverseRotate90 = ui::Transform::ROT_90; - break; - } - - const uint32_t rotate90 = rotation & ui::Transform::ROT_90; - uint32_t reflect = rotation & ui::Transform::ROT_180; - - // Apply reflection for double rotation. - if (rotate90 & inverseRotate90) { - reflect = ~reflect & ui::Transform::ROT_180; - } - - return static_cast<RenderArea::RotationFlags>((rotate90 ^ inverseRotate90) | - (reflect ^ inverseReflect)); + const ui::Rotation orientation = display.getPhysicalOrientation() + display.getOrientation(); + return ui::Transform::toRotationFlags(orientation); } } // namespace @@ -70,22 +35,22 @@ RenderArea::RotationFlags applyDeviceOrientation(RenderArea::RotationFlags rotat std::unique_ptr<RenderArea> DisplayRenderArea::create(wp<const DisplayDevice> displayWeak, const Rect& sourceCrop, ui::Size reqSize, ui::Dataspace reqDataSpace, - RotationFlags rotation, + bool useIdentityTransform, bool allowSecureLayers) { if (auto display = displayWeak.promote()) { // Using new to access a private constructor. return std::unique_ptr<DisplayRenderArea>( new DisplayRenderArea(std::move(display), sourceCrop, reqSize, reqDataSpace, - rotation, allowSecureLayers)); + useIdentityTransform, allowSecureLayers)); } return nullptr; } DisplayRenderArea::DisplayRenderArea(sp<const DisplayDevice> display, const Rect& sourceCrop, ui::Size reqSize, ui::Dataspace reqDataSpace, - RotationFlags rotation, bool allowSecureLayers) + bool useIdentityTransform, bool allowSecureLayers) : RenderArea(reqSize, CaptureFill::OPAQUE, reqDataSpace, display->getViewport(), - allowSecureLayers, applyDeviceOrientation(rotation, *display)), + allowSecureLayers, applyDeviceOrientation(useIdentityTransform, *display)), mDisplay(std::move(display)), mSourceCrop(sourceCrop) {} @@ -131,18 +96,11 @@ Rect DisplayRenderArea::getSourceCrop() const { return mDisplay->getViewport(); } - // If there is a source crop provided then it is assumed that the device - // was in portrait orientation. This may not logically be true, so - // correct for the orientation error by undoing the rotation - - ui::Rotation logicalOrientation = mDisplay->getOrientation(); - if (logicalOrientation == ui::Rotation::Rotation90) { - logicalOrientation = ui::Rotation::Rotation270; - } else if (logicalOrientation == ui::Rotation::Rotation270) { - logicalOrientation = ui::Rotation::Rotation90; - } - - const auto flags = ui::Transform::toRotationFlags(logicalOrientation); + // Correct for the orientation when the screen capture request contained + // useIdentityTransform. This will cause the rotation flag to be non 0 since + // it needs to rotate based on the screen orientation to allow the screenshot + // to be taken in the ROT_0 orientation + const auto flags = getRotationFlags(); int width = mDisplay->getViewport().getWidth(); int height = mDisplay->getViewport().getHeight(); ui::Transform rotation; diff --git a/services/surfaceflinger/DisplayRenderArea.h b/services/surfaceflinger/DisplayRenderArea.h index 8840973a5a..3478fc16c4 100644 --- a/services/surfaceflinger/DisplayRenderArea.h +++ b/services/surfaceflinger/DisplayRenderArea.h @@ -29,7 +29,7 @@ class DisplayRenderArea : public RenderArea { public: static std::unique_ptr<RenderArea> create(wp<const DisplayDevice>, const Rect& sourceCrop, ui::Size reqSize, ui::Dataspace, - RotationFlags rotation, + bool useIdentityTransform, bool allowSecureLayers = true); const ui::Transform& getTransform() const override; @@ -43,7 +43,7 @@ public: private: DisplayRenderArea(sp<const DisplayDevice>, const Rect& sourceCrop, ui::Size reqSize, - ui::Dataspace, RotationFlags rotation, bool allowSecureLayers = true); + ui::Dataspace, bool useIdentityTransform, bool allowSecureLayers = true); const sp<const DisplayDevice> mDisplay; const Rect mSourceCrop; diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 9fae1a8c06..eb33175b0e 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -620,7 +620,7 @@ const char* Layer::getDebugName() const { // --------------------------------------------------------------------------- std::optional<compositionengine::LayerFE::LayerSettings> Layer::prepareClientComposition( - compositionengine::LayerFE::ClientCompositionTargetSettings& targetSettings) { + compositionengine::LayerFE::ClientCompositionTargetSettings& /* targetSettings */) { if (!getCompositionState()) { return {}; } @@ -630,11 +630,7 @@ std::optional<compositionengine::LayerFE::LayerSettings> Layer::prepareClientCom compositionengine::LayerFE::LayerSettings layerSettings; layerSettings.geometry.boundaries = bounds; - if (targetSettings.useIdentityTransform) { - layerSettings.geometry.positionTransform = mat4(); - } else { - layerSettings.geometry.positionTransform = getTransform().asMatrix4(); - } + layerSettings.geometry.positionTransform = getTransform().asMatrix4(); if (hasColorTransform()) { layerSettings.colorTransform = getColorTransform(); diff --git a/services/surfaceflinger/RegionSamplingThread.cpp b/services/surfaceflinger/RegionSamplingThread.cpp index 4e841e9be6..0157a7f576 100644 --- a/services/surfaceflinger/RegionSamplingThread.cpp +++ b/services/surfaceflinger/RegionSamplingThread.cpp @@ -444,8 +444,7 @@ void RegionSamplingThread::captureSample() { ScreenCaptureResults captureResults; mFlinger.captureScreenCommon(std::move(renderAreaFuture), traverseLayers, buffer, - false /* identityTransform */, true /* regionSampling */, - captureResults); + true /* regionSampling */, captureResults); std::vector<Descriptor> activeDescriptors; for (const auto& descriptor : descriptors) { diff --git a/services/surfaceflinger/SurfaceFlinger.cpp b/services/surfaceflinger/SurfaceFlinger.cpp index 6fae56aedb..ca9f6296d9 100644 --- a/services/surfaceflinger/SurfaceFlinger.cpp +++ b/services/surfaceflinger/SurfaceFlinger.cpp @@ -5465,12 +5465,6 @@ status_t SurfaceFlinger::captureDisplay(const DisplayCaptureArgs& args, if (!args.displayToken) return BAD_VALUE; - auto renderAreaRotation = ui::Transform::toRotationFlags(args.rotation); - if (renderAreaRotation == ui::Transform::ROT_INVALID) { - ALOGE("%s: Invalid rotation: %s", __FUNCTION__, toCString(args.rotation)); - renderAreaRotation = ui::Transform::ROT_0; - } - wp<DisplayDevice> displayWeak; ui::LayerStack layerStack; ui::Size reqSize(args.width, args.height); @@ -5494,14 +5488,14 @@ status_t SurfaceFlinger::captureDisplay(const DisplayCaptureArgs& args, RenderAreaFuture renderAreaFuture = promise::defer([=] { return DisplayRenderArea::create(displayWeak, args.sourceCrop, reqSize, dataspace, - renderAreaRotation, args.captureSecureLayers); + args.useIdentityTransform, args.captureSecureLayers); }); auto traverseLayers = [this, args, layerStack](const LayerVector::Visitor& visitor) { traverseLayersInLayerStack(layerStack, args.uid, visitor); }; return captureScreenCommon(std::move(renderAreaFuture), traverseLayers, reqSize, - args.pixelFormat, args.useIdentityTransform, captureResults); + args.pixelFormat, captureResults); } status_t SurfaceFlinger::setSchedFifo(bool enabled) { @@ -5548,7 +5542,6 @@ status_t SurfaceFlinger::captureDisplay(uint64_t displayOrLayerStack, ui::LayerStack layerStack; wp<DisplayDevice> displayWeak; ui::Size size; - ui::Transform::RotationFlags captureOrientation; ui::Dataspace dataspace; { Mutex::Autolock lock(mStateLock); @@ -5561,33 +5554,14 @@ status_t SurfaceFlinger::captureDisplay(uint64_t displayOrLayerStack, size = display->getViewport().getSize(); - const auto orientation = display->getOrientation(); - captureOrientation = ui::Transform::toRotationFlags(orientation); - - switch (captureOrientation) { - case ui::Transform::ROT_90: - captureOrientation = ui::Transform::ROT_270; - break; - - case ui::Transform::ROT_270: - captureOrientation = ui::Transform::ROT_90; - break; - - case ui::Transform::ROT_INVALID: - ALOGE("%s: Invalid orientation: %s", __FUNCTION__, toCString(orientation)); - captureOrientation = ui::Transform::ROT_0; - break; - - default: - break; - } dataspace = pickDataspaceFromColorMode(display->getCompositionDisplay()->getState().colorMode); } RenderAreaFuture renderAreaFuture = promise::defer([=] { return DisplayRenderArea::create(displayWeak, Rect(), size, - captureResults.capturedDataspace, captureOrientation, + captureResults.capturedDataspace, + false /* useIdentityTransform */, false /* captureSecureLayers */); }); @@ -5596,8 +5570,7 @@ status_t SurfaceFlinger::captureDisplay(uint64_t displayOrLayerStack, }; return captureScreenCommon(std::move(renderAreaFuture), traverseLayers, size, - ui::PixelFormat::RGBA_8888, false /* useIdentityTransform */, - captureResults); + ui::PixelFormat::RGBA_8888, captureResults); } status_t SurfaceFlinger::captureLayers(const LayerCaptureArgs& args, @@ -5711,13 +5684,12 @@ status_t SurfaceFlinger::captureLayers(const LayerCaptureArgs& args, }; return captureScreenCommon(std::move(renderAreaFuture), traverseLayers, reqSize, - args.pixelFormat, false, captureResults); + args.pixelFormat, captureResults); } status_t SurfaceFlinger::captureScreenCommon(RenderAreaFuture renderAreaFuture, TraverseLayersFunction traverseLayers, ui::Size bufferSize, ui::PixelFormat reqPixelFormat, - bool useIdentityTransform, ScreenCaptureResults& captureResults) { ATRACE_CALL(); @@ -5730,13 +5702,12 @@ status_t SurfaceFlinger::captureScreenCommon(RenderAreaFuture renderAreaFuture, 1 /* layerCount */, usage, "screenshot"); return captureScreenCommon(std::move(renderAreaFuture), traverseLayers, buffer, - useIdentityTransform, false /* regionSampling */, captureResults); + false /* regionSampling */, captureResults); } status_t SurfaceFlinger::captureScreenCommon(RenderAreaFuture renderAreaFuture, TraverseLayersFunction traverseLayers, - const sp<GraphicBuffer>& buffer, - bool useIdentityTransform, bool regionSampling, + const sp<GraphicBuffer>& buffer, bool regionSampling, ScreenCaptureResults& captureResults) { const int uid = IPCThreadState::self()->getCallingUid(); const bool forSystem = uid == AID_GRAPHICS || uid == AID_SYSTEM; @@ -5763,8 +5734,8 @@ status_t SurfaceFlinger::captureScreenCommon(RenderAreaFuture renderAreaFuture, Mutex::Autolock lock(mStateLock); renderArea->render([&] { result = renderScreenImplLocked(*renderArea, traverseLayers, buffer.get(), - useIdentityTransform, forSystem, &fd, - regionSampling, captureResults); + forSystem, &fd, regionSampling, + captureResults); }); return {result, fd}; @@ -5781,8 +5752,7 @@ status_t SurfaceFlinger::captureScreenCommon(RenderAreaFuture renderAreaFuture, status_t SurfaceFlinger::renderScreenImplLocked(const RenderArea& renderArea, TraverseLayersFunction traverseLayers, - const sp<GraphicBuffer>& buffer, - bool useIdentityTransform, bool forSystem, + const sp<GraphicBuffer>& buffer, bool forSystem, int* outSyncFd, bool regionSampling, ScreenCaptureResults& captureResults) { ATRACE_CALL(); @@ -5840,7 +5810,6 @@ status_t SurfaceFlinger::renderScreenImplLocked(const RenderArea& renderArea, Region clip(renderArea.getBounds()); compositionengine::LayerFE::ClientCompositionTargetSettings targetSettings{ clip, - useIdentityTransform, layer->needsFilteringForScreenshots(display.get(), transform) || renderArea.needsFiltering(), renderArea.isSecure(), diff --git a/services/surfaceflinger/SurfaceFlinger.h b/services/surfaceflinger/SurfaceFlinger.h index a1b9b14647..1acfda9916 100644 --- a/services/surfaceflinger/SurfaceFlinger.h +++ b/services/surfaceflinger/SurfaceFlinger.h @@ -719,15 +719,12 @@ private: status_t renderScreenImplLocked(const RenderArea& renderArea, TraverseLayersFunction traverseLayers, - const sp<GraphicBuffer>& buffer, bool useIdentityTransform, - bool forSystem, int* outSyncFd, bool regionSampling, - ScreenCaptureResults& captureResults); + const sp<GraphicBuffer>& buffer, bool forSystem, int* outSyncFd, + bool regionSampling, ScreenCaptureResults& captureResults); status_t captureScreenCommon(RenderAreaFuture, TraverseLayersFunction, ui::Size bufferSize, - ui::PixelFormat, bool useIdentityTransform, - ScreenCaptureResults& captureResults); + ui::PixelFormat, ScreenCaptureResults& captureResults); status_t captureScreenCommon(RenderAreaFuture, TraverseLayersFunction, const sp<GraphicBuffer>&, - bool useIdentityTransform, bool regionSampling, - ScreenCaptureResults& captureResults); + bool regionSampling, ScreenCaptureResults& captureResults); sp<DisplayDevice> getDisplayByIdOrLayerStack(uint64_t displayOrLayerStack) REQUIRES(mStateLock); sp<DisplayDevice> getDisplayByLayerStack(uint64_t layerStack) REQUIRES(mStateLock); diff --git a/services/surfaceflinger/tests/LayerState_test.cpp b/services/surfaceflinger/tests/LayerState_test.cpp index 8a49e77848..785c2c3bc9 100644 --- a/services/surfaceflinger/tests/LayerState_test.cpp +++ b/services/surfaceflinger/tests/LayerState_test.cpp @@ -34,7 +34,6 @@ TEST(LayerStateTest, ParcellingDisplayCaptureArgs) { args.width = 10; args.height = 20; args.useIdentityTransform = true; - args.rotation = ui::ROTATION_90; Parcel p; args.write(p); @@ -51,7 +50,6 @@ TEST(LayerStateTest, ParcellingDisplayCaptureArgs) { ASSERT_EQ(args.width, args2.width); ASSERT_EQ(args.height, args2.height); ASSERT_EQ(args.useIdentityTransform, args2.useIdentityTransform); - ASSERT_EQ(args.rotation, args2.rotation); } TEST(LayerStateTest, ParcellingLayerCaptureArgs) { diff --git a/services/surfaceflinger/tests/unittests/CompositionTest.cpp b/services/surfaceflinger/tests/unittests/CompositionTest.cpp index dc8b31e821..4843f059dc 100644 --- a/services/surfaceflinger/tests/unittests/CompositionTest.cpp +++ b/services/surfaceflinger/tests/unittests/CompositionTest.cpp @@ -233,7 +233,6 @@ void CompositionTest::captureScreenComposition() { LayerCase::setupForScreenCapture(this); const Rect sourceCrop(0, 0, DEFAULT_DISPLAY_WIDTH, DEFAULT_DISPLAY_HEIGHT); - constexpr bool useIdentityTransform = true; constexpr bool forSystem = true; constexpr bool regionSampling = false; @@ -254,7 +253,7 @@ void CompositionTest::captureScreenComposition() { int fd = -1; status_t result = mFlinger.renderScreenImplLocked(*renderArea, traverseLayers, mCaptureScreenBuffer.get(), - useIdentityTransform, forSystem, &fd, regionSampling); + forSystem, &fd, regionSampling); if (fd >= 0) { close(fd); } diff --git a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h index 8972907b83..b349144729 100644 --- a/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h +++ b/services/surfaceflinger/tests/unittests/TestableSurfaceFlinger.h @@ -335,12 +335,11 @@ public: auto renderScreenImplLocked(const RenderArea& renderArea, SurfaceFlinger::TraverseLayersFunction traverseLayers, - const sp<GraphicBuffer>& buffer, bool useIdentityTransform, - bool forSystem, int* outSyncFd, bool regionSampling) { + const sp<GraphicBuffer>& buffer, bool forSystem, int* outSyncFd, + bool regionSampling) { ScreenCaptureResults captureResults; - return mFlinger->renderScreenImplLocked(renderArea, traverseLayers, buffer, - useIdentityTransform, forSystem, outSyncFd, - regionSampling, captureResults); + return mFlinger->renderScreenImplLocked(renderArea, traverseLayers, buffer, forSystem, + outSyncFd, regionSampling, captureResults); } auto traverseLayersInLayerStack(ui::LayerStack layerStack, int32_t uid, |