亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? atimode.c

?? x.org上有關ati系列顯卡最新驅動
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * Copyright 2000 through 2004 by Marc Aurele La France (TSI @ UQV), tsi@xfree86.org * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that copyright * notice and this permission notice appear in supporting documentation, and * that the name of Marc Aurele La France not be used in advertising or * publicity pertaining to distribution of the software without specific, * written prior permission.  Marc Aurele La France makes no representations * about the suitability of this software for any purpose.  It is provided * "as-is" without express or implied warranty. * * MARC AURELE LA FRANCE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.  IN NO * EVENT SHALL MARC AURELE LA FRANCE BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <string.h>#include "ati.h"#include "atiadapter.h"#include "atichip.h"#include "atidac.h"#include "atidsp.h"#include "atimach64.h"#include "atimach64io.h"#include "atimode.h"#include "atiprint.h"#include "atirgb514.h"#include "ativga.h"#include "atiwonder.h"#include "atiwonderio.h"#ifdef TV_OUT#include "vbe.h"static const char *vbeSymbols[] = {    "VBESetVBEMode",    "vbeFree",    NULL};#endif /* TV_OUT */#ifndef AVOID_CPIO/* * ATICopyVGAMemory -- * * This function is called to copy one or all banks of a VGA plane. */static voidATICopyVGAMemory(    ATIPtr   pATI,    ATIHWPtr pATIHW,    pointer  *saveptr,    pointer  *from,    pointer  *to){    unsigned int iBank;    for (iBank = 0;  iBank < pATIHW->nBank;  iBank++)    {        (*pATIHW->SetBank)(pATI, iBank);        (void)memcpy(*to, *from, 0x00010000U);        *saveptr = (char *)(*saveptr) + 0x00010000U;    }}/* * ATISwap -- * * This function saves/restores video memory contents during video mode * switches. */static voidATISwap(    int      iScreen,    ATIPtr   pATI,    ATIHWPtr pATIHW,    Bool     ToFB){    pointer save, *from, *to;    unsigned int iPlane = 0, PlaneMask = 1;    CARD8 seq2, seq4, gra1, gra3, gra4, gra5, gra6, gra8;    /*     * This is only done for non-accelerator modes.  If the video state on     * server entry was an accelerator mode, the application that relinquished     * the console had better do the Right Thing (tm) anyway by saving and     * restoring its own video memory contents.     */    if (pATIHW->crtc != ATI_CRTC_VGA)        return;    if (ToFB)    {        if (!pATIHW->frame_buffer)            return;        from = &save;        to = &pATI->pBank;    }    else    {        /* Allocate the memory */        if (!pATIHW->frame_buffer)        {            pATIHW->frame_buffer =                (pointer)xalloc(pATIHW->nBank * pATIHW->nPlane * 0x00010000U);            if (!pATIHW->frame_buffer)            {                xf86DrvMsg(iScreen, X_WARNING,                    "Temporary frame buffer could not be allocated.\n");                return;            }        }        from = &pATI->pBank;        to = &save;    }    /* Turn off screen */    ATIVGASaveScreen(pATI, SCREEN_SAVER_ON);    /* Save register values to be modified */    seq2 = GetReg(SEQX, 0x02U);    seq4 = GetReg(SEQX, 0x04U);    gra1 = GetReg(GRAX, 0x01U);    gra3 = GetReg(GRAX, 0x03U);    gra5 = GetReg(GRAX, 0x05U);    gra6 = GetReg(GRAX, 0x06U);    gra8 = GetReg(GRAX, 0x08U);    save = pATIHW->frame_buffer;    /* Temporarily normalise the mode */    if (gra1 != 0x00U)        PutReg(GRAX, 0x01U, 0x00U);    if (gra3 != 0x00U)        PutReg(GRAX, 0x03U, 0x00U);    if (gra6 != 0x05U)        PutReg(GRAX, 0x06U, 0x05U);    if (gra8 != 0xFFU)        PutReg(GRAX, 0x08U, 0xFFU);    if (seq4 & 0x08U)    {        /* Setup packed mode memory */        if (seq2 != 0x0FU)            PutReg(SEQX, 0x02U, 0x0FU);        if (seq4 != 0x0AU)            PutReg(SEQX, 0x04U, 0x0AU);        if (pATI->Chip < ATI_CHIP_264CT)        {            if (gra5 != 0x00U)                PutReg(GRAX, 0x05U, 0x00U);        }        else        {            if (gra5 != 0x40U)                PutReg(GRAX, 0x05U, 0x40U);        }        ATICopyVGAMemory(pATI, pATIHW, &save, from, to);        if (seq2 != 0x0FU)            PutReg(SEQX, 0x02U, seq2);        if (seq4 != 0x0AU)            PutReg(SEQX, 0x04U, seq4);        if (pATI->Chip < ATI_CHIP_264CT)        {            if (gra5 != 0x00U)                PutReg(GRAX, 0x05U, gra5);        }        else        {            if (gra5 != 0x40U)                PutReg(GRAX, 0x05U, gra5);        }    }    else    {        gra4 = GetReg(GRAX, 0x04U);        /* Setup planar mode memory */        if (seq4 != 0x06U)            PutReg(SEQX, 0x04U, 0x06U);        if (gra5 != 0x00U)            PutReg(GRAX, 0x05U, 0x00U);        for (;  iPlane < pATIHW->nPlane;  iPlane++)        {            PutReg(SEQX, 0x02U, PlaneMask);            PutReg(GRAX, 0x04U, iPlane);            ATICopyVGAMemory(pATI, pATIHW, &save, from, to);            PlaneMask <<= 1;        }        PutReg(SEQX, 0x02U, seq2);        if (seq4 != 0x06U)            PutReg(SEQX, 0x04U, seq4);        PutReg(GRAX, 0x04U, gra4);        if (gra5 != 0x00U)            PutReg(GRAX, 0x05U, gra5);    }    /* Restore registers */    if (gra1 != 0x00U)        PutReg(GRAX, 0x01U, gra1);    if (gra3 != 0x00U)        PutReg(GRAX, 0x03U, gra3);    if (gra6 != 0x05U)        PutReg(GRAX, 0x06U, gra6);    if (gra8 != 0xFFU)        PutReg(GRAX, 0x08U, gra8);    /* Back to bank 0 */    (*pATIHW->SetBank)(pATI, 0);    /*     * If restoring video memory for a server video mode, free the frame buffer     * save area.     */    if (ToFB && (pATIHW == &pATI->NewHW))    {        xfree(pATIHW->frame_buffer);        pATIHW->frame_buffer = NULL;    }}#endif /* AVOID_CPIO *//* * ATIModePreInit -- * * This function initialises an ATIHWRec with information common to all video * states generated by the driver. */voidATIModePreInit(    ScrnInfoPtr pScreenInfo,    ATIPtr      pATI,    ATIHWPtr    pATIHW){    CARD32 lcd_index;#ifndef AVOID_CPIO    if (pATI->VGAAdapter != ATI_ADAPTER_NONE)    {        /* Fill in VGA data */        ATIVGAPreInit(pATI, pATIHW);        /* Fill in VGA Wonder data */        if (pATI->CPIO_VGAWonder)            ATIVGAWonderPreInit(pATI, pATIHW);    }    if (pATI->Chip >= ATI_CHIP_88800GXC)#endif /* AVOID_CPIO */    {        /* Fill in Mach64 data */        ATIMach64PreInit(pScreenInfo, pATI, pATIHW);        if (pATI->Chip >= ATI_CHIP_264CT)        {            /* Ensure proper VCLK source */            pATIHW->pll_vclk_cntl = ATIMach64GetPLLReg(PLL_VCLK_CNTL) |                (PLL_VCLK_SRC_SEL | PLL_VCLK_RESET);            /* Set provisional values for other PLL registers */            pATIHW->pll_vclk_post_div = ATIMach64GetPLLReg(PLL_VCLK_POST_DIV);            pATIHW->pll_vclk0_fb_div = ATIMach64GetPLLReg(PLL_VCLK0_FB_DIV);            pATIHW->pll_vclk1_fb_div = ATIMach64GetPLLReg(PLL_VCLK1_FB_DIV);            pATIHW->pll_vclk2_fb_div = ATIMach64GetPLLReg(PLL_VCLK2_FB_DIV);            pATIHW->pll_vclk3_fb_div = ATIMach64GetPLLReg(PLL_VCLK3_FB_DIV);            pATIHW->pll_xclk_cntl = ATIMach64GetPLLReg(PLL_XCLK_CNTL);            /* For now disable extended reference and feedback dividers */            if (pATI->Chip >= ATI_CHIP_264LT)                pATIHW->pll_ext_vpll_cntl =                    ATIMach64GetPLLReg(PLL_EXT_VPLL_CNTL) &                    ~(PLL_EXT_VPLL_EN | PLL_EXT_VPLL_VGA_EN |                      PLL_EXT_VPLL_INSYNC);            /* Initialise CRTC data for LCD panels */            if (pATI->LCDPanelID >= 0)            {                if (pATI->Chip == ATI_CHIP_264LT)                {                    pATIHW->lcd_gen_ctrl = inr(LCD_GEN_CTRL);                }                else /* if ((pATI->Chip == ATI_CHIP_264LTPRO) ||                            (pATI->Chip == ATI_CHIP_264XL) ||                            (pATI->Chip == ATI_CHIP_MOBILITY)) */                {                    lcd_index = inr(LCD_INDEX);                    pATIHW->lcd_index = lcd_index &                        ~(LCD_REG_INDEX | LCD_DISPLAY_DIS | LCD_SRC_SEL |                          LCD_CRTC2_DISPLAY_DIS);                    if (pATI->Chip != ATI_CHIP_264XL)                        pATIHW->lcd_index |= LCD_CRTC2_DISPLAY_DIS;                    pATIHW->config_panel =                        ATIMach64GetLCDReg(LCD_CONFIG_PANEL) |                        DONT_SHADOW_HEND;                    pATIHW->lcd_gen_ctrl =                        ATIMach64GetLCDReg(LCD_GEN_CNTL) & ~CRTC_RW_SELECT;                    outr(LCD_INDEX, lcd_index);                }                pATIHW->lcd_gen_ctrl &=                    ~(HORZ_DIVBY2_EN | DIS_HOR_CRT_DIVBY2 | MCLK_PM_EN |                      VCLK_DAC_PM_EN | USE_SHADOWED_VEND |                      USE_SHADOWED_ROWCUR | SHADOW_EN | SHADOW_RW_EN);                pATIHW->lcd_gen_ctrl |= DONT_SHADOW_VPAR | LOCK_8DOT;                if (!pATI->OptionPanelDisplay)                {                    /*                     * Use primary CRTC to drive the CRT.  Turn off panel                     * interface.                     */                    pATIHW->lcd_gen_ctrl &= ~LCD_ON;                    pATIHW->lcd_gen_ctrl |= CRT_ON;                }                else                {                    /* Use primary CRTC to drive the panel */                    pATIHW->lcd_gen_ctrl |= LCD_ON;                    /* If requested, also force CRT on */                    if (pATI->OptionCRTDisplay)                        pATIHW->lcd_gen_ctrl |= CRT_ON;                }            }        }        else if (pATI->DAC == ATI_DAC_IBMRGB514)        {            ATIRGB514PreInit(pATI, pATIHW);        }    }    /* Set RAMDAC data */    ATIDACPreInit(pScreenInfo, pATI, pATIHW);}/* * ATIModeSave -- * * This function saves the current video state. */voidATIModeSave(    ScrnInfoPtr pScreenInfo,    ATIPtr      pATI,    ATIHWPtr    pATIHW){#ifndef AVOID_CPIO    int Index;    /* Get back to bank 0 */    (*pATIHW->SetBank)(pATI, 0);#endif /* AVOID_CPIO */    /* Save clock data */    ATIClockSave(pScreenInfo, pATI, pATIHW);    if (pATI->Chip >= ATI_CHIP_264CT)    {        pATIHW->pll_vclk_cntl = ATIMach64GetPLLReg(PLL_VCLK_CNTL) |            PLL_VCLK_RESET;        pATIHW->pll_vclk_post_div = ATIMach64GetPLLReg(PLL_VCLK_POST_DIV);        pATIHW->pll_vclk0_fb_div = ATIMach64GetPLLReg(PLL_VCLK0_FB_DIV);        pATIHW->pll_vclk1_fb_div = ATIMach64GetPLLReg(PLL_VCLK1_FB_DIV);        pATIHW->pll_vclk2_fb_div = ATIMach64GetPLLReg(PLL_VCLK2_FB_DIV);        pATIHW->pll_vclk3_fb_div = ATIMach64GetPLLReg(PLL_VCLK3_FB_DIV);        pATIHW->pll_xclk_cntl = ATIMach64GetPLLReg(PLL_XCLK_CNTL);        if (pATI->Chip >= ATI_CHIP_264LT)            pATIHW->pll_ext_vpll_cntl = ATIMach64GetPLLReg(PLL_EXT_VPLL_CNTL);        /* Save LCD registers */        if (pATI->LCDPanelID >= 0)        {            if (pATI->Chip == ATI_CHIP_264LT)            {                pATIHW->horz_stretching = inr(HORZ_STRETCHING);                pATIHW->vert_stretching = inr(VERT_STRETCHING);                pATIHW->lcd_gen_ctrl = inr(LCD_GEN_CTRL);                /* Set up to save non-shadow registers */                outr(LCD_GEN_CTRL, pATIHW->lcd_gen_ctrl & ~SHADOW_RW_EN);            }            else /* if ((pATI->Chip == ATI_CHIP_264LTPRO) ||                        (pATI->Chip == ATI_CHIP_264XL) ||                        (pATI->Chip == ATI_CHIP_MOBILITY)) */            {                pATIHW->lcd_index = inr(LCD_INDEX);                pATIHW->config_panel = ATIMach64GetLCDReg(LCD_CONFIG_PANEL);                pATIHW->lcd_gen_ctrl = ATIMach64GetLCDReg(LCD_GEN_CNTL);                pATIHW->horz_stretching =                    ATIMach64GetLCDReg(LCD_HORZ_STRETCHING);                pATIHW->vert_stretching =                    ATIMach64GetLCDReg(LCD_VERT_STRETCHING);                pATIHW->ext_vert_stretch =                    ATIMach64GetLCDReg(LCD_EXT_VERT_STRETCH);                /* Set up to save non-shadow registers */                ATIMach64PutLCDReg(LCD_GEN_CNTL,                    pATIHW->lcd_gen_ctrl & ~(CRTC_RW_SELECT | SHADOW_RW_EN));            }        }    }#ifndef AVOID_CPIO    if (pATI->VGAAdapter != ATI_ADAPTER_NONE)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区中文字幕在线观看| 日本不卡一区二区三区高清视频| 亚洲女同ⅹxx女同tv| 奇米影视一区二区三区| 国产成a人亚洲| 日韩一区二区不卡| 亚洲女同一区二区| 国产不卡视频在线观看| 538prom精品视频线放| 中文字幕亚洲一区二区va在线| 卡一卡二国产精品| 欧美日韩大陆一区二区| 亚洲欧美日韩中文播放| 国产成人亚洲精品狼色在线| 678五月天丁香亚洲综合网| 国产精品美女久久久久av爽李琼| 免费一级片91| 欧美亚洲一区二区在线| 亚洲婷婷综合色高清在线| 国产一区二区看久久| 欧美一级夜夜爽| 亚洲国产精品综合小说图片区| 成人黄色av电影| 国产视频一区在线播放| 久久精品国产**网站演员| 欧美日韩国产一级片| 亚洲国产日日夜夜| 欧美亚洲愉拍一区二区| 亚洲激情图片小说视频| 丰满白嫩尤物一区二区| 国产婷婷色一区二区三区在线| 久久丁香综合五月国产三级网站| 欧美一区二区视频在线观看2020 | av在线播放不卡| 久久精品一区四区| 国产精品一区二区在线观看不卡| 精品剧情v国产在线观看在线| 男人操女人的视频在线观看欧美| 欧美精品一二三四| 日韩影院精彩在线| 91精品国产一区二区三区| 免费高清成人在线| 精品国产免费久久| 国产精品一区二区久久精品爱涩| 久久综合色之久久综合| 久色婷婷小香蕉久久| 日韩欧美综合一区| 综合色天天鬼久久鬼色| 成人午夜视频免费看| 日韩美一区二区三区| 亚洲卡通欧美制服中文| 91丨porny丨蝌蚪视频| 亚洲欧洲三级电影| 99久久久国产精品免费蜜臀| 中文字幕一区免费在线观看 | 亚洲免费色视频| 91亚洲精品一区二区乱码| 亚洲欧洲精品成人久久奇米网| 国产精品12区| 国产精品免费视频网站| av中文一区二区三区| 国产精品国产三级国产普通话99| 国产精品一区二区久激情瑜伽| 国产女同互慰高潮91漫画| 成人网男人的天堂| 精品盗摄一区二区三区| av成人免费在线观看| 亚洲香肠在线观看| 欧美老肥妇做.爰bbww| 蜜桃精品视频在线| 久久免费的精品国产v∧| 成人高清免费观看| 亚洲精品国产第一综合99久久 | 中文字幕中文字幕在线一区| 国产精品99久久久久久有的能看 | 色综合天天综合| 最新国产精品久久精品| 欧美系列在线观看| 久久精品国产秦先生| 久久女同性恋中文字幕| av中文字幕一区| 亚洲精品国产a久久久久久 | 91精品国产综合久久久蜜臀图片| 久久综合综合久久综合| 欧美国产丝袜视频| 精品视频一区 二区 三区| 久久av老司机精品网站导航| 欧美激情一区不卡| 欧美日韩黄视频| 亚洲电影一区二区三区| 国产精品视频你懂的| 欧美蜜桃一区二区三区| 国产suv一区二区三区88区| 一区二区三区.www| 久久久久久久综合狠狠综合| 色先锋久久av资源部| 精品在线观看视频| 亚洲激情校园春色| 久久久久久久久久电影| 欧美在线视频不卡| 国产成人免费视频一区| 一区二区三区日韩欧美| 2020国产精品| 欧美丰满一区二区免费视频| 成人精品小蝌蚪| 麻豆精品新av中文字幕| 一区二区三区日韩精品视频| 久久先锋资源网| 91在线porny国产在线看| 粉嫩蜜臀av国产精品网站| 青青草国产成人av片免费| 亚洲蜜桃精久久久久久久| 久久欧美中文字幕| 欧美日韩国产高清一区| 99国产精品视频免费观看| 精彩视频一区二区三区| 天堂久久久久va久久久久| 亚洲视频 欧洲视频| 国产色一区二区| 欧美videos中文字幕| 99v久久综合狠狠综合久久| 午夜av电影一区| 亚洲靠逼com| 综合色中文字幕| 国产精品国产三级国产普通话三级| 欧美tk丨vk视频| 欧美电视剧在线看免费| 欧美一区二区日韩| 8x福利精品第一导航| 欧美日韩在线播放一区| 91免费视频观看| 91在线免费播放| 色诱视频网站一区| 免费成人av资源网| 亚洲.国产.中文慕字在线| 亚洲狠狠爱一区二区三区| 亚洲日本va在线观看| 中文字幕一区视频| 亚洲私人影院在线观看| 国产蜜臀97一区二区三区| 亚洲婷婷综合色高清在线| 亚洲人成在线播放网站岛国| 中文字幕日韩欧美一区二区三区| 亚洲欧洲精品一区二区三区 | 91精品视频网| 精品免费国产一区二区三区四区| 日韩欧美中文字幕精品| 亚洲精品一区二区三区福利| 亚洲精品一区二区三区香蕉| 精品动漫一区二区三区在线观看| 久久精品夜夜夜夜久久| 国产欧美日韩亚州综合| 国产精品乱码久久久久久| 国产欧美一区二区三区在线看蜜臀| 久久久99久久| 国产精品久久久久久久久晋中| 亚洲人午夜精品天堂一二香蕉| 亚洲人快播电影网| 亚洲福利视频导航| 精品一区二区久久久| 国产成人啪免费观看软件| av不卡免费电影| 欧美精品自拍偷拍动漫精品| 精品剧情在线观看| 亚洲精品日韩专区silk| 天天综合天天做天天综合| 精品一区二区三区日韩| 成人高清免费观看| 欧美日韩国产首页| www日韩大片| 亚洲精品国产成人久久av盗摄 | 国产一二精品视频| 成人福利在线看| 欧美日韩一区久久| 久久亚区不卡日本| 亚洲图片欧美色图| 成人中文字幕在线| 538prom精品视频线放| 国产欧美一二三区| 亚洲午夜精品网| 激情偷乱视频一区二区三区| 9人人澡人人爽人人精品| 欧美日韩一区 二区 三区 久久精品| 精品国产区一区| 亚洲黄色免费电影| 美女精品一区二区| 欧美老女人第四色| 一区在线中文字幕| 久久av老司机精品网站导航| 色综合视频在线观看| 精品成人私密视频| 婷婷亚洲久悠悠色悠在线播放| 国产999精品久久久久久绿帽| 欧美日韩精品免费观看视频 | 91麻豆国产自产在线观看| 日韩一区二区免费高清| 日韩电影在线免费| 欧美羞羞免费网站| 国产精品电影一区二区三区| 九九热在线视频观看这里只有精品|