-rw-r--r-- | hwc2/common/devices/PhysicalDevice.cpp | 30 |
1 files changed, 18 insertions, 12 deletions
diff --git a/hwc2/common/devices/PhysicalDevice.cpp b/hwc2/common/devices/PhysicalDevice.cpp index 2dab0d4..214480f 100644 --- a/hwc2/common/devices/PhysicalDevice.cpp +++ b/hwc2/common/devices/PhysicalDevice.cpp @@ -75,12 +75,12 @@ PhysicalDevice::PhysicalDevice(hwc2_display_t id, Hwcomposer& hwc, DeviceControl initDisplay(); // set capacity of layers, layer's changed type, layer's changed request. - mHwcLayersChangeType.setCapacity(LAYER_MAX_NUM_CHANGE_TYPE); - mHwcLayersChangeRequest.setCapacity(LAYER_MAX_NUM_CHANGE_REQUEST); - mHwcGlesLayers.setCapacity(LAYER_MAX_NUM_CHANGE_TYPE); - mHwcLayers.setCapacity(LAYER_MAX_NUM_SUPPORT); + // mHwcLayersChangeType.setCapacity(LAYER_MAX_NUM_CHANGE_TYPE); + // mHwcLayersChangeRequest.setCapacity(LAYER_MAX_NUM_CHANGE_REQUEST); + // mHwcGlesLayers.setCapacity(LAYER_MAX_NUM_CHANGE_TYPE); + // mHwcLayers.setCapacity(LAYER_MAX_NUM_SUPPORT); #ifdef HWC_ENABLE_SECURE_LAYER - mHwcSecureLayers.setCapacity(LAYER_MAX_NUM_SECURE_PROTECTED); + // mHwcSecureLayers.setCapacity(LAYER_MAX_NUM_SECURE_PROTECTED); mHwcSecureLayers.clear(); #endif @@ -90,7 +90,7 @@ PhysicalDevice::PhysicalDevice(hwc2_display_t id, Hwcomposer& hwc, DeviceControl mHwcGlesLayers.clear(); mHwcLayers.clear(); - mGE2DRenderSortedLayerIds.setCapacity(HWC2_MAX_LAYERS); + // mGE2DRenderSortedLayerIds.setCapacity(HWC2_MAX_LAYERS); mGE2DRenderSortedLayerIds.clear(); mHwcCurReleaseFences = mHwcPriorReleaseFences = NULL; @@ -238,13 +238,14 @@ bool PhysicalDevice::createLayer(hwc2_layer_t* outLayer) { hwc2_layer_t layerId = reinterpret_cast<hwc2_layer_t>(layer); mHwcLayers.add(layerId, layer); *outLayer = layerId; - ETRACE("layerId %lld.\n", layerId); + DTRACE("::createLayer layerId %lld, size: [%d].\n", layerId, mHwcLayers.size()); return true; } bool PhysicalDevice::destroyLayer(hwc2_layer_t layerId) { HwcLayer* layer = mHwcLayers.valueFor(layerId); + DTRACE("::destroyLayer layerId %lld, size: [%d].\n", layerId, mHwcLayers.size()); if (layer == NULL) { ETRACE("destroyLayer: no Hwclayer found (%d)", layerId); @@ -704,14 +705,18 @@ int32_t PhysicalDevice::postFramebuffer(int32_t* outRetireFence, bool hasVideoOv if (hasVideoOverlay && (layerNum == 1 || (layerNum == 2 && haveCursorLayer))) needBlankFb0 = true; - if (needBlankFb0) { - mFbSyncRequest.op |= OSD_BLANK_OP_BIT; + if (mIsContinuousBuf) { + // bit 0 is osd blank flag. + if (needBlankFb0) { + mFbSyncRequest.op |= OSD_BLANK_OP_BIT; + } else { + mFbSyncRequest.op &= ~(OSD_BLANK_OP_BIT); + } + mFramebufferContext->setStatus(needBlankFb0); } else { - mFbSyncRequest.op &= ~(OSD_BLANK_OP_BIT); + setOSD0Blank(needBlankFb0); } - mFramebufferContext->setStatus(needBlankFb0); - if (!mClientTargetHnd || private_handle_t::validate(mClientTargetHnd) < 0 || mPowerMode == HWC2_POWER_MODE_OFF) { ETRACE("Post blank to screen, mClientTargetHnd(%p, %d), mTargetAcquireFence(%d)", mClientTargetHnd, private_handle_t::validate(mClientTargetHnd), mTargetAcquireFence); @@ -723,6 +728,7 @@ int32_t PhysicalDevice::postFramebuffer(int32_t* outRetireFence, bool hasVideoOv //for nothing to display, post blank to osd which will signal the last retire fence. mFbSyncRequest.type = DIRECT_COMPOSE_MODE; mFbSyncRequest.op |= OSD_BLANK_OP_BIT; + mFramebufferContext->setStatus(true); mPriorFrameRetireFence = hwc_fb_post_with_fence_locked(&fbInfo, &mFbSyncRequest, NULL); } else { *outRetireFence = HwcFenceControl::dupFence(mPriorFrameRetireFence); |