libhwc2.1: remove unnecessary property_get
First, we remove property_get for checking the camera preview.
This is probably a legacy code which we don't use anymore.
Second, we remove unnecessary call to ExynosCompositionInfo's
constructor which contains a property_get.
Test: simpleperf profiler
Bug: 205901755
Change-Id: I1f7aba3cdfbbb7f75f3dd39c9ed06dc5366f07ac
diff --git a/libhwc2.1/libdevice/ExynosDisplay.cpp b/libhwc2.1/libdevice/ExynosDisplay.cpp
index 87749b3..8ceacdb 100644
--- a/libhwc2.1/libdevice/ExynosDisplay.cpp
+++ b/libhwc2.1/libdevice/ExynosDisplay.cpp
@@ -934,9 +934,6 @@
(mDevice->mDisplayMode != exynosHWCControl.displayMode))
setGeometryChanged(GEOMETRY_DEVICE_DISP_MODE_CHAGED);
- if ((ret = mResourceManager->checkScenario(this)) != NO_ERROR)
- DISPLAY_LOGE("checkScenario error ret(%d)", ret);
-
if (exynosHWCControl.skipResourceAssign == 0) {
/* Set any flag to mGeometryChanged */
setGeometryChanged(GEOMETRY_DEVICE_SCENARIO_CHANGED);
@@ -4282,14 +4279,14 @@
int32_t ExynosDisplay::setCompositionTargetExynosImage(uint32_t targetType, exynos_image *src_img, exynos_image *dst_img)
{
- ExynosCompositionInfo compositionInfo;
+ std::optional<ExynosCompositionInfo> compositionInfo;
if (targetType == COMPOSITION_CLIENT)
compositionInfo = mClientCompositionInfo;
else if (targetType == COMPOSITION_EXYNOS)
compositionInfo = mExynosCompositionInfo;
- else
- return -EINVAL;
+
+ if (!compositionInfo) return -EINVAL;
src_img->fullWidth = mXres;
src_img->fullHeight = mYres;
@@ -4300,10 +4297,10 @@
src_img->w = mXres;
src_img->h = mYres;
- if (compositionInfo.mTargetBuffer != NULL) {
- src_img->bufferHandle = compositionInfo.mTargetBuffer;
+ if (compositionInfo->mTargetBuffer != NULL) {
+ src_img->bufferHandle = compositionInfo->mTargetBuffer;
- VendorGraphicBufferMeta gmeta(compositionInfo.mTargetBuffer);
+ VendorGraphicBufferMeta gmeta(compositionInfo->mTargetBuffer);
src_img->format = gmeta.format;
src_img->usageFlags = gmeta.producer_usage;
} else {
@@ -4312,16 +4309,16 @@
src_img->usageFlags = 0;
}
src_img->layerFlags = 0x0;
- src_img->acquireFenceFd = compositionInfo.mAcquireFence;
+ src_img->acquireFenceFd = compositionInfo->mAcquireFence;
src_img->releaseFenceFd = -1;
- src_img->dataSpace = compositionInfo.mDataSpace;
+ src_img->dataSpace = compositionInfo->mDataSpace;
src_img->blending = HWC2_BLEND_MODE_PREMULTIPLIED;
src_img->transform = 0;
- src_img->compressed = compositionInfo.mCompressed;
+ src_img->compressed = compositionInfo->mCompressed;
src_img->planeAlpha = 1;
src_img->zOrder = 0;
if ((targetType == COMPOSITION_CLIENT) && (mType == HWC_DISPLAY_VIRTUAL)) {
- if (compositionInfo.mLastIndex < mExynosCompositionInfo.mLastIndex)
+ if (compositionInfo->mLastIndex < mExynosCompositionInfo.mLastIndex)
src_img->zOrder = 0;
else
src_img->zOrder = 1000;
@@ -4348,7 +4345,7 @@
dst_img->dataSpace = colorModeToDataspace(mColorMode);
dst_img->blending = HWC2_BLEND_MODE_NONE;
dst_img->transform = 0;
- dst_img->compressed = compositionInfo.mCompressed;
+ dst_img->compressed = compositionInfo->mCompressed;
dst_img->planeAlpha = 1;
dst_img->zOrder = src_img->zOrder;
diff --git a/libhwc2.1/libresource/ExynosResourceManager.cpp b/libhwc2.1/libresource/ExynosResourceManager.cpp
index 502baac..70eac92 100644
--- a/libhwc2.1/libresource/ExynosResourceManager.cpp
+++ b/libhwc2.1/libresource/ExynosResourceManager.cpp
@@ -376,41 +376,6 @@
return ret;
}
-int32_t ExynosResourceManager::checkScenario(ExynosDisplay __unused *display)
-{
- uint32_t prevResourceReserved = mResourceReserved;
- mResourceReserved = 0x0;
- /* Check whether camera preview is running */
- ExynosDisplay *exynosDisplay = NULL;
- for (uint32_t i = 0; i < mDevice->mDisplays.size(); i++) {
- exynosDisplay = mDevice->mDisplays[i];
- if ((exynosDisplay != NULL) && (exynosDisplay->mPlugState == true)) {
- for (uint32_t i = 0; i < exynosDisplay->mLayers.size(); i++) {
- ExynosLayer *layer = exynosDisplay->mLayers[i];
- VendorGraphicBufferMeta gmeta(layer->mLayerBuffer);
- if ((layer->mLayerBuffer != NULL) &&
- (gmeta.producer_usage & BufferUsage::CAMERA_OUTPUT)) {
- mResourceReserved |= (MPP_LOGICAL_G2D_YUV | MPP_LOGICAL_G2D_RGB);
- break;
- }
- }
- }
- }
-
- char value[PROPERTY_VALUE_MAX];
- bool preview;
- property_get("persist.vendor.sys.camera.preview", value, "0");
- preview = !!atoi(value);
- if (preview)
- mResourceReserved |= (MPP_LOGICAL_G2D_YUV | MPP_LOGICAL_G2D_RGB);
-
- if (prevResourceReserved != mResourceReserved) {
- mDevice->setGeometryChanged(GEOMETRY_DEVICE_SCENARIO_CHANGED);
- }
-
- return NO_ERROR;
-}
-
/**
* @param * display
* @return int
diff --git a/libhwc2.1/libresource/ExynosResourceManager.h b/libhwc2.1/libresource/ExynosResourceManager.h
index f440d92..853fe1e 100644
--- a/libhwc2.1/libresource/ExynosResourceManager.h
+++ b/libhwc2.1/libresource/ExynosResourceManager.h
@@ -141,7 +141,6 @@
int32_t assignLayers(ExynosDisplay *display, uint32_t priority);
virtual int32_t assignLayer(ExynosDisplay *display, ExynosLayer *layer, uint32_t layer_index,
exynos_image &m2m_out_img, ExynosMPP **m2mMPP, ExynosMPP **otfMPP, uint32_t &overlayInfo);
- virtual int32_t checkScenario(ExynosDisplay *display);
virtual int32_t assignWindow(ExynosDisplay *display);
int32_t updateResourceState();
static float getResourceUsedCapa(ExynosMPP &mpp);