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

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

?? r128_driver.c

?? x.org上有關ati系列顯卡最新驅動
?? C
?? 第 1 頁 / 共 5 頁
字號:
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/r128_driver.c,v 1.88 2004/01/29 02:51:17 dawes Exp $ *//* * Copyright 1999, 2000 ATI Technologies Inc., Markham, Ontario, *                      Precision Insight, Inc., Cedar Park, Texas, and *                      VA Linux Systems Inc., Fremont, California. * * All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining * a copy of this software and associated documentation files (the * "Software"), to deal in the Software without restriction, including * without limitation on the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice (including the * next paragraph) shall be included in all copies or substantial * portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NON-INFRINGEMENT.  IN NO EVENT SHALL ATI, PRECISION INSIGHT, VA LINUX * SYSTEMS AND/OR THEIR SUPPLIERS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. */#ifdef HAVE_CONFIG_H#include "config.h"#endif/* * Authors: *   Rickard E. Faith <faith@valinux.com> *   Kevin E. Martin <martin@valinux.com> *   Gareth Hughes <gareth@valinux.com> * * Credits: * *   Thanks to Alan Hourihane <alanh@fairlite.demon..co.uk> and SuSE for *   providing source code to their 3.3.x Rage 128 driver.  Portions of *   this file are based on the initialization code for that driver. * * References: * *   RAGE 128 VR/ RAGE 128 GL Register Reference Manual (Technical *   Reference Manual P/N RRG-G04100-C Rev. 0.04), ATI Technologies: April *   1999. * *   RAGE 128 Software Development Manual (Technical Reference Manual P/N *   SDK-G04000 Rev. 0.01), ATI Technologies: June 1999. * * This server does not yet support these XFree86 4.0 features: *   DDC1 & DDC2 *   shadowfb *   overlay planes * * Modified by Marc Aurele La France <tsi@xfree86.org> for ATI driver merge. * * Dualhead support - Alex Deucher <agd5f@yahoo.com> */#include <string.h>#include <stdio.h>				/* Driver data structures */#include "r128.h"#include "r128_probe.h"#include "r128_reg.h"#include "r128_version.h"#ifdef XF86DRI#define _XF86DRI_SERVER_#include "r128_dri.h"#include "r128_common.h"#include "r128_sarea.h"#endif#include "fb.h"				/* colormap initialization */#include "micmap.h"				/* X and server generic header files */#include "xf86.h"#include "xf86_OSproc.h"#include "xf86RAC.h"#include "xf86Resources.h"#include "xf86cmap.h"#include "xf86xv.h"#include "vbe.h"				/* fbdevhw & vgahw */#ifdef WITH_VGAHW#include "vgaHW.h"#endif#include "fbdevhw.h"#include "dixstruct.h"				/* DPMS support. */#define DPMS_SERVER#include <X11/extensions/dpms.h>#include "atipciids.h"#include "r128_chipset.h"#ifndef MAX#define MAX(a,b) ((a)>(b)?(a):(b))#endif#define USE_CRT_ONLY	0				/* Forward definitions for driver functions */static Bool R128CloseScreen(int scrnIndex, ScreenPtr pScreen);static Bool R128SaveScreen(ScreenPtr pScreen, int mode);static void R128Save(ScrnInfoPtr pScrn);static void R128Restore(ScrnInfoPtr pScrn);static Bool R128ModeInit(ScrnInfoPtr pScrn, DisplayModePtr mode);static void R128DisplayPowerManagementSet(ScrnInfoPtr pScrn,					  int PowerManagementMode, int flags);static void R128DisplayPowerManagementSetLCD(ScrnInfoPtr pScrn,					  int PowerManagementMode, int flags);typedef enum {  OPTION_NOACCEL,  OPTION_SW_CURSOR,  OPTION_DAC_6BIT,  OPTION_DAC_8BIT,#ifdef XF86DRI  OPTION_XV_DMA,  OPTION_IS_PCI,  OPTION_CCE_PIO,  OPTION_NO_SECURITY,  OPTION_USEC_TIMEOUT,  OPTION_AGP_MODE,  OPTION_AGP_SIZE,  OPTION_RING_SIZE,  OPTION_BUFFER_SIZE,  OPTION_PAGE_FLIP,#endif#if USE_CRT_ONLY  /* FIXME: Disable CRTOnly until it is tested */  OPTION_CRT,#endif  OPTION_DISPLAY,  OPTION_PANEL_WIDTH,  OPTION_PANEL_HEIGHT,  OPTION_PROG_FP_REGS,  OPTION_FBDEV,  OPTION_VIDEO_KEY,  OPTION_SHOW_CACHE,  OPTION_VGA_ACCESS} R128Opts;static const OptionInfoRec R128Options[] = {  { OPTION_NOACCEL,      "NoAccel",          OPTV_BOOLEAN, {0}, FALSE },  { OPTION_SW_CURSOR,    "SWcursor",         OPTV_BOOLEAN, {0}, FALSE },  { OPTION_DAC_6BIT,     "Dac6Bit",          OPTV_BOOLEAN, {0}, FALSE },  { OPTION_DAC_8BIT,     "Dac8Bit",          OPTV_BOOLEAN, {0}, TRUE  },#ifdef XF86DRI  { OPTION_XV_DMA,       "DMAForXv",         OPTV_BOOLEAN, {0}, FALSE },  { OPTION_IS_PCI,       "ForcePCIMode",     OPTV_BOOLEAN, {0}, FALSE },  { OPTION_CCE_PIO,      "CCEPIOMode",       OPTV_BOOLEAN, {0}, FALSE },  { OPTION_NO_SECURITY,  "CCENoSecurity",    OPTV_BOOLEAN, {0}, FALSE },  { OPTION_USEC_TIMEOUT, "CCEusecTimeout",   OPTV_INTEGER, {0}, FALSE },  { OPTION_AGP_MODE,     "AGPMode",          OPTV_INTEGER, {0}, FALSE },  { OPTION_AGP_SIZE,     "AGPSize",          OPTV_INTEGER, {0}, FALSE },  { OPTION_RING_SIZE,    "RingSize",         OPTV_INTEGER, {0}, FALSE },  { OPTION_BUFFER_SIZE,  "BufferSize",       OPTV_INTEGER, {0}, FALSE },  { OPTION_PAGE_FLIP,    "EnablePageFlip",   OPTV_BOOLEAN, {0}, FALSE },#endif  { OPTION_DISPLAY,      "Display",          OPTV_STRING,  {0}, FALSE },  { OPTION_PANEL_WIDTH,  "PanelWidth",       OPTV_INTEGER, {0}, FALSE },  { OPTION_PANEL_HEIGHT, "PanelHeight",      OPTV_INTEGER, {0}, FALSE },  { OPTION_PROG_FP_REGS, "ProgramFPRegs",    OPTV_BOOLEAN, {0}, FALSE },  { OPTION_FBDEV,        "UseFBDev",         OPTV_BOOLEAN, {0}, FALSE },  { OPTION_VIDEO_KEY,    "VideoKey",         OPTV_INTEGER, {0}, FALSE },  { OPTION_SHOW_CACHE,   "ShowCache",        OPTV_BOOLEAN, {0}, FALSE },  { OPTION_VGA_ACCESS,   "VGAAccess",        OPTV_BOOLEAN, {0}, TRUE  },  { -1,                  NULL,               OPTV_NONE,    {0}, FALSE }};_X_EXPORT const OptionInfoRec *R128OptionsWeak(void) { return R128Options; }R128RAMRec R128RAM[] = {        /* Memory Specifications				   From RAGE 128 Software Development				   Manual (Technical Reference Manual P/N				   SDK-G04000 Rev 0.01), page 3-21.  */    { 4, 4, 3, 3, 1, 3, 1, 16, 12, "128-bit SDR SGRAM 1:1" },    { 4, 8, 3, 3, 1, 3, 1, 17, 13, "64-bit SDR SGRAM 1:1" },    { 4, 4, 1, 2, 1, 2, 1, 16, 12, "64-bit SDR SGRAM 2:1" },    { 4, 4, 3, 3, 2, 3, 1, 16, 12, "64-bit DDR SGRAM" },};#ifdef WITH_VGAHWstatic const char *vgahwSymbols[] = {    "vgaHWFreeHWRec",    "vgaHWGetHWRec",    "vgaHWGetIndex",    "vgaHWLock",    "vgaHWRestore",    "vgaHWSave",    "vgaHWUnlock",    NULL};#endifstatic const char *fbdevHWSymbols[] = {    "fbdevHWInit",    "fbdevHWUseBuildinMode",    "fbdevHWGetLineLength",    "fbdevHWGetVidmem",    "fbdevHWDPMSSet",    "fbdevHWDPMSSetWeak",    /* colormap */    "fbdevHWLoadPalette",    "fbdevHWLoadPaletteWeak",    /* ScrnInfo hooks */    "fbdevHWAdjustFrame",    "fbdevHWAdjustFrameWeak",    "fbdevHWEnterVT",    "fbdevHWLeaveVT",    "fbdevHWModeInit",    "fbdevHWRestore",    "fbdevHWSave",    "fbdevHWSwitchMode",    "fbdevHWSwitchModeWeak",    "fbdevHWValidModeWeak",    "fbdevHWMapMMIO",    "fbdevHWMapVidmem",    "fbdevHWUnmapMMIO",    "fbdevHWUnmapVidmem",    NULL};static const char *ddcSymbols[] = {    "xf86PrintEDID",    "xf86DoEDID_DDC1",    "xf86DoEDID_DDC2",    NULL};static const char *i2cSymbols[] = {    "xf86CreateI2CBusRec",    "xf86I2CBusInit",    NULL};static const char *fbSymbols[] = {    "fbPictureInit",    "fbScreenInit",    NULL};static const char *xaaSymbols[] = {    "XAACreateInfoRec",    "XAADestroyInfoRec",    "XAAInit",    NULL};static const char *ramdacSymbols[] = {    "xf86CreateCursorInfoRec",    "xf86DestroyCursorInfoRec",    "xf86InitCursor",    NULL};#ifdef XF86DRIstatic const char *drmSymbols[] = {    "drmAddBufs",    "drmAddMap",    "drmAgpAcquire",    "drmAgpAlloc",    "drmAgpBase",    "drmAgpBind",    "drmAgpDeviceId",    "drmAgpEnable",    "drmAgpFree",    "drmAgpGetMode",    "drmAgpRelease",    "drmAgpUnbind",    "drmAgpVendorId",    "drmAvailable",    "drmCommandNone",    "drmCommandRead",    "drmCommandWrite",    "drmCommandWriteRead",    "drmCtlInstHandler",    "drmCtlUninstHandler",    "drmFreeBufs",    "drmFreeVersion",    "drmGetInterruptFromBusID",    "drmGetLibVersion",    "drmGetVersion",    "drmMap",    "drmMapBufs",    "drmDMA",    "drmScatterGatherAlloc",    "drmScatterGatherFree",    "drmUnmap",    "drmUnmapBufs",    NULL};static const char *driSymbols[] = {    "DRICloseScreen",    "DRICreateInfoRec",    "DRIDestroyInfoRec",    "DRIFinishScreenInit",    "DRIGetDeviceInfo",    "DRIGetSAREAPrivate",    "DRILock",    "DRIQueryVersion",    "DRIScreenInit",    "DRIUnlock",    "GlxSetVisualConfigs",    "DRICreatePCIBusID",    NULL};static const char *driShadowFBSymbols[] = {    "ShadowFBInit",    NULL};#endifstatic const char *vbeSymbols[] = {    "VBEInit",    "vbeDoEDID",    "vbeFree",    NULL};static const char *int10Symbols[] = {    "xf86InitInt10",    "xf86FreeInt10",    "xf86int10Addr",    NULL};void R128LoaderRefSymLists(void){    /*     * Tell the loader about symbols from other modules that this module might     * refer to.     */    xf86LoaderRefSymLists(#ifdef WITH_VGAHW		      vgahwSymbols,#endif		      fbSymbols,		      xaaSymbols,		      ramdacSymbols,#ifdef XF86DRI		      drmSymbols,		      driSymbols,		      driShadowFBSymbols,#endif		      fbdevHWSymbols,		      int10Symbols,		      vbeSymbols,		      /* ddcsymbols, */		      i2cSymbols,		      /* shadowSymbols, */		      NULL);}#ifdef XFree86LOADERint getR128EntityIndex(void){    int *r128_entity_index = LoaderSymbol("gR128EntityIndex");    if (!r128_entity_index)        return -1;    else        return *r128_entity_index;}#elseextern int gR128EntityIndex;int getR128EntityIndex(void){    return gR128EntityIndex;}#endifR128EntPtr R128EntPriv(ScrnInfoPtr pScrn){    DevUnion     *pPriv;    R128InfoPtr  info   = R128PTR(pScrn);    pPriv = xf86GetEntityPrivate(info->pEnt->index,                                 getR128EntityIndex());    return pPriv->ptr;}/* Allocate our private R128InfoRec. */static Bool R128GetRec(ScrnInfoPtr pScrn){    if (pScrn->driverPrivate) return TRUE;    pScrn->driverPrivate = xnfcalloc(sizeof(R128InfoRec), 1);    return TRUE;}/* Free our private R128InfoRec. */static void R128FreeRec(ScrnInfoPtr pScrn){    if (!pScrn || !pScrn->driverPrivate) return;    xfree(pScrn->driverPrivate);    pScrn->driverPrivate = NULL;}/* Memory map the MMIO region.  Used during pre-init and by R128MapMem,   below. */static Bool R128MapMMIO(ScrnInfoPtr pScrn){    R128InfoPtr info          = R128PTR(pScrn);    if (info->FBDev) {	info->MMIO = fbdevHWMapMMIO(pScrn);    } else {	info->MMIO = xf86MapPciMem(pScrn->scrnIndex,				   VIDMEM_MMIO | VIDMEM_READSIDEEFFECT,				   info->PciTag,				   info->MMIOAddr,				   R128_MMIOSIZE);    }    if (!info->MMIO) return FALSE;    return TRUE;}/* Unmap the MMIO region.  Used during pre-init and by R128UnmapMem,   below. */static Bool R128UnmapMMIO(ScrnInfoPtr pScrn){    R128InfoPtr info          = R128PTR(pScrn);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久嫩草精品久久久久| 成人国产精品免费| 午夜欧美电影在线观看| 久久久久久综合| 精品乱码亚洲一区二区不卡| 欧美日韩国产高清一区二区| fc2成人免费人成在线观看播放| 精品亚洲国产成人av制服丝袜| 亚洲国产成人tv| 亚洲一区二区三区激情| 亚洲丝袜精品丝袜在线| 国产精品麻豆视频| 日本一区二区三区免费乱视频| 欧美大片日本大片免费观看| 欧美性感一区二区三区| 春色校园综合激情亚洲| 高清国产一区二区| 成人h动漫精品一区二区| 成人性色生活片免费看爆迷你毛片| 国产在线播放一区二区三区| 国产一区二区三区香蕉| 国产一区二区三区香蕉| 国产 欧美在线| 国产精品一级二级三级| 性做久久久久久免费观看欧美| 中文字幕国产一区二区| 欧美这里有精品| 欧美性猛片aaaaaaa做受| 国内成+人亚洲+欧美+综合在线| 午夜激情久久久| 亚洲综合av网| 日韩**一区毛片| 国产一区福利在线| 99re热视频精品| 欧美三级乱人伦电影| 欧美日韩精品免费| 日韩女优av电影在线观看| 日韩精品一区二区在线| 久久精品人人做人人爽97| 中文字幕av资源一区| 一区二区三区在线观看欧美| 亚洲免费视频中文字幕| 美女久久久精品| 国产91露脸合集magnet| 欧美日韩免费电影| 日韩欧美亚洲一区二区| 亚洲视频免费在线观看| 麻豆91精品91久久久的内涵| 成人一道本在线| 成人国产一区二区三区精品| 成人动漫视频在线| 欧洲一区在线观看| 欧美成人精品1314www| 亚洲欧美福利一区二区| 久久国产免费看| 成人性色生活片免费看爆迷你毛片| 日本精品一级二级| 欧美美女一区二区在线观看| 精品少妇一区二区三区在线播放| 欧美国产日韩精品免费观看| 中文字幕在线观看一区二区| 午夜精品视频一区| 成人国产在线观看| 久久综合成人精品亚洲另类欧美| 日韩理论片中文av| 久久成人综合网| 91免费看视频| 国产欧美日韩在线观看| 日本女优在线视频一区二区| 91麻豆免费在线观看| 久久先锋影音av鲁色资源| 亚洲一区二区黄色| 成人黄页在线观看| 久久欧美中文字幕| 日本不卡1234视频| 91美女片黄在线| 欧美国产1区2区| 九一九一国产精品| 91精品国产免费| 午夜免费欧美电影| 欧美天堂一区二区三区| 国产欧美精品一区二区三区四区| 综合久久一区二区三区| 国产综合久久久久影院| 3atv一区二区三区| 亚洲成人免费观看| 欧美日韩国产中文| 亚洲成av人在线观看| 欧美天堂一区二区三区| 中文字幕色av一区二区三区| 成人性视频网站| 久久九九99视频| 国产99久久久精品| 中文字幕一区二区三中文字幕| 国产毛片精品一区| 国产欧美日韩中文久久| 成人黄色小视频| 亚洲欧美综合色| 不卡欧美aaaaa| 亚洲国产精品av| 狠狠色丁香婷婷综合| 精品国产凹凸成av人导航| 亚洲成av人**亚洲成av**| 欧美日韩国产免费一区二区 | 欧美一级片免费看| 亚洲h在线观看| 精品国产乱码久久久久久浪潮| 国内成人免费视频| 久久久一区二区三区捆绑**| 国产成人一级电影| 亚洲另类春色校园小说| 色老综合老女人久久久| 亚洲成av人片在线观看无码| 日韩一区二区三区视频在线观看| 精品一区二区三区视频| 国产精品欧美久久久久一区二区 | 欧美日韩和欧美的一区二区| 亚洲综合色婷婷| 欧美xxxx老人做受| 成人黄色网址在线观看| 亚洲三级视频在线观看| 欧美视频精品在线观看| 亚洲靠逼com| 欧美日韩精品电影| 国产精品一区二区三区四区| 亚洲视频一区在线| 日韩免费福利电影在线观看| a美女胸又www黄视频久久| 亚洲一区二区影院| 久久中文字幕电影| 欧美午夜影院一区| 国产成人免费在线观看不卡| 亚洲最大成人网4388xx| 这里只有精品免费| 91在线观看污| 日韩不卡免费视频| 国产精品久久久久久久久图文区| 懂色av一区二区夜夜嗨| 日本最新不卡在线| 日韩精品一区二区三区中文不卡 | 久久国产剧场电影| 亚洲欧美视频一区| 欧美成人免费网站| 欧美色欧美亚洲另类二区| 国产成人亚洲综合a∨婷婷图片| 一区二区三区成人在线视频| 国产网站一区二区| 日韩久久免费av| 欧美视频一二三区| 色偷偷久久一区二区三区| 久久国产综合精品| 亚洲国产精品一区二区www| 国产精品污www在线观看| 精品国产一二三| 欧美大片拔萝卜| 91精品婷婷国产综合久久性色| proumb性欧美在线观看| 免费观看一级欧美片| 亚洲另类色综合网站| 久久夜色精品国产噜噜av | 亚洲精选一二三| 中文字幕久久午夜不卡| 日韩精品一区二区三区蜜臀| 91 com成人网| 欧美狂野另类xxxxoooo| 欧美日韩国产123区| 欧美系列一区二区| 欧美影院一区二区| 欧美午夜精品电影| 欧美在线看片a免费观看| 在线看一区二区| 91性感美女视频| 色婷婷av久久久久久久| 色综合天天天天做夜夜夜夜做| 国产精品白丝jk黑袜喷水| 久久精品国产亚洲一区二区三区| 国内成+人亚洲+欧美+综合在线| 毛片不卡一区二区| 亚洲精品成人a在线观看| 亚洲一区二区免费视频| 五月综合激情婷婷六月色窝| 丝袜美腿成人在线| 国产真实乱子伦精品视频| 国产电影一区在线| 91网站在线播放| 欧美日韩国产一级| 精品国产99国产精品| 欧美一区二区在线观看| www成人在线观看| 日韩精品一区二区三区在线| 久久日一线二线三线suv| 欧美国产亚洲另类动漫| 1024国产精品| 亚洲人成人一区二区在线观看| 成人欧美一区二区三区1314| 亚洲一区视频在线观看视频| 久久精品国产免费| 成人高清免费观看| 欧美日韩国产影片| 精品欧美乱码久久久久久|