Home | History | Annotate | Download | only in libhwcomposer

Lines Matching refs:ctx

47 static int openFramebufferDevice(hwc_context_t *ctx)
90 ctx->dpyAttr[HWC_DISPLAY_PRIMARY].fd = fb_fd;
92 ctx->dpyAttr[HWC_DISPLAY_PRIMARY].stride = finfo.line_length /(info.xres/8);
93 ctx->dpyAttr[HWC_DISPLAY_PRIMARY].xres = info.xres;
94 ctx->dpyAttr[HWC_DISPLAY_PRIMARY].yres = info.yres;
95 ctx->dpyAttr[HWC_DISPLAY_PRIMARY].xdpi = xdpi;
96 ctx->dpyAttr[HWC_DISPLAY_PRIMARY].ydpi = ydpi;
97 ctx->dpyAttr[HWC_DISPLAY_PRIMARY].vsync_period = 1000000000l / fps;
104 ctx->dpyAttr[HWC_DISPLAY_PRIMARY].isActive = true;
109 static int ppdComm(const char* cmd, hwc_context_t *ctx) {
111 ret = send(ctx->mCablProp.daemon_socket, cmd, strlen(cmd), MSG_NOSIGNAL);
116 close(ctx->mCablProp.daemon_socket);
122 ctx->mCablProp.enabled = false;
133 ctx->mCablProp.daemon_socket = daemon_socket;
135 ret = send(ctx->mCablProp.daemon_socket, cmd, strlen(cmd),
152 static void connectPPDaemon(hwc_context_t *ctx)
159 ctx->mCablProp.enabled = true;
162 ctx->mCablProp.enabled = false;
169 ctx->mCablProp.videoOnly = true;
171 ctx->mCablProp.videoOnly = false;
179 ctx->mCablProp.enabled = false;
190 ctx->mCablProp.daemon_socket = daemon_socket;
193 void initContext(hwc_context_t *ctx)
195 if(openFramebufferDevice(ctx) < 0) {
200 ctx->mOverlay = overlay::Overlay::getInstance();
201 ctx->mRotMgr = new RotMgr();
202 ctx->mMDP.version = qdutils::MDPVersion::getInstance().getMDPVersion();
203 ctx->mMDP.hasOverlay = qdutils::MDPVersion::getInstance().hasOverlay();
204 ctx->mMDP.panel = qdutils::MDPVersion::getInstance().getPanelType();
206 ctx->mOverlay = overlay::Overlay::getInstance();
207 ctx->mRotMgr = new RotMgr();
212 ctx->mFBUpdate[HWC_DISPLAY_PRIMARY] =
213 IFBUpdate::getObject(ctx->dpyAttr[HWC_DISPLAY_PRIMARY].xres,
224 ctx->mCopyBit[HWC_DISPLAY_PRIMARY] = new CopyBit();
227 ctx->mExtDisplay = new ExternalDisplay(ctx);
230 ctx->mLayerRotMap[i] = new LayerRotMap();
233 ctx->mMDPComp[HWC_DISPLAY_PRIMARY] =
234 MDPComp::getObject(ctx->dpyAttr[HWC_DISPLAY_PRIMARY].xres,
237 MDPComp::init(ctx);
239 ctx->vstate.enable = false;
240 ctx->vstate.fakevsync = false;
241 ctx->mExtDispConfiguring = false;
242 ctx->mBasePipeSetup = false;
247 sp<IQClient> client = new QClient(ctx);
253 ALOGI("MDP version: %d", ctx->mMDP.version);
255 connectPPDaemon(ctx);
258 void closeContext(hwc_context_t *ctx)
260 if(ctx->mOverlay) {
261 delete ctx->mOverlay;
262 ctx->mOverlay = NULL;
265 if(ctx->mRotMgr) {
266 delete ctx->mRotMgr;
267 ctx->mRotMgr = NULL;
271 if(ctx->mCopyBit[i]) {
272 delete ctx->mCopyBit[i];
273 ctx->mCopyBit[i] = NULL;
277 if(ctx->dpyAttr[HWC_DISPLAY_PRIMARY].fd) {
278 close(ctx->dpyAttr[HWC_DISPLAY_PRIMARY].fd);
279 ctx->dpyAttr[HWC_DISPLAY_PRIMARY].fd = -1;
282 if(ctx->mExtDisplay) {
283 delete ctx->mExtDisplay;
284 ctx->mExtDisplay = NULL;
288 if(ctx->mFBUpdate[i]) {
289 delete ctx->mFBUpdate[i];
290 ctx->mFBUpdate[i] = NULL;
292 if(ctx->mMDPComp[i]) {
293 delete ctx->mMDPComp[i];
294 ctx->mMDPComp[i] = NULL;
296 if(ctx->mLayerRotMap[i]) {
297 delete ctx->mLayerRotMap[i];
298 ctx->mLayerRotMap[i] = NULL;
313 void getActionSafePosition(hwc_context_t *ctx, int dpy, uint32_t& x,
318 if(ctx->mExtDisplay->isCEUnderscanSupported())
326 float fbWidth = ctx->dpyAttr[dpy].xres;
327 float fbHeight = ctx->dpyAttr[dpy].yres;
402 static void configurePPD(hwc_context_t *ctx, int yuvCount) {
403 if (!ctx->mCablProp.enabled)
406 if (yuvCount > 0 && !ctx->mCablProp.start) {
407 ctx->mCablProp.start = true;
408 if(ctx->mCablProp.videoOnly)
409 ppdComm("cabl:on", ctx);
411 ppdComm("cabl:yuv_on", ctx);
413 } else if (yuvCount == 0 && ctx->mCablProp.start) {
414 ctx->mCablProp.start = false;
415 if(ctx->mCablProp.videoOnly)
416 ppdComm("cabl:off", ctx);
418 ppdComm("cabl:yuv_off", ctx);
423 void setListStats(hwc_context_t *ctx,
426 ctx->listStats[dpy].numAppLayers = list->numHwLayers - 1;
427 ctx->listStats[dpy].fbLayerIndex = list->numHwLayers - 1;
428 ctx->listStats[dpy].skipCount = 0;
429 ctx->listStats[dpy].needsAlphaScale = false;
430 ctx->listStats[dpy].preMultipliedAlpha = false;
431 ctx->listStats[dpy].planeAlpha = false;
432 ctx->listStats[dpy].yuvCount = 0;
439 ctx->listStats[dpy].yuvIndices[i] = -1;
445 ctx->listStats[dpy].skipCount++;
447 int& yuvCount = ctx->listStats[dpy].yuvCount;
448 ctx->listStats[dpy].yuvIndices[yuvCount] = i;
452 ctx->mNeedsRotator = true;
455 ctx->listStats[dpy].preMultipliedAlpha = true;
457 ctx->listStats[dpy].planeAlpha = true;
458 if(!ctx->listStats[dpy].needsAlphaScale)
459 ctx->listStats[dpy].needsAlphaScale = isAlphaScaled(layer);
462 configurePPD(ctx, ctx->listStats[dpy].yuvCount);
484 bool isSecuring(hwc_context_t* ctx, hwc_layer_1_t const* layer) {
485 if((ctx->mMDP.version < qdutils::MDSS_V5) &&
486 (ctx->mMDP.version > qdutils::MDP_V3_0) &&
487 ctx->mSecuring) {
492 if (isSecureModePolicy(ctx->mMDP.version)) {
494 if(ctx->mSecureMode) {
625 bool isExternalActive(hwc_context_t* ctx) {
626 return ctx->dpyAttr[HWC_DISPLAY_EXTERNAL].isActive;
642 int hwc_sync(hwc_context_t *ctx, hwc_display_contents_1_t* list, int dpy,
675 int rotFd = ctx->mRotMgr->getRotDevFd();
678 for(uint32_t i = 0; i < ctx->mLayerRotMap[dpy]->getCount(); i++) {
681 ctx->mLayerRotMap[dpy]->getLayer(i)->acquireFenceFd;
683 rotData.session_id = ctx->mLayerRotMap[dpy]->getRot(i)->getSessId();
690 ctx->mLayerRotMap[dpy]->getLayer(i)->releaseFenceFd =
722 fbFd = ctx->dpyAttr[dpy].fd;
755 if (ctx->mCopyBit[dpy])
756 ctx->mCopyBit[dpy]->setReleaseFd(releaseFd);
761 ctx->mLayerRotMap[dpy]->setReleaseFd(releaseFd);
771 void trimLayer(hwc_context_t *ctx, const int& dpy, const int& transform,
773 int hw_w = ctx->dpyAttr[dpy].xres;
774 int hw_h = ctx->dpyAttr[dpy].yres;
847 bool setupBasePipe(hwc_context_t *ctx) {
849 int fb_stride = ctx->dpyAttr[dpy].stride;
850 int fb_width = ctx->dpyAttr[dpy].xres;
851 int fb_height = ctx->dpyAttr[dpy].yres;
852 int fb_fd = ctx->dpyAttr[dpy].fd;
880 ctx->mBasePipeSetup = true;
926 int configureLowRes(hwc_context_t *ctx, hwc_layer_1_t *layer,
948 if(isYuvBuffer(hnd) && ctx->mMDP.version >= qdutils::MDP_V4_2 &&
949 ctx->mMDP.version < qdutils::MDSS_V5) {
958 unsigned int& prevWidth = ctx->mPrevWHF[dpy].w;
959 unsigned int& prevHeight = ctx->mPrevWHF[dpy].h;
972 trimLayer(ctx, dpy, transform, crop, dst);
976 *rot = ctx->mRotMgr->getNext();
983 ctx->mLayerRotMap[dpy]->add(layer, *rot);
997 if(configMdp(ctx->mOverlay, parg, orient, crop, dst, metadata, dest) < 0) {
999 ctx->mLayerRotMap[dpy]->reset();
1005 int configureHighRes(hwc_context_t *ctx, hwc_layer_1_t *layer,
1017 int hw_w = ctx->dpyAttr[dpy].xres;
1018 int hw_h = ctx->dpyAttr[dpy].yres;
1030 trimLayer(ctx, dpy, transform, crop, dst);
1033 (*rot) = ctx->mRotMgr->getNext();
1040 ctx->mLayerRotMap[dpy]->add(layer, *rot);
1096 if(configMdp(ctx->mOverlay, pargL, orient,
1111 if(configMdp(ctx->mOverlay, pargR, orient,