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

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

?? atimach64xv.c

?? x.org上有關ati系列顯卡最新驅動
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/ati/atimach64xv.c,v 1.7 2003/11/10 18:22:18 tsi Exp $ *//* * Copyright 2003 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 "atiaccel.h"#include "atichip.h"#include "atimach64accel.h"#include "atimach64io.h"#include "atimach64xv.h"#include <X11/extensions/Xv.h>#include "fourcc.h"#define MAKE_ATOM(string) MakeAtom(string, strlen(string), TRUE)#define MaxScale          (CARD32)(CARD16)(-1)static unsigned long ATIMach64XVAtomGeneration = (unsigned long)(-1);static XF86VideoEncodingRec ATIMach64VideoEncoding_A[] ={    { 0, "XV_IMAGE", 384, 2048, {1, 1} }};#define nATIMach64VideoEncoding_A NumberOf(ATIMach64VideoEncoding_A)static XF86VideoEncodingRec ATIMach64VideoEncoding_B[] ={    { 0, "XV_IMAGE", 720, 2048, {1, 1} }};#define nATIMach64VideoEncoding_B NumberOf(ATIMach64VideoEncoding_B)/* nATIMach64VideoEncoding_[AB] should be equal */#define nATIMach64VideoEncoding nATIMach64VideoEncoding_Astatic XF86VideoFormatRec ATIMach64VideoFormat[] ={    { 8, TrueColor},    { 8, DirectColor},    { 8, PseudoColor},    { 8, GrayScale},    { 8, StaticGray},    { 8, StaticColor},    {15, TrueColor},    {16, TrueColor},    {24, TrueColor},    {15, DirectColor},    {16, DirectColor},    {24, DirectColor}};#define nATIMach64VideoFormat NumberOf(ATIMach64VideoFormat)static XF86AttributeRec ATIMach64Attribute[] ={    /* These are only supported on the Rage Pro and later ... */    {        XvSettable | XvGettable,        -1000, 1000,        "XV_SATURATION"    },    {        XvSettable | XvGettable,        -1000, 1000,        "XV_BRIGHTNESS"    },    {        XvSettable | XvGettable,        -1000, 1000,        "XV_COLOUR"    },    {        XvSettable | XvGettable,        -1000, 1000,        "XV_COLOR"    },    /* Local attributes, odds and ends for compatibility, etc... */    {        XvSettable | XvGettable,        0, 1,        "XV_AUTOPAINT_COLOURKEY"    },    {        XvSettable | XvGettable,        0, 1,        "XV_AUTOPAINT_COLORKEY"    },    {        XvSettable | XvGettable,        0, (1 << 24) - 1,        "XV_COLOURKEY"    },    {        XvSettable | XvGettable,        0, (1 << 24) - 1,        "XV_COLORKEY"    },    {        XvSettable | XvGettable,        0, (1 << 24) - 1,        "XV_COLOURKEY_MASK"    },    {        XvSettable | XvGettable,        0, (1 << 24) - 1,        "XV_COLORKEY_MASK"    },    {        XvSettable,        0, 0,        "XV_SET_DEFAULTS"    },    {   /* Keep last */        XvSettable | XvGettable,        0, 1,        "XV_DOUBLE_BUFFER"    }};#define nATIMach64Attribute NumberOf(ATIMach64Attribute)static XF86ImageRec ATIMach64Image[] ={    XVIMAGE_YUY2,    XVIMAGE_UYVY,    XVIMAGE_YV12,    XVIMAGE_I420};#define nATIMach64Image NumberOf(ATIMach64Image)/* A local XVideo adaptor attribute record */typedef struct _ATIMach64Attribute{    Atom  AttributeID;    INT32 MaxValue;             /* ... for the hardware */    void  (*SetAttribute) (ATIPtr, INT32);    INT32 (*GetAttribute) (ATIPtr);} ATIMach64AttributeRec, *ATIMach64AttributePtr;/* Functions to get/set XVideo adaptor attributes */static voidATIMach64SetSaturationAttribute(    ATIPtr pATI,    INT32  Value){    /* Set the register */    pATI->NewHW.scaler_colour_cntl &=        ~(SCALE_SATURATION_U | SCALE_SATURATION_V);    pATI->NewHW.scaler_colour_cntl |= SetBits(Value, SCALE_SATURATION_U) |        SetBits(Value, SCALE_SATURATION_V);    outf(SCALER_COLOUR_CNTL, pATI->NewHW.scaler_colour_cntl);}static INT32ATIMach64GetSaturationAttribute(    ATIPtr pATI){    return (INT32)GetBits(pATI->NewHW.scaler_colour_cntl, SCALE_SATURATION_U);}static voidATIMach64SetBrightnessAttribute(    ATIPtr pATI,    INT32  Value){    /* Set the register */    pATI->NewHW.scaler_colour_cntl &= ~SCALE_BRIGHTNESS;    pATI->NewHW.scaler_colour_cntl |= SetBits(Value, SCALE_BRIGHTNESS);    outf(SCALER_COLOUR_CNTL, pATI->NewHW.scaler_colour_cntl);}static INT32ATIMach64GetBrightnessAttribute(    ATIPtr pATI){    return (INT32)GetBits(pATI->NewHW.scaler_colour_cntl, SCALE_BRIGHTNESS);}static voidATIMach64SetDoubleBufferAttribute(    ATIPtr pATI,    INT32  Value){    pATI->DoubleBuffer = Value;}static INT32ATIMach64GetDoubleBufferAttribute(    ATIPtr pATI){    return (int)pATI->DoubleBuffer;}static voidATIMach64SetAutoPaintAttribute(    ATIPtr pATI,    INT32  Value){    pATI->AutoPaint = Value;}static INT32ATIMach64GetAutoPaintAttribute(    ATIPtr pATI){    return (int)pATI->AutoPaint;}static voidATIMach64SetColourKeyAttribute(    ATIPtr pATI,    INT32  Value){    pATI->NewHW.overlay_graphics_key_clr =        (CARD32)(Value & ((1 << pATI->depth) - 1));    outf(OVERLAY_GRAPHICS_KEY_CLR, pATI->NewHW.overlay_graphics_key_clr);}static INT32ATIMach64GetColourKeyAttribute(    ATIPtr pATI){    return (INT32)pATI->NewHW.overlay_graphics_key_clr;}static voidATIMach64SetColourKeyMaskAttribute(    ATIPtr pATI,    INT32  Value){    pATI->NewHW.overlay_graphics_key_msk =        (CARD32)(Value & ((1 << pATI->depth) - 1));    outf(OVERLAY_GRAPHICS_KEY_MSK, pATI->NewHW.overlay_graphics_key_msk);}static INT32ATIMach64GetColourKeyMaskAttribute(    ATIPtr pATI){    return (INT32)pATI->NewHW.overlay_graphics_key_msk;}/* * ATIMach64SetDefaultAttributes -- * * This function calls other functions to set default values for the various * attributes of an XVideo port. */static voidATIMach64SetDefaultAttributes(    ATIPtr pATI,    INT32  Value){    ATIMach64SetAutoPaintAttribute(pATI, TRUE);    ATIMach64SetDoubleBufferAttribute(pATI, FALSE);    ATIMach64SetColourKeyMaskAttribute(pATI, (1 << pATI->depth) - 1);    ATIMach64SetColourKeyAttribute(pATI, (3 << ((2 * pATI->depth) / 3)) |                                         (2 << ((1 * pATI->depth) / 3)) |                                         (1 << ((0 * pATI->depth) / 3)));    if (pATI->Chip < ATI_CHIP_264GTPRO)        return;    ATIMach64SetBrightnessAttribute(pATI, 32);    ATIMach64SetSaturationAttribute(pATI, 16);}/* * There is a one-to-one correspondance between elements of the following array * and those of ATIMach64Attribute. */static ATIMach64AttributeRec ATIMach64AttributeInfo[nATIMach64Attribute] ={    {   /* SATURATION */        0, 23,        ATIMach64SetSaturationAttribute,        ATIMach64GetSaturationAttribute    },    {   /* BRIGHTNESS */        0, 63,        ATIMach64SetBrightnessAttribute,        ATIMach64GetBrightnessAttribute    },    {   /* COLOUR */        0, 23,        ATIMach64SetSaturationAttribute,        ATIMach64GetSaturationAttribute    },    {   /* COLOR */        0, 23,        ATIMach64SetSaturationAttribute,        ATIMach64GetSaturationAttribute    },    {   /* AUTOPAINT_COLOURKEY */        0, 1,        ATIMach64SetAutoPaintAttribute,        ATIMach64GetAutoPaintAttribute    },    {   /* AUTOPAINT_COLORKEY */        0, 1,        ATIMach64SetAutoPaintAttribute,        ATIMach64GetAutoPaintAttribute    },    {   /* COLOURKEY */        0, (1 << 24) - 1,        ATIMach64SetColourKeyAttribute,        ATIMach64GetColourKeyAttribute    },    {   /* COLORKEY */        0, (1 << 24) - 1,        ATIMach64SetColourKeyAttribute,        ATIMach64GetColourKeyAttribute    },    {   /* COLOURKEY_MASK */        0, (1 << 24) - 1,        ATIMach64SetColourKeyMaskAttribute,        ATIMach64GetColourKeyMaskAttribute    },    {   /* COLORKEY_MASK */        0, (1 << 24) - 1,        ATIMach64SetColourKeyMaskAttribute,        ATIMach64GetColourKeyMaskAttribute    },    {   /* SET_DEFAULTS */        0, 0,        ATIMach64SetDefaultAttributes,        NULL    },    {   /* DOUBLE_BUFFER */        0, 1,        ATIMach64SetDoubleBufferAttribute,        ATIMach64GetDoubleBufferAttribute    }};/* * ATIMach64FindAttribute -- * * This function is called to locate an Xv attribute's table entry. */static intATIMach64FindPortAttribute(    ATIPtr pATI,    Atom   AttributeID){    int iAttribute;    if (pATI->Chip < ATI_CHIP_264GTPRO)        iAttribute = 4;    else        iAttribute = 0;    for (;  iAttribute < nATIMach64Attribute;  iAttribute++)        if (AttributeID == ATIMach64AttributeInfo[iAttribute].AttributeID)            return iAttribute;    return -1;}/* * ATIMach64SetPortAttribute -- * * This function sets the value of a particular port's attribute. */static intATIMach64SetPortAttribute(    ScrnInfoPtr pScreenInfo,    Atom        AttributeID,    INT32       Value,    pointer     pATI){    INT32 Range;    int   iAttribute;    if (((iAttribute = ATIMach64FindPortAttribute(pATI, AttributeID)) < 0) ||        !ATIMach64AttributeInfo[iAttribute].SetAttribute)        return BadMatch;    Range = ATIMach64Attribute[iAttribute].max_value -        ATIMach64Attribute[iAttribute].min_value;    if (Range >= 0)    {        /* Limit and scale the value */        Value -= ATIMach64Attribute[iAttribute].min_value;        if (Value < 0)            Value = 0;        else if (Value > Range)            Value = Range;        if (Range != ATIMach64AttributeInfo[iAttribute].MaxValue)        {            if (ATIMach64AttributeInfo[iAttribute].MaxValue > 0)                Value *= ATIMach64AttributeInfo[iAttribute].MaxValue;            if (Range > 0)                Value /= Range;        }    }    (*ATIMach64AttributeInfo[iAttribute].SetAttribute)(pATI, Value);    return Success;}/* * ATIMach64SetPortAttribute -- * * This function retrieves the value of a particular port's attribute. */static intATIMach64GetPortAttribute(    ScrnInfoPtr pScreenInfo,    Atom        AttributeID,    INT32       *Value,    pointer     pATI){    INT32 Range;    int   iAttribute;    if (!Value ||        ((iAttribute = ATIMach64FindPortAttribute(pATI, AttributeID)) < 0) ||        !ATIMach64AttributeInfo[iAttribute].GetAttribute)        return BadMatch;    *Value = (*ATIMach64AttributeInfo[iAttribute].GetAttribute)(pATI);    Range = ATIMach64Attribute[iAttribute].max_value -        ATIMach64Attribute[iAttribute].min_value;    if (Range >= 0)    {        if (Range != ATIMach64AttributeInfo[iAttribute].MaxValue)        {            /* (Un-)scale the value */            if (Range > 0)                *Value *= Range;            if (ATIMach64AttributeInfo[iAttribute].MaxValue > 0)                *Value /= ATIMach64AttributeInfo[iAttribute].MaxValue;        }        *Value += ATIMach64Attribute[iAttribute].min_value;    }    return Success;}static pointerATIMach64XVMemAlloc(    ScreenPtr pScreen,    pointer   pVideo,    int       size,    int       *offset,    ATIPtr    pATI);static voidATIMach64XVMemFree(    ScreenPtr pScreen,    pointer   pVideo,    ATIPtr    pATI);#ifdef USE_XAA/* * ATIMach64RemoveLinearCallback -- * * This is called by the framebuffer manager to release the offscreen XVideo * buffer after the video has been temporarily disabled due to its window being * iconified or completely occluded. */static voidATIMach64RemoveLinearCallback(    FBLinearPtr pLinear){    ATIPtr pATI = ATIPTR(xf86Screens[pLinear->pScreen->myNum]);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日本国产视频| 丝袜亚洲精品中文字幕一区| 在线免费观看日本欧美| 久草在线在线精品观看| 亚洲男人天堂av网| 精品国产一二三区| 91精品欧美一区二区三区综合在| 国产成人精品影视| 国产美女精品在线| 蜜桃久久久久久| 一区二区三区加勒比av| 亚洲欧洲精品一区二区三区不卡| 欧美大片顶级少妇| 在线成人av网站| 色婷婷av久久久久久久| 成人美女视频在线观看| 九九久久精品视频| 麻豆成人免费电影| 久久成人羞羞网站| 久久精品理论片| 国产乱淫av一区二区三区| 成人一区二区三区视频在线观看| 国产91在线观看丝袜| 波多野洁衣一区| 在线视频中文字幕一区二区| 欧美一区二区在线看| 精品国产一区久久| 成人欧美一区二区三区视频网页| 亚洲一区二区五区| 美女性感视频久久| 不卡的av电影在线观看| 欧美日本韩国一区二区三区视频 | 国产精品伦一区二区三级视频| 国产精品视频yy9299一区| 一区二区三区鲁丝不卡| 久久99国内精品| 激情欧美日韩一区二区| 国产成人精品aa毛片| 欧美日韩国产乱码电影| 亚洲国产精品二十页| 亚洲图片欧美视频| 国产激情一区二区三区| 欧美日韩性生活| 欧美国产在线观看| 日本特黄久久久高潮| 91在线观看视频| 久久久美女毛片| 日日夜夜精品视频免费| 成人开心网精品视频| 日韩三区在线观看| 一区二区三区四区视频精品免费 | 欧美午夜精品免费| 国产亚洲精品bt天堂精选| 亚洲成人免费观看| 91蝌蚪国产九色| 26uuu欧美| 日本在线不卡视频| 91理论电影在线观看| 中文字幕精品三区| 免费一区二区视频| 欧美乱妇15p| 一区二区三区在线视频免费| 国产伦精一区二区三区| 日韩欧美国产一区在线观看| 亚洲国产视频a| 一本色道久久综合亚洲aⅴ蜜桃| 久久综合久久综合久久综合| 日日夜夜精品视频免费| 欧美日韩亚洲综合一区二区三区| 中文字幕在线观看不卡| 成人午夜在线播放| 欧美韩日一区二区三区四区| 国产成人综合视频| 亚洲国产精品国自产拍av| 国产一区激情在线| 日本一二三不卡| 成人免费看的视频| 中文字幕中文字幕一区二区| 国产精品996| 亚洲国产岛国毛片在线| 国产精品123| 中文字幕巨乱亚洲| a级精品国产片在线观看| 1区2区3区国产精品| 色综合色综合色综合| 亚洲在线一区二区三区| 欧美日韩国产免费一区二区| 日日摸夜夜添夜夜添精品视频| 51精品国自产在线| 激情都市一区二区| 久久久精品综合| 99久久精品国产精品久久| 亚洲欧洲av另类| 在线亚洲精品福利网址导航| 天天爽夜夜爽夜夜爽精品视频| 在线不卡中文字幕| 国产精品一二三四五| 亚洲日本在线a| 欧美日韩一区 二区 三区 久久精品| 天天色天天爱天天射综合| 精品乱人伦小说| bt欧美亚洲午夜电影天堂| 一区二区欧美在线观看| 欧美精品xxxxbbbb| 国产一区二区免费视频| 国产清纯在线一区二区www| 一本到不卡精品视频在线观看| 亚洲高清免费一级二级三级| 7777精品伊人久久久大香线蕉完整版| 理论片日本一区| 中文字幕一区日韩精品欧美| 欧美日韩综合在线免费观看| 国产成人一级电影| 亚洲国产精品久久久久婷婷884| 欧美一区二区免费观在线| av在线不卡观看免费观看| 日韩精品高清不卡| 国产精品夫妻自拍| 精品日韩av一区二区| 99久久国产免费看| 韩日av一区二区| 亚洲国产成人91porn| 国产精品久久久久影院老司 | 国产成人免费av在线| 婷婷中文字幕综合| 国产精品久久777777| 精品日韩av一区二区| 欧美高清精品3d| 91免费国产视频网站| 国产mv日韩mv欧美| 免费av成人在线| 亚洲成a人片在线不卡一二三区| 中文在线一区二区| 精品久久久久香蕉网| 91精品国产aⅴ一区二区| 色哟哟精品一区| 成人黄色电影在线 | 亚洲精品乱码久久久久久 | 色综合咪咪久久| 波多野结衣在线一区| 国产成人亚洲精品青草天美 | 国产在线看一区| 免费成人在线观看| 午夜激情久久久| 亚洲一区二区影院| 一级精品视频在线观看宜春院 | 91精品国产一区二区人妖| 欧美在线免费观看亚洲| 色综合天天综合色综合av| 不卡视频一二三| 成人av电影免费在线播放| 大美女一区二区三区| 高清在线成人网| 成人精品一区二区三区四区| 丁香婷婷综合色啪| 成年人午夜久久久| 97se亚洲国产综合自在线观| 成人福利视频在线| 99国产精品久久久久久久久久久| 不卡av在线网| 色婷婷综合久久久中文字幕| 欧美在线观看你懂的| 欧美片在线播放| 日韩精品在线看片z| 26uuu国产电影一区二区| 久久精品日韩一区二区三区| 国产精品久线观看视频| 18欧美乱大交hd1984| 一区二区三区四区不卡在线 | 欧美三级欧美一级| 欧美精品一卡两卡| 精品美女一区二区| 中文字幕永久在线不卡| 亚洲在线视频免费观看| 美女网站在线免费欧美精品| 精品在线播放免费| 91视频国产资源| 777久久久精品| 中文字幕第一区综合| 夜夜嗨av一区二区三区网页| 日韩专区中文字幕一区二区| 国产一区二区免费视频| 91捆绑美女网站| 精品国产乱码久久久久久牛牛| 国产精品人人做人人爽人人添 | 欧美成人午夜电影| 国产精品少妇自拍| 午夜不卡av在线| 国产麻豆精品久久一二三| 91久久精品午夜一区二区| 欧美一级欧美三级| 国产精品福利电影一区二区三区四区| 亚洲国产成人va在线观看天堂| 国产一区激情在线| 欧美老年两性高潮| 中文字幕亚洲一区二区va在线| 日韩电影免费在线观看网站| 91在线国内视频| 久久亚洲捆绑美女| 日韩精品久久久久久|