⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 aticonsole.c

📁 x.org上有关ati系列显卡最新驱动
💻 C
📖 第 1 页 / 共 2 页
字号:
		 */		pVbe->pInt10->cx = 0x0001;					xf86ExecX86int10(pVbe->pInt10);		xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, 			   "Setting TV active: ax=0x%04x, bx=0x%04x, cx=0x%04x\n",			   pVbe->pInt10->ax, pVbe->pInt10->bx, pVbe->pInt10->cx);		if (pVbe->pInt10->ax & 0xff00) {		    xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, 			       "Setting TV active failed\n");		} else {		    pATI->tvActive = TRUE;		}	    }	} else {	    pATI->tvActive = TRUE;	    xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, 		       "TV-Out is currently enabled (TV-Out revision code: %d).\n",		       (pVbe->pInt10->dx >> 8) & 0xff);	    switch ((pVbe->pInt10->cx >> 8) & 0xff) {	    case 0:		xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, "Reference frequency 29.49892\n");		break;	    case 1:		xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, "Reference frequency 28.63636\n");		break;	    case 2:		xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, "Reference frequency 14.31818\n");		break;	    case 3:		xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, "Reference frequency 27.00000\n");		break;	    default:		xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, 			   "Unknown reference frequency cx=0x%04x\n", pVbe->pInt10->cx);		    	    }	    /* Return TV standard	     * see Programmer's Guide under "TV Out Specific Functions"	     * It's not clear exactly which adapters support these	     */	    pVbe->pInt10->num = 0x10;	    pVbe->pInt10->ax = 0xa071;	    pVbe->pInt10->bx = 0x00;	    xf86ExecX86int10(pVbe->pInt10);	    xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, 		       "TV standard query result: ax=0x%04x, bx=0x%04x, cx=0x%04x\n",		       pVbe->pInt10->ax, pVbe->pInt10->bx, pVbe->pInt10->cx);	    if (pVbe->pInt10->ax & 0xff00) {		xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, 			   "Failed to return TV standard.\n");	    } else {		tv_std = pVbe->pInt10->cx & 0x00ff;		switch (tv_std) {		case ATI_TV_STD_NTSC:		case ATI_TV_STD_PAL:		case ATI_TV_STD_PALM:		case ATI_TV_STD_PAL60:		case ATI_TV_STD_NTSCJ:		case ATI_TV_STD_PALCN:		case ATI_TV_STD_PALN:		case ATI_TV_STD_SCARTPAL:		    xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, 			       "Current TV standard: %s\n", ATITVStandardNames[tv_std]);		    break;		default:		    xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, 			       "Unrecognized TV standard return code cx=0x%04x\n", 			       pVbe->pInt10->cx);		}		tv_std_request = pATI->OptionTvStd;		if (tv_std_request < 0 || 		    tv_std_request > ATI_TV_STD_NONE || 		    tv_std_request == ATI_TV_STD_RESERVED1 || 		    tv_std_request == ATI_TV_STD_RESERVED2) {		    xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, 			       "Invalid TV standard requested, please check configuration file\n");		} else if (tv_std_request != ATI_TV_STD_NONE) {		    /* Set TV standard if requested (LT Pro not supported) */		    if (pATI->Chip != ATI_CHIP_264LTPRO &&			tv_std_request != tv_std) {							pVbe->pInt10->num = 0x10;			pVbe->pInt10->ax = 0xa070;			pVbe->pInt10->bx = 0x0003; /* sub-function: set TV standard */			pVbe->pInt10->cx = tv_std_request;			xf86ExecX86int10(pVbe->pInt10);			if (pVbe->pInt10->ax & 0xff00)			    xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, 				       "Failed to set TV standard\n");			else			    xf86DrvMsg(pScreenInfo->scrnIndex, X_CONFIG, 				       "Set TV standard to %s\n", ATITVStandardNames[tv_std_request]);		    } else {			xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, 				   "Setting TV standard not supported on ATI Rage LT Pro\n");		    }		}	    }	    	}    } else {	xf86DrvMsg(pScreenInfo->scrnIndex, X_WARNING, "VBE module not loaded\n");    }}#endif /* TV_OUT *//* * ATIEnterGraphics -- * * This function sets the hardware to a graphics video state. */BoolATIEnterGraphics(    ScreenPtr   pScreen,    ScrnInfoPtr pScreenInfo,    ATIPtr      pATI){    /* Map apertures */    if (!ATIMapApertures(pScreenInfo->scrnIndex, pATI))        return FALSE;    /* Unlock device */    ATIUnlock(pATI);    /* Calculate hardware data */    if (pScreen &&        !ATIModeCalculate(pScreenInfo->scrnIndex, pATI, &pATI->NewHW,            pScreenInfo->currentMode))        return FALSE;    pScreenInfo->vtSema = TRUE;#ifdef TV_OUT    if (pATI->OptionTvOut) {	xf86LoaderRefSymLists(vbeSymbols, NULL);	if (pATI->pVBE) {	    if (VBEGetVBEMode(pATI->pVBE, &pATI->vbemode)) {		xf86DrvMsg(pScreenInfo->scrnIndex, X_INFO, "Saving VESA mode: 0x%x\n", 			   pATI->vbemode);	    }	}    }#endif /* TV_OUT */    /* Save current state */    ATIModeSave(pScreenInfo, pATI, &pATI->OldHW);#ifdef TV_OUT    if (pATI->OptionTvOut) 	ATIProbeAndSetActiveDisplays(pScreenInfo, pATI);#endif /* TV_OUT */    /* Set graphics state */    ATIModeSet(pScreenInfo, pATI, &pATI->NewHW);    /* Possibly blank the screen */    if (pScreen)       (void)ATISaveScreen(pScreen, SCREEN_SAVER_ON);    /* Position the screen */    (*pScreenInfo->AdjustFrame)(pScreenInfo->scrnIndex,        pScreenInfo->frameX0, pScreenInfo->frameY0, 0);    SetTimeSinceLastInputEvent();    return TRUE;}/* * ATILeaveGraphics -- * * This function restores the hardware to its previous state. */voidATILeaveGraphics(    ScrnInfoPtr pScreenInfo,    ATIPtr      pATI){    if (pScreenInfo->vtSema)    {        /* If not exiting, save graphics video state */        if (!xf86ServerIsExiting())            ATIModeSave(pScreenInfo, pATI, &pATI->NewHW);#ifdef TV_OUT	if (pATI->OptionTvOut) 	    ATIProbeAndSetActiveDisplays(pScreenInfo, pATI);#endif /* TV_OUT */        /* Restore mode in effect on server entry */        ATIModeSet(pScreenInfo, pATI, &pATI->OldHW);        pScreenInfo->vtSema = FALSE;    }    /* Lock device */    ATILock(pATI);    /* Unmap apertures */#ifdef AVOID_DGA    if (!pATI->Closeable)#else /* AVOID_DGA */    if (!pATI->Closeable || !pATI->nDGAMode)#endif /* AVOID_DGA */        ATIUnmapApertures(pScreenInfo->scrnIndex, pATI);    SetTimeSinceLastInputEvent();}/* * ATISwitchMode -- * * This function switches to another graphics video state. */_X_EXPORT BoolATISwitchMode(    int            iScreen,    DisplayModePtr pMode,    int            flags){    ScrnInfoPtr pScreenInfo = xf86Screens[iScreen];    ATIPtr      pATI        = ATIPTR(pScreenInfo);    /* Calculate new hardware data */    if (!ATIModeCalculate(iScreen, pATI, &pATI->NewHW, pMode))        return FALSE;    /* Set new hardware state */    if (pScreenInfo->vtSema)    {        pScreenInfo->currentMode = pMode;#ifdef XF86DRI_DEVEL        if (pATI->directRenderingEnabled)         {            DRILock(pScreenInfo->pScreen,0);	    ATIDRIWaitForIdle(pATI);        }#endif /* XF86DRI_DEVEL */        ATIModeSet(pScreenInfo, pATI, &pATI->NewHW);#ifdef XF86DRI_DEVEL        if (pATI->directRenderingEnabled)         {            DRIUnlock(pScreenInfo->pScreen);        }#endif /* XF86DRI_DEVEL */    }    SetTimeSinceLastInputEvent();    return TRUE;}/* * ATIEnterVT -- * * This function sets the server's virtual console to a graphics video state. */_X_EXPORT BoolATIEnterVT(    int iScreen,    int flags){    ScrnInfoPtr pScreenInfo = xf86Screens[iScreen];    ScreenPtr   pScreen     = pScreenInfo->pScreen;    ATIPtr      pATI        = ATIPTR(pScreenInfo);    PixmapPtr   pScreenPixmap;    DevUnion    PixmapPrivate;    Bool        Entered;    if (!ATIEnterGraphics(NULL, pScreenInfo, pATI))        return FALSE;    /* The rest of this isn't needed for shadowfb */    if (pATI->OptionShadowFB)    {#ifdef XF86DRI_DEVEL        if (pATI->directRenderingEnabled)         {            /* get the Mach64 back into shape after resume */            ATIDRIResume(pScreen);            DRIUnlock(pScreen);        }#endif /* XF86DRI_DEVEL */        return TRUE;    }#ifndef AVOID_CPIO    /* If used, modify banking interface */    if (!miModifyBanking(pScreen, &pATI->BankInfo))        return FALSE;#endif /* AVOID_CPIO */    pScreenPixmap = (*pScreen->GetScreenPixmap)(pScreen);    PixmapPrivate = pScreenPixmap->devPrivate;    if (!PixmapPrivate.ptr)        pScreenPixmap->devPrivate = pScreenInfo->pixmapPrivate;    /* Tell framebuffer about remapped aperture */    Entered = (*pScreen->ModifyPixmapHeader)(pScreenPixmap,        -1, -1, -1, -1, -1, pATI->pMemory);    if (!PixmapPrivate.ptr)    {        pScreenInfo->pixmapPrivate = pScreenPixmap->devPrivate;        pScreenPixmap->devPrivate.ptr = NULL;    }#ifdef XF86DRI_DEVEL    if (pATI->directRenderingEnabled)     {        /* get the Mach64 back into shape after resume */        ATIDRIResume(pScreen);        DRIUnlock(pScreen);    }#endif /* XF86DRI_DEVEL */    return Entered;}/* * ATILeaveVT -- * * This function restores the server's virtual console to its state on server * entry. */_X_EXPORT voidATILeaveVT(    int iScreen,    int flags){    ScrnInfoPtr pScreenInfo = xf86Screens[iScreen];    ScreenPtr   pScreen     = pScreenInfo->pScreen;    ATIPtr      pATI        = ATIPTR(pScreenInfo);#ifdef XF86DRI_DEVEL    if (pATI->directRenderingEnabled)     {        DRILock(pScreen,0);        ATIDRIWaitForIdle(pATI);    }#endif /* XF86DRI_DEVEL */    ATILeaveGraphics(pScreenInfo, ATIPTR(pScreenInfo));}/* * ATIFreeScreen -- * * This function frees all driver data related to a screen. */_X_EXPORT voidATIFreeScreen(    int iScreen,    int flags){    ScreenPtr   pScreen     = screenInfo.screens[iScreen];    ScrnInfoPtr pScreenInfo = xf86Screens[iScreen];    ATIPtr      pATI        = ATIPTR(pScreenInfo);    if (pATI->Closeable || (serverGeneration > 1))        ATII2CFreeScreen(iScreen);    if (pATI->Closeable)        (void)(*pScreen->CloseScreen)(iScreen, pScreen);    ATILeaveGraphics(pScreenInfo, pATI);#ifndef AVOID_CPIO    xfree(pATI->OldHW.frame_buffer);    xfree(pATI->NewHW.frame_buffer);#endif /* AVOID_CPIO */    xfree(pATI->pShadow);#ifndef AVOID_DGA    xfree(pATI->pDGAMode);#endif /* AVOID_DGA */    xfree(pATI);    pScreenInfo->driverPrivate = NULL;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -