void initContext(hwc_context_t *ctx) { openFramebufferDevice(ctx); ctx->mOverlay = overlay::Overlay::getInstance(); ctx->mHwcService = hwcService::HWComposerService::getInstance(); ctx->mHwcService->setHwcContext(ctx); ctx->qbuf = new QueuedBufferStore(); ctx->mMDP.version = qdutils::MDPVersion::getInstance().getMDPVersion(); ctx->mMDP.hasOverlay = qdutils::MDPVersion::getInstance().hasOverlay(); ctx->mMDP.panel = qdutils::MDPVersion::getInstance().getPanelType(); ctx->mCopybitEngine = CopybitEngine::getInstance(); ctx->mExtDisplay = new ExternalDisplay(ctx); MDPComp::init(ctx); char value[PROPERTY_VALUE_MAX]; property_get("debug.egl.swapinterval", value, "1"); ctx->swapInterval = atoi(value); //Initialize dyn threshold to 2.0 //system property can override this value ctx->dynThreshold = 2.0; property_get("debug.hwc.dynThreshold", value, "3"); ctx->dynThreshold = atof(value); ctx->hdmi_pending = false; ALOGI("Initializing Qualcomm Hardware Composer"); ALOGI("MDP version: %d", ctx->mMDP.version); ALOGI("DYN composition threshold : %f", ctx->dynThreshold); }
void initContext(hwc_context_t *ctx) { openFramebufferDevice(ctx); overlay::Overlay::initOverlay(); ctx->mOverlay = overlay::Overlay::getInstance(); ctx->mQService = qService::QService::getInstance(ctx); ctx->mMDP.version = qdutils::MDPVersion::getInstance().getMDPVersion(); ctx->mMDP.hasOverlay = qdutils::MDPVersion::getInstance().hasOverlay(); ctx->mMDP.panel = qdutils::MDPVersion::getInstance().getPanelType(); //Is created and destroyed only once for primary //For external it could get created and destroyed multiple times depending //on what external we connect to. ctx->mFBUpdate[HWC_DISPLAY_PRIMARY] = IFBUpdate::getObject(ctx->dpyAttr[HWC_DISPLAY_PRIMARY].xres, HWC_DISPLAY_PRIMARY); #ifdef QCOM_BSP char value[PROPERTY_VALUE_MAX]; // Check if the target supports copybit compostion (dyn/mdp/c2d) to // decide if we need to open the copybit module. int compositionType = qdutils::QCCompositionType::getInstance().getCompositionType(); if (compositionType & (qdutils::COMPOSITION_TYPE_DYN | qdutils::COMPOSITION_TYPE_MDP | qdutils::COMPOSITION_TYPE_C2D)) { ctx->mCopyBit[HWC_DISPLAY_PRIMARY] = new CopyBit(); } #endif ctx->mExtDisplay = new ExternalDisplay(ctx); for (uint32_t i = 0; i < HWC_NUM_DISPLAY_TYPES; i++) ctx->mLayerCache[i] = new LayerCache(); ctx->mMDPComp = MDPComp::getObject(ctx->dpyAttr[HWC_DISPLAY_PRIMARY].xres); MDPComp::init(ctx); pthread_mutex_init(&(ctx->vstate.lock), NULL); pthread_cond_init(&(ctx->vstate.cond), NULL); ctx->vstate.enable = false; ctx->mExtDispConfiguring = false; ALOGI("Initializing Qualcomm Hardware Composer"); ALOGI("MDP version: %d", ctx->mMDP.version); }
void initContext(hwc_context_t *ctx) { openFramebufferDevice(ctx); overlay::Overlay::initOverlay(); for(uint32_t i = 0; i < HWC_NUM_DISPLAY_TYPES; i++) { ctx->mOverlay[i] = overlay::Overlay::getInstance(i); } ctx->mQService = qService::QService::getInstance(ctx); ctx->mMDP.version = qdutils::MDPVersion::getInstance().getMDPVersion(); ctx->mMDP.hasOverlay = qdutils::MDPVersion::getInstance().hasOverlay(); ctx->mMDP.panel = qdutils::MDPVersion::getInstance().getPanelType(); ctx->mExtDisplay = new ExternalDisplay(ctx); MDPComp::init(ctx); pthread_mutex_init(&(ctx->vstate.lock), NULL); pthread_cond_init(&(ctx->vstate.cond), NULL); ctx->vstate.enable = false; ALOGI("Initializing Qualcomm Hardware Composer"); ALOGI("MDP version: %d", ctx->mMDP.version); }
void initContext(hwc_context_t *ctx) { if(openFramebufferDevice(ctx) < 0) { ALOGE("%s: failed to open framebuffer!!", __FUNCTION__); } overlay::Overlay::initOverlay(); ctx->mOverlay = overlay::Overlay::getInstance(); ctx->mRotMgr = new RotMgr(); ctx->mMDP.version = qdutils::MDPVersion::getInstance().getMDPVersion(); ctx->mMDP.hasOverlay = qdutils::MDPVersion::getInstance().hasOverlay(); ctx->mMDP.panel = qdutils::MDPVersion::getInstance().getPanelType(); overlay::Overlay::initOverlay(); ctx->mOverlay = overlay::Overlay::getInstance(); ctx->mRotMgr = new RotMgr(); //Is created and destroyed only once for primary //For external it could get created and destroyed multiple times depending //on what external we connect to. ctx->mFBUpdate[HWC_DISPLAY_PRIMARY] = IFBUpdate::getObject(ctx->dpyAttr[HWC_DISPLAY_PRIMARY].xres, HWC_DISPLAY_PRIMARY); // Check if the target supports copybit compostion (dyn/mdp/c2d) to // decide if we need to open the copybit module. int compositionType = qdutils::QCCompositionType::getInstance().getCompositionType(); if (compositionType & (qdutils::COMPOSITION_TYPE_DYN | qdutils::COMPOSITION_TYPE_MDP | qdutils::COMPOSITION_TYPE_C2D)) { ctx->mCopyBit[HWC_DISPLAY_PRIMARY] = new CopyBit(); } ctx->mExtDisplay = new ExternalDisplay(ctx); for (uint32_t i = 0; i < MAX_DISPLAYS; i++) { ctx->mLayerRotMap[i] = new LayerRotMap(); } ctx->mMDPComp[HWC_DISPLAY_PRIMARY] = MDPComp::getObject(ctx->dpyAttr[HWC_DISPLAY_PRIMARY].xres, HWC_DISPLAY_PRIMARY); MDPComp::init(ctx); ctx->vstate.enable = false; ctx->vstate.fakevsync = false; ctx->mExtDispConfiguring = false; ctx->mBasePipeSetup = false; //Right now hwc starts the service but anybody could do it, or it could be //independent process as well. QService::init(); sp<IQClient> client = new QClient(ctx); interface_cast<IQService>( defaultServiceManager()->getService( String16("display.qservice")))->connect(client); ALOGI("Initializing Qualcomm Hardware Composer"); ALOGI("MDP version: %d", ctx->mMDP.version); connectPPDaemon(ctx); }