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

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

?? atiadjust.c

?? x.org上有關ati系列顯卡最新驅動
?? C
字號:
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atiadjust.c,v 1.15 2003/04/23 21:51:27 tsi Exp $ *//* * Copyright 1997 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 "ati.h"#include "atiadjust.h"#include "atichip.h"#include "aticrtc.h"#include "atilock.h"#include "atimach64io.h"#include "atiwonderio.h"/* * The display start address is expressed in units of 32-bit (VGA) or 64-bit * (accelerator) words where all planar modes are considered as 4bpp modes. * These functions ensure the start address does not exceed architectural * limits.  Also, to avoid colour changes while panning, these 32-bit or 64-bit * boundaries may not fall within a pixel. *//* * ATIAjustPreInit -- * * This function calculates values needed to speed up the setting of the * display start address. */voidATIAdjustPreInit(    ATIPtr      pATI){    unsigned long MaxBase;#ifndef AVOID_CPIO    if ((pATI->CPIO_VGAWonder) &&        (pATI->Chip <= ATI_CHIP_18800_1) &&        (pATI->VideoRAM == 256) &&        (pATI->depth >= 8))    {        /* Strange, to say the least ... */        pATI->AdjustDepth = (pATI->bitsPerPixel + 3) >> 2;        pATI->AdjustMask = (unsigned long)(-32);    }    else#endif /* AVOID_CPIO */    {        pATI->AdjustDepth = (pATI->bitsPerPixel + 7) >> 3;        pATI->AdjustMask = 64;        while (pATI->AdjustMask % (unsigned long)(pATI->AdjustDepth))            pATI->AdjustMask += 64;        pATI->AdjustMask =            ~(((pATI->AdjustMask / (unsigned long)(pATI->AdjustDepth)) >> 3) -              1);    }    switch (pATI->NewHW.crtc)    {#ifndef AVOID_CPIO        case ATI_CRTC_VGA:            if (pATI->Chip >= ATI_CHIP_264CT)            {                pATI->AdjustMaxBase = MaxBits(CRTC_OFFSET_VGA) << 2;                if (pATI->depth <= 4)                    pATI->AdjustMaxBase <<= 1;            }            else if (!pATI->CPIO_VGAWonder)            {                pATI->AdjustMaxBase = 0xFFFFU << 3;            }            else if (pATI->Chip <= ATI_CHIP_28800_6)            {                pATI->AdjustMaxBase = 0x03FFFFU << 3;            }            else /* Mach32 & Mach64 */            {                pATI->AdjustMaxBase = 0x0FFFFFU << 3;            }            break;#endif /* AVOID_CPIO */        case ATI_CRTC_MACH64:            pATI->AdjustMaxBase = MaxBits(CRTC_OFFSET) << 3;            break;        default:            pATI->AdjustMaxBase = 0;            break;    }    MaxBase = (pATI->AdjustMaxBase / (unsigned long)pATI->AdjustDepth) |        ~pATI->AdjustMask;    pATI->AdjustMaxX = MaxBase % pATI->displayWidth;    pATI->AdjustMaxY = MaxBase / pATI->displayWidth;}/* * ATIAdjustFrame -- * * This function is used to initialise the SVGA Start Address - the first * displayed location in video memory.  This is used to implement the virtual * window. */_X_EXPORT voidATIAdjustFrame(    int scrnIndex,    int x,    int y,    int flags){    ScrnInfoPtr pScreenInfo = xf86Screens[scrnIndex];    ATIPtr      pATI = ATIPTR(pScreenInfo);    int         Base, xy;    /*     * Assume the caller has already done its homework in ensuring the physical     * screen is still contained in the virtual resolution.     */    if (y >= pATI->AdjustMaxY)    {        y = pATI->AdjustMaxY;        if (x > pATI->AdjustMaxX)            y--;    }    Base = ((((y * pATI->displayWidth) + x) & pATI->AdjustMask) *            pATI->AdjustDepth) >> 3;    if (!pATI->currentMode)    {        /*         * Not in DGA.  This reverse-calculates pScreenInfo->frame[XY][01] so         * that the cursor does not move on mode switches.         */        xy = (Base << 3) / pATI->AdjustDepth;        pScreenInfo->frameX0 = xy % pATI->displayWidth;        pScreenInfo->frameY0 = xy / pATI->displayWidth;        pScreenInfo->frameX1 =            pScreenInfo->frameX0 + pScreenInfo->currentMode->HDisplay - 1;        pScreenInfo->frameY1 =            pScreenInfo->frameY0 + pScreenInfo->currentMode->VDisplay - 1;    }    /* Unlock registers */    ATIUnlock(pATI);#ifndef AVOID_CPIO    if ((pATI->NewHW.crtc == ATI_CRTC_VGA) && (pATI->Chip < ATI_CHIP_264CT))    {        PutReg(CRTX(pATI->CPIO_VGABase), 0x0CU, GetByte(Base, 1));        PutReg(CRTX(pATI->CPIO_VGABase), 0x0DU, GetByte(Base, 0));        if (pATI->CPIO_VGAWonder)        {            if (pATI->Chip <= ATI_CHIP_18800_1)                ATIModifyExtReg(pATI, 0xB0U, -1, 0x3FU, Base >> 10);            else            {                ATIModifyExtReg(pATI, 0xB0U, -1, 0xBFU, Base >> 10);                ATIModifyExtReg(pATI, 0xA3U, -1, 0xEFU, Base >> 13);                /*                 * I don't know if this also applies to Mach64's, but give it a                 * shot...                 */                if (pATI->Chip >= ATI_CHIP_68800)                    ATIModifyExtReg(pATI, 0xADU, -1, 0xF3U, Base >> 16);            }        }    }    else    /*     * On integrated controllers, there is only one set of CRTC control bits,     * many of which are simultaneously accessible through both VGA and     * accelerator I/O ports.  Given VGA's architectural limitations, setting     * the CRTC's offset register to more than 256k needs to be done through     * the accelerator port.     */    if (pATI->depth <= 4)    {        outr(CRTC_OFF_PITCH, SetBits(pATI->displayWidth >> 4, CRTC_PITCH) |            SetBits(Base, CRTC_OFFSET));    }    else#endif /* AVOID_CPIO */    {#ifndef AVOID_CPIO        if (pATI->NewHW.crtc == ATI_CRTC_VGA)            Base <<= 1;                 /* LSBit must be zero */#endif /* AVOID_CPIO */        outr(CRTC_OFF_PITCH, SetBits(pATI->displayWidth >> 3, CRTC_PITCH) |            SetBits(Base, CRTC_OFFSET));    }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃91丨九色丨蝌蚪91桃色| 一区二区三区四区视频精品免费| 婷婷六月综合网| 欧美亚洲一区三区| 三级欧美韩日大片在线看| 中文字幕欧美区| 成人小视频免费观看| 国产精品女同互慰在线看| 99久久精品国产导航| 亚洲一二三级电影| 日韩欧美国产一区二区三区| 日韩av一级片| 亚洲国产激情av| 欧美亚洲禁片免费| 看电影不卡的网站| 国产精品欧美一级免费| 欧美日韩精品免费观看视频 | 亚洲欧洲国产日本综合| 色网综合在线观看| 久久国产精品一区二区| 国产精品拍天天在线| 欧美图区在线视频| 国产伦精品一区二区三区免费 | 日韩久久一区二区| 91网站最新网址| 免费日本视频一区| 国产精品福利在线播放| 7777女厕盗摄久久久| 国产精品白丝av| 亚洲第一综合色| 日本一区二区三级电影在线观看 | 国产精品一区二区久激情瑜伽| 欧美激情在线看| 欧美日韩1区2区| 99久久亚洲一区二区三区青草| 日本不卡高清视频| 伊人一区二区三区| 精品免费99久久| 欧美日韩国产天堂| youjizz久久| 精品一区二区影视| 亚洲福利电影网| 亚洲视频图片小说| 亚洲精品日日夜夜| 国产欧美日韩在线看| 欧美二区乱c少妇| 91丨porny丨中文| 国产最新精品精品你懂的| 午夜私人影院久久久久| 综合久久一区二区三区| 国产情人综合久久777777| 欧美成人a在线| 欧美日韩精品专区| 日本精品裸体写真集在线观看| 成人激情黄色小说| 国产乱人伦偷精品视频不卡 | 亚洲一区视频在线观看视频| 欧美激情一区二区三区蜜桃视频| 欧美一区二区三区免费视频 | 美女视频一区二区三区| 久久成人羞羞网站| 免费在线一区观看| 日本大胆欧美人术艺术动态| 亚洲国产日韩一区二区| 亚洲六月丁香色婷婷综合久久| 国产精品美女www爽爽爽| 国产欧美精品区一区二区三区 | 日本免费新一区视频 | 蜜桃一区二区三区在线观看| 亚洲动漫第一页| 亚洲午夜激情网站| 亚洲电影中文字幕在线观看| 亚洲高清中文字幕| 五月激情综合色| 日韩成人午夜精品| 六月丁香婷婷色狠狠久久| 美腿丝袜亚洲综合| 国产在线一区二区| 国产成人aaaa| 在线不卡免费欧美| 欧美一区二区在线免费观看| 欧美大尺度电影在线| 日韩欧美自拍偷拍| 亚洲精品一区在线观看| 久久精品视频免费观看| 久久精品亚洲麻豆av一区二区| 国产欧美日韩在线观看| 亚洲视频狠狠干| 亚洲二区在线视频| 日本中文字幕一区二区视频| 免费一区二区视频| 国产精品夜夜嗨| 99re视频精品| 欧美日韩国产高清一区二区三区| 在线播放/欧美激情| 精品国产乱码久久久久久闺蜜| 久久久99精品免费观看| 综合分类小说区另类春色亚洲小说欧美 | 国产精品一区不卡| 欧美日韩电影一区| 久久伊人中文字幕| 亚洲天堂免费在线观看视频| 亚洲成人三级小说| 国产一区二区精品久久99| www.欧美精品一二区| 欧美日韩亚洲综合一区二区三区| 日韩精品在线一区二区| 国产精品久久国产精麻豆99网站| 亚洲精品日日夜夜| 久久国产剧场电影| 色综合久久中文综合久久牛| 91精品国产福利在线观看 | 成人免费看的视频| 欧美视频一区二区| 久久久久久久久久久电影| 一区二区三区在线免费观看| 久久精工是国产品牌吗| 91麻豆国产香蕉久久精品| 日韩欧美电影一区| 亚洲色图19p| 精品一区二区在线视频| 日韩视频一区二区在线观看| 国产精品区一区二区三区| 亚洲综合在线免费观看| 国产福利精品一区二区| 欧美日韩一区二区三区在线看| 久久精品在线观看| 丝袜亚洲另类欧美综合| 91在线你懂得| 久久日韩精品一区二区五区| 一区二区三区精品视频在线| 国产精品一区在线观看你懂的| 欧美人狂配大交3d怪物一区| 国产精品美女久久久久久久网站| 青椒成人免费视频| 色综合久久66| 亚洲国产精品成人综合色在线婷婷| 日韩激情一二三区| 色综合久久九月婷婷色综合| 国产亚洲欧美色| 日韩电影在线一区| 欧美图区在线视频| 国产精品久久久久影视| 国产综合久久久久久久久久久久| 欧美伦理视频网站| 亚洲综合激情网| 日韩小视频在线观看专区| 亚洲午夜久久久久久久久电影网| 99久久综合精品| 国产精品三级电影| 国产成人精品1024| 久久久亚洲综合| 男人的j进女人的j一区| 欧美精品在线观看播放| 性做久久久久久免费观看| 91蜜桃在线观看| 亚洲欧美日韩成人高清在线一区| 岛国av在线一区| 国产欧美一区二区三区沐欲| 国内精品国产三级国产a久久| 日韩欧美激情在线| 天天色图综合网| 精品污污网站免费看| 亚洲免费观看高清完整版在线观看熊| 懂色av一区二区在线播放| 久久综合色综合88| 国产一区二区三区香蕉| 精品粉嫩aⅴ一区二区三区四区| 奇米影视在线99精品| 91精品国产综合久久国产大片| 三级亚洲高清视频| 日韩精品一区二区三区四区| 色综合久久88色综合天天免费| 国产精品久久久久永久免费观看| 国产久卡久卡久卡久卡视频精品| 国产亚洲女人久久久久毛片| 成人精品免费视频| 亚洲男同性视频| 欧美三区免费完整视频在线观看| 亚洲成av人片一区二区梦乃| 91精品国产手机| 久久国产日韩欧美精品| 久久久久国产精品麻豆ai换脸 | 日韩欧美国产1| 国产一区 二区| 中文字幕在线不卡一区| 欧日韩精品视频| 日韩国产精品久久久久久亚洲| 欧美成人女星排名| 成人精品免费视频| 一区二区三区精密机械公司| 欧美精品久久99| 国产一区二区在线免费观看| 国产精品国产馆在线真实露脸 | 亚洲色欲色欲www| 欧美日韩国产高清一区二区三区| 久久超级碰视频| 奇米精品一区二区三区四区| 国产视频亚洲色图| 欧美午夜一区二区三区免费大片|