summaryrefslogtreecommitdiff
Diffstat
-rw-r--r--hwc2/common/devices/PhysicalDevice.cpp30
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);