Loading services/surfaceflinger/LayerProtoHelper.cpp +25 −1 Original line number Diff line number Diff line Loading @@ -29,6 +29,16 @@ using gui::WindowInfo; namespace surfaceflinger { void LayerProtoHelper::writeCornerRadiiToProto( float tl, float tr, float bl, float br, const std::function<perfetto::protos::CornerRadiiProto*()>& getCornerRadiiProto) { perfetto::protos::CornerRadiiProto* radii_proto = getCornerRadiiProto(); radii_proto->set_tl(tl); radii_proto->set_tr(tr); radii_proto->set_bl(bl); radii_proto->set_br(br); } void LayerProtoHelper::writePositionToProto( const float x, const float y, std::function<perfetto::protos::PositionProto*()> getPositionProto) { Loading Loading @@ -411,6 +421,21 @@ void LayerProtoHelper::writeSnapshotToProto(perfetto::protos::LayerProto* layerI (snapshot.roundedCorner.radii.topLeft.x + snapshot.roundedCorner.radii.topLeft.y) / 2.0); layerInfo->set_background_blur_radius(snapshot.backgroundBlurRadius); LayerProtoHelper::writeCornerRadiiToProto(snapshot.roundedCorner.radii.topLeft.x, snapshot.roundedCorner.radii.topRight.x, snapshot.roundedCorner.radii.bottomLeft.x, snapshot.roundedCorner.radii.bottomRight.x, [&]() { return layerInfo->mutable_corner_radii(); }); LayerProtoHelper::writeCornerRadiiToProto(snapshot.roundedCorner.requestedRadii.topLeft.x, snapshot.roundedCorner.requestedRadii.topRight.x, snapshot.roundedCorner.requestedRadii.bottomLeft.x, snapshot.roundedCorner.requestedRadii.bottomRight.x, [&]() { return layerInfo->mutable_corner_radii(); }); LayerProtoHelper::writeCornerRadiiToProto(snapshot.roundedCorner.clientDrawnRadii.topLeft.x, snapshot.roundedCorner.clientDrawnRadii.topRight.x, snapshot.roundedCorner.clientDrawnRadii.bottomLeft.x, snapshot.roundedCorner.clientDrawnRadii.bottomRight.x, [&]() { return layerInfo->mutable_corner_radii(); }); layerInfo->set_is_trusted_overlay(snapshot.trustedOverlay == gui::TrustedOverlay::ENABLED); // TODO(b/339701674) update protos LayerProtoHelper::writeToProtoDeprecated(transform, layerInfo->mutable_transform()); Loading @@ -420,7 +445,6 @@ void LayerProtoHelper::writeSnapshotToProto(perfetto::protos::LayerProto* layerI [&]() { return layerInfo->mutable_bounds(); }); LayerProtoHelper::writeToProto(snapshot.surfaceDamage, [&]() { return layerInfo->mutable_damage_region(); }); if (requestedState.hasColorTransform) { LayerProtoHelper::writeToProto(snapshot.colorTransform, layerInfo->mutable_color_transform()); Loading services/surfaceflinger/LayerProtoHelper.h +3 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,9 @@ namespace android { namespace surfaceflinger { class LayerProtoHelper { public: static void writeCornerRadiiToProto( float tl, float tr, float bl, float br, const std::function<perfetto::protos::CornerRadiiProto*()>& getCornerRadiiProto); static void writePositionToProto( const float x, const float y, std::function<perfetto::protos::PositionProto*()> getPositionProto); Loading services/surfaceflinger/Tracing/TransactionProtoParser.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -123,8 +123,20 @@ perfetto::protos::LayerState TransactionProtoParser::toProto( matrixProto->set_dtdy(layer.matrix.dtdy); } if (layer.what & layer_state_t::eCornerRadiusChanged) { perfetto::protos::LayerState_CornerRadii* radiiProto = proto.mutable_corner_radii(); radiiProto->set_tl(layer.cornerRadii.topLeft.x); radiiProto->set_tr(layer.cornerRadii.topRight.x); radiiProto->set_bl(layer.cornerRadii.bottomLeft.x); radiiProto->set_br(layer.cornerRadii.bottomRight.x); // TODO(b/430109627): Remove usage of deprecated corner_radius field proto.set_corner_radius(layer.cornerRadii.topLeft.x); } if (layer.what & layer_state_t::eClientDrawnCornerRadiusChanged) { perfetto::protos::LayerState_CornerRadii* radiiProto = proto.mutable_corner_radii(); radiiProto->set_tl(layer.clientDrawnCornerRadii.topLeft.x); radiiProto->set_tr(layer.clientDrawnCornerRadii.topRight.x); radiiProto->set_bl(layer.clientDrawnCornerRadii.bottomLeft.x); } if (layer.what & layer_state_t::eBackgroundBlurRadiusChanged) { proto.set_background_blur_radius(layer.backgroundBlurRadius); } Loading Loading @@ -395,8 +407,22 @@ void TransactionProtoParser::fromProto(const perfetto::protos::LayerState& proto layer.matrix.dtdy = matrixProto.dtdy(); } if (proto.what() & layer_state_t::eCornerRadiusChanged) { const perfetto::protos::LayerState_CornerRadii& radiiProto = proto.corner_radii(); layer.cornerRadii.topLeft.x = radiiProto.tl(); layer.cornerRadii.topRight.x = radiiProto.tr(); layer.cornerRadii.bottomLeft.x = radiiProto.bl(); layer.cornerRadii.bottomRight.y = radiiProto.br(); // TODO(b/430109627): Remove usage of deprecated corner_radius field layer.cornerRadii.topLeft.x = proto.corner_radius(); } if (proto.what() & layer_state_t::eClientDrawnCornerRadiusChanged) { const perfetto::protos::LayerState_CornerRadii& radiiProto = proto.client_drawn_corner_radii(); layer.clientDrawnCornerRadii.topLeft.x = radiiProto.tl(); layer.clientDrawnCornerRadii.topRight.x = radiiProto.tr(); layer.clientDrawnCornerRadii.bottomLeft.x = radiiProto.bl(); layer.clientDrawnCornerRadii.bottomRight.y = radiiProto.br(); } if (proto.what() & layer_state_t::eBackgroundBlurRadiusChanged) { layer.backgroundBlurRadius = proto.background_blur_radius(); } Loading Loading
services/surfaceflinger/LayerProtoHelper.cpp +25 −1 Original line number Diff line number Diff line Loading @@ -29,6 +29,16 @@ using gui::WindowInfo; namespace surfaceflinger { void LayerProtoHelper::writeCornerRadiiToProto( float tl, float tr, float bl, float br, const std::function<perfetto::protos::CornerRadiiProto*()>& getCornerRadiiProto) { perfetto::protos::CornerRadiiProto* radii_proto = getCornerRadiiProto(); radii_proto->set_tl(tl); radii_proto->set_tr(tr); radii_proto->set_bl(bl); radii_proto->set_br(br); } void LayerProtoHelper::writePositionToProto( const float x, const float y, std::function<perfetto::protos::PositionProto*()> getPositionProto) { Loading Loading @@ -411,6 +421,21 @@ void LayerProtoHelper::writeSnapshotToProto(perfetto::protos::LayerProto* layerI (snapshot.roundedCorner.radii.topLeft.x + snapshot.roundedCorner.radii.topLeft.y) / 2.0); layerInfo->set_background_blur_radius(snapshot.backgroundBlurRadius); LayerProtoHelper::writeCornerRadiiToProto(snapshot.roundedCorner.radii.topLeft.x, snapshot.roundedCorner.radii.topRight.x, snapshot.roundedCorner.radii.bottomLeft.x, snapshot.roundedCorner.radii.bottomRight.x, [&]() { return layerInfo->mutable_corner_radii(); }); LayerProtoHelper::writeCornerRadiiToProto(snapshot.roundedCorner.requestedRadii.topLeft.x, snapshot.roundedCorner.requestedRadii.topRight.x, snapshot.roundedCorner.requestedRadii.bottomLeft.x, snapshot.roundedCorner.requestedRadii.bottomRight.x, [&]() { return layerInfo->mutable_corner_radii(); }); LayerProtoHelper::writeCornerRadiiToProto(snapshot.roundedCorner.clientDrawnRadii.topLeft.x, snapshot.roundedCorner.clientDrawnRadii.topRight.x, snapshot.roundedCorner.clientDrawnRadii.bottomLeft.x, snapshot.roundedCorner.clientDrawnRadii.bottomRight.x, [&]() { return layerInfo->mutable_corner_radii(); }); layerInfo->set_is_trusted_overlay(snapshot.trustedOverlay == gui::TrustedOverlay::ENABLED); // TODO(b/339701674) update protos LayerProtoHelper::writeToProtoDeprecated(transform, layerInfo->mutable_transform()); Loading @@ -420,7 +445,6 @@ void LayerProtoHelper::writeSnapshotToProto(perfetto::protos::LayerProto* layerI [&]() { return layerInfo->mutable_bounds(); }); LayerProtoHelper::writeToProto(snapshot.surfaceDamage, [&]() { return layerInfo->mutable_damage_region(); }); if (requestedState.hasColorTransform) { LayerProtoHelper::writeToProto(snapshot.colorTransform, layerInfo->mutable_color_transform()); Loading
services/surfaceflinger/LayerProtoHelper.h +3 −0 Original line number Diff line number Diff line Loading @@ -35,6 +35,9 @@ namespace android { namespace surfaceflinger { class LayerProtoHelper { public: static void writeCornerRadiiToProto( float tl, float tr, float bl, float br, const std::function<perfetto::protos::CornerRadiiProto*()>& getCornerRadiiProto); static void writePositionToProto( const float x, const float y, std::function<perfetto::protos::PositionProto*()> getPositionProto); Loading
services/surfaceflinger/Tracing/TransactionProtoParser.cpp +26 −0 Original line number Diff line number Diff line Loading @@ -123,8 +123,20 @@ perfetto::protos::LayerState TransactionProtoParser::toProto( matrixProto->set_dtdy(layer.matrix.dtdy); } if (layer.what & layer_state_t::eCornerRadiusChanged) { perfetto::protos::LayerState_CornerRadii* radiiProto = proto.mutable_corner_radii(); radiiProto->set_tl(layer.cornerRadii.topLeft.x); radiiProto->set_tr(layer.cornerRadii.topRight.x); radiiProto->set_bl(layer.cornerRadii.bottomLeft.x); radiiProto->set_br(layer.cornerRadii.bottomRight.x); // TODO(b/430109627): Remove usage of deprecated corner_radius field proto.set_corner_radius(layer.cornerRadii.topLeft.x); } if (layer.what & layer_state_t::eClientDrawnCornerRadiusChanged) { perfetto::protos::LayerState_CornerRadii* radiiProto = proto.mutable_corner_radii(); radiiProto->set_tl(layer.clientDrawnCornerRadii.topLeft.x); radiiProto->set_tr(layer.clientDrawnCornerRadii.topRight.x); radiiProto->set_bl(layer.clientDrawnCornerRadii.bottomLeft.x); } if (layer.what & layer_state_t::eBackgroundBlurRadiusChanged) { proto.set_background_blur_radius(layer.backgroundBlurRadius); } Loading Loading @@ -395,8 +407,22 @@ void TransactionProtoParser::fromProto(const perfetto::protos::LayerState& proto layer.matrix.dtdy = matrixProto.dtdy(); } if (proto.what() & layer_state_t::eCornerRadiusChanged) { const perfetto::protos::LayerState_CornerRadii& radiiProto = proto.corner_radii(); layer.cornerRadii.topLeft.x = radiiProto.tl(); layer.cornerRadii.topRight.x = radiiProto.tr(); layer.cornerRadii.bottomLeft.x = radiiProto.bl(); layer.cornerRadii.bottomRight.y = radiiProto.br(); // TODO(b/430109627): Remove usage of deprecated corner_radius field layer.cornerRadii.topLeft.x = proto.corner_radius(); } if (proto.what() & layer_state_t::eClientDrawnCornerRadiusChanged) { const perfetto::protos::LayerState_CornerRadii& radiiProto = proto.client_drawn_corner_radii(); layer.clientDrawnCornerRadii.topLeft.x = radiiProto.tl(); layer.clientDrawnCornerRadii.topRight.x = radiiProto.tr(); layer.clientDrawnCornerRadii.bottomLeft.x = radiiProto.bl(); layer.clientDrawnCornerRadii.bottomRight.y = radiiProto.br(); } if (proto.what() & layer_state_t::eBackgroundBlurRadiusChanged) { layer.backgroundBlurRadius = proto.background_blur_radius(); } Loading