void Rk30MaliDRI2_Close(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86Screens[pScreen->myNum]; FBDevPtr pMxv = FBDEVPTR(pScrn); if (pMxv->Rk30Mali != NULL) { OvlHWPtr overlay = pMxv->OvlHW; Rk30MaliPtr rk_3d = pMxv->Rk30Mali; /* Unwrap functions */ pScreen->DestroyWindow = rk_3d->DestroyWindow; // pScreen->PostValidateTree = rk_3d->PostValidateTree; // pScreen->GetImage = rk_3d->GetImage; pScreen->DestroyPixmap = rk_3d->DestroyPixmap; OvlFreeMemPg(pScrn, rk_3d->PMemBuf); // Reset_3DOvl(pScreen,1); if(rk_3d->buf_back){ free(rk_3d->buf_back); rk_3d->buf_back = NULL; } DRI2CloseScreen(pScreen); drmClose(rk_3d->drm_fd); free(rk_3d); rk_3d = NULL; } }
void vivante_dri2_CloseScreen(CLOSE_SCREEN_ARGS_DECL) { struct vivante *vivante = vivante_get_screen_priv(pScreen); struct vivante_dri2_info *dri = vivante->dri2; if (dri) { DRI2CloseScreen(pScreen); vivante->dri2 = NULL; drmFree(dri->devname); free(dri); } }
void TegraDRI2ScreenInit(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); TegraPtr tegra = TegraPTR(pScrn); DRI2InfoRec info = { .version = 6, .fd = tegra->fd, .driverName = "tegra", .deviceName = tegra->path, .CreateBuffer = TegraDRI2CreateBuffer, .DestroyBuffer = TegraDRI2DestroyBuffer, .CopyRegion = TegraDRI2CopyRegion, .ScheduleSwap = TegraDRI2ScheduleSwap, .GetMSC = TegraDRI2GetMSC, .ScheduleWaitMSC = TegraDRI2ScheduleWaitMSC, .AuthMagic = drmAuthMagic, }; xf86DrvMsg(pScrn->scrnIndex, X_INFO, "> %s(pScreen=%p)\n", __func__, pScreen); if (xf86LoaderCheckSymbol("DRI2Version")) { int major = 0, minor = 0; DRI2Version(&major, &minor); xf86DrvMsg(pScrn->scrnIndex, X_INFO, "DRI2 v%d.%d\n", major, minor); } DRI2ScreenInit(pScreen, &info); xf86DrvMsg(pScrn->scrnIndex, X_INFO, "< %s()\n", __func__); } void TegraDRI2ScreenExit(ScreenPtr pScreen) { ScrnInfoPtr pScrn = xf86ScreenToScrn(pScreen); xf86DrvMsg(pScrn->scrnIndex, X_INFO, "> %s(pScreen=%p)\n", __func__, pScreen); DRI2CloseScreen(pScreen); xf86DrvMsg(pScrn->scrnIndex, X_INFO, "< %s()\n", __func__); }
void VBOXDRICloseScreen(ScreenPtr pScreen, VBOXPtr pVBox) { DRI2CloseScreen(pScreen); }
void VBOXDRICloseScreen(ScreenPtr pScreen, VBOXPtr pVBox) { DRI2CloseScreen(pScreen); if (pVBox->drmFD >= 0) close(pVBox->drmFD); }