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

Commit 95a1ed40 authored by Vishnu Nair's avatar Vishnu Nair
Browse files

Add shadow radius and corner radius crop to sf and transaction trace

Bug: 136561771

Test: capture sf and transaction trace and check in winscope
Test: atest SurfaceFlinger_test
Change-Id: Ie2dce153ad8614657b6a2db43cbf7dd4912d8ddf
parent e5195369
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -51,6 +51,7 @@ message SurfaceChange {
        RelativeParentChange        relative_parent         = 18;
        DetachChildrenChange        detach_children         = 19;
        ReparentChildrenChange      reparent_children       = 20;
        ShadowRadiusChange          shadow_radius           = 22;
    }
}

@@ -199,3 +200,7 @@ message RelativeParentChange {
message DetachChildrenChange {
    required bool detach_children = 1;
}

message ShadowRadiusChange {
    required float radius = 1;
}
 No newline at end of file
+8 −0
Original line number Diff line number Diff line
@@ -424,6 +424,9 @@ status_t Replayer::doSurfaceTransaction(
            case SurfaceChange::SurfaceChangeCase::kDetachChildren:
                setDetachChildrenChange(transaction, change.id(), change.detach_children());
                break;
            case SurfaceChange::SurfaceChangeCase::kShadowRadius:
                setShadowRadiusChange(transaction, change.id(), change.shadow_radius());
                break;
            default:
                status = 1;
                break;
@@ -724,3 +727,8 @@ void Replayer::setReparentChildrenChange(SurfaceComposerClient::Transaction& t,
    }
    t.reparentChildren(mLayers[id], mLayers[c.parent_id()]->getHandle());
}

void Replayer::setShadowRadiusChange(SurfaceComposerClient::Transaction& t,
        layer_id id, const ShadowRadiusChange& c) {
    t.setShadowRadius(mLayers[id], c.radius());
}
+2 −0
Original line number Diff line number Diff line
@@ -118,6 +118,8 @@ class Replayer {
            layer_id id, const DetachChildrenChange& c);
    void setReparentChildrenChange(SurfaceComposerClient::Transaction& t,
            layer_id id, const ReparentChildrenChange& c);
    void setShadowRadiusChange(SurfaceComposerClient::Transaction& t,
            layer_id id, const ShadowRadiusChange& c);

    void setDisplaySurface(SurfaceComposerClient::Transaction& t,
            display_id id, const DispSurfaceChange& dsc);
+3 −0
Original line number Diff line number Diff line
@@ -1935,6 +1935,9 @@ void Layer::writeToProtoDrawingState(LayerProto* layerInfo, uint32_t traceFlags)
                                       [&]() { return layerInfo->mutable_source_bounds(); });
        LayerProtoHelper::writeToProto(mScreenBounds,
                                       [&]() { return layerInfo->mutable_screen_bounds(); });
        LayerProtoHelper::writeToProto(getRoundedCornerState().cropRect,
                                       [&]() { return layerInfo->mutable_corner_radius_crop(); });
        layerInfo->set_shadow_radius(mEffectiveShadowRadius);
    }
}

+11 −0
Original line number Diff line number Diff line
@@ -124,6 +124,7 @@ void SurfaceInterceptor::addInitialSurfaceStateLocked(Increment* increment,
    addRelativeParentLocked(transaction, layerId,
                            getLayerIdFromWeakRef(layer->mCurrentState.zOrderRelativeOf),
                            layer->mCurrentState.z);
    addShadowRadiusLocked(transaction, layerId, layer->mCurrentState.shadowRadius);
}

void SurfaceInterceptor::addInitialDisplayStateLocked(Increment* increment,
@@ -368,6 +369,13 @@ void SurfaceInterceptor::addRelativeParentLocked(Transaction* transaction, int32
    overrideChange->set_z(z);
}

void SurfaceInterceptor::addShadowRadiusLocked(Transaction* transaction, int32_t layerId,
                                               float shadowRadius) {
    SurfaceChange* change(createSurfaceChangeLocked(transaction, layerId));
    ShadowRadiusChange* overrideChange(change->mutable_shadow_radius());
    overrideChange->set_radius(shadowRadius);
}

void SurfaceInterceptor::addSurfaceChangesLocked(Transaction* transaction,
        const layer_state_t& state)
{
@@ -441,6 +449,9 @@ void SurfaceInterceptor::addSurfaceChangesLocked(Transaction* transaction,
        addRelativeParentLocked(transaction, layerId,
                                getLayerIdFromHandle(state.relativeLayerHandle), state.z);
    }
    if (state.what & layer_state_t::eShadowRadiusChanged) {
        addShadowRadiusLocked(transaction, layerId, state.shadowRadius);
    }
}

void SurfaceInterceptor::addDisplayChangesLocked(Transaction* transaction,
Loading