From aa6b34ae2e02eeb95b68166702f798bfc861e0b2 Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Mon, 3 Jun 2024 08:48:27 +0000 Subject: [PATCH 1/2] combine commit and GetReleaseFence interface Signed-off-by: pxd2022 --- .../composer/cache_manager/cache_manager.h | 4 +- .../command_pack/command_data_packer.h | 10 +- .../display_command/display_cmd_requester.h | 134 ++++++----- .../display_command/display_cmd_responser.h | 212 +++++++----------- .../v1_0/display_command/display_cmd_utils.h | 156 +++++++------ .../display_command/display_cmd_requester.h | 128 ++++++----- .../display_command/display_cmd_responser.h | 127 +++++------ .../v1_2/hdi_impl/display_composer_hdi_impl.h | 6 +- .../include/idisplay_composer_interface.h | 4 +- 9 files changed, 393 insertions(+), 388 deletions(-) diff --git a/display/composer/cache_manager/cache_manager.h b/display/composer/cache_manager/cache_manager.h index 9143bb3f..fe02805b 100644 --- a/display/composer/cache_manager/cache_manager.h +++ b/display/composer/cache_manager/cache_manager.h @@ -100,12 +100,12 @@ public: { std::lock_guard lock(mutex_); auto cacheItem = caches_.find(id); - if (cacheItem == caches_.end() || cacheItem->second == nullptr) { + if (cacheItem == caches_.end()) { HDF_LOGE("%{public}s: Cache %{public}d is not existing\n", __func__, id); return false; } - if (cleanUpFunc_) { + if (cleanUpFunc_ && cacheItem->second != nullptr) { cleanUpFunc_(cacheItem->second); } diff --git a/display/composer/command_pack/command_data_packer.h b/display/composer/command_pack/command_data_packer.h index 5d7fe40e..289ffc80 100644 --- a/display/composer/command_pack/command_data_packer.h +++ b/display/composer/command_pack/command_data_packer.h @@ -46,9 +46,17 @@ public: bool Init(size_t size = INIT_DATA_SIZE, bool isAdaptiveGrowth = false) { + writePos_ = 0; + curSecOffset_ = 0; + settingSecLen_ = 0; + curSecLenPos_ = 0; + isAdaptiveGrowth_ = false; packSize_ = size; uint32_t alignedSize = (packSize_ + ALLOC_PAGE_SIZE - 1) & (~(ALLOC_PAGE_SIZE - 1)); - data_ = new char[alignedSize](); + if (data_ != nullptr) { + delete [] data_; + } + data_ = new char[alignedSize]; DISPLAY_CHK_RETURN(data_ == nullptr, false, HDF_LOGE("%{public}s, alloc memory failed", __func__)); packSize_ = alignedSize; diff --git a/display/composer/v1_0/display_command/display_cmd_requester.h b/display/composer/v1_0/display_command/display_cmd_requester.h index e1313085..cf8cb85b 100755 --- a/display/composer/v1_0/display_command/display_cmd_requester.h +++ b/display/composer/v1_0/display_command/display_cmd_requester.h @@ -42,8 +42,7 @@ public: : initFlag_(false), hdi_(hdi), request_(nullptr), - reply_(nullptr), - requestPacker_(nullptr) + reply_(nullptr) { } @@ -63,6 +62,7 @@ public: int32_t Init(uint32_t eleCnt) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); request_ = std::make_shared(eleCnt, SmqType::SYNCED_SMQ); DISPLAY_CHK_RETURN(request_ == nullptr, HDF_FAILURE, HDF_LOGE("%{public}s: request_ is nullptr", __func__)); @@ -74,9 +74,7 @@ public: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: InitCmdRequest failure, ret=%{public}d", __func__, ret)); - requestPacker_ = std::make_shared(); - if (requestPacker_ == nullptr || - requestPacker_->Init(request_->GetSize() * CmdUtils::ELEMENT_SIZE) == false) { + if (requestPacker_.Init(request_->GetSize() << CmdUtils::MOVE_SIZE) == false) { HDF_LOGE("%{public}s: requestPacker init failed", __func__); return HDF_FAILURE; } @@ -95,6 +93,7 @@ public: int32_t PrepareDisplayLayers(uint32_t devId, bool &needFlushFb) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t replyEleCnt; std::vector outFds; std::shared_ptr replyData; @@ -102,7 +101,7 @@ public: int32_t ret = CmdUtils::StartSection(REQUEST_CMD_PREPARE_DISPLAY_LAYERS, requestPacker_); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = requestPacker_->WriteUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; + ret = requestPacker_.WriteUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); ret = CmdUtils::EndSection(requestPacker_); @@ -129,11 +128,12 @@ EXIT: int32_t SetDisplayClientBuffer(uint32_t devId, const BufferHandle* buffer, uint32_t seqNo, int32_t fence) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_DISPLAY_CLIENT_BUFFER, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); - bool retBool = requestPacker_->WriteUint32(devId); + bool retBool = requestPacker_.WriteUint32(devId); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write devId failed", __func__)); @@ -141,7 +141,7 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: BufferHandlePack failed", __func__)); - retBool = requestPacker_->WriteUint32(seqNo); + retBool = requestPacker_.WriteUint32(seqNo); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write seqNo failed", __func__)); @@ -158,16 +158,17 @@ EXIT: int32_t SetDisplayClientDamage(uint32_t devId, std::vector &rects) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_DISPLAY_CLIENT_DAMAGE, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); - ret = requestPacker_->WriteUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; + ret = requestPacker_.WriteUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: write devId failed", __func__)); uint32_t vectSize = static_cast(rects.size()); - bool retBool = requestPacker_->WriteUint32(vectSize); + bool retBool = requestPacker_.WriteUint32(vectSize); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write damage vector size failed", __func__)); @@ -186,6 +187,7 @@ EXIT: int32_t Commit(uint32_t devId, int32_t &fence) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t replyEleCnt = 0; std::vector outFds; std::shared_ptr replyData; @@ -193,7 +195,7 @@ EXIT: int32_t ret = CmdUtils::StartSection(REQUEST_CMD_COMMIT, requestPacker_); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = requestPacker_->WriteUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; + ret = requestPacker_.WriteUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); ret = CmdUtils::EndSection(requestPacker_); @@ -219,6 +221,7 @@ EXIT: int32_t SetLayerAlpha(uint32_t devId, uint32_t layerId, const LayerAlpha &alpha) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_ALPHA, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -227,23 +230,23 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: write devId failed", __func__)); - bool retBool = requestPacker_->WriteBool(alpha.enGlobalAlpha); + bool retBool = requestPacker_.WriteBool(alpha.enGlobalAlpha); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write enGlobalAlpha failed", __func__)); - retBool = requestPacker_->WriteBool(alpha.enPixelAlpha); + retBool = requestPacker_.WriteBool(alpha.enPixelAlpha); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write enPixelAlpha failed", __func__)); - retBool = requestPacker_->WriteUint8(alpha.alpha0); + retBool = requestPacker_.WriteUint8(alpha.alpha0); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write alpha0 failed", __func__)); - retBool = requestPacker_->WriteUint8(alpha.alpha1); + retBool = requestPacker_.WriteUint8(alpha.alpha1); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write alpha1 failed", __func__)); - retBool = requestPacker_->WriteUint8(alpha.gAlpha); + retBool = requestPacker_.WriteUint8(alpha.gAlpha); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write gAlpha failed", __func__)); @@ -256,6 +259,7 @@ EXIT: int32_t SetLayerRegion(uint32_t devId, uint32_t layerId, const IRect &rect) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_REGION, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -277,6 +281,7 @@ EXIT: int32_t SetLayerCrop(uint32_t devId, uint32_t layerId, const IRect &rect) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_CROP, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -298,6 +303,7 @@ EXIT: int32_t SetLayerZorder(uint32_t devId, uint32_t layerId, uint32_t zorder) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_ZORDER, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -306,7 +312,7 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: SetupDevice failed", __func__)); - bool retBool = requestPacker_->WriteUint32(zorder); + bool retBool = requestPacker_.WriteUint32(zorder); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write zorder failed", __func__)); @@ -319,6 +325,7 @@ EXIT: int32_t SetLayerPreMulti(uint32_t devId, uint32_t layerId, bool preMul) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_PREMULTI, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -327,7 +334,7 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: SetupDevice failed", __func__)); - bool retBool = requestPacker_->WriteBool(preMul); + bool retBool = requestPacker_.WriteBool(preMul); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write preMul failed", __func__)); @@ -340,6 +347,7 @@ EXIT: int32_t SetLayerTransformMode(uint32_t devId, uint32_t layerId, TransformType type) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_TRANSFORM_MODE, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -348,7 +356,7 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: SetupDevice failed", __func__)); - bool retBool = requestPacker_->WriteInt32(type); + bool retBool = requestPacker_.WriteInt32(type); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write transform-type failed", __func__)); @@ -361,6 +369,7 @@ EXIT: int32_t SetLayerDirtyRegion(uint32_t devId, uint32_t layerId, const std::vector &rects) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_DIRTY_REGION, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -370,7 +379,7 @@ EXIT: HDF_LOGE("%{public}s: SetupDevice failed", __func__)); uint32_t vSize = rects.size(); - bool retBool = requestPacker_->WriteUint32(vSize); + bool retBool = requestPacker_.WriteUint32(vSize); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write vSize failed", __func__)); for (uint32_t i = 0; i < vSize; i++) { @@ -388,6 +397,7 @@ EXIT: int32_t SetLayerVisibleRegion(uint32_t devId, uint32_t layerId, std::vector &rects) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_VISIBLE_REGION, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -397,7 +407,7 @@ EXIT: HDF_LOGE("%{public}s: SetupDevice failed", __func__)); uint32_t vSize = rects.size(); - bool retBool = requestPacker_->WriteUint32(vSize); + bool retBool = requestPacker_.WriteUint32(vSize); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write vSize failed", __func__)); for (uint32_t i = 0; i < vSize; i++) { @@ -416,6 +426,7 @@ EXIT: int32_t SetLayerBuffer(uint32_t devId, uint32_t layerId, const BufferHandle* buffer, uint32_t seqNo, int32_t fence, const std::vector& deletingList) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_BUFFER, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -428,7 +439,7 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: BufferHandlePack failed", __func__)); - bool result = requestPacker_->WriteUint32(seqNo); + bool result = requestPacker_.WriteUint32(seqNo); DISPLAY_CHK_RETURN(result == false, HDF_FAILURE, HDF_LOGE("%{public}s: write seqNo failed", __func__)); @@ -437,12 +448,12 @@ EXIT: HDF_LOGE("%{public}s: FileDescriptorPack failed", __func__)); // write deletingList uint32_t vectSize = static_cast(deletingList.size()); - bool retBool = requestPacker_->WriteUint32(vectSize); + bool retBool = requestPacker_.WriteUint32(vectSize); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write vector size failed", __func__)); for (uint32_t i = 0; i < vectSize; i++) { - bool result = requestPacker_->WriteUint32(deletingList[i]); + bool result = requestPacker_.WriteUint32(deletingList[i]); DISPLAY_CHK_RETURN(result == false, HDF_FAILURE, HDF_LOGE("%{public}s: write deletingList failed", __func__)); } @@ -456,6 +467,7 @@ EXIT: int32_t SetLayerCompositionType(uint32_t devId, uint32_t layerId, CompositionType type) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_COMPOSITION_TYPE, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -464,7 +476,7 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: SetupDevice failed", __func__)); - int32_t retBool = requestPacker_->WriteInt32(type); + int32_t retBool = requestPacker_.WriteInt32(type); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write composition type failed", __func__)); @@ -477,6 +489,7 @@ EXIT: int32_t SetLayerBlendType(uint32_t devId, uint32_t layerId, BlendType type) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_BLEND_TYPE, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -485,7 +498,7 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: SetupDevice failed", __func__)); - bool retBool = requestPacker_->WriteInt32(type); + bool retBool = requestPacker_.WriteInt32(type); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write blend type failed", __func__)); @@ -498,6 +511,7 @@ EXIT: int32_t SetLayerMaskInfo(uint32_t devId, uint32_t layerId, const MaskInfo maskInfo) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_MASK_INFO, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -506,7 +520,7 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: SetupDevice failed", __func__)); - bool retBool = requestPacker_->WriteUint32(maskInfo); + bool retBool = requestPacker_.WriteUint32(maskInfo); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write maskInfo failed", __func__)); @@ -519,6 +533,7 @@ EXIT: int32_t SetLayerColor(uint32_t devId, uint32_t layerId, const LayerColor& layerColor) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_COLOR, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -540,6 +555,7 @@ EXIT: int32_t GetDisplayCompChange(uint32_t devId, std::vector& layers, std::vector& types) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); layers = compChangeLayers_[devId]; types = compChangeTypes_[devId]; compChangeLayers_.erase(devId); @@ -547,21 +563,21 @@ EXIT: return HDF_SUCCESS; } protected: - int32_t OnReplySetError( - std::shared_ptr replyUnpacker, std::unordered_map &errMaps) + int32_t OnReplySetError(CommandDataUnpacker& replyUnpacker, std::unordered_map &errMaps) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t errCnt = 0; - bool retBool = replyUnpacker->ReadUint32(errCnt); + bool retBool = replyUnpacker.ReadUint32(errCnt); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read err cnt failed", __func__)); int32_t errCmd = -1; int32_t errCode = -1; for (; errCnt > 0; errCnt--) { - retBool = replyUnpacker->ReadInt32(errCmd); + retBool = replyUnpacker.ReadInt32(errCmd); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read err cmd failed", __func__)); - retBool = replyUnpacker->ReadInt32(errCode); + retBool = replyUnpacker.ReadInt32(errCode); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read err code failed", __func__)); errMaps.emplace(errCmd, errCode); @@ -570,17 +586,18 @@ protected: return HDF_SUCCESS; } - int32_t OnReplyPrepareDisplayLayers(std::shared_ptr replyUnpacker, bool &needFlushFb) + int32_t OnReplyPrepareDisplayLayers(CommandDataUnpacker& replyUnpacker, bool &needFlushFb) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t devId = 0; - int32_t retBool = replyUnpacker->ReadUint32(devId); + int32_t retBool = replyUnpacker.ReadUint32(devId); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read devId failed", __func__)); - retBool = replyUnpacker->ReadBool(needFlushFb); + retBool = replyUnpacker.ReadBool(needFlushFb); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read needFlushFb failed", __func__)); // unpack layers vector uint32_t vectSize = 0; - retBool = replyUnpacker->ReadUint32(vectSize); + retBool = replyUnpacker.ReadUint32(vectSize); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read vect size failed", __func__)); if (vectSize > CmdUtils::MAX_MEMORY) { HDF_LOGE("%{public}s: layers vectSize:%{public}u is too large", __func__, vectSize); @@ -589,12 +606,12 @@ protected: compChangeLayers_[devId].resize(vectSize); for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHK_RETURN(replyUnpacker->ReadUint32(compChangeLayers_[devId][i]) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(replyUnpacker.ReadUint32(compChangeLayers_[devId][i]) == false, HDF_FAILURE, HDF_LOGE("%{public}s: read layer vector failed", __func__)); } // unpack types vector vectSize = 0; - retBool = replyUnpacker->ReadUint32(vectSize); + retBool = replyUnpacker.ReadUint32(vectSize); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read vect size failed", __func__)); if (vectSize > CmdUtils::MAX_MEMORY) { HDF_LOGE("%{public}s: types vectSize:%{public}u is too large", __func__, vectSize); @@ -603,7 +620,7 @@ protected: compChangeTypes_[devId].resize(vectSize); for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHK_RETURN(replyUnpacker->ReadInt32(compChangeTypes_[devId][i]) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(replyUnpacker.ReadInt32(compChangeTypes_[devId][i]) == false, HDF_FAILURE, HDF_LOGE("%{public}s: read composition type vector failed", __func__)); } @@ -611,20 +628,22 @@ protected: } int32_t OnReplyCommit( - std::shared_ptr replyUnpacker, std::vector replyFds, int32_t &fenceFd) + CommandDataUnpacker& replyUnpacker, std::vector& replyFds, int32_t &fenceFd) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::FileDescriptorUnpack(replyUnpacker, replyFds, fenceFd); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: FileDescriptorUnpack failed", __func__)); return HDF_SUCCESS; } - int32_t ProcessUnpackCmd(std::shared_ptr replyUnpacker, int32_t unpackCmd, - std::vector replyFds, std::function fn) + int32_t ProcessUnpackCmd(CommandDataUnpacker& replyUnpacker, int32_t unpackCmd, + std::vector& replyFds, std::function fn) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = HDF_SUCCESS; - while (replyUnpacker->NextSection()) { - bool retBool = replyUnpacker->BeginSection(unpackCmd); + while (replyUnpacker.NextSection()) { + bool retBool = replyUnpacker.BeginSection(unpackCmd); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: BeginSection failed", __func__)); @@ -668,18 +687,17 @@ protected: return HDF_SUCCESS; } - int32_t DoReplyResults(uint32_t replyEleCnt, std::vector replyFds, std::shared_ptr replyData, + int32_t DoReplyResults(uint32_t replyEleCnt, std::vector& replyFds, std::shared_ptr replyData, std::function fn) { - std::shared_ptr replyUnpacker = std::make_shared(); - DISPLAY_CHK_RETURN(replyUnpacker == nullptr, HDF_FAILURE, - HDF_LOGE("%{public}s: CommandDataUnpacker construct failed", __func__)); - replyUnpacker->Init(replyData.get(), replyEleCnt * CmdUtils::ELEMENT_SIZE); + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); + CommandDataUnpacker replyUnpacker; + replyUnpacker.Init(replyData.get(), replyEleCnt << CmdUtils::MOVE_SIZE); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA - replyUnpacker->Dump(); + replyUnpacker.Dump(); #endif // DEBUG_DISPLAY_CMD_RAW_DATA int32_t unpackCmd = -1; - bool retBool = replyUnpacker->PackBegin(unpackCmd); + bool retBool = replyUnpacker.PackBegin(unpackCmd); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: PackBegin failed", __func__)); DISPLAY_CHK_RETURN(unpackCmd != CONTROL_CMD_REPLY_BEGIN, HDF_FAILURE, @@ -688,7 +706,7 @@ protected: return HDF_FAILURE; } - retBool = replyUnpacker->PackEnd(unpackCmd); + retBool = replyUnpacker.PackEnd(unpackCmd); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: PackEnd failed", __func__)); @@ -701,12 +719,13 @@ protected: int32_t DoRequest(uint32_t &replyEleCnt, std::vector &outFds, std::shared_ptr &replyData) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA - requestPacker_->Dump(); + requestPacker_.Dump(); #endif // DEBUG_DISPLAY_CMD_RAW_DATA - uint32_t eleCnt = requestPacker_->ValidSize() / CmdUtils::ELEMENT_SIZE; + uint32_t eleCnt = requestPacker_.ValidSize() >> CmdUtils::MOVE_SIZE; int32_t ret = request_->Write( - reinterpret_cast(requestPacker_->GetDataPtr()), eleCnt, CmdUtils::TRANSFER_WAIT_TIME); + reinterpret_cast(requestPacker_.GetDataPtr()), eleCnt, CmdUtils::TRANSFER_WAIT_TIME); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: CmdRequest write failed", __func__)); @@ -715,7 +734,7 @@ protected: HDF_LOGE("%{public}s: CmdRequest failed", __func__)); if (replyEleCnt != 0) { - replyData.reset(new char[replyEleCnt * CmdUtils::ELEMENT_SIZE], std::default_delete()); + replyData.reset(new char[replyEleCnt << CmdUtils::MOVE_SIZE], std::default_delete()); DISPLAY_CHK_RETURN(replyData == nullptr, HDF_FAILURE, HDF_LOGE("%{public}s: get replyData failed", __func__)); ret = reply_->Read(reinterpret_cast(replyData.get()), replyEleCnt, CmdUtils::TRANSFER_WAIT_TIME); @@ -729,6 +748,7 @@ protected: int32_t PeriodDataReset() { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); for (uint32_t i = 0; i < requestHdiFds_.size(); ++i) { int32_t fd = requestHdiFds_[i].hdiFd->Move(); if (fd != -1) { @@ -749,7 +769,7 @@ protected: std::shared_ptr request_; std::shared_ptr reply_; // Period data - std::shared_ptr requestPacker_; + CommandDataPacker requestPacker_; std::vector requestHdiFds_; // Composition layers/types changed std::unordered_map> compChangeLayers_; diff --git a/display/composer/v1_0/display_command/display_cmd_responser.h b/display/composer/v1_0/display_command/display_cmd_responser.h index 4c5ddff6..20facc3b 100755 --- a/display/composer/v1_0/display_command/display_cmd_responser.h +++ b/display/composer/v1_0/display_command/display_cmd_responser.h @@ -77,8 +77,7 @@ public: request_(nullptr), isReplyUpdated_(false), reply_(nullptr), - replyCommandCnt_(0), - replyPacker_(nullptr) {} + replyCommandCnt_(0) {} virtual ~DisplayCmdResponser() { @@ -123,67 +122,31 @@ public: return ret; } - int32_t ProcessRequestCmd(std::shared_ptr unpacker, int32_t cmd, + int32_t ProcessRequestCmd(CommandDataUnpacker& unpacker, int32_t cmd, const std::vector& inFds, std::vector& outFds) { int32_t ret = HDF_SUCCESS; HDF_LOGD("%{public}s: PackSection, cmd-[%{public}d] = %{public}s", __func__, cmd, CmdUtils::CommandToString(cmd)); switch (cmd) { - case REQUEST_CMD_PREPARE_DISPLAY_LAYERS: - OnPrepareDisplayLayers(unpacker); - break; - case REQUEST_CMD_SET_DISPLAY_CLIENT_BUFFER: - OnSetDisplayClientBuffer(unpacker, inFds); - break; - case REQUEST_CMD_SET_DISPLAY_CLIENT_DAMAGE: - OnSetDisplayClientDamage(unpacker); - break; - case REQUEST_CMD_COMMIT: - OnCommit(unpacker, outFds); - break; - case REQUEST_CMD_SET_LAYER_ALPHA: - OnSetLayerAlpha(unpacker); - break; - case REQUEST_CMD_SET_LAYER_REGION: - OnSetLayerRegion(unpacker); - break; - case REQUEST_CMD_SET_LAYER_CROP: - OnSetLayerCrop(unpacker); - break; - case REQUEST_CMD_SET_LAYER_ZORDER: - OnSetLayerZorder(unpacker); - break; - case REQUEST_CMD_SET_LAYER_PREMULTI: - OnSetLayerPreMulti(unpacker); - break; - case REQUEST_CMD_SET_LAYER_TRANSFORM_MODE: - OnSetLayerTransformMode(unpacker); - break; - case REQUEST_CMD_SET_LAYER_DIRTY_REGION: - OnSetLayerDirtyRegion(unpacker); - break; - case REQUEST_CMD_SET_LAYER_VISIBLE_REGION: - OnSetLayerVisibleRegion(unpacker); - break; - case REQUEST_CMD_SET_LAYER_BUFFER: - OnSetLayerBuffer(unpacker, inFds); - break; - case REQUEST_CMD_SET_LAYER_COMPOSITION_TYPE: - OnSetLayerCompositionType(unpacker); - break; - case REQUEST_CMD_SET_LAYER_BLEND_TYPE: - OnSetLayerBlendType(unpacker); - break; - case REQUEST_CMD_SET_LAYER_MASK_INFO: - OnSetLayerMaskInfo(unpacker); - break; - case CONTROL_CMD_REQUEST_END: - ret = OnRequestEnd(unpacker); - break; - case REQUEST_CMD_SET_LAYER_COLOR: - OnSetLayerColor(unpacker); - break; + case REQUEST_CMD_PREPARE_DISPLAY_LAYERS: OnPrepareDisplayLayers(unpacker); break; + case REQUEST_CMD_SET_DISPLAY_CLIENT_BUFFER: OnSetDisplayClientBuffer(unpacker, inFds); break; + case REQUEST_CMD_SET_DISPLAY_CLIENT_DAMAGE: OnSetDisplayClientDamage(unpacker); break; + case REQUEST_CMD_COMMIT: OnCommit(unpacker, outFds); break; + case REQUEST_CMD_SET_LAYER_ALPHA: OnSetLayerAlpha(unpacker); break; + case REQUEST_CMD_SET_LAYER_REGION: OnSetLayerRegion(unpacker); break; + case REQUEST_CMD_SET_LAYER_CROP: OnSetLayerCrop(unpacker); break; + case REQUEST_CMD_SET_LAYER_ZORDER: OnSetLayerZorder(unpacker); break; + case REQUEST_CMD_SET_LAYER_PREMULTI: OnSetLayerPreMulti(unpacker); break; + case REQUEST_CMD_SET_LAYER_TRANSFORM_MODE: OnSetLayerTransformMode(unpacker); break; + case REQUEST_CMD_SET_LAYER_DIRTY_REGION: OnSetLayerDirtyRegion(unpacker); break; + case REQUEST_CMD_SET_LAYER_VISIBLE_REGION: OnSetLayerVisibleRegion(unpacker); break; + case REQUEST_CMD_SET_LAYER_BUFFER: OnSetLayerBuffer(unpacker, inFds); break; + case REQUEST_CMD_SET_LAYER_COMPOSITION_TYPE: OnSetLayerCompositionType(unpacker); break; + case REQUEST_CMD_SET_LAYER_BLEND_TYPE: OnSetLayerBlendType(unpacker); break; + case REQUEST_CMD_SET_LAYER_MASK_INFO: OnSetLayerMaskInfo(unpacker); break; + case CONTROL_CMD_REQUEST_END: ret = OnRequestEnd(unpacker); break; + case REQUEST_CMD_SET_LAYER_COLOR: OnSetLayerColor(unpacker); break; default: HDF_LOGE("%{public}s: not support this cmd, unpacked cmd = %{public}d", __func__, cmd); ret = HDF_FAILURE; @@ -203,25 +166,22 @@ public: int32_t ret = request_->Read(reinterpret_cast(requestData.get()), inEleCnt, CmdUtils::TRANSFER_WAIT_TIME); - std::shared_ptr unpacker = std::make_shared(); - DISPLAY_CHK_RETURN(unpacker == nullptr, HDF_FAILURE, - HDF_LOGE("%{public}s: unpacker construct failed", __func__)); - - unpacker->Init(requestData.get(), inEleCnt * CmdUtils::ELEMENT_SIZE); + CommandDataUnpacker unpacker; + unpacker.Init(requestData.get(), inEleCnt << CmdUtils::MOVE_SIZE); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA - unpacker->Dump(); + unpacker.Dump(); #endif // DEBUG_DISPLAY_CMD_RAW_DATA int32_t unpackCmd = -1; - bool retBool = unpacker->PackBegin(unpackCmd); + bool retBool = unpacker.PackBegin(unpackCmd); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: error: Check RequestBegin failed", __func__)); DISPLAY_CHK_RETURN(unpackCmd != CONTROL_CMD_REQUEST_BEGIN, HDF_FAILURE, HDF_LOGI("error: unpacker PackBegin cmd not match, cmd(%{public}d)=%{public}s.", unpackCmd, CmdUtils::CommandToString(unpackCmd))); - while (ret == HDF_SUCCESS && unpacker->NextSection()) { - if (!unpacker->BeginSection(unpackCmd)) { + while (ret == HDF_SUCCESS && unpacker.NextSection()) { + if (!unpacker.BeginSection(unpackCmd)) { HDF_LOGE("error: PackSection failed, unpackCmd=%{public}s.", CmdUtils::CommandToString(unpackCmd)); ret = HDF_FAILURE; @@ -232,17 +192,17 @@ public: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: ProcessRequestCmd failed", __func__)); /* pack request end commands */ - replyPacker_->PackEnd(CONTROL_CMD_REPLY_END); + replyPacker_.PackEnd(CONTROL_CMD_REPLY_END); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA /* just for debug */ - replyPacker_->Dump(); + replyPacker_.Dump(); HDF_LOGI("CmdReply command cnt=%{public}d", replyCommandCnt_); #endif // DEBUG_DISPLAY_CMD_RAW_DATA /* Write reply pack */ - outEleCnt = replyPacker_->ValidSize() / CmdUtils::ELEMENT_SIZE; - ret = reply_->Write(reinterpret_cast(replyPacker_->GetDataPtr()), outEleCnt, + outEleCnt = replyPacker_.ValidSize() >> CmdUtils::MOVE_SIZE; + ret = reply_->Write(reinterpret_cast(replyPacker_.GetDataPtr()), outEleCnt, CmdUtils::TRANSFER_WAIT_TIME); if (ret != HDF_SUCCESS) { HDF_LOGE("Reply write failure, ret=%{public}d", ret); @@ -264,18 +224,14 @@ protected: DISPLAY_CHK_RETURN(reply_ == nullptr, HDF_FAILURE, HDF_LOGE("%{public}s: reply_ construct failed", __func__)); - replyPacker_ = std::make_shared(); - DISPLAY_CHK_RETURN(replyPacker_ == nullptr, HDF_FAILURE, - HDF_LOGE("%{public}s: replyPacker_ construct failed", __func__)); - - bool retBool = replyPacker_->Init(reply_->GetSize() * CmdUtils::ELEMENT_SIZE); + bool retBool = replyPacker_.Init(reply_->GetSize() << CmdUtils::MOVE_SIZE); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: replyPacker_ init failed", __func__)); return CmdUtils::StartPack(CONTROL_CMD_REPLY_BEGIN, replyPacker_); } - int32_t OnRequestEnd(std::shared_ptr unpacker) + int32_t OnRequestEnd(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -285,16 +241,16 @@ protected: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); - bool result = replyPacker_->WriteUint32(errCnt); + bool result = replyPacker_.WriteUint32(errCnt); DISPLAY_CHK_RETURN(result == false, HDF_FAILURE, HDF_LOGE("%{public}s: write errCnt failed", __func__)); for (auto it = errMaps_.begin(); it != errMaps_.end(); ++it) { - result = replyPacker_->WriteInt32(it->first); + result = replyPacker_.WriteInt32(it->first); DISPLAY_CHK_RETURN(result == false, HDF_FAILURE, HDF_LOGE("%{public}s: write err-cmd failed, cmdId:%{public}s", __func__, CmdUtils::CommandToString(it->first))); - result = replyPacker_->WriteInt32(it->second); + result = replyPacker_.WriteInt32(it->second); DISPLAY_CHK_RETURN(result == false, HDF_FAILURE, HDF_LOGE("%{public}s: write errNo failed, errNo:%{public}d", __func__, it->second)); } @@ -306,7 +262,7 @@ protected: return HDF_SUCCESS; } - void OnPrepareDisplayLayers(std::shared_ptr unpacker) + void OnPrepareDisplayLayers(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -316,7 +272,7 @@ protected: std::vector layers; std::vector types; - int32_t ret = unpacker->ReadUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; + int32_t ret = unpacker.ReadUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); { HdfTrace traceVdi("PrepareDisplayLayers", "HDI:DISP:HARDWARE"); @@ -334,22 +290,22 @@ protected: ret = CmdUtils::StartSection(REPLY_CMD_PREPARE_DISPLAY_LAYERS, replyPacker_); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - DISPLAY_CHECK(replyPacker_->WriteUint32(devId) == false, goto EXIT); + DISPLAY_CHECK(replyPacker_.WriteUint32(devId) == false, goto EXIT); - DISPLAY_CHECK(replyPacker_->WriteBool(needFlush) == false, goto EXIT); + DISPLAY_CHECK(replyPacker_.WriteBool(needFlush) == false, goto EXIT); // Write layers vector vectSize = static_cast(layers.size()); - DISPLAY_CHECK(replyPacker_->WriteUint32(vectSize) == false, goto EXIT); + DISPLAY_CHECK(replyPacker_.WriteUint32(vectSize) == false, goto EXIT); for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHECK(replyPacker_->WriteUint32(layers[i]) == false, goto EXIT); + DISPLAY_CHECK(replyPacker_.WriteUint32(layers[i]) == false, goto EXIT); } // Write composer types vector vectSize = static_cast(types.size()); - DISPLAY_CHECK(replyPacker_->WriteUint32(vectSize) == false, goto EXIT); + DISPLAY_CHECK(replyPacker_.WriteUint32(vectSize) == false, goto EXIT); for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHECK(replyPacker_->WriteUint32(types[i]) == false, goto EXIT); + DISPLAY_CHECK(replyPacker_.WriteUint32(types[i]) == false, goto EXIT); } // End this cmd section ret = CmdUtils::EndSection(replyPacker_); @@ -370,10 +326,10 @@ EXIT: bool isValidBuffer; } ClientBufferData; - int32_t UnpackDisplayClientBufferInfo(std::shared_ptr unpacker, - const std::vector& inFds, ClientBufferData &data) + int32_t UnpackDisplayClientBufferInfo(CommandDataUnpacker& unpacker, + const std::vector& inFds, ClientBufferData& data) { - if (!unpacker->ReadUint32(data.devId)) { + if (!unpacker.ReadUint32(data.devId)) { return HDF_FAILURE; } @@ -384,7 +340,7 @@ EXIT: } data.isValidBuffer = true; - if (!unpacker->ReadUint32(data.seqNo)) { + if (!unpacker.ReadUint32(data.seqNo)) { HDF_LOGE("%{public}s, read seqNo error", __func__); return HDF_FAILURE; } @@ -425,7 +381,7 @@ EXIT: return ret; } - void OnSetDisplayClientBuffer(std::shared_ptr unpacker, const std::vector& inFds) + void OnSetDisplayClientBuffer(CommandDataUnpacker& unpacker, const std::vector& inFds) { DISPLAY_TRACE; @@ -458,17 +414,17 @@ EXIT: } } - void OnSetDisplayClientDamage(std::shared_ptr unpacker) + void OnSetDisplayClientDamage(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; uint32_t devId = 0; uint32_t vectSize = 0; bool retBool = true; - DISPLAY_CHK_CONDITION(retBool, true, unpacker->ReadUint32(devId), + DISPLAY_CHK_CONDITION(retBool, true, unpacker.ReadUint32(devId), HDF_LOGE("%{public}s, read devId error", __func__)); - DISPLAY_CHK_CONDITION(retBool, true, unpacker->ReadUint32(vectSize), + DISPLAY_CHK_CONDITION(retBool, true, unpacker.ReadUint32(vectSize), HDF_LOGE("%{public}s, read vectSize error", __func__)); int32_t ret = (retBool ? HDF_SUCCESS : HDF_FAILURE); @@ -492,7 +448,7 @@ EXIT: return; } - void OnCommit(std::shared_ptr unpacker, std::vector& outFds) + void OnCommit(CommandDataUnpacker& unpacker, std::vector& outFds) { DISPLAY_TRACE; @@ -509,7 +465,7 @@ EXIT: } #endif int32_t ret = HDF_SUCCESS; - if (!unpacker->ReadUint32(devId)) { + if (!unpacker.ReadUint32(devId)) { HDF_LOGE("%{public}s, read devId error", __func__); ret = HDF_FAILURE; goto REPLY; @@ -553,7 +509,7 @@ REPLY: return; } - void OnSetLayerAlpha(std::shared_ptr unpacker) + void OnSetLayerAlpha(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -565,19 +521,19 @@ REPLY: int32_t ret = CmdUtils::SetupDeviceUnpack(unpacker, devId, layerId); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - retBool = unpacker->ReadBool(alpha.enGlobalAlpha); + retBool = unpacker.ReadBool(alpha.enGlobalAlpha); DISPLAY_CHECK(retBool == false, goto EXIT); - retBool = unpacker->ReadBool(alpha.enPixelAlpha); + retBool = unpacker.ReadBool(alpha.enPixelAlpha); DISPLAY_CHECK(retBool == false, goto EXIT); - retBool = unpacker->ReadUint8(alpha.alpha0); + retBool = unpacker.ReadUint8(alpha.alpha0); DISPLAY_CHECK(retBool == false, goto EXIT); - retBool = unpacker->ReadUint8(alpha.alpha1); + retBool = unpacker.ReadUint8(alpha.alpha1); DISPLAY_CHECK(retBool == false, goto EXIT); - retBool = unpacker->ReadUint8(alpha.gAlpha); + retBool = unpacker.ReadUint8(alpha.gAlpha); DISPLAY_CHECK(retBool == false, goto EXIT); { @@ -593,7 +549,7 @@ EXIT: return; } - void OnSetLayerRegion(std::shared_ptr unpacker) + void OnSetLayerRegion(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -619,7 +575,7 @@ EXIT: return; } - void OnSetLayerCrop(std::shared_ptr unpacker) + void OnSetLayerCrop(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -645,7 +601,7 @@ EXIT: return; } - void OnSetLayerZorder(std::shared_ptr unpacker) + void OnSetLayerZorder(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -656,7 +612,7 @@ EXIT: int32_t ret = CmdUtils::SetupDeviceUnpack(unpacker, devId, layerId); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = unpacker->ReadUint32(zorder) ? HDF_SUCCESS : HDF_FAILURE; + ret = unpacker.ReadUint32(zorder) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); { @@ -671,7 +627,7 @@ EXIT: return; } - void OnSetLayerPreMulti(std::shared_ptr unpacker) + void OnSetLayerPreMulti(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -682,7 +638,7 @@ EXIT: int32_t ret = CmdUtils::SetupDeviceUnpack(unpacker, devId, layerId); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = unpacker->ReadBool(preMulti) ? HDF_SUCCESS : HDF_FAILURE; + ret = unpacker.ReadBool(preMulti) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); { @@ -697,7 +653,7 @@ EXIT: return; } - void OnSetLayerTransformMode(std::shared_ptr unpacker) + void OnSetLayerTransformMode(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -708,7 +664,7 @@ EXIT: int32_t ret = CmdUtils::SetupDeviceUnpack(unpacker, devId, layerId); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = unpacker->ReadInt32(type) ? HDF_SUCCESS : HDF_FAILURE; + ret = unpacker.ReadInt32(type) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); { @@ -724,7 +680,7 @@ EXIT: return; } - void OnSetLayerDirtyRegion(std::shared_ptr unpacker) + void OnSetLayerDirtyRegion(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -736,7 +692,7 @@ EXIT: DISPLAY_CHK_CONDITION(ret, HDF_SUCCESS, CmdUtils::SetupDeviceUnpack(unpacker, devId, layerId), HDF_LOGE("%{public}s, read devId error", __func__)); - DISPLAY_CHK_CONDITION(ret, HDF_SUCCESS, unpacker->ReadUint32(vectSize) ? HDF_SUCCESS : HDF_FAILURE, + DISPLAY_CHK_CONDITION(ret, HDF_SUCCESS, unpacker.ReadUint32(vectSize) ? HDF_SUCCESS : HDF_FAILURE, HDF_LOGE("%{public}s, read vectSize error", __func__)); std::vector rects(vectSize); @@ -759,7 +715,7 @@ EXIT: return; } - void OnSetLayerVisibleRegion(std::shared_ptr unpacker) + void OnSetLayerVisibleRegion(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -771,7 +727,7 @@ EXIT: DISPLAY_CHK_CONDITION(ret, HDF_SUCCESS, CmdUtils::SetupDeviceUnpack(unpacker, devId, layerId), HDF_LOGE("%{public}s, read devId error", __func__)); - DISPLAY_CHK_CONDITION(ret, HDF_SUCCESS, unpacker->ReadUint32(vectSize) ? HDF_SUCCESS : HDF_FAILURE, + DISPLAY_CHK_CONDITION(ret, HDF_SUCCESS, unpacker.ReadUint32(vectSize) ? HDF_SUCCESS : HDF_FAILURE, HDF_LOGE("%{public}s, read vectSize error", __func__)); std::vector rects(vectSize); @@ -803,7 +759,7 @@ EXIT: BufferHandle *buffer; } LayerBufferData; - int32_t UnPackLayerBufferInfo(std::shared_ptr unpacker, const std::vector& inFds, + int32_t UnPackLayerBufferInfo(CommandDataUnpacker& unpacker, const std::vector& inFds, struct LayerBufferData *data, std::vector &deletingList) { DISPLAY_CHK_RETURN(HDF_SUCCESS != CmdUtils::SetupDeviceUnpack(unpacker, data->devId, data->layerId), @@ -814,7 +770,7 @@ EXIT: data->isValidBuffer = true; - DISPLAY_CHK_RETURN(true != unpacker->ReadUint32(data->seqNo), HDF_FAILURE, + DISPLAY_CHK_RETURN(true != unpacker.ReadUint32(data->seqNo), HDF_FAILURE, HDF_LOGE("%{public}s, read seqNo error", __func__)); DISPLAY_CHK_RETURN(HDF_SUCCESS != CmdUtils::FileDescriptorUnpack(unpacker, inFds, data->fence), HDF_FAILURE, @@ -822,7 +778,7 @@ EXIT: // unpack deletingList uint32_t vectSize = 0; - DISPLAY_CHK_RETURN(true != unpacker->ReadUint32(vectSize), HDF_FAILURE, + DISPLAY_CHK_RETURN(true != unpacker.ReadUint32(vectSize), HDF_FAILURE, HDF_LOGE("%{public}s, read vectSize error", __func__)); if (vectSize > CmdUtils::MAX_MEMORY) { HDF_LOGE("%{public}s: vectSize:%{public}u is too large", __func__, vectSize); @@ -831,7 +787,7 @@ EXIT: deletingList.resize(vectSize); for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHK_RETURN(true != unpacker->ReadUint32(deletingList[i]), HDF_FAILURE, + DISPLAY_CHK_RETURN(true != unpacker.ReadUint32(deletingList[i]), HDF_FAILURE, HDF_LOGE("%{public}s, read seqNo error, at i = %{public}d", __func__, i)); } return HDF_SUCCESS; @@ -863,7 +819,7 @@ EXIT: return ret; } - void OnSetLayerBuffer(std::shared_ptr unpacker, const std::vector& inFds) + void OnSetLayerBuffer(CommandDataUnpacker& unpacker, const std::vector& inFds) { DISPLAY_TRACE; @@ -900,7 +856,7 @@ EXIT: return; } - void OnSetLayerCompositionType(std::shared_ptr unpacker) + void OnSetLayerCompositionType(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -910,7 +866,7 @@ EXIT: int32_t ret = CmdUtils::SetupDeviceUnpack(unpacker, devId, layerId); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = unpacker->ReadInt32(type) ? HDF_SUCCESS : HDF_FAILURE; + ret = unpacker.ReadInt32(type) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); { @@ -925,7 +881,7 @@ EXIT: return; } - void OnSetLayerBlendType(std::shared_ptr unpacker) + void OnSetLayerBlendType(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -935,7 +891,7 @@ EXIT: int32_t ret = CmdUtils::SetupDeviceUnpack(unpacker, devId, layerId); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = unpacker->ReadInt32(type) ? HDF_SUCCESS : HDF_FAILURE; + ret = unpacker.ReadInt32(type) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); { @@ -950,7 +906,7 @@ EXIT: return; } - void OnSetLayerMaskInfo(std::shared_ptr unpacker) + void OnSetLayerMaskInfo(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -961,7 +917,7 @@ EXIT: int32_t ret = CmdUtils::SetupDeviceUnpack(unpacker, devId, layerId); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = unpacker->ReadUint32(maskInfo) ? HDF_SUCCESS : HDF_FAILURE; + ret = unpacker.ReadUint32(maskInfo) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); { @@ -976,7 +932,7 @@ EXIT: return; } - void OnSetLayerColor(std::shared_ptr unpacker) + void OnSetLayerColor(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; @@ -1137,7 +1093,7 @@ protected: std::shared_ptr reply_; /* period data */ uint32_t replyCommandCnt_; - std::shared_ptr replyPacker_; + CommandDataPacker replyPacker_; std::unordered_map errMaps_; /* fix fd leak */ std::queue delayFreeQueue_; diff --git a/display/composer/v1_0/display_command/display_cmd_utils.h b/display/composer/v1_0/display_command/display_cmd_utils.h index d87dbfe6..a56e8ad2 100644 --- a/display/composer/v1_0/display_command/display_cmd_utils.h +++ b/display/composer/v1_0/display_command/display_cmd_utils.h @@ -38,6 +38,7 @@ class DisplayCmdUtils { public: static constexpr int32_t MAX_INT = 0x7fffffff; static constexpr uint32_t ELEMENT_SIZE = sizeof(int32_t); + static constexpr uint32_t MOVE_SIZE = sizeof(int) / 2; static constexpr uint32_t TRANSFER_WAIT_TIME = 100000000; // ms static constexpr uint32_t INIT_ELEMENT_COUNT = 32 * 1024; static constexpr uint32_t MAX_MEMORY = 10485760; // 10M; @@ -78,33 +79,33 @@ public: } } - static int32_t StartPack(int32_t cmdId, std::shared_ptr packer) + static int32_t StartPack(int32_t cmdId, CommandDataPacker& packer) { - return packer->PackBegin(cmdId) ? HDF_SUCCESS : HDF_FAILURE; + return packer.PackBegin(cmdId) ? HDF_SUCCESS : HDF_FAILURE; } - static int32_t EndPack(std::shared_ptr packer) + static int32_t EndPack(CommandDataPacker& packer) { - return packer->PackEnd(CONTROL_CMD_REQUEST_END) ? HDF_SUCCESS : HDF_FAILURE; + return packer.PackEnd(CONTROL_CMD_REQUEST_END) ? HDF_SUCCESS : HDF_FAILURE; } - static int32_t StartSection(int32_t cmdId, std::shared_ptr packer) + static int32_t StartSection(int32_t cmdId, CommandDataPacker& packer) { - return packer->BeginSection(cmdId) ? HDF_SUCCESS : HDF_FAILURE; + return packer.BeginSection(cmdId) ? HDF_SUCCESS : HDF_FAILURE; } - static int32_t SetupDevice(uint32_t devId, uint32_t layerId, std::shared_ptr packer) + static int32_t SetupDevice(uint32_t devId, uint32_t layerId, CommandDataPacker& packer) { - DISPLAY_CHK_RETURN(packer->WriteUint32(devId) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint32(devId) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write devId error", __func__)); - DISPLAY_CHK_RETURN(packer->WriteUint32(layerId) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint32(layerId) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write layerId error", __func__)); return HDF_SUCCESS; } - static int32_t EndSection(std::shared_ptr packer) + static int32_t EndSection(CommandDataPacker& packer) { - return packer->EndSection() ? HDF_SUCCESS : HDF_FAILURE; + return packer.EndSection() ? HDF_SUCCESS : HDF_FAILURE; } static int32_t GenerateHdifdSeqid() @@ -134,87 +135,96 @@ public: return false; } - static int32_t RectPack(const IRect& rect, std::shared_ptr packer) + static int32_t RectPack(const IRect& rect, CommandDataPacker& packer) { - DISPLAY_CHK_RETURN(packer->WriteInt32(rect.x) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(rect.x) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write rect.x error", __func__)); - DISPLAY_CHK_RETURN(packer->WriteInt32(rect.y) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(rect.y) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write rect.y error", __func__)); - DISPLAY_CHK_RETURN(packer->WriteInt32(rect.w) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(rect.w) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write rect.w error", __func__)); - DISPLAY_CHK_RETURN(packer->WriteInt32(rect.h) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(rect.h) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write rect.h error", __func__)); return HDF_SUCCESS; } - static int32_t LayerColorPack(const LayerColor& layerColor, std::shared_ptr packer) + static int32_t LayerColorPack(const LayerColor& layerColor, CommandDataPacker& packer) { - DISPLAY_CHK_RETURN(packer->WriteUint8(layerColor.r) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint8(layerColor.r) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write layerColor.r error", __func__)); - DISPLAY_CHK_RETURN(packer->WriteUint8(layerColor.g) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint8(layerColor.g) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write layerColor.g error", __func__)); - DISPLAY_CHK_RETURN(packer->WriteUint8(layerColor.b) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint8(layerColor.b) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write layerColor.b error", __func__)); - DISPLAY_CHK_RETURN(packer->WriteUint8(layerColor.a) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint8(layerColor.a) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write layerColor.a error", __func__)); return HDF_SUCCESS; } static int32_t FileDescriptorPack( - const int32_t fd, std::shared_ptr packer, std::vector& hdiFds) + const int32_t fd, CommandDataPacker& packer, std::vector& hdiFds, bool dupFd = true) { + if (fd < 0) { + DISPLAY_CHK_RETURN(packer.WriteInt32(fd) == false, HDF_FAILURE, + HDF_LOGE("%{public}s, write fd error", __func__)); + return HDF_SUCCESS; + } + HdifdInfo hdifdInfo; hdifdInfo.id = GenerateHdifdSeqid(); - hdifdInfo.hdiFd = new HdifdParcelable(); - DISPLAY_CHK_RETURN(hdifdInfo.hdiFd == nullptr, HDF_FAILURE, - HDF_LOGE("%{public}s, new HdifdParcelable failed", __func__)); - if (fd >= 0) { + if (dupFd) { + hdifdInfo.hdiFd = new HdifdParcelable(); + DISPLAY_CHK_RETURN(hdifdInfo.hdiFd == nullptr, HDF_FAILURE, + HDF_LOGE("%{public}s, new HdifdParcelable failed", __func__)); // A normal fd is transfered by binder, here just write id for unpacking to match fd. DISPLAY_CHK_RETURN(hdifdInfo.hdiFd->Init(fd) == false, HDF_FAILURE, HDF_LOGE("%{public}s, hdiFd init failed, fd:%{public}d", __func__, fd)); - hdiFds.push_back(hdifdInfo); - DISPLAY_CHK_RETURN(packer->WriteInt32(hdifdInfo.id) == false, HDF_FAILURE, - HDF_LOGE("%{public}s, write hdifdInfo.id failed", __func__)); } else { - // A illegal fd is transfered by smq directly. - DISPLAY_CHK_RETURN(packer->WriteInt32(fd) == false, HDF_FAILURE, - HDF_LOGE("%{public}s, write fd error", __func__)); + hdifdInfo.hdiFd = new HdifdParcelable(fd); + DISPLAY_CHK_RETURN(hdifdInfo.hdiFd == nullptr, HDF_FAILURE, + HDF_LOGE("%{public}s, new HdifdParcelable failed", __func__)); + hdifdInfo.hdiFd->Move(); } + + hdiFds.push_back(hdifdInfo); + DISPLAY_CHK_RETURN(packer.WriteInt32(hdifdInfo.id) == false, HDF_FAILURE, + HDF_LOGE("%{public}s, write hdifdInfo.id failed", __func__)); + return HDF_SUCCESS; } - static int32_t BufferHandlePack(const BufferHandle* buffer, std::shared_ptr packer, + static int32_t BufferHandlePack(const BufferHandle* buffer, CommandDataPacker& packer, std::vector& hdiFds) { if (buffer == nullptr) { - DISPLAY_CHK_RETURN(packer->WriteUint32(UINT32_MAX) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint32(UINT32_MAX) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write null buffer reserveFds error", __func__)); - DISPLAY_CHK_RETURN(packer->WriteUint32(UINT32_MAX) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint32(UINT32_MAX) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write null buffer reservceInts error", __func__)); return HDF_SUCCESS; } else { - DISPLAY_CHK_RETURN(packer->WriteUint32(buffer->reserveFds) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint32(buffer->reserveFds) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->reserveFds error", __func__)); - DISPLAY_CHK_RETURN(packer->WriteUint32(buffer->reserveInts) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint32(buffer->reserveInts) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->reserveInts error", __func__)); } int32_t ret = FileDescriptorPack(buffer->fd, packer, hdiFds); if (ret != HDF_SUCCESS) { return ret; } - DISPLAY_CHK_RETURN(packer->WriteInt32(buffer->width) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(buffer->width) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->width failed", __func__)); - DISPLAY_CHK_RETURN(packer->WriteInt32(buffer->stride) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(buffer->stride) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->stride failed", __func__)); - DISPLAY_CHK_RETURN(packer->WriteInt32(buffer->height) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(buffer->height) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->height failed", __func__)); - DISPLAY_CHK_RETURN(packer->WriteInt32(buffer->size) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(buffer->size) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->size failed", __func__)); - DISPLAY_CHK_RETURN(packer->WriteInt32(buffer->format) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(buffer->format) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->format failed", __func__)); - DISPLAY_CHK_RETURN(packer->WriteUint64(buffer->usage) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint64(buffer->usage) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->usage failed", __func__)); - DISPLAY_CHK_RETURN(packer->WriteUint64(buffer->phyAddr) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteUint64(buffer->phyAddr) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->phyAddr failed", __func__)); uint32_t i = 0; for (i = 0; i < buffer->reserveFds; i++) { @@ -224,39 +234,39 @@ public: } } for (uint32_t j = 0; j < buffer->reserveInts; j++) { - DISPLAY_CHK_RETURN(packer->WriteInt32(buffer->reserve[i++]) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(packer.WriteInt32(buffer->reserve[i++]) == false, HDF_FAILURE, HDF_LOGE("%{public}s, write buffer->reserve failed", __func__)); } return HDF_SUCCESS; } - static int32_t SetupDeviceUnpack(std::shared_ptr unpacker, uint32_t& devId, uint32_t& layerId) + static int32_t SetupDeviceUnpack(CommandDataUnpacker& unpacker, uint32_t& devId, uint32_t& layerId) { - DISPLAY_CHK_RETURN(unpacker->ReadUint32(devId) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadUint32(devId) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read devId failed", __func__)); - DISPLAY_CHK_RETURN(unpacker->ReadUint32(layerId) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadUint32(layerId) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read layerId failed", __func__)); return HDF_SUCCESS; } - static int32_t RectUnpack(std::shared_ptr unpacker, IRect& rect) + static int32_t RectUnpack(CommandDataUnpacker& unpacker, IRect& rect) { - DISPLAY_CHK_RETURN(unpacker->ReadInt32(rect.x) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadInt32(rect.x) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read rect.x failed", __func__)); - DISPLAY_CHK_RETURN(unpacker->ReadInt32(rect.y) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadInt32(rect.y) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read rect.y failed", __func__)); - DISPLAY_CHK_RETURN(unpacker->ReadInt32(rect.w) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadInt32(rect.w) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read rect.w failed", __func__)); - DISPLAY_CHK_RETURN(unpacker->ReadInt32(rect.h) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadInt32(rect.h) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read rect.h failed", __func__)); return HDF_SUCCESS; } static int32_t FileDescriptorUnpack( - std::shared_ptr unpacker, const std::vector& hdiFds, int32_t& fd) + CommandDataUnpacker& unpacker, const std::vector& hdiFds, int32_t& fd) { int32_t fdId = -1; - DISPLAY_CHK_RETURN(unpacker->ReadInt32(fdId) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadInt32(fdId) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read fdId failed", __func__)); if (fdId < 0 || MatchHdiFd(fdId, hdiFds, fd) == false) { // If matching failure, the illegal fd is transfered by smq directly, not by binder IPC. @@ -265,29 +275,29 @@ public: return HDF_SUCCESS; } - static bool UnpackBasicInfo(std::shared_ptr unpacker, const std::vector& hdiFds, + static bool UnpackBasicInfo(CommandDataUnpacker& unpacker, const std::vector& hdiFds, BufferHandle *handle) { int32_t ret = FileDescriptorUnpack(unpacker, hdiFds, handle->fd); bool retVal = (ret == HDF_SUCCESS ? true : false); - DISPLAY_CHK_CONDITION(retVal, true, unpacker->ReadInt32(handle->width), + DISPLAY_CHK_CONDITION(retVal, true, unpacker.ReadInt32(handle->width), HDF_LOGE("%{public}s, read handle->width error", __func__)); - DISPLAY_CHK_CONDITION(retVal, true, unpacker->ReadInt32(handle->stride), + DISPLAY_CHK_CONDITION(retVal, true, unpacker.ReadInt32(handle->stride), HDF_LOGE("%{public}s, read handle->stride error", __func__)); - DISPLAY_CHK_CONDITION(retVal, true, unpacker->ReadInt32(handle->height), + DISPLAY_CHK_CONDITION(retVal, true, unpacker.ReadInt32(handle->height), HDF_LOGE("%{public}s, read handle->height error", __func__)); - DISPLAY_CHK_CONDITION(retVal, true, unpacker->ReadInt32(handle->size), + DISPLAY_CHK_CONDITION(retVal, true, unpacker.ReadInt32(handle->size), HDF_LOGE("%{public}s, read handle->size error", __func__)); - DISPLAY_CHK_CONDITION(retVal, true, unpacker->ReadInt32(handle->format), + DISPLAY_CHK_CONDITION(retVal, true, unpacker.ReadInt32(handle->format), HDF_LOGE("%{public}s, read handle->format error", __func__)); - DISPLAY_CHK_CONDITION(retVal, true, unpacker->ReadUint64(handle->usage), + DISPLAY_CHK_CONDITION(retVal, true, unpacker.ReadUint64(handle->usage), HDF_LOGE("%{public}s, read handle->usage error", __func__)); - DISPLAY_CHK_CONDITION(retVal, true, unpacker->ReadUint64(handle->phyAddr), + DISPLAY_CHK_CONDITION(retVal, true, unpacker.ReadUint64(handle->phyAddr), HDF_LOGE("%{public}s, read handle->phyAddr error", __func__)); return retVal; } - static bool UnpackExtraInfo(std::shared_ptr unpacker, const std::vector& hdiFds, + static bool UnpackExtraInfo(CommandDataUnpacker& unpacker, const std::vector& hdiFds, BufferHandle *handle) { bool retVal = true; @@ -300,7 +310,7 @@ public: } } for (uint32_t j = 0; j < handle->reserveInts; j++) { - retVal = unpacker->ReadInt32(handle->reserve[i++]); + retVal = unpacker.ReadInt32(handle->reserve[i++]); if (!retVal) { HDF_LOGE("%{public}s, get reserve data error, i:%{public}u, j:%{public}u", __func__, i, j); @@ -310,14 +320,14 @@ public: return retVal; } - static int32_t BufferHandleUnpack(std::shared_ptr unpacker, + static int32_t BufferHandleUnpack(CommandDataUnpacker& unpacker, const std::vector& hdiFds, BufferHandle*& buffer) { uint32_t fdsNum = 0; uint32_t intsNum = 0; - DISPLAY_CHK_RETURN(unpacker->ReadUint32(fdsNum) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadUint32(fdsNum) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read fdsNum error", __func__)); - DISPLAY_CHK_RETURN(unpacker->ReadUint32(intsNum) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadUint32(intsNum) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read intsNum error", __func__)); if (fdsNum == UINT32_MAX && intsNum == UINT32_MAX) { buffer = nullptr; @@ -342,15 +352,15 @@ public: return retVal ? HDF_SUCCESS : HDF_FAILURE; } - static int32_t LayerColorUnpack(std::shared_ptr unpacker, LayerColor& layerColor) + static int32_t LayerColorUnpack(CommandDataUnpacker& unpacker, LayerColor& layerColor) { - DISPLAY_CHK_RETURN(unpacker->ReadUint8(layerColor.r) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadUint8(layerColor.r) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read layerColor.r failed", __func__)); - DISPLAY_CHK_RETURN(unpacker->ReadUint8(layerColor.g) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadUint8(layerColor.g) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read layerColor.g failed", __func__)); - DISPLAY_CHK_RETURN(unpacker->ReadUint8(layerColor.b) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadUint8(layerColor.b) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read layerColor.b failed", __func__)); - DISPLAY_CHK_RETURN(unpacker->ReadUint8(layerColor.a) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(unpacker.ReadUint8(layerColor.a) == false, HDF_FAILURE, HDF_LOGE("%{public}s, read layerColor.a failed", __func__)); return HDF_SUCCESS; } diff --git a/display/composer/v1_2/display_command/display_cmd_requester.h b/display/composer/v1_2/display_command/display_cmd_requester.h index 6e5dadbd..826c2d54 100644 --- a/display/composer/v1_2/display_command/display_cmd_requester.h +++ b/display/composer/v1_2/display_command/display_cmd_requester.h @@ -47,9 +47,10 @@ public: return requester; } - int32_t CommitAndGetReleaseFence(uint32_t devId, int32_t &fence, bool isSupportSkipValidate, - int32_t &skipState, bool &needFlush, std::vector& layers, std::vector& fences) + int32_t CommitAndGetReleaseFence(uint32_t devId, int32_t& fence, bool isSupportSkipValidate, int32_t& skipState, + bool& needFlush, std::vector& layers, std::vector& fences, bool isValidated) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t replyEleCnt = 0; std::vector outFds; std::shared_ptr replyData; @@ -57,10 +58,13 @@ public: int32_t ret = CmdUtils::StartSection(REQUEST_CMD_COMMIT_AND_GET_RELEASE_FENCE, requestPacker_); DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = requestPacker_->WriteUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; + ret = requestPacker_.WriteUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = requestPacker_->WriteBool(isSupportSkipValidate) ? HDF_SUCCESS : HDF_FAILURE; + ret = requestPacker_.WriteBool(isSupportSkipValidate) ? HDF_SUCCESS : HDF_FAILURE; + DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); + + ret = requestPacker_.WriteBool(isValidated) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); ret = CmdUtils::EndSection(requestPacker_); @@ -97,64 +101,71 @@ EXIT: return PeriodDataReset() == HDF_SUCCESS ? ret : HDF_FAILURE; } - int32_t OnReplyCommitAndGetReleaseFence(std::shared_ptr replyUnpacker, - std::vector replyFds, int32_t &fenceFd, int32_t &skipState, - bool &needFlush, std::vector& layers, std::vector& fences) + int32_t OnReplySkipStateFailed(CommandDataUnpacker& replyUnpacker, bool &needFlush) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t devId = 0; + int32_t retBool = replyUnpacker.ReadUint32(devId); + DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read devId failed", __func__)); + + retBool = replyUnpacker.ReadBool(needFlush); + DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read needFlush failed", __func__)); + + // unpack layers vector + uint32_t vectSize = 0; + retBool = replyUnpacker.ReadUint32(vectSize); + DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, + HDF_LOGE("%{public}s: HDI 1.2 read vect size failed", __func__)); + + compChangeLayers_[devId].resize(vectSize); + for (uint32_t i = 0; i < vectSize; i++) { + DISPLAY_CHK_RETURN(replyUnpacker.ReadUint32(compChangeLayers_[devId][i]) == false, HDF_FAILURE, + HDF_LOGE("%{public}s: HDI 1.2 read layer vector failed", __func__)); + } + // unpack types vector + vectSize = 0; + retBool = replyUnpacker.ReadUint32(vectSize); + DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, + HDF_LOGE("%{public}s: HDI 1.2 read vect size failed", __func__)); + + compChangeTypes_[devId].resize(vectSize); + for (uint32_t i = 0; i < vectSize; i++) { + DISPLAY_CHK_RETURN(replyUnpacker.ReadInt32(compChangeTypes_[devId][i]) == false, HDF_FAILURE, + HDF_LOGE("%{public}s: HDI 1.2 read composition type vector failed", __func__)); + } + return HDF_SUCCESS; + } + + int32_t OnReplyCommitAndGetReleaseFence(CommandDataUnpacker& replyUnpacker, + std::vector& replyFds, int32_t& fenceFd, int32_t& skipState, + bool& needFlush, std::vector& layers, std::vector& fences) + { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::FileDescriptorUnpack(replyUnpacker, replyFds, fenceFd); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: FileDescriptorUnpack failed", __func__)); - int32_t retBool = replyUnpacker->ReadInt32(skipState); + int32_t retBool = replyUnpacker.ReadInt32(skipState); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read skipValidateState failed", __func__)); if (skipState != HDF_SUCCESS) { - retBool = replyUnpacker->ReadUint32(devId); - DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read devId failed", __func__)); - - retBool = replyUnpacker->ReadBool(needFlush); - DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read needFlush failed", __func__)); - + return OnReplySkipStateFailed(replyUnpacker, needFlush); + } else { // unpack layers vector uint32_t vectSize = 0; - retBool = replyUnpacker->ReadUint32(vectSize); - DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, - HDF_LOGE("%{public}s: HDI 1.2 read vect size failed", __func__)); - - compChangeLayers_[devId].resize(vectSize); - for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHK_RETURN(replyUnpacker->ReadUint32(compChangeLayers_[devId][i]) == false, HDF_FAILURE, - HDF_LOGE("%{public}s: HDI 1.2 read layer vector failed", __func__)); - } - // unpack types vector - vectSize = 0; - retBool = replyUnpacker->ReadUint32(vectSize); - DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, - HDF_LOGE("%{public}s: HDI 1.2 read vect size failed", __func__)); - - compChangeTypes_[devId].resize(vectSize); - for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHK_RETURN(replyUnpacker->ReadInt32(compChangeTypes_[devId][i]) == false, HDF_FAILURE, - HDF_LOGE("%{public}s: HDI 1.2 read composition type vector failed", __func__)); - } - } - - // unpack layers vector - uint32_t vectSize = 0; - DISPLAY_CHK_RETURN(true != replyUnpacker->ReadUint32(vectSize), HDF_FAILURE, + DISPLAY_CHK_RETURN(true != replyUnpacker.ReadUint32(vectSize), HDF_FAILURE, HDF_LOGE("%{public}s: HDI 1.2 read vect size failed", __func__)); layers.resize(vectSize); for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHK_RETURN(replyUnpacker->ReadUint32(layers[i]) == false, HDF_FAILURE, + DISPLAY_CHK_RETURN(replyUnpacker.ReadUint32(layers[i]) == false, HDF_FAILURE, HDF_LOGE("%{public}s: HDI 1.2 read layer vector failed", __func__)); } // unpack layers vector vectSize = 0; - DISPLAY_CHK_RETURN(true != replyUnpacker->ReadUint32(vectSize), HDF_FAILURE, + DISPLAY_CHK_RETURN(true != replyUnpacker.ReadUint32(vectSize), HDF_FAILURE, HDF_LOGE("%{public}s: HDI 1.2 read vect size failed", __func__)); fences.resize(vectSize); @@ -163,15 +174,18 @@ EXIT: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: HDI 1.2 FileDescriptorUnpack failed", __func__)); } + } + return HDF_SUCCESS; } - int32_t ProcessUnpackCmd(std::shared_ptr replyUnpacker, int32_t unpackCmd, - std::vector replyFds, std::function fn) + int32_t ProcessUnpackCmd(CommandDataUnpacker& replyUnpacker, int32_t unpackCmd, + std::vector& replyFds, std::function fn) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = HDF_SUCCESS; - while (replyUnpacker->NextSection()) { - bool retBool = replyUnpacker->BeginSection(unpackCmd); + while (replyUnpacker.NextSection()) { + bool retBool = replyUnpacker.BeginSection(unpackCmd); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: BeginSection failed", __func__)); @@ -199,18 +213,17 @@ EXIT: return HDF_SUCCESS; } - int32_t DoReplyResults(uint32_t replyEleCnt, std::vector replyFds, std::shared_ptr replyData, + int32_t DoReplyResults(uint32_t replyEleCnt, std::vector& replyFds, std::shared_ptr replyData, std::function fn) { - std::shared_ptr replyUnpacker = std::make_shared(); - DISPLAY_CHK_RETURN(replyUnpacker == nullptr, HDF_FAILURE, - HDF_LOGE("%{public}s: HDI 1.2 CommandDataUnpacker construct failed", __func__)); - replyUnpacker->Init(replyData.get(), replyEleCnt * CmdUtils::ELEMENT_SIZE); + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); + CommandDataUnpacker replyUnpacker; + replyUnpacker.Init(replyData.get(), replyEleCnt << CmdUtils::MOVE_SIZE); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA - replyUnpacker->Dump(); + replyUnpacker.Dump(); #endif // DEBUG_DISPLAY_CMD_RAW_DATA int32_t unpackCmd = -1; - bool retBool = replyUnpacker->PackBegin(unpackCmd); + bool retBool = replyUnpacker.PackBegin(unpackCmd); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: PackBegin failed", __func__)); DISPLAY_CHK_RETURN(unpackCmd != CONTROL_CMD_REPLY_BEGIN, HDF_FAILURE, @@ -219,7 +232,7 @@ EXIT: return HDF_FAILURE; } - retBool = replyUnpacker->PackEnd(unpackCmd); + retBool = replyUnpacker.PackEnd(unpackCmd); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: PackEnd failed", __func__)); @@ -233,23 +246,24 @@ EXIT: // LTPO新增接口 int32_t SetDisplayConstraint(uint32_t devId, uint64_t frameID, uint64_t ns, uint32_t type) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_DISPLAY_CONSTRAINT, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); - bool retBool = requestPacker_->WriteUint32(devId); + bool retBool = requestPacker_.WriteUint32(devId); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write devId failed", __func__)); - retBool = requestPacker_->WriteUint64(frameID); + retBool = requestPacker_.WriteUint64(frameID); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write frameID failed", __func__)); - retBool = requestPacker_->WriteUint64(ns); + retBool = requestPacker_.WriteUint64(ns); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write ns failed", __func__)); - retBool = requestPacker_->WriteUint32(type); + retBool = requestPacker_.WriteUint32(type); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: write type failed", __func__)); diff --git a/display/composer/v1_2/display_command/display_cmd_responser.h b/display/composer/v1_2/display_command/display_cmd_responser.h index 66fd47ad..0c2aa60b 100644 --- a/display/composer/v1_2/display_command/display_cmd_responser.h +++ b/display/composer/v1_2/display_command/display_cmd_responser.h @@ -71,10 +71,10 @@ public: virtual ~DisplayCmdResponser() {} - int32_t ProcessRequestCmd(std::shared_ptr& unpacker, int32_t cmd, + int32_t ProcessRequestCmd(CommandDataUnpacker& unpacker, int32_t cmd, const std::vector& inFds, std::vector& outFds) { - HDF_LOGD("%{public}s: HDI 1.2 PackSection, cmd-[%{public}d] = %{public}s", + HDF_LOGI("%{public}s: HDI 1.2 PackSection, cmd-[%{public}d] = %{public}s", __func__, cmd, CmdUtils::CommandToString(cmd)); if (cmd == REQUEST_CMD_COMMIT_AND_GET_RELEASE_FENCE) { OnCommitAndGetReleaseFence(unpacker, outFds); @@ -88,34 +88,36 @@ public: void ReplyNotSkipInfo(uint32_t& devId, CommitInfo& commitInfo) { - DISPLAY_CHECK(replyPacker_->WriteUint32(devId) == false, + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); + DISPLAY_CHECK(replyPacker_.WriteUint32(devId) == false, HDF_LOGE("%{public}s, write devId error", __func__)); - DISPLAY_CHECK(replyPacker_->WriteBool(commitInfo.needFlush) == false, + DISPLAY_CHECK(replyPacker_.WriteBool(commitInfo.needFlush) == false, HDF_LOGE("%{public}s, write needFlush error", __func__)); // Write compLayers vector uint32_t vectSize = static_cast(commitInfo.compLayers.size()); - DISPLAY_CHECK(replyPacker_->WriteUint32(vectSize) == false, + DISPLAY_CHECK(replyPacker_.WriteUint32(vectSize) == false, HDF_LOGE("%{public}s, write compLayers.size error", __func__)); for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHECK(replyPacker_->WriteUint32(commitInfo.compLayers[i]) == false, + DISPLAY_CHECK(replyPacker_.WriteUint32(commitInfo.compLayers[i]) == false, HDF_LOGE("%{public}s, write compLayers error", __func__)); } // Write compTypes vector vectSize = static_cast(commitInfo.compTypes.size()); - DISPLAY_CHECK(replyPacker_->WriteUint32(vectSize) == false, + DISPLAY_CHECK(replyPacker_.WriteUint32(vectSize) == false, HDF_LOGE("%{public}s, write compTypes.size error", __func__)); for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHECK(replyPacker_->WriteUint32(commitInfo.compTypes[i]) == false, + DISPLAY_CHECK(replyPacker_.WriteUint32(commitInfo.compTypes[i]) == false, HDF_LOGE("%{public}s, write compTypes error", __func__)); } } void ReplyCommitAndGetReleaseFence(std::vector& outFds, uint32_t& devId, CommitInfo& commitInfo) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = HDF_SUCCESS; uint32_t vectSize = 0; @@ -127,30 +129,30 @@ public: DISPLAY_CHK_CONDITION(ret, HDF_SUCCESS, CmdUtils::FileDescriptorPack(fdParcel.GetFd(), replyPacker_, outFds), HDF_LOGE("%{public}s, FileDescriptorPack error", __func__)); - DISPLAY_CHECK(replyPacker_->WriteInt32(commitInfo.skipRet) == false, + DISPLAY_CHECK(replyPacker_.WriteInt32(commitInfo.skipRet) == false, HDF_LOGE("%{public}s, write skip validate return value error", __func__)); if (commitInfo.skipRet != HDF_SUCCESS) { ReplyNotSkipInfo(devId, commitInfo); - } - + } else { // Write layers vector - vectSize = static_cast(commitInfo.layers.size()); - DISPLAY_CHECK(replyPacker_->WriteUint32(vectSize) == false, - HDF_LOGE("%{public}s, write layers.size error", __func__)); + vectSize = static_cast(commitInfo.layers.size()); + DISPLAY_CHECK(replyPacker_.WriteUint32(vectSize) == false, + HDF_LOGE("%{public}s, write layers.size error", __func__)); - for (uint32_t i = 0; i < vectSize; i++) { - DISPLAY_CHECK(replyPacker_->WriteUint32(commitInfo.layers[i]) == false, - HDF_LOGE("%{public}s, write layers error", __func__)); - } + for (uint32_t i = 0; i < vectSize; i++) { + DISPLAY_CHECK(replyPacker_.WriteUint32(commitInfo.layers[i]) == false, + HDF_LOGE("%{public}s, write layers error", __func__)); + } // Write fences vector - vectSize = static_cast(commitInfo.fences.size()); - DISPLAY_CHECK(replyPacker_->WriteUint32(vectSize) == false, - HDF_LOGE("%{public}s, write fences.size error", __func__)); + vectSize = static_cast(commitInfo.fences.size()); + DISPLAY_CHECK(replyPacker_.WriteUint32(vectSize) == false, + HDF_LOGE("%{public}s, write fences.size error", __func__)); - for (uint32_t i = 0; i < vectSize; i++) { - ret = CmdUtils::FileDescriptorPack(commitInfo.fences[i], replyPacker_, outFds); - DISPLAY_CHECK(ret != HDF_SUCCESS, HDF_LOGE("%{public}s, write fences error", __func__)); + for (uint32_t i = 0; i < vectSize; i++) { + ret = CmdUtils::FileDescriptorPack(commitInfo.fences[i], replyPacker_, outFds, false); + DISPLAY_CHECK(ret != HDF_SUCCESS, HDF_LOGE("%{public}s, write fences error", __func__)); + } } DISPLAY_CHK_CONDITION(ret, HDF_SUCCESS, CmdUtils::EndSection(replyPacker_), @@ -181,12 +183,13 @@ public: #endif } - void OnCommitAndGetReleaseFence(std::shared_ptr& unpacker, - std::vector& outFds) + void OnCommitAndGetReleaseFence(CommandDataUnpacker& unpacker, std::vector& outFds) { + HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); DISPLAY_TRACE; uint32_t devId = 0; bool isSupportSkipValidate = false; + bool isValidated = false; int32_t ret = HDF_SUCCESS; CommitInfo commitInfo; commitInfo.fence = -1; @@ -194,77 +197,71 @@ public: commitInfo.needFlush = false; CommitInfoDump(); - if (!unpacker->ReadUint32(devId)) { + if (!unpacker.ReadUint32(devId)) { HDF_LOGE("%{public}s, read devId error", __func__); - ret = HDF_FAILURE; goto REPLY; } - if (!unpacker->ReadBool(isSupportSkipValidate)) { + if (!unpacker.ReadBool(isSupportSkipValidate)) { HDF_LOGE("%{public}s, read isSupportSkipValidate error", __func__); - ret = HDF_FAILURE; goto REPLY; } + if (!unpacker.ReadBool(isValidated)) { + HDF_LOGE("%{public}s, read isValidated error", __func__); + goto REPLY; + } + HDF_LOGI("%{public}s, line:%{public}d, ssk:%{public}d, isValidated:%{public}d", __func__, __LINE__, isSupportSkipValidate, isValidated); if (isSupportSkipValidate) { HdfTrace traceVdi("Commit", "HDI:DISP:HARDWARE"); commitInfo.skipRet = impl_->Commit(devId, commitInfo.fence); } - if (commitInfo.skipRet != HDF_SUCCESS) { + + if (commitInfo.skipRet != HDF_SUCCESS && isValidated == false) { { HdfTrace traceVdi("PrepareDisplayLayers", "HDI:DISP:HARDWARE"); ret = impl_->PrepareDisplayLayers(devId, commitInfo.needFlush); } - DISPLAY_CHECK(ret != HDF_SUCCESS, goto REPLY); - - { + if (ret == HDF_SUCCESS) { HdfTrace traceVdi("GetDisplayCompChange", "HDI:DISP:HARDWARE"); ret = impl_->GetDisplayCompChange(devId, commitInfo.compLayers, commitInfo.compTypes); } - DISPLAY_CHECK(ret != HDF_SUCCESS, goto REPLY); - } - - HDF_LOGD("%{public}s, first commit with skipRet = %{public}d, fence = %{public}d, needFlush = %{public}d", - __func__, commitInfo.skipRet, commitInfo.fence, commitInfo.needFlush); - - { + } else { HdfTrace traceVdi("GetDisplayReleaseFence", "HDI:DISP:HARDWARE"); - ret = impl_->GetDisplayReleaseFence(devId, commitInfo.layers, commitInfo.fences); - } - - if (ret != HDF_SUCCESS) { - HDF_LOGE("%{public}s, GetDisplayReleaseFence failed with ret = %{public}d", __func__, ret); + if (impl_->GetDisplayReleaseFence(devId, commitInfo.layers, commitInfo.fences) != HDF_SUCCESS) { + HDF_LOGE("%{public}s, GetDisplayReleaseFence failed with ret = %{public}d", __func__, ret); + } } + HDF_LOGI("%{public}s, first commit with skipRet = %{public}d, fence = %{public}d, needFlush = %{public}d", + __func__, commitInfo.skipRet, commitInfo.fence, commitInfo.needFlush); REPLY: ReplyCommitAndGetReleaseFence(outFds, devId, commitInfo); - return; } int32_t CmdRequest(uint32_t inEleCnt, const std::vector& inFds, uint32_t& outEleCnt, std::vector& outFds) { + HDF_LOGE("CmdRequest inEleCnt:%{public}u", inEleCnt); std::shared_ptr requestData(new char[inEleCnt * CmdUtils::ELEMENT_SIZE], std::default_delete()); int32_t ret = request_->Read(reinterpret_cast(requestData.get()), inEleCnt, CmdUtils::TRANSFER_WAIT_TIME); - std::shared_ptr unpacker = std::make_shared(); - DISPLAY_CHK_RETURN(unpacker == nullptr, HDF_FAILURE, - HDF_LOGE("%{public}s: unpacker construct failed", __func__)); - - unpacker->Init(requestData.get(), inEleCnt * CmdUtils::ELEMENT_SIZE); + CommandDataUnpacker unpacker; + unpacker.Init(requestData.get(), inEleCnt << CmdUtils::ELEMENT_SIZE); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA - unpacker->Dump(); + unpacker.Dump(); #endif // DEBUG_DISPLAY_CMD_RAW_DATA int32_t unpackCmd = -1; - bool retBool = unpacker->PackBegin(unpackCmd); + bool retBool = unpacker.PackBegin(unpackCmd); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: error: Check RequestBegin failed", __func__)); DISPLAY_CHK_RETURN(unpackCmd != CONTROL_CMD_REQUEST_BEGIN, HDF_FAILURE, HDF_LOGI("error: unpacker PackBegin cmd not match, cmd(%{public}d)=%{public}s.", unpackCmd, CmdUtils::CommandToString(unpackCmd))); - while (ret == HDF_SUCCESS && unpacker->NextSection()) { - if (!unpacker->BeginSection(unpackCmd)) { + while (ret == HDF_SUCCESS && unpacker.NextSection()) { + unpackCmd = -1; + if (!unpacker.BeginSection(unpackCmd)) { HDF_LOGE("error: PackSection failed, unpackCmd=%{public}s.", CmdUtils::CommandToString(unpackCmd)); ret = HDF_FAILURE; @@ -275,17 +272,17 @@ REPLY: DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: ProcessRequestCmd failed", __func__)); /* pack request end commands */ - replyPacker_->PackEnd(CONTROL_CMD_REPLY_END); + replyPacker_.PackEnd(CONTROL_CMD_REPLY_END); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA /* just for debug */ - replyPacker_->Dump(); + replyPacker_.Dump(); HDF_LOGI("CmdReply command cnt=%{public}d", replyCommandCnt_); #endif // DEBUG_DISPLAY_CMD_RAW_DATA /* Write reply pack */ - outEleCnt = replyPacker_->ValidSize() / CmdUtils::ELEMENT_SIZE; - ret = reply_->Write(reinterpret_cast(replyPacker_->GetDataPtr()), outEleCnt, + outEleCnt = replyPacker_.ValidSize() >> CmdUtils::ELEMENT_SIZE; + ret = reply_->Write(reinterpret_cast(replyPacker_.GetDataPtr()), outEleCnt, CmdUtils::TRANSFER_WAIT_TIME); if (ret != HDF_SUCCESS) { HDF_LOGE("Reply write failure, ret=%{public}d", ret); @@ -295,7 +292,7 @@ REPLY: return (ret == HDF_SUCCESS ? ec : ret); } - int32_t OnSetDisplayConstraint(std::shared_ptr unpacker) + int32_t OnSetDisplayConstraint(CommandDataUnpacker& unpacker) { DISPLAY_TRACE; uint32_t devId = 0; @@ -303,16 +300,16 @@ REPLY: uint64_t ns = 0; uint32_t type = 0; - int32_t ret = unpacker->ReadUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; + int32_t ret = unpacker.ReadUint32(devId) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = unpacker->ReadUint64(frameID) ? HDF_SUCCESS : HDF_FAILURE; + ret = unpacker.ReadUint64(frameID) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = unpacker->ReadUint64(ns) ? HDF_SUCCESS : HDF_FAILURE; + ret = unpacker.ReadUint64(ns) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); - ret = unpacker->ReadUint32(type) ? HDF_SUCCESS : HDF_FAILURE; + ret = unpacker.ReadUint32(type) ? HDF_SUCCESS : HDF_FAILURE; DISPLAY_CHECK(ret != HDF_SUCCESS, goto EXIT); if (vdiImpl1_1_ != nullptr) { ret = vdiImpl1_1_->SetDisplayConstraint(devId, frameID, ns, type); diff --git a/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h b/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h index a013518f..f1abc3d0 100644 --- a/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h +++ b/display/composer/v1_2/hdi_impl/display_composer_hdi_impl.h @@ -68,13 +68,13 @@ public: virtual ~DisplayComposerHdiImpl() {} - virtual int32_t CommitAndGetReleaseFence(uint32_t devId, int32_t& fence, int32_t& skipState, - bool& needFlush, std::vector& layers, std::vector& fences) override + virtual int32_t CommitAndGetReleaseFence(uint32_t devId, int32_t& fence, int32_t& skipState, bool& needFlush, + std::vector& layers, std::vector& fences, bool isValidated) override { COMPOSER_CHECK_NULLPTR_RETURN(req_v1_2_); bool isSupportSkipValidate = (isSupportSkipValidate_ == 1) ? 1 : 0; return ToDispErrCode(req_v1_2_->CommitAndGetReleaseFence(devId, fence, - isSupportSkipValidate, skipState, needFlush, layers, fences)); + isSupportSkipValidate, skipState, needFlush, layers, fences, isValidated)); } virtual int32_t GetDisplayProperty(uint32_t devId, uint32_t id, uint64_t& value) override diff --git a/display/composer/v1_2/include/idisplay_composer_interface.h b/display/composer/v1_2/include/idisplay_composer_interface.h index 9eb5fe95..3c53e1ee 100644 --- a/display/composer/v1_2/include/idisplay_composer_interface.h +++ b/display/composer/v1_2/include/idisplay_composer_interface.h @@ -55,8 +55,8 @@ public: * @since 5.0 * @version 1.2 */ - virtual int32_t CommitAndGetReleaseFence(uint32_t devId, int32_t& fence, - int32_t& skipState, bool& needFlush, std::vector& layers, std::vector& fences) = 0; + virtual int32_t CommitAndGetReleaseFence(uint32_t devId, int32_t& fence, int32_t& skipState, + bool& needFlush, std::vector& layers, std::vector& fences, bool isValidated) = 0; virtual int32_t RegDisplayVBlankIdleCallback(VBlankIdleCallback cb, void* data) = 0; -- Gitee From 6db05c8d70dca2c08739feedbf08cfde1c12017a Mon Sep 17 00:00:00 2001 From: pxd2022 Date: Thu, 6 Jun 2024 07:51:00 +0000 Subject: [PATCH 2/2] bug fix Signed-off-by: pxd2022 --- .../display_command/display_cmd_requester.h | 26 ------------------- .../display_command/display_cmd_responser.h | 2 -- .../display_command/display_cmd_requester.h | 6 ----- .../display_command/display_cmd_responser.h | 18 +++++-------- 4 files changed, 6 insertions(+), 46 deletions(-) diff --git a/display/composer/v1_0/display_command/display_cmd_requester.h b/display/composer/v1_0/display_command/display_cmd_requester.h index cf8cb85b..b194f3bc 100755 --- a/display/composer/v1_0/display_command/display_cmd_requester.h +++ b/display/composer/v1_0/display_command/display_cmd_requester.h @@ -62,7 +62,6 @@ public: int32_t Init(uint32_t eleCnt) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); request_ = std::make_shared(eleCnt, SmqType::SYNCED_SMQ); DISPLAY_CHK_RETURN(request_ == nullptr, HDF_FAILURE, HDF_LOGE("%{public}s: request_ is nullptr", __func__)); @@ -93,7 +92,6 @@ public: int32_t PrepareDisplayLayers(uint32_t devId, bool &needFlushFb) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t replyEleCnt; std::vector outFds; std::shared_ptr replyData; @@ -128,7 +126,6 @@ EXIT: int32_t SetDisplayClientBuffer(uint32_t devId, const BufferHandle* buffer, uint32_t seqNo, int32_t fence) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_DISPLAY_CLIENT_BUFFER, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -158,7 +155,6 @@ EXIT: int32_t SetDisplayClientDamage(uint32_t devId, std::vector &rects) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_DISPLAY_CLIENT_DAMAGE, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -187,7 +183,6 @@ EXIT: int32_t Commit(uint32_t devId, int32_t &fence) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t replyEleCnt = 0; std::vector outFds; std::shared_ptr replyData; @@ -221,7 +216,6 @@ EXIT: int32_t SetLayerAlpha(uint32_t devId, uint32_t layerId, const LayerAlpha &alpha) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_ALPHA, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -259,7 +253,6 @@ EXIT: int32_t SetLayerRegion(uint32_t devId, uint32_t layerId, const IRect &rect) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_REGION, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -281,7 +274,6 @@ EXIT: int32_t SetLayerCrop(uint32_t devId, uint32_t layerId, const IRect &rect) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_CROP, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -303,7 +295,6 @@ EXIT: int32_t SetLayerZorder(uint32_t devId, uint32_t layerId, uint32_t zorder) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_ZORDER, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -325,7 +316,6 @@ EXIT: int32_t SetLayerPreMulti(uint32_t devId, uint32_t layerId, bool preMul) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_PREMULTI, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -347,7 +337,6 @@ EXIT: int32_t SetLayerTransformMode(uint32_t devId, uint32_t layerId, TransformType type) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_TRANSFORM_MODE, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -369,7 +358,6 @@ EXIT: int32_t SetLayerDirtyRegion(uint32_t devId, uint32_t layerId, const std::vector &rects) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_DIRTY_REGION, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -397,7 +385,6 @@ EXIT: int32_t SetLayerVisibleRegion(uint32_t devId, uint32_t layerId, std::vector &rects) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_VISIBLE_REGION, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -426,7 +413,6 @@ EXIT: int32_t SetLayerBuffer(uint32_t devId, uint32_t layerId, const BufferHandle* buffer, uint32_t seqNo, int32_t fence, const std::vector& deletingList) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_BUFFER, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -467,7 +453,6 @@ EXIT: int32_t SetLayerCompositionType(uint32_t devId, uint32_t layerId, CompositionType type) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_COMPOSITION_TYPE, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -489,7 +474,6 @@ EXIT: int32_t SetLayerBlendType(uint32_t devId, uint32_t layerId, BlendType type) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_BLEND_TYPE, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -511,7 +495,6 @@ EXIT: int32_t SetLayerMaskInfo(uint32_t devId, uint32_t layerId, const MaskInfo maskInfo) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_MASK_INFO, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -533,7 +516,6 @@ EXIT: int32_t SetLayerColor(uint32_t devId, uint32_t layerId, const LayerColor& layerColor) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_LAYER_COLOR, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); @@ -555,7 +537,6 @@ EXIT: int32_t GetDisplayCompChange(uint32_t devId, std::vector& layers, std::vector& types) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); layers = compChangeLayers_[devId]; types = compChangeTypes_[devId]; compChangeLayers_.erase(devId); @@ -565,7 +546,6 @@ EXIT: protected: int32_t OnReplySetError(CommandDataUnpacker& replyUnpacker, std::unordered_map &errMaps) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t errCnt = 0; bool retBool = replyUnpacker.ReadUint32(errCnt); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, @@ -588,7 +568,6 @@ protected: int32_t OnReplyPrepareDisplayLayers(CommandDataUnpacker& replyUnpacker, bool &needFlushFb) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t devId = 0; int32_t retBool = replyUnpacker.ReadUint32(devId); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read devId failed", __func__)); @@ -630,7 +609,6 @@ protected: int32_t OnReplyCommit( CommandDataUnpacker& replyUnpacker, std::vector& replyFds, int32_t &fenceFd) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::FileDescriptorUnpack(replyUnpacker, replyFds, fenceFd); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: FileDescriptorUnpack failed", __func__)); @@ -640,7 +618,6 @@ protected: int32_t ProcessUnpackCmd(CommandDataUnpacker& replyUnpacker, int32_t unpackCmd, std::vector& replyFds, std::function fn) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = HDF_SUCCESS; while (replyUnpacker.NextSection()) { bool retBool = replyUnpacker.BeginSection(unpackCmd); @@ -690,7 +667,6 @@ protected: int32_t DoReplyResults(uint32_t replyEleCnt, std::vector& replyFds, std::shared_ptr replyData, std::function fn) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); CommandDataUnpacker replyUnpacker; replyUnpacker.Init(replyData.get(), replyEleCnt << CmdUtils::MOVE_SIZE); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA @@ -719,7 +695,6 @@ protected: int32_t DoRequest(uint32_t &replyEleCnt, std::vector &outFds, std::shared_ptr &replyData) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA requestPacker_.Dump(); #endif // DEBUG_DISPLAY_CMD_RAW_DATA @@ -748,7 +723,6 @@ protected: int32_t PeriodDataReset() { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); for (uint32_t i = 0; i < requestHdiFds_.size(); ++i) { int32_t fd = requestHdiFds_[i].hdiFd->Move(); if (fd != -1) { diff --git a/display/composer/v1_0/display_command/display_cmd_responser.h b/display/composer/v1_0/display_command/display_cmd_responser.h index 20facc3b..788f57d3 100755 --- a/display/composer/v1_0/display_command/display_cmd_responser.h +++ b/display/composer/v1_0/display_command/display_cmd_responser.h @@ -126,8 +126,6 @@ public: const std::vector& inFds, std::vector& outFds) { int32_t ret = HDF_SUCCESS; - HDF_LOGD("%{public}s: PackSection, cmd-[%{public}d] = %{public}s", - __func__, cmd, CmdUtils::CommandToString(cmd)); switch (cmd) { case REQUEST_CMD_PREPARE_DISPLAY_LAYERS: OnPrepareDisplayLayers(unpacker); break; case REQUEST_CMD_SET_DISPLAY_CLIENT_BUFFER: OnSetDisplayClientBuffer(unpacker, inFds); break; diff --git a/display/composer/v1_2/display_command/display_cmd_requester.h b/display/composer/v1_2/display_command/display_cmd_requester.h index 826c2d54..db56c166 100644 --- a/display/composer/v1_2/display_command/display_cmd_requester.h +++ b/display/composer/v1_2/display_command/display_cmd_requester.h @@ -50,7 +50,6 @@ public: int32_t CommitAndGetReleaseFence(uint32_t devId, int32_t& fence, bool isSupportSkipValidate, int32_t& skipState, bool& needFlush, std::vector& layers, std::vector& fences, bool isValidated) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t replyEleCnt = 0; std::vector outFds; std::shared_ptr replyData; @@ -103,7 +102,6 @@ EXIT: int32_t OnReplySkipStateFailed(CommandDataUnpacker& replyUnpacker, bool &needFlush) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); uint32_t devId = 0; int32_t retBool = replyUnpacker.ReadUint32(devId); DISPLAY_CHK_RETURN(retBool == false, HDF_FAILURE, HDF_LOGE("%{public}s: read devId failed", __func__)); @@ -140,7 +138,6 @@ EXIT: std::vector& replyFds, int32_t& fenceFd, int32_t& skipState, bool& needFlush, std::vector& layers, std::vector& fences) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::FileDescriptorUnpack(replyUnpacker, replyFds, fenceFd); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: FileDescriptorUnpack failed", __func__)); @@ -182,7 +179,6 @@ EXIT: int32_t ProcessUnpackCmd(CommandDataUnpacker& replyUnpacker, int32_t unpackCmd, std::vector& replyFds, std::function fn) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = HDF_SUCCESS; while (replyUnpacker.NextSection()) { bool retBool = replyUnpacker.BeginSection(unpackCmd); @@ -216,7 +212,6 @@ EXIT: int32_t DoReplyResults(uint32_t replyEleCnt, std::vector& replyFds, std::shared_ptr replyData, std::function fn) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); CommandDataUnpacker replyUnpacker; replyUnpacker.Init(replyData.get(), replyEleCnt << CmdUtils::MOVE_SIZE); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA @@ -246,7 +241,6 @@ EXIT: // LTPO新增接口 int32_t SetDisplayConstraint(uint32_t devId, uint64_t frameID, uint64_t ns, uint32_t type) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = CmdUtils::StartSection(REQUEST_CMD_SET_DISPLAY_CONSTRAINT, requestPacker_); DISPLAY_CHK_RETURN(ret != HDF_SUCCESS, ret, HDF_LOGE("%{public}s: StartSection failed", __func__)); diff --git a/display/composer/v1_2/display_command/display_cmd_responser.h b/display/composer/v1_2/display_command/display_cmd_responser.h index 0c2aa60b..c2141f01 100644 --- a/display/composer/v1_2/display_command/display_cmd_responser.h +++ b/display/composer/v1_2/display_command/display_cmd_responser.h @@ -74,7 +74,7 @@ public: int32_t ProcessRequestCmd(CommandDataUnpacker& unpacker, int32_t cmd, const std::vector& inFds, std::vector& outFds) { - HDF_LOGI("%{public}s: HDI 1.2 PackSection, cmd-[%{public}d] = %{public}s", + HDF_LOGD("%{public}s: HDI 1.2 PackSection, cmd-[%{public}d] = %{public}s", __func__, cmd, CmdUtils::CommandToString(cmd)); if (cmd == REQUEST_CMD_COMMIT_AND_GET_RELEASE_FENCE) { OnCommitAndGetReleaseFence(unpacker, outFds); @@ -88,7 +88,6 @@ public: void ReplyNotSkipInfo(uint32_t& devId, CommitInfo& commitInfo) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); DISPLAY_CHECK(replyPacker_.WriteUint32(devId) == false, HDF_LOGE("%{public}s, write devId error", __func__)); @@ -117,7 +116,6 @@ public: void ReplyCommitAndGetReleaseFence(std::vector& outFds, uint32_t& devId, CommitInfo& commitInfo) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); int32_t ret = HDF_SUCCESS; uint32_t vectSize = 0; @@ -185,7 +183,6 @@ public: void OnCommitAndGetReleaseFence(CommandDataUnpacker& unpacker, std::vector& outFds) { - HDF_LOGI("%{public}s, line:%{public}d", __func__, __LINE__); DISPLAY_TRACE; uint32_t devId = 0; bool isSupportSkipValidate = false; @@ -210,8 +207,7 @@ public: HDF_LOGE("%{public}s, read isValidated error", __func__); goto REPLY; } - HDF_LOGI("%{public}s, line:%{public}d, ssk:%{public}d, isValidated:%{public}d", __func__, __LINE__, isSupportSkipValidate, isValidated); - if (isSupportSkipValidate) { + if (isSupportSkipValidate || isValidated) { HdfTrace traceVdi("Commit", "HDI:DISP:HARDWARE"); commitInfo.skipRet = impl_->Commit(devId, commitInfo.fence); } @@ -231,8 +227,8 @@ public: HDF_LOGE("%{public}s, GetDisplayReleaseFence failed with ret = %{public}d", __func__, ret); } } - HDF_LOGI("%{public}s, first commit with skipRet = %{public}d, fence = %{public}d, needFlush = %{public}d", - __func__, commitInfo.skipRet, commitInfo.fence, commitInfo.needFlush); + HDF_LOGD("skipRet:%{public}d,fence:%{public}d,needFlush:%{public}d, ssv:%{public}d, iv:%{public}d", + commitInfo.skipRet, commitInfo.fence, commitInfo.needFlush, isSupportSkipValidate, isValidated); REPLY: ReplyCommitAndGetReleaseFence(outFds, devId, commitInfo); } @@ -240,13 +236,12 @@ REPLY: int32_t CmdRequest(uint32_t inEleCnt, const std::vector& inFds, uint32_t& outEleCnt, std::vector& outFds) { - HDF_LOGE("CmdRequest inEleCnt:%{public}u", inEleCnt); std::shared_ptr requestData(new char[inEleCnt * CmdUtils::ELEMENT_SIZE], std::default_delete()); int32_t ret = request_->Read(reinterpret_cast(requestData.get()), inEleCnt, CmdUtils::TRANSFER_WAIT_TIME); CommandDataUnpacker unpacker; - unpacker.Init(requestData.get(), inEleCnt << CmdUtils::ELEMENT_SIZE); + unpacker.Init(requestData.get(), inEleCnt << CmdUtils::MOVE_SIZE); #ifdef DEBUG_DISPLAY_CMD_RAW_DATA unpacker.Dump(); #endif // DEBUG_DISPLAY_CMD_RAW_DATA @@ -260,7 +255,6 @@ REPLY: CmdUtils::CommandToString(unpackCmd))); while (ret == HDF_SUCCESS && unpacker.NextSection()) { - unpackCmd = -1; if (!unpacker.BeginSection(unpackCmd)) { HDF_LOGE("error: PackSection failed, unpackCmd=%{public}s.", CmdUtils::CommandToString(unpackCmd)); @@ -281,7 +275,7 @@ REPLY: #endif // DEBUG_DISPLAY_CMD_RAW_DATA /* Write reply pack */ - outEleCnt = replyPacker_.ValidSize() >> CmdUtils::ELEMENT_SIZE; + outEleCnt = replyPacker_.ValidSize() >> CmdUtils::MOVE_SIZE; ret = reply_->Write(reinterpret_cast(replyPacker_.GetDataPtr()), outEleCnt, CmdUtils::TRANSFER_WAIT_TIME); if (ret != HDF_SUCCESS) { -- Gitee