diff options
author | chaviw <chaviw@google.com> | 2018-07-10 16:57:27 -0700 |
---|---|---|
committer | Chavi Weingarten <chaviw@google.com> | 2018-07-11 19:37:18 +0000 |
commit | 9885bd4b3faf93a5651f069e52cbb346418e6ca5 (patch) | |
tree | 57b58b11ec94156aff1bd5416a81b02b5064fd8c | |
parent | 306c8ab02bc822d4fc190786f56b1a99b4964b5c (diff) | |
download | native-9885bd4b3faf93a5651f069e52cbb346418e6ca5.tar.gz |
Add current frame and barrier layer info to protobuf.
Added more info to the protobuf to help identify the root cause of the
bug.
Bug: 111062294
Test: go/winscope
Change-Id: Ife93907482ad89341b20a5508acce04ad4a5b32e
Merged-In: Ife93907482ad89341b20a5508acce04ad4a5b32e
-rw-r--r-- | services/surfaceflinger/Layer.cpp | 10 | ||||
-rw-r--r-- | services/surfaceflinger/layerproto/layers.proto | 11 |
2 files changed, 21 insertions, 0 deletions
diff --git a/services/surfaceflinger/Layer.cpp b/services/surfaceflinger/Layer.cpp index 6d5a598e89..9150c3f895 100644 --- a/services/surfaceflinger/Layer.cpp +++ b/services/surfaceflinger/Layer.cpp @@ -1987,6 +1987,16 @@ void Layer::writeToProto(LayerProto* layerInfo, LayerVector::StateSet stateSet) layerInfo->set_refresh_pending(isBufferLatched()); layerInfo->set_window_type(state.type); layerInfo->set_app_id(state.appId); + layerInfo->set_curr_frame(mCurrentFrameNumber); + + for (const auto& pendingState : mPendingStates) { + auto barrierLayer = pendingState.barrierLayer.promote(); + if (barrierLayer != nullptr) { + BarrierLayerProto* barrierLayerProto = layerInfo->add_barrier_layer(); + barrierLayerProto->set_id(barrierLayer->sequence); + barrierLayerProto->set_frame_number(pendingState.frameNumber); + } + } } void Layer::writeToProto(LayerProto* layerInfo, int32_t hwcId) { diff --git a/services/surfaceflinger/layerproto/layers.proto b/services/surfaceflinger/layerproto/layers.proto index 77c6675b7f..edf56abc4a 100644 --- a/services/surfaceflinger/layerproto/layers.proto +++ b/services/surfaceflinger/layerproto/layers.proto @@ -80,6 +80,10 @@ message LayerProto { optional int32 hwc_composition_type = 35; // If it's a buffer layer, indicate if the content is protected optional bool is_protected = 36; + // Current frame number being rendered. + optional uint64 curr_frame = 37; + // A list of barriers that the layer is waiting to update state. + repeated BarrierLayerProto barrier_layer = 38; } message PositionProto { @@ -131,3 +135,10 @@ message ColorProto { optional float b = 3; optional float a = 4; } + +message BarrierLayerProto { + // layer id the barrier is waiting on. + optional int32 id = 1; + // frame number the barrier is waiting on. + optional uint64 frame_number = 2; +} |