Loading libs/gui/tests/BLASTBufferQueue_test.cpp +32 −7 Original line number Diff line number Diff line Loading @@ -351,6 +351,24 @@ protected: sp<CountProducerListener> mProducerListener; }; // Helper class to ensure the provided BBQ frame number has been committed in SurfaceFlinger. class BBQSyncHelper { public: BBQSyncHelper(BLASTBufferQueueHelper& bbqHelper, uint64_t frameNumber) { t.addTransactionCompletedCallback(callbackHelper.function, callbackHelper.getContext()); bbqHelper.mergeWithNextTransaction(&t, frameNumber); } void wait() { CallbackData callbackData; callbackHelper.getCallbackData(&callbackData); } private: Transaction t; CallbackHelper callbackHelper; }; TEST_F(BLASTBufferQueueTest, CreateBLASTBufferQueue) { // create BLASTBufferQueue adapter associated with this surface BLASTBufferQueueHelper adapter(mSurfaceControl, mDisplayWidth, mDisplayHeight); Loading Loading @@ -422,6 +440,7 @@ TEST_F(BLASTBufferQueueTest, onFrameAvailable_Apply) { BLASTBufferQueueHelper adapter(mSurfaceControl, mDisplayWidth, mDisplayHeight); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; Loading @@ -447,7 +466,7 @@ TEST_F(BLASTBufferQueueTest, onFrameAvailable_Apply) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading Loading @@ -507,6 +526,7 @@ TEST_F(BLASTBufferQueueTest, SetCrop_Item) { BLASTBufferQueueHelper adapter(mSurfaceControl, mDisplayWidth, mDisplayHeight); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading @@ -531,7 +551,7 @@ TEST_F(BLASTBufferQueueTest, SetCrop_Item) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading Loading @@ -562,6 +582,7 @@ TEST_F(BLASTBufferQueueTest, SetCrop_ScalingModeScaleCrop) { BLASTBufferQueueHelper adapter(mSurfaceControl, bufferSideLength, bufferSideLength); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading Loading @@ -590,7 +611,7 @@ TEST_F(BLASTBufferQueueTest, SetCrop_ScalingModeScaleCrop) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); ASSERT_NO_FATAL_FAILURE(checkScreenCapture(r, g, b, Loading Loading @@ -621,6 +642,7 @@ TEST_F(BLASTBufferQueueTest, ScaleCroppedBufferToBufferSize) { BLASTBufferQueueHelper adapter(mSurfaceControl, windowSize.getWidth(), windowSize.getHeight()); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading Loading @@ -653,7 +675,7 @@ TEST_F(BLASTBufferQueueTest, ScaleCroppedBufferToBufferSize) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading Loading @@ -688,6 +710,7 @@ TEST_F(BLASTBufferQueueTest, ScaleCroppedBufferToWindowSize) { BLASTBufferQueueHelper adapter(mSurfaceControl, windowSize.getWidth(), windowSize.getHeight()); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading Loading @@ -720,7 +743,7 @@ TEST_F(BLASTBufferQueueTest, ScaleCroppedBufferToWindowSize) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); // Verify cropped region is scaled correctly. Loading @@ -746,6 +769,7 @@ TEST_F(BLASTBufferQueueTest, ScalingModeChanges) { sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); { BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading @@ -767,7 +791,7 @@ TEST_F(BLASTBufferQueueTest, ScalingModeChanges) { NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, Fence::NO_FENCE); igbProducer->queueBuffer(slot, input, &qbOutput); adapter.waitForCallbacks(); syncHelper.wait(); } // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading @@ -780,6 +804,7 @@ TEST_F(BLASTBufferQueueTest, ScalingModeChanges) { adapter.update(mSurfaceControl, mDisplayWidth, mDisplayHeight / 2); { BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading @@ -802,7 +827,7 @@ TEST_F(BLASTBufferQueueTest, ScalingModeChanges) { NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW, 0, Fence::NO_FENCE); igbProducer->queueBuffer(slot, input, &qbOutput); adapter.waitForCallbacks(); syncHelper.wait(); } // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading Loading
libs/gui/tests/BLASTBufferQueue_test.cpp +32 −7 Original line number Diff line number Diff line Loading @@ -351,6 +351,24 @@ protected: sp<CountProducerListener> mProducerListener; }; // Helper class to ensure the provided BBQ frame number has been committed in SurfaceFlinger. class BBQSyncHelper { public: BBQSyncHelper(BLASTBufferQueueHelper& bbqHelper, uint64_t frameNumber) { t.addTransactionCompletedCallback(callbackHelper.function, callbackHelper.getContext()); bbqHelper.mergeWithNextTransaction(&t, frameNumber); } void wait() { CallbackData callbackData; callbackHelper.getCallbackData(&callbackData); } private: Transaction t; CallbackHelper callbackHelper; }; TEST_F(BLASTBufferQueueTest, CreateBLASTBufferQueue) { // create BLASTBufferQueue adapter associated with this surface BLASTBufferQueueHelper adapter(mSurfaceControl, mDisplayWidth, mDisplayHeight); Loading Loading @@ -422,6 +440,7 @@ TEST_F(BLASTBufferQueueTest, onFrameAvailable_Apply) { BLASTBufferQueueHelper adapter(mSurfaceControl, mDisplayWidth, mDisplayHeight); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; Loading @@ -447,7 +466,7 @@ TEST_F(BLASTBufferQueueTest, onFrameAvailable_Apply) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading Loading @@ -507,6 +526,7 @@ TEST_F(BLASTBufferQueueTest, SetCrop_Item) { BLASTBufferQueueHelper adapter(mSurfaceControl, mDisplayWidth, mDisplayHeight); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading @@ -531,7 +551,7 @@ TEST_F(BLASTBufferQueueTest, SetCrop_Item) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading Loading @@ -562,6 +582,7 @@ TEST_F(BLASTBufferQueueTest, SetCrop_ScalingModeScaleCrop) { BLASTBufferQueueHelper adapter(mSurfaceControl, bufferSideLength, bufferSideLength); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading Loading @@ -590,7 +611,7 @@ TEST_F(BLASTBufferQueueTest, SetCrop_ScalingModeScaleCrop) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); ASSERT_NO_FATAL_FAILURE(checkScreenCapture(r, g, b, Loading Loading @@ -621,6 +642,7 @@ TEST_F(BLASTBufferQueueTest, ScaleCroppedBufferToBufferSize) { BLASTBufferQueueHelper adapter(mSurfaceControl, windowSize.getWidth(), windowSize.getHeight()); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading Loading @@ -653,7 +675,7 @@ TEST_F(BLASTBufferQueueTest, ScaleCroppedBufferToBufferSize) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading Loading @@ -688,6 +710,7 @@ TEST_F(BLASTBufferQueueTest, ScaleCroppedBufferToWindowSize) { BLASTBufferQueueHelper adapter(mSurfaceControl, windowSize.getWidth(), windowSize.getHeight()); sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading Loading @@ -720,7 +743,7 @@ TEST_F(BLASTBufferQueueTest, ScaleCroppedBufferToWindowSize) { igbProducer->queueBuffer(slot, input, &qbOutput); ASSERT_NE(ui::Transform::ROT_INVALID, qbOutput.transformHint); adapter.waitForCallbacks(); syncHelper.wait(); ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); // Verify cropped region is scaled correctly. Loading @@ -746,6 +769,7 @@ TEST_F(BLASTBufferQueueTest, ScalingModeChanges) { sp<IGraphicBufferProducer> igbProducer; setUpProducer(adapter, igbProducer); { BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading @@ -767,7 +791,7 @@ TEST_F(BLASTBufferQueueTest, ScalingModeChanges) { NATIVE_WINDOW_SCALING_MODE_FREEZE, 0, Fence::NO_FENCE); igbProducer->queueBuffer(slot, input, &qbOutput); adapter.waitForCallbacks(); syncHelper.wait(); } // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading @@ -780,6 +804,7 @@ TEST_F(BLASTBufferQueueTest, ScalingModeChanges) { adapter.update(mSurfaceControl, mDisplayWidth, mDisplayHeight / 2); { BBQSyncHelper syncHelper{adapter, 1}; int slot; sp<Fence> fence; sp<GraphicBuffer> buf; Loading @@ -802,7 +827,7 @@ TEST_F(BLASTBufferQueueTest, ScalingModeChanges) { NATIVE_WINDOW_SCALING_MODE_SCALE_TO_WINDOW, 0, Fence::NO_FENCE); igbProducer->queueBuffer(slot, input, &qbOutput); adapter.waitForCallbacks(); syncHelper.wait(); } // capture screen and verify that it is red ASSERT_EQ(NO_ERROR, captureDisplay(mCaptureArgs, mCaptureResults)); Loading