diff options
author | Adithya Srinivasan <adsrini@google.com> | 2021-03-09 00:38:00 +0000 |
---|---|---|
committer | Adithya Srinivasan <adsrini@google.com> | 2021-03-10 23:35:45 +0000 |
commit | 785adddcbbf459a2ee7351be11fc6fc453740e31 (patch) | |
tree | da2e16912ac79a8c2d5b85c1a7590a574bde386e /services/surfaceflinger/tests/unittests/TransactionSurfaceFrameTest.cpp | |
parent | 7c4ac7a31d3dc4a0cfec9d2f893c56307ee95185 (diff) |
Add isBuffer to SurfaceFrame
Add a boolean that tells if the SurfaceFrame is representing a buffer or
not. This makes it easy to debug lost/stuck frames in the pending
classification list. Also add a miniDump for SurfaceFrame to enable
debugging the lost frame.
Bug: 182214639
Test: Build and flash
Change-Id: I6ceef46887a021c2f36e76f37fab8368802465a4
Diffstat (limited to 'services/surfaceflinger/tests/unittests/TransactionSurfaceFrameTest.cpp')
-rw-r--r-- | services/surfaceflinger/tests/unittests/TransactionSurfaceFrameTest.cpp | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/services/surfaceflinger/tests/unittests/TransactionSurfaceFrameTest.cpp b/services/surfaceflinger/tests/unittests/TransactionSurfaceFrameTest.cpp index 363bd80cae..dc8f12bafe 100644 --- a/services/surfaceflinger/tests/unittests/TransactionSurfaceFrameTest.cpp +++ b/services/surfaceflinger/tests/unittests/TransactionSurfaceFrameTest.cpp @@ -116,6 +116,7 @@ public: const auto surfaceFrame = layer->mCurrentState.bufferlessSurfaceFramesTX.at(/*token*/ 1); commitTransaction(layer.get()); EXPECT_EQ(1, surfaceFrame->getToken()); + EXPECT_EQ(false, surfaceFrame->getIsBuffer()); EXPECT_EQ(PresentState::Presented, surfaceFrame->getPresentState()); } @@ -139,6 +140,7 @@ public: layer->updateTexImage(computeVisisbleRegions, 15, 0); EXPECT_EQ(1, surfaceFrame->getToken()); + EXPECT_EQ(true, surfaceFrame->getIsBuffer()); EXPECT_EQ(PresentState::Presented, surfaceFrame->getPresentState()); } @@ -172,12 +174,14 @@ public: layer->updateTexImage(computeVisisbleRegions, 15, 0); EXPECT_EQ(1, droppedSurfaceFrame->getToken()); + EXPECT_EQ(true, droppedSurfaceFrame->getIsBuffer()); EXPECT_EQ(PresentState::Dropped, droppedSurfaceFrame->getPresentState()); EXPECT_EQ(0u, droppedSurfaceFrame->getActuals().endTime); auto dropTime = droppedSurfaceFrame->getDropTime(); EXPECT_TRUE(dropTime > start && dropTime < end); EXPECT_EQ(1, presentedSurfaceFrame->getToken()); + EXPECT_EQ(true, presentedSurfaceFrame->getIsBuffer()); EXPECT_EQ(PresentState::Presented, presentedSurfaceFrame->getPresentState()); } @@ -204,6 +208,7 @@ public: commitTransaction(layer.get()); EXPECT_EQ(1, surfaceFrame->getToken()); + EXPECT_EQ(true, surfaceFrame->getIsBuffer()); // Buffers are presented only at latch time. EXPECT_EQ(PresentState::Unknown, surfaceFrame->getPresentState()); @@ -260,12 +265,15 @@ public: commitTransaction(layer.get()); EXPECT_EQ(1, bufferlessSurfaceFrame1->getToken()); + EXPECT_EQ(false, bufferlessSurfaceFrame1->getIsBuffer()); EXPECT_EQ(PresentState::Presented, bufferlessSurfaceFrame1->getPresentState()); EXPECT_EQ(4, bufferlessSurfaceFrame2->getToken()); + EXPECT_EQ(false, bufferlessSurfaceFrame2->getIsBuffer()); EXPECT_EQ(PresentState::Presented, bufferlessSurfaceFrame2->getPresentState()); EXPECT_EQ(3, bufferSurfaceFrameTX->getToken()); + EXPECT_EQ(true, bufferSurfaceFrameTX->getIsBuffer()); // Buffers are presented only at latch time. EXPECT_EQ(PresentState::Unknown, bufferSurfaceFrameTX->getPresentState()); @@ -297,10 +305,12 @@ public: commitTransaction(layer.get()); EXPECT_EQ(1, bufferlessSurfaceFrame1->getToken()); + EXPECT_EQ(false, bufferlessSurfaceFrame1->getIsBuffer()); EXPECT_EQ(PresentState::Presented, bufferlessSurfaceFrame1->getPresentState()); EXPECT_EQ(10, bufferlessSurfaceFrame1->getActuals().endTime); EXPECT_EQ(2, bufferlessSurfaceFrame2->getToken()); + EXPECT_EQ(false, bufferlessSurfaceFrame2->getIsBuffer()); EXPECT_EQ(PresentState::Presented, bufferlessSurfaceFrame2->getPresentState()); EXPECT_EQ(12, bufferlessSurfaceFrame2->getActuals().endTime); } @@ -327,9 +337,11 @@ public: commitTransaction(layer.get()); EXPECT_EQ(1, bufferlessSurfaceFrame1->getToken()); + EXPECT_EQ(false, bufferlessSurfaceFrame1->getIsBuffer()); EXPECT_EQ(PresentState::Unknown, bufferlessSurfaceFrame1->getPresentState()); EXPECT_EQ(1, bufferlessSurfaceFrame2->getToken()); + EXPECT_EQ(false, bufferlessSurfaceFrame2->getIsBuffer()); EXPECT_EQ(PresentState::Presented, bufferlessSurfaceFrame2->getPresentState()); EXPECT_EQ(12, bufferlessSurfaceFrame2->getActuals().endTime); } @@ -410,18 +422,21 @@ public: layer->updateTexImage(computeVisisbleRegions, 15, 0); EXPECT_EQ(1, droppedSurfaceFrame1->getToken()); + EXPECT_EQ(true, droppedSurfaceFrame1->getIsBuffer()); EXPECT_EQ(PresentState::Dropped, droppedSurfaceFrame1->getPresentState()); EXPECT_EQ(0u, droppedSurfaceFrame1->getActuals().endTime); auto dropTime1 = droppedSurfaceFrame1->getDropTime(); EXPECT_TRUE(dropTime1 > dropStartTime1 && dropTime1 < dropEndTime1); EXPECT_EQ(FrameTimelineInfo::INVALID_VSYNC_ID, droppedSurfaceFrame2->getToken()); + EXPECT_EQ(true, droppedSurfaceFrame2->getIsBuffer()); EXPECT_EQ(PresentState::Dropped, droppedSurfaceFrame2->getPresentState()); EXPECT_EQ(0u, droppedSurfaceFrame2->getActuals().endTime); auto dropTime2 = droppedSurfaceFrame2->getDropTime(); EXPECT_TRUE(dropTime2 > dropStartTime2 && dropTime2 < dropEndTime2); EXPECT_EQ(2, presentedSurfaceFrame->getToken()); + EXPECT_EQ(true, presentedSurfaceFrame->getIsBuffer()); EXPECT_EQ(PresentState::Presented, presentedSurfaceFrame->getPresentState()); } }; |