Loading libs/gui/BLASTBufferQueue.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,7 @@ void BLASTBufferQueue::processNextBufferLocked(bool useNextTransaction) { t->setTransform(mSurfaceControl, bufferItem.mTransform); t->setTransformToDisplayInverse(mSurfaceControl, bufferItem.mTransformToDisplayInverse); t->setDesiredPresentTime(bufferItem.mTimestamp); t->setFrameNumber(mSurfaceControl, bufferItem.mFrameNumber); if (applyTransaction) { t->apply(); Loading libs/gui/LayerState.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ status_t layer_state_t::write(Parcel& output) const SAFE_PARCEL(output.write, crop_legacy); SAFE_PARCEL(output.writeStrongBinder, barrierHandle_legacy); SAFE_PARCEL(output.writeStrongBinder, reparentHandle); SAFE_PARCEL(output.writeUint64, frameNumber_legacy); SAFE_PARCEL(output.writeUint64, barrierFrameNumber); SAFE_PARCEL(output.writeInt32, overrideScalingMode); SAFE_PARCEL(output.writeStrongBinder, IInterface::asBinder(barrierGbp_legacy)); SAFE_PARCEL(output.writeStrongBinder, relativeLayerHandle); Loading Loading @@ -108,6 +108,7 @@ status_t layer_state_t::write(Parcel& output) const SAFE_PARCEL(output.writeFloat, frameRate); SAFE_PARCEL(output.writeByte, frameRateCompatibility); SAFE_PARCEL(output.writeUint32, fixedTransformHint); SAFE_PARCEL(output.writeUint64, frameNumber); return NO_ERROR; } Loading @@ -134,7 +135,7 @@ status_t layer_state_t::read(const Parcel& input) SAFE_PARCEL(input.read, crop_legacy); SAFE_PARCEL(input.readNullableStrongBinder, &barrierHandle_legacy); SAFE_PARCEL(input.readNullableStrongBinder, &reparentHandle); SAFE_PARCEL(input.readUint64, &frameNumber_legacy); SAFE_PARCEL(input.readUint64, &barrierFrameNumber); SAFE_PARCEL(input.readInt32, &overrideScalingMode); sp<IBinder> tmpBinder; Loading Loading @@ -213,6 +214,7 @@ status_t layer_state_t::read(const Parcel& input) SAFE_PARCEL(input.readByte, &frameRateCompatibility); SAFE_PARCEL(input.readUint32, &tmpUint32); fixedTransformHint = static_cast<ui::Transform::RotationFlags>(tmpUint32); SAFE_PARCEL(input.readUint64, &frameNumber); return NO_ERROR; } Loading Loading @@ -340,7 +342,7 @@ void layer_state_t::merge(const layer_state_t& other) { what |= eDeferTransaction_legacy; barrierHandle_legacy = other.barrierHandle_legacy; barrierGbp_legacy = other.barrierGbp_legacy; frameNumber_legacy = other.frameNumber_legacy; barrierFrameNumber = other.barrierFrameNumber; } if (other.what & eOverrideScalingModeChanged) { what |= eOverrideScalingModeChanged; Loading Loading @@ -456,6 +458,10 @@ void layer_state_t::merge(const layer_state_t& other) { what |= eFixedTransformHintChanged; fixedTransformHint = other.fixedTransformHint; } if (other.what & eFrameNumberChanged) { what |= eFrameNumberChanged; frameNumber = other.frameNumber; } if ((other.what & what) != other.what) { ALOGE("Unmerged SurfaceComposer Transaction properties. LayerState::merge needs updating? " "other.what=0x%" PRIu64 " what=0x%" PRIu64, Loading libs/gui/SurfaceComposerClient.cpp +16 −2 Original line number Diff line number Diff line Loading @@ -1017,7 +1017,7 @@ SurfaceComposerClient::Transaction::deferTransactionUntil_legacy(const sp<Surfac } s->what |= layer_state_t::eDeferTransaction_legacy; s->barrierHandle_legacy = handle; s->frameNumber_legacy = frameNumber; s->barrierFrameNumber = frameNumber; registerSurfaceControlForCallback(sc); return *this; Loading @@ -1034,7 +1034,7 @@ SurfaceComposerClient::Transaction::deferTransactionUntil_legacy(const sp<Surfac } s->what |= layer_state_t::eDeferTransaction_legacy; s->barrierGbp_legacy = barrierSurface->getIGraphicBufferProducer(); s->frameNumber_legacy = frameNumber; s->barrierFrameNumber = frameNumber; registerSurfaceControlForCallback(sc); return *this; Loading Loading @@ -1324,6 +1324,20 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::notifyPr return *this; } SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setFrameNumber( const sp<SurfaceControl>& sc, uint64_t frameNumber) { layer_state_t* s = getLayerState(sc); if (!s) { mStatus = BAD_INDEX; return *this; } s->what |= layer_state_t::eFrameNumberChanged; s->frameNumber = frameNumber; return *this; } SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::detachChildren( const sp<SurfaceControl>& sc) { layer_state_t* s = getLayerState(sc); Loading libs/gui/include/gui/LayerState.h +9 −3 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ struct layer_state_t { eBackgroundBlurRadiusChanged = 0x80'00000000, eProducerDisconnect = 0x100'00000000, eFixedTransformHintChanged = 0x200'00000000, eFrameNumberChanged = 0x400'00000000, }; layer_state_t() Loading @@ -142,7 +143,7 @@ struct layer_state_t { crop_legacy(Rect::INVALID_RECT), cornerRadius(0.0f), backgroundBlurRadius(0), frameNumber_legacy(0), barrierFrameNumber(0), overrideScalingMode(-1), transform(0), transformToDisplayInverse(false), Loading @@ -159,7 +160,8 @@ struct layer_state_t { frameRateSelectionPriority(-1), frameRate(0.0f), frameRateCompatibility(ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_DEFAULT), fixedTransformHint(ui::Transform::ROT_INVALID) { fixedTransformHint(ui::Transform::ROT_INVALID), frameNumber(0) { matrix.dsdx = matrix.dtdy = 1.0f; matrix.dsdy = matrix.dtdx = 0.0f; hdrMetadata.validTypes = 0; Loading Loading @@ -195,7 +197,7 @@ struct layer_state_t { uint32_t backgroundBlurRadius; sp<IBinder> barrierHandle_legacy; sp<IBinder> reparentHandle; uint64_t frameNumber_legacy; uint64_t barrierFrameNumber; int32_t overrideScalingMode; sp<IGraphicBufferProducer> barrierGbp_legacy; Loading Loading @@ -259,6 +261,10 @@ struct layer_state_t { // a buffer of a different size. -1 means the transform hint is not set, // otherwise the value will be a valid ui::Rotation. ui::Transform::RotationFlags fixedTransformHint; // Used by BlastBufferQueue to forward the framenumber generated by the // graphics producer. uint64_t frameNumber; }; struct ComposerState { Loading libs/gui/include/gui/SurfaceComposerClient.h +2 −0 Original line number Diff line number Diff line Loading @@ -493,6 +493,8 @@ public: // ONLY FOR BLAST ADAPTER Transaction& notifyProducerDisconnect(const sp<SurfaceControl>& sc); // Set the framenumber generated by the graphics producer to mimic BufferQueue behaviour. Transaction& setFrameNumber(const sp<SurfaceControl>& sc, uint64_t frameNumber); // Detaches all child surfaces (and their children recursively) // from their SurfaceControl. Loading Loading
libs/gui/BLASTBufferQueue.cpp +1 −0 Original line number Diff line number Diff line Loading @@ -270,6 +270,7 @@ void BLASTBufferQueue::processNextBufferLocked(bool useNextTransaction) { t->setTransform(mSurfaceControl, bufferItem.mTransform); t->setTransformToDisplayInverse(mSurfaceControl, bufferItem.mTransformToDisplayInverse); t->setDesiredPresentTime(bufferItem.mTimestamp); t->setFrameNumber(mSurfaceControl, bufferItem.mFrameNumber); if (applyTransaction) { t->apply(); Loading
libs/gui/LayerState.cpp +9 −3 Original line number Diff line number Diff line Loading @@ -45,7 +45,7 @@ status_t layer_state_t::write(Parcel& output) const SAFE_PARCEL(output.write, crop_legacy); SAFE_PARCEL(output.writeStrongBinder, barrierHandle_legacy); SAFE_PARCEL(output.writeStrongBinder, reparentHandle); SAFE_PARCEL(output.writeUint64, frameNumber_legacy); SAFE_PARCEL(output.writeUint64, barrierFrameNumber); SAFE_PARCEL(output.writeInt32, overrideScalingMode); SAFE_PARCEL(output.writeStrongBinder, IInterface::asBinder(barrierGbp_legacy)); SAFE_PARCEL(output.writeStrongBinder, relativeLayerHandle); Loading Loading @@ -108,6 +108,7 @@ status_t layer_state_t::write(Parcel& output) const SAFE_PARCEL(output.writeFloat, frameRate); SAFE_PARCEL(output.writeByte, frameRateCompatibility); SAFE_PARCEL(output.writeUint32, fixedTransformHint); SAFE_PARCEL(output.writeUint64, frameNumber); return NO_ERROR; } Loading @@ -134,7 +135,7 @@ status_t layer_state_t::read(const Parcel& input) SAFE_PARCEL(input.read, crop_legacy); SAFE_PARCEL(input.readNullableStrongBinder, &barrierHandle_legacy); SAFE_PARCEL(input.readNullableStrongBinder, &reparentHandle); SAFE_PARCEL(input.readUint64, &frameNumber_legacy); SAFE_PARCEL(input.readUint64, &barrierFrameNumber); SAFE_PARCEL(input.readInt32, &overrideScalingMode); sp<IBinder> tmpBinder; Loading Loading @@ -213,6 +214,7 @@ status_t layer_state_t::read(const Parcel& input) SAFE_PARCEL(input.readByte, &frameRateCompatibility); SAFE_PARCEL(input.readUint32, &tmpUint32); fixedTransformHint = static_cast<ui::Transform::RotationFlags>(tmpUint32); SAFE_PARCEL(input.readUint64, &frameNumber); return NO_ERROR; } Loading Loading @@ -340,7 +342,7 @@ void layer_state_t::merge(const layer_state_t& other) { what |= eDeferTransaction_legacy; barrierHandle_legacy = other.barrierHandle_legacy; barrierGbp_legacy = other.barrierGbp_legacy; frameNumber_legacy = other.frameNumber_legacy; barrierFrameNumber = other.barrierFrameNumber; } if (other.what & eOverrideScalingModeChanged) { what |= eOverrideScalingModeChanged; Loading Loading @@ -456,6 +458,10 @@ void layer_state_t::merge(const layer_state_t& other) { what |= eFixedTransformHintChanged; fixedTransformHint = other.fixedTransformHint; } if (other.what & eFrameNumberChanged) { what |= eFrameNumberChanged; frameNumber = other.frameNumber; } if ((other.what & what) != other.what) { ALOGE("Unmerged SurfaceComposer Transaction properties. LayerState::merge needs updating? " "other.what=0x%" PRIu64 " what=0x%" PRIu64, Loading
libs/gui/SurfaceComposerClient.cpp +16 −2 Original line number Diff line number Diff line Loading @@ -1017,7 +1017,7 @@ SurfaceComposerClient::Transaction::deferTransactionUntil_legacy(const sp<Surfac } s->what |= layer_state_t::eDeferTransaction_legacy; s->barrierHandle_legacy = handle; s->frameNumber_legacy = frameNumber; s->barrierFrameNumber = frameNumber; registerSurfaceControlForCallback(sc); return *this; Loading @@ -1034,7 +1034,7 @@ SurfaceComposerClient::Transaction::deferTransactionUntil_legacy(const sp<Surfac } s->what |= layer_state_t::eDeferTransaction_legacy; s->barrierGbp_legacy = barrierSurface->getIGraphicBufferProducer(); s->frameNumber_legacy = frameNumber; s->barrierFrameNumber = frameNumber; registerSurfaceControlForCallback(sc); return *this; Loading Loading @@ -1324,6 +1324,20 @@ SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::notifyPr return *this; } SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::setFrameNumber( const sp<SurfaceControl>& sc, uint64_t frameNumber) { layer_state_t* s = getLayerState(sc); if (!s) { mStatus = BAD_INDEX; return *this; } s->what |= layer_state_t::eFrameNumberChanged; s->frameNumber = frameNumber; return *this; } SurfaceComposerClient::Transaction& SurfaceComposerClient::Transaction::detachChildren( const sp<SurfaceControl>& sc) { layer_state_t* s = getLayerState(sc); Loading
libs/gui/include/gui/LayerState.h +9 −3 Original line number Diff line number Diff line Loading @@ -125,6 +125,7 @@ struct layer_state_t { eBackgroundBlurRadiusChanged = 0x80'00000000, eProducerDisconnect = 0x100'00000000, eFixedTransformHintChanged = 0x200'00000000, eFrameNumberChanged = 0x400'00000000, }; layer_state_t() Loading @@ -142,7 +143,7 @@ struct layer_state_t { crop_legacy(Rect::INVALID_RECT), cornerRadius(0.0f), backgroundBlurRadius(0), frameNumber_legacy(0), barrierFrameNumber(0), overrideScalingMode(-1), transform(0), transformToDisplayInverse(false), Loading @@ -159,7 +160,8 @@ struct layer_state_t { frameRateSelectionPriority(-1), frameRate(0.0f), frameRateCompatibility(ANATIVEWINDOW_FRAME_RATE_COMPATIBILITY_DEFAULT), fixedTransformHint(ui::Transform::ROT_INVALID) { fixedTransformHint(ui::Transform::ROT_INVALID), frameNumber(0) { matrix.dsdx = matrix.dtdy = 1.0f; matrix.dsdy = matrix.dtdx = 0.0f; hdrMetadata.validTypes = 0; Loading Loading @@ -195,7 +197,7 @@ struct layer_state_t { uint32_t backgroundBlurRadius; sp<IBinder> barrierHandle_legacy; sp<IBinder> reparentHandle; uint64_t frameNumber_legacy; uint64_t barrierFrameNumber; int32_t overrideScalingMode; sp<IGraphicBufferProducer> barrierGbp_legacy; Loading Loading @@ -259,6 +261,10 @@ struct layer_state_t { // a buffer of a different size. -1 means the transform hint is not set, // otherwise the value will be a valid ui::Rotation. ui::Transform::RotationFlags fixedTransformHint; // Used by BlastBufferQueue to forward the framenumber generated by the // graphics producer. uint64_t frameNumber; }; struct ComposerState { Loading
libs/gui/include/gui/SurfaceComposerClient.h +2 −0 Original line number Diff line number Diff line Loading @@ -493,6 +493,8 @@ public: // ONLY FOR BLAST ADAPTER Transaction& notifyProducerDisconnect(const sp<SurfaceControl>& sc); // Set the framenumber generated by the graphics producer to mimic BufferQueue behaviour. Transaction& setFrameNumber(const sp<SurfaceControl>& sc, uint64_t frameNumber); // Detaches all child surfaces (and their children recursively) // from their SurfaceControl. Loading