Lines Matching refs:dpy
60 EGLAPI EGLBoolean eglGpuPerfHintQCOM(EGLDisplay dpy, EGLContext ctx,
125 void updateDisplayInfo(hwc_context_t* ctx, int dpy) {
126 ctx->dpyAttr[dpy].fd = ctx->mHDMIDisplay->getFd();
127 ctx->dpyAttr[dpy].xres = ctx->mHDMIDisplay->getWidth();
128 ctx->dpyAttr[dpy].yres = ctx->mHDMIDisplay->getHeight();
129 ctx->dpyAttr[dpy].mMDPScalingMode = ctx->mHDMIDisplay->getMDPScalingMode();
130 ctx->dpyAttr[dpy].vsync_period = ctx->mHDMIDisplay->getVsyncPeriod();
134 ctx->dpyAttr[dpy].secure = true;
135 ctx->mViewFrame[dpy].left = 0;
136 ctx->mViewFrame[dpy].top = 0;
137 ctx->mViewFrame[dpy].right = ctx->dpyAttr[dpy].xres;
138 ctx->mViewFrame[dpy].bottom = ctx->dpyAttr[dpy].yres;
142 void resetDisplayInfo(hwc_context_t* ctx, int dpy) {
143 memset(&(ctx->dpyAttr[dpy]), 0, sizeof(ctx->dpyAttr[dpy]));
144 memset(&(ctx->listStats[dpy]), 0, sizeof(ctx->listStats[dpy]));
148 ctx->dpyAttr[dpy].fd = -1;
152 void initCompositionResources(hwc_context_t* ctx, int dpy) {
153 ctx->mFBUpdate[dpy] = IFBUpdate::getObject(ctx, dpy);
154 ctx->mMDPComp[dpy] = MDPComp::getObject(ctx, dpy);
157 void destroyCompositionResources(hwc_context_t* ctx, int dpy) {
158 if(ctx->mFBUpdate[dpy]) {
159 delete ctx->mFBUpdate[dpy];
160 ctx->mFBUpdate[dpy] = NULL;
162 if(ctx->mMDPComp[dpy]) {
163 delete ctx->mMDPComp[dpy];
164 ctx->mMDPComp[dpy] = NULL;
490 void setRefreshRate(hwc_context_t* ctx, int dpy, uint32_t refreshRate) {
492 if(!ctx || refreshRate == ctx->dpyAttr[dpy].dynRefreshRate)
494 const int fbNum = Overlay::getFbForDpy(dpy);
508 ctx->dpyAttr[dpy].dynRefreshRate = refreshRate;
535 void getActionSafePosition(hwc_context_t *ctx, int dpy, hwc_rect_t& rect) {
541 if(!ctx->dpyAttr[dpy].mActionSafePresent)
544 int asWidthRatio = ctx->dpyAttr[dpy].mAsWidthRatio;
545 int asHeightRatio = ctx->dpyAttr[dpy].mAsHeightRatio;
552 uint32_t fbWidth = ctx->dpyAttr[dpy].xres;
553 uint32_t fbHeight = ctx->dpyAttr[dpy].yres;
554 if(ctx->dpyAttr[dpy].mMDPScalingMode) {
601 void getAspectRatioPosition(hwc_context_t* ctx, int dpy, int extOrientation,
604 float fbWidth = (float)ctx->dpyAttr[dpy].xres;
605 float fbHeight = (float)ctx->dpyAttr[dpy].yres;
686 if(ctx->dpyAttr[dpy].mMDPScalingMode) {
688 if(dpy == HWC_DISPLAY_EXTERNAL) {
690 } else if(dpy == HWC_DISPLAY_VIRTUAL) {
697 fbWidth = (float)ctx->dpyAttr[dpy].xres;
698 fbHeight = (float)ctx->dpyAttr[dpy].yres;
737 int dpy,
744 if(dpy && ctx->mOverlay->isUIScalingOnExternalSupported()) {
747 int dstWidth = ctx->dpyAttr[dpy].xres;
748 int dstHeight = ctx->dpyAttr[dpy].yres;;
767 if(ctx->dpyAttr[dpy].mMDPScalingMode) {
771 float fbWidth = (float)ctx->dpyAttr[dpy].xres;
772 float fbHeight = (float)ctx->dpyAttr[dpy].yres;
774 if(dpy == HWC_DISPLAY_EXTERNAL) {
776 } else if(dpy == HWC_DISPLAY_VIRTUAL) {
798 if(extOrient || ctx->dpyAttr[dpy].mMDPScalingMode) {
799 getAspectRatioPosition(ctx, dpy, extOrient,
808 // Calculate the actionsafe dimensions for External(dpy = 1 or 2)
809 getActionSafePosition(ctx, dpy, displayFrame);
883 const int& dpy) {
889 int hw_w = ctx->dpyAttr[dpy].xres;
890 int hw_h = ctx->dpyAttr[dpy].yres;
892 const int lSplit = getLeftSplit(ctx, dpy);
900 scissorL = getIntersection(ctx->mViewFrame[dpy], scissorL);
906 scissorR = getIntersection(ctx->mViewFrame[dpy], scissorR);
957 static void trimLayer(hwc_context_t *ctx, const int& dpy, const int& transform,
959 int hw_w = ctx->dpyAttr[dpy].xres;
960 int hw_h = ctx->dpyAttr[dpy].yres;
964 scissor = getIntersection(ctx->mViewFrame[dpy], scissor);
970 const int& dpy) {
976 trimLayer(ctx, dpy,
988 hwc_display_contents_1_t *list, int dpy) {
989 const int prevYuvCount = ctx->listStats[dpy].yuvCount;
990 memset(&ctx->listStats[dpy], 0, sizeof(ListStats));
991 ctx->listStats[dpy].numAppLayers = (int)list->numHwLayers - 1;
992 ctx->listStats[dpy].fbLayerIndex = (int)list->numHwLayers - 1;
993 ctx->listStats[dpy].skipCount = 0;
994 ctx->listStats[dpy].preMultipliedAlpha = false;
995 ctx->listStats[dpy].isSecurePresent = false;
996 ctx->listStats[dpy].yuvCount = 0;
998 ctx->listStats[dpy].isDisplayAnimating = false;
999 ctx->listStats[dpy].secureUI = false;
1000 ctx->listStats[dpy].yuv4k2kCount = 0;
1001 ctx->dpyAttr[dpy].mActionSafePresent = isActionSafePresent(ctx, dpy);
1002 ctx->listStats[dpy].renderBufIndexforABC = -1;
1003 ctx->listStats[dpy].secureRGBCount = 0;
1004 ctx->listStats[dpy].refreshRateRequest = ctx->dpyAttr[dpy].refreshRate;
1008 ctx->listStats[dpy].mAIVVideoMode = false;
1009 resetROI(ctx, dpy);
1011 trimList(ctx, list, dpy);
1013 for (size_t i = 0; i < (size_t)ctx->listStats[dpy].numAppLayers; i++) {
1020 if(ctx->mWindowboxFeature && dpy && isAIVVideoLayer(layer)) {
1021 ctx->listStats[dpy].mAIVVideoMode = true;
1024 ctx->listStats[dpy].isDisplayAnimating = true;
1027 ctx->listStats[dpy].secureUI = true;
1031 if(ctx->listStats[dpy].numAppLayers > MAX_NUM_APP_LAYERS)
1035 ctx->listStats[dpy].yuvIndices[i] = -1;
1036 ctx->listStats[dpy].yuv4k2kIndices[i] = -1;
1039 ctx->listStats[dpy].isSecurePresent = true;
1042 int& secureRGBCount = ctx->listStats[dpy].secureRGBCount;
1043 ctx->listStats[dpy].secureRGBIndices[secureRGBCount] = (int)i;
1049 ctx->listStats[dpy].skipCount++;
1053 int& yuvCount = ctx->listStats[dpy].yuvCount;
1054 ctx->listStats[dpy].yuvIndices[yuvCount] = (int)i;
1058 int& yuv4k2kCount = ctx->listStats[dpy].yuv4k2kCount;
1059 ctx->listStats[dpy].yuv4k2kIndices[yuv4k2kCount] = (int)i;
1064 ctx->listStats[dpy].preMultipliedAlpha = true;
1067 if (!dpy && mdpHw.isDynFpsSupported() && ctx->mUseMetaDataRefreshRate){
1081 refreshRate = ctx->dpyAttr[dpy].refreshRate;
1088 if(ctx->listStats[dpy].yuvCount > 0) {
1104 if(prevYuvCount != ctx->listStats[dpy].yuvCount) {
1108 if(dpy == HWC_DISPLAY_PRIMARY) {
1111 ctx->listStats[dpy].refreshRateRequest = refreshRate ?
1112 refreshRate : ctx->dpyAttr[dpy].refreshRate;
1198 bool isActionSafePresent(hwc_context_t *ctx, int dpy) {
1204 if(!(dpy == HWC_DISPLAY_EXTERNAL) ||
1213 ctx->dpyAttr[dpy].mAsWidthRatio = atoi(value);
1215 ctx->dpyAttr[dpy].mAsHeightRatio = atoi(value);
1217 if(!ctx->dpyAttr[dpy].mAsWidthRatio && !ctx->dpyAttr[dpy].mAsHeightRatio) {
1480 int hwc_sync(hwc_context_t *ctx, hwc_display_contents_1_t* list, int dpy,
1505 if(dpy)
1506 isExtAnimating = ctx->listStats[dpy].isDisplayAnimating;
1509 for(uint32_t i = 0; i < ctx->mLayerRotMap[dpy]->getCount(); i++) {
1512 overlay::Rotator* currRot = ctx->mLayerRotMap[dpy]->getRot(i);
1513 hwc_layer_1_t* currLayer = ctx->mLayerRotMap[dpy]->getLayer(i);
1527 if(LIKELY(!swapzero) and (not ctx->mLayerRotMap[dpy]->isRotCached(i)))
1562 if(ctx->listStats[dpy].renderBufIndexforABC ==(int32_t)i)
1584 if ((fd >= 0) && !dpy && ctx->mPtorInfo.isActive()) {
1591 fbFd = ctx->dpyAttr[dpy].fd;
1601 ALOGE("%s: acq_fen_fd_cnt=%d flags=%d fd=%d dpy=%d numHwLayers=%zu",
1603 dpy, list->numHwLayers);
1630 ctx->listStats[dpy].renderBufIndexforABC !=(int32_t)i){
1651 if (ctx->mCopyBit[dpy]) {
1652 if (!dpy && ctx->mPtorInfo.isActive())
1653 ctx->mCopyBit[dpy]->setReleaseFdSync(releaseFd);
1655 ctx->mCopyBit[dpy]->setReleaseFd(releaseFd);
1659 ctx->mLayerRotMap[dpy]->setReleaseFd(releaseFd);
1785 const int& dpy, eMdpFlags& mdpFlags, eZorder& z,
1789 trimLayer(ctx, dpy, 0, dst, dst);
1791 int w = ctx->dpyAttr[dpy].xres;
1792 int h = ctx->dpyAttr[dpy].yres;
1891 void updateCropAIVVideoMode(hwc_context_t *ctx, hwc_rect_t& crop, int dpy) {
1892 ALOGD_IF(HWC_UTILS_DEBUG, "dpy %d Source crop [%d %d %d %d]", dpy,
1898 int extW = ctx->dpyAttr[dpy].xres;
1899 int extH = ctx->dpyAttr[dpy].yres;
1910 ALOGD_IF(HWC_UTILS_DEBUG, "External Resolution [%d %d] dpy %d Modified"
1911 " source crop [%d %d %d %d]", extW, extH, dpy,
1917 hwc_rect_t& dst, int dpy) {
1918 ALOGD_IF(HWC_UTILS_DEBUG, "dpy %d Destination position [%d %d %d %d]", dpy,
1923 int extW = ctx->dpyAttr[dpy].xres;
1924 int extH = ctx->dpyAttr[dpy].yres;
1939 ALOGD_IF(HWC_UTILS_DEBUG, "External Resolution [%d %d] dpy %d Modified"
1941 extW, extH, dpy, dst.left, dst.top, dst.right, dst.bottom,
1946 hwc_rect_t& dst, int dpy) {
1947 updateCropAIVVideoMode(ctx, crop, dpy);
1948 updateDestAIVVideoMode(ctx, crop, dst, dpy);
1952 const int& dpy, eMdpFlags& mdpFlags, eZorder& z,
1960 return configColorLayer(ctx, layer, dpy, mdpFlags, z, dest);
1984 if(ctx->listStats[dpy].mAIVVideoMode && isYuvBuffer(hnd)) {
1985 updateCoordinates(ctx, crop, dst, dpy);
1987 calcExtDisplayPosition(ctx, hnd, dpy, crop, dst, transform, orient);
1995 ctx->mLayerRotMap[dpy]->add(layer, *rot);
1996 BwcPM::setBwc(ctx, dpy, hnd, crop, dst, transform, downscale,
2051 const int& dpy, eMdpFlags& mdpFlagsL, eZorder& z,
2062 int hw_w = ctx->dpyAttr[dpy].xres;
2063 int hw_h = ctx->dpyAttr[dpy].yres;
2081 if(ctx->listStats[dpy].mAIVVideoMode && isYuvBuffer(hnd)) {
2082 updateCoordinates(ctx, crop, dst, dpy);
2087 calcExtDisplayPosition(ctx, hnd, dpy, crop, dst, transform, orient);
2106 ctx->mLayerRotMap[dpy]->add(layer, *rot);
2122 const int lSplit = getLeftSplit(ctx, dpy);
2129 scissor = getIntersection(ctx->mViewFrame[dpy], scissor);
2138 scissor = getIntersection(ctx->mViewFrame[dpy], scissor);
2201 const int& dpy, eMdpFlags& mdpFlagsL, eZorder& z,
2227 if(ctx->listStats[dpy].mAIVVideoMode && isYuvBuffer(hnd)) {
2228 updateCoordinates(ctx, crop, dst, dpy);
2233 calcExtDisplayPosition(ctx, hnd, dpy, crop, dst, transform, orient);
2236 trimLayer(ctx, dpy, transform, crop, dst);
2241 ctx->mLayerRotMap[dpy]->add(layer, *rot);
2326 bool canUseRotator(hwc_context_t *ctx, int dpy) {
2333 if(dpy == HWC_DISPLAY_PRIMARY)
2342 int getLeftSplit(hwc_context_t *ctx, const int& dpy) {
2344 int lSplit = ctx->dpyAttr[dpy].xres / 2;
2345 if(dpy == HWC_DISPLAY_PRIMARY &&
2353 bool isDisplaySplit(hwc_context_t* ctx, int dpy) {
2355 if(ctx->dpyAttr[dpy].xres > mdpHw.getMaxPipeWidth()) {
2359 if(dpy == HWC_DISPLAY_PRIMARY && mdpHw.getRightSplit()) {
2366 void reset_layer_prop(hwc_context_t* ctx, int dpy, int numAppLayers) {
2367 if(ctx->layerProp[dpy]) {
2368 delete[] ctx->layerProp[dpy];
2369 ctx->layerProp[dpy] = NULL;
2371 ctx->layerProp[dpy] = new LayerProp[numAppLayers];
2495 void BwcPM::setBwc(const hwc_context_t *ctx, const int& dpy,
2510 if(dpy) return;
2581 void resetROI(hwc_context_t *ctx, const int dpy) {
2582 const int fbXRes = (int)ctx->dpyAttr[dpy].xres;
2583 const int fbYRes = (int)ctx->dpyAttr[dpy].yres;
2584 if(isDisplaySplit(ctx, dpy)) {
2585 const int lSplit = getLeftSplit(ctx, dpy);
2586 ctx->listStats[dpy].lRoi = (struct hwc_rect){0, 0, lSplit, fbYRes};
2587 ctx->listStats[dpy].rRoi = (struct hwc_rect){lSplit, 0, fbXRes, fbYRes};
2589 ctx->listStats[dpy].lRoi = (struct hwc_rect){0, 0,fbXRes, fbYRes};
2590 ctx->listStats[dpy].rRoi = (struct hwc_rect){0, 0, 0, 0};
2665 void handle_pause(hwc_context_t* ctx, int dpy) {
2666 if(ctx->dpyAttr[dpy].connected) {
2668 ctx->dpyAttr[dpy].isActive = true;
2669 ctx->dpyAttr[dpy].isPause = true;
2680 if (!Overlay::displayCommit(ctx->dpyAttr[dpy].fd)) {
2681 ALOGE("%s: display commit fail! for %d dpy",
2682 __FUNCTION__, dpy);
2690 void handle_resume(hwc_context_t* ctx, int dpy) {
2691 if(ctx->dpyAttr[dpy].connected) {
2693 ctx->dpyAttr[dpy].isConfiguring = true;
2694 ctx->dpyAttr[dpy].isActive = true;
2703 ctx->dpyAttr[dpy].isPause = false;
2710 void clearPipeResources(hwc_context_t* ctx, int dpy) {
2720 if(!Overlay::displayCommit(ctx->dpyAttr[dpy].fd)) {
2721 ALOGE("%s: display commit failed for %d", __FUNCTION__, dpy);
2727 void handle_online(hwc_context_t* ctx, int dpy) {
2736 if (ctx->dpyAttr[dpy].fd >= 0) {
2737 close(ctx->dpyAttr[dpy].fd);
2738 ctx->dpyAttr[dpy].fd = -1;
2744 updateDisplayInfo(ctx, dpy);
2745 initCompositionResources(ctx, dpy);
2746 ctx->dpyAttr[dpy].connected = true;
2751 void handle_offline(hwc_context_t* ctx, int dpy) {
2752 destroyCompositionResources(ctx, dpy);
2758 clearPipeResources(ctx, dpy);
2761 resetDisplayInfo(ctx, dpy);
2762 ctx->dpyAttr[dpy].connected = false;
2763 ctx->dpyAttr[dpy].isActive = false;