void VirtualDisplay::setAttributes() { if(mHwcContext) { uint32_t &extW = mHwcContext->dpyAttr[HWC_DISPLAY_VIRTUAL].xres; uint32_t &extH = mHwcContext->dpyAttr[HWC_DISPLAY_VIRTUAL].yres; uint32_t priW = mHwcContext->dpyAttr[HWC_DISPLAY_PRIMARY].xres; uint32_t priH = mHwcContext->dpyAttr[HWC_DISPLAY_PRIMARY].yres; initResolution(extW, extH); // Dynamic Resolution Change depends on MDP downscaling. // MDP downscale property will be ignored to exercise DRC use case. // If DRC is in progress, ext WxH will have non-zero values. bool isDRC = (extW > 0) && (extH > 0); if(!qdutils::MDPVersion::getInstance().is8x26() && (mHwcContext->mMDPDownscaleEnabled || isDRC)) { // maxArea represents the maximum resolution between // primary and virtual display. uint32_t maxArea = max((extW * extH), (priW * priH)); setToPrimary(maxArea, priW, priH, extW, extH); setDownScaleMode(maxArea); } mHwcContext->dpyAttr[HWC_DISPLAY_VIRTUAL].vsync_period = 1000000000l /60; ALOGD_IF(DEBUG,"%s: Setting Virtual Attr: res(%d x %d)",__FUNCTION__, mVInfo.xres, mVInfo.yres); } }
void VirtualDisplay::setAttributes() { if(mHwcContext) { uint32_t &extW = mHwcContext->dpyAttr[HWC_DISPLAY_VIRTUAL].xres; uint32_t &extH = mHwcContext->dpyAttr[HWC_DISPLAY_VIRTUAL].yres; uint32_t priW = mHwcContext->dpyAttr[HWC_DISPLAY_PRIMARY].xres; uint32_t priH = mHwcContext->dpyAttr[HWC_DISPLAY_PRIMARY].yres; // Dynamic Resolution Change depends on MDP downscaling. // MDP downscale property will be ignored to exercise DRC use case. // If DRC is in progress, ext WxH will have non-zero values. bool isDRC = (extW > mVInfo.xres) && (extH > mVInfo.yres); initResolution(extW, extH); if(mHwcContext->mOverlay->isUIScalingOnExternalSupported() && (mHwcContext->mMDPDownscaleEnabled || isDRC)) { // maxArea represents the maximum resolution between // primary and virtual display. uint32_t maxArea = max((extW * extH), (priW * priH)); setToPrimary(maxArea, priW, priH, extW, extH); setDownScaleMode(maxArea); } //Initialize the display viewFrame info mHwcContext->mViewFrame[HWC_DISPLAY_VIRTUAL].left = 0; mHwcContext->mViewFrame[HWC_DISPLAY_VIRTUAL].top = 0; mHwcContext->mViewFrame[HWC_DISPLAY_VIRTUAL].right = (int)mHwcContext->dpyAttr[HWC_DISPLAY_VIRTUAL].xres; mHwcContext->mViewFrame[HWC_DISPLAY_VIRTUAL].bottom = (int)mHwcContext->dpyAttr[HWC_DISPLAY_VIRTUAL].yres; mHwcContext->dpyAttr[HWC_DISPLAY_VIRTUAL].vsync_period = 1000000000l /60; ALOGD_IF(DEBUG,"%s: Setting Virtual Attr: res(%d x %d)",__FUNCTION__, mVInfo.xres, mVInfo.yres); } }