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

Commit e7613db2 authored by Vishnu Nair's avatar Vishnu Nair
Browse files

SF: Fix blur region transform regression

Fixes a regression caused by ag/19611172
(bedb44bb) where we used
the local to screen space transform inv instead of local transform inv
for blur.

Test: atest BlurTests
Bug: 248609209
Change-Id: I06a97ca32c7689a252029a319a9519d2bffdbd25
parent 03e6b317
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -477,7 +477,7 @@ void Layer::prepareBasicGeometryCompositionState() {
    snapshot->geomLayerTransform = getTransform();
    snapshot->geomInverseLayerTransform = snapshot->geomLayerTransform.inverse();
    snapshot->transparentRegionHint = getActiveTransparentRegion(drawingState);

    snapshot->blurRegionTransform = getActiveTransform(drawingState).inverse();
    snapshot->blendMode = static_cast<Hwc2::IComposerClient::BlendMode>(blendMode);
    snapshot->alpha = alpha;
    snapshot->backgroundBlurRadius = drawingState.backgroundBlurRadius;
+2 −2
Original line number Diff line number Diff line
@@ -148,14 +148,14 @@ std::optional<compositionengine::LayerFE::LayerSettings> LayerFE::prepareClientC
        case LayerFE::ClientCompositionTargetSettings::BlurSetting::Enabled:
            layerSettings.backgroundBlurRadius = mSnapshot->backgroundBlurRadius;
            layerSettings.blurRegions = mSnapshot->blurRegions;
            layerSettings.blurRegionTransform = mSnapshot->geomInverseLayerTransform.asMatrix4();
            layerSettings.blurRegionTransform = mSnapshot->blurRegionTransform.asMatrix4();
            break;
        case LayerFE::ClientCompositionTargetSettings::BlurSetting::BackgroundBlurOnly:
            layerSettings.backgroundBlurRadius = mSnapshot->backgroundBlurRadius;
            break;
        case LayerFE::ClientCompositionTargetSettings::BlurSetting::BlurRegionsOnly:
            layerSettings.blurRegions = mSnapshot->blurRegions;
            layerSettings.blurRegionTransform = mSnapshot->geomInverseLayerTransform.asMatrix4();
            layerSettings.blurRegionTransform = mSnapshot->blurRegionTransform.asMatrix4();
            break;
        case LayerFE::ClientCompositionTargetSettings::BlurSetting::Disabled:
        default:
+1 −0
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@ struct LayerSnapshot : public compositionengine::LayerFECompositionState {
    gui::LayerMetadata relativeLayerMetadata;
    bool contentDirty;
    bool hasReadyFrame;
    ui::Transform blurRegionTransform;
};

struct CompositionResult {