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

📄 atimach64.c

📁 x.org上有关ati系列显卡最新驱动
💻 C
📖 第 1 页 / 共 3 页
字号:
        /* Load source registers */        ATIMach64WaitForFIFO(pATI, 6);        outf(SRC_OFF_PITCH, pATIHW->src_off_pitch);        outf(SRC_Y_X, SetWord(pATIHW->src_x, 1) | SetWord(pATIHW->src_y, 0));        outf(SRC_HEIGHT1_WIDTH1,            SetWord(pATIHW->src_width1, 1) | SetWord(pATIHW->src_height1, 0));        outf(SRC_Y_X_START,            SetWord(pATIHW->src_x_start, 1) | SetWord(pATIHW->src_y_start, 0));        outf(SRC_HEIGHT2_WIDTH2,            SetWord(pATIHW->src_width2, 1) | SetWord(pATIHW->src_height2, 0));        outf(SRC_CNTL, pATIHW->src_cntl);        if (pATI->Chip >= ATI_CHIP_264GTPRO)        {            CARD32 offset = TEX_LEVEL(pATIHW->tex_size_pitch);            /* Load 3D control & texture registers */            ATIMach64WaitForFIFO(pATI, 2);            outf(TEX_0_OFF + offset, pATIHW->tex_offset);            outf(SCALE_3D_CNTL, pATIHW->scale_3d_cntl);        }        /* Load host data register */        ATIMach64WaitForFIFO(pATI, 1);        outf(HOST_CNTL, pATIHW->host_cntl);        /* Set host transfer window address and size clamp */        pATI->pHOST_DATA = ATIHostDataAddr(HOST_DATA_0);        pATI->nHostFIFOEntries = pATI->nFIFOEntries >> 1;        if (pATI->nHostFIFOEntries > 16)            pATI->nHostFIFOEntries = 16;        /* Load pattern registers */        ATIMach64WaitForFIFO(pATI, 3);        outf(PAT_REG0, pATIHW->pat_reg0);        outf(PAT_REG1, pATIHW->pat_reg1);        outf(PAT_CNTL, pATIHW->pat_cntl);        /* Load scissor registers */        ATIMach64WaitForFIFO(pATI, 2);        outf(SC_LEFT_RIGHT,            SetWord(pATIHW->sc_right, 1) | SetWord(pATIHW->sc_left, 0));        outf(SC_TOP_BOTTOM,            SetWord(pATIHW->sc_bottom, 1) | SetWord(pATIHW->sc_top, 0));        pATI->sc_left = pATIHW->sc_left;        pATI->sc_right = pATIHW->sc_right;        pATI->sc_top = pATIHW->sc_top;        pATI->sc_bottom = pATIHW->sc_bottom;        /* Load data path registers */        ATIMach64WaitForFIFO(pATI, 7);        outf(DP_BKGD_CLR, pATIHW->dp_bkgd_clr);        outf(DP_FRGD_CLR, pATIHW->dp_frgd_clr);        outf(DP_WRITE_MASK, pATIHW->dp_write_mask);        outf(DP_CHAIN_MASK, pATIHW->dp_chain_mask);        outf(DP_PIX_WIDTH, pATIHW->dp_pix_width);        outf(DP_MIX, pATIHW->dp_mix);        outf(DP_SRC, pATIHW->dp_src);        /* Load colour compare registers */        ATIMach64WaitForFIFO(pATI, 3);        outf(CLR_CMP_CLR, pATIHW->clr_cmp_clr);        outf(CLR_CMP_MSK, pATIHW->clr_cmp_msk);        outf(CLR_CMP_CNTL, pATIHW->clr_cmp_cntl);        /* Load context mask */        ATIMach64WaitForFIFO(pATI, 1);        outf(CONTEXT_MASK, pATIHW->context_mask);        if (pATI->Chip >= ATI_CHIP_264GTPRO)        {            /* Load texture setup registers */            ATIMach64WaitForFIFO(pATI, 2);            outf(TEX_SIZE_PITCH, pATIHW->tex_size_pitch);            outf(TEX_CNTL, pATIHW->tex_cntl);        }        if (pATI->Block1Base)        {            /* Load overlay & scaler registers */            ATIMach64WaitForFIFO(pATI, 10);            outf(OVERLAY_Y_X_START, pATIHW->overlay_y_x_start);            outf(OVERLAY_Y_X_END, pATIHW->overlay_y_x_end);            outf(OVERLAY_GRAPHICS_KEY_CLR, pATIHW->overlay_graphics_key_clr);            outf(OVERLAY_GRAPHICS_KEY_MSK, pATIHW->overlay_graphics_key_msk);            outf(OVERLAY_KEY_CNTL, pATIHW->overlay_key_cntl);            outf(OVERLAY_SCALE_INC, pATIHW->overlay_scale_inc);            outf(OVERLAY_SCALE_CNTL, pATIHW->overlay_scale_cntl);            outf(SCALER_HEIGHT_WIDTH, pATIHW->scaler_height_width);            outf(SCALER_TEST, pATIHW->scaler_test);            outf(VIDEO_FORMAT, pATIHW->video_format);            if (pATI->Chip < ATI_CHIP_264VTB)            {                ATIMach64WaitForFIFO(pATI, 4);                outf(BUF0_OFFSET, pATIHW->buf0_offset);                outf(BUF0_PITCH, pATIHW->buf0_pitch);                outf(BUF1_OFFSET, pATIHW->buf1_offset);                outf(BUF1_PITCH, pATIHW->buf1_pitch);            }            else            {                ATIMach64WaitForFIFO(pATI, 5);                outf(SCALER_BUF0_OFFSET, pATIHW->scaler_buf0_offset);                outf(SCALER_BUF1_OFFSET, pATIHW->scaler_buf1_offset);                outf(SCALER_BUF_PITCH, pATIHW->scaler_buf_pitch);                outf(OVERLAY_EXCLUSIVE_HORZ, pATIHW->overlay_exclusive_horz);                outf(OVERLAY_EXCLUSIVE_VERT, pATIHW->overlay_exclusive_vert);                if (pATI->Chip >= ATI_CHIP_264GTPRO)                {                    ATIMach64WaitForFIFO(pATI, 10);                    outf(SCALER_COLOUR_CNTL, pATIHW->scaler_colour_cntl);                    outf(SCALER_H_COEFF0, pATIHW->scaler_h_coeff0);                    outf(SCALER_H_COEFF1, pATIHW->scaler_h_coeff1);                    outf(SCALER_H_COEFF2, pATIHW->scaler_h_coeff2);                    outf(SCALER_H_COEFF3, pATIHW->scaler_h_coeff3);                    outf(SCALER_H_COEFF4, pATIHW->scaler_h_coeff4);                    outf(SCALER_BUF0_OFFSET_U, pATIHW->scaler_buf0_offset_u);                    outf(SCALER_BUF0_OFFSET_V, pATIHW->scaler_buf0_offset_v);                    outf(SCALER_BUF1_OFFSET_U, pATIHW->scaler_buf1_offset_u);                    outf(SCALER_BUF1_OFFSET_V, pATIHW->scaler_buf1_offset_v);                }            }        }        ATIMach64WaitForIdle(pATI);        if (pATI->OptionMMIOCache)        {            /*             * Enable write caching for selected MMIO registers.  This can only             * be done for those registers whose value does not change without             * driver intervention.             */            CacheRegister(SRC_CNTL);            if (pATI->Chip >= ATI_CHIP_264GTPRO)            {                CacheRegister(SCALE_3D_CNTL);            }            CacheRegister(HOST_CNTL);            CacheRegister(PAT_REG0);            CacheRegister(PAT_REG1);            CacheRegister(PAT_CNTL);            CacheRegister(SC_LEFT_RIGHT);            CacheRegister(SC_TOP_BOTTOM);            CacheRegister(DP_BKGD_CLR);            CacheRegister(DP_FRGD_CLR);            CacheRegister(DP_PIX_WIDTH);            CacheRegister(DP_MIX);            CacheRegister(CLR_CMP_CLR);            CacheRegister(CLR_CMP_MSK);            CacheRegister(CLR_CMP_CNTL);            if (pATI->Chip >= ATI_CHIP_264GTPRO)            {                CacheRegister(TEX_SIZE_PITCH);            }            if (pATI->Block1Base)            {                CacheRegister(OVERLAY_Y_X_START);                CacheRegister(OVERLAY_Y_X_END);                CacheRegister(OVERLAY_GRAPHICS_KEY_CLR);                CacheRegister(OVERLAY_GRAPHICS_KEY_MSK);                CacheRegister(OVERLAY_KEY_CNTL);                CacheRegister(OVERLAY_SCALE_INC);                CacheRegister(OVERLAY_SCALE_CNTL);                CacheRegister(SCALER_HEIGHT_WIDTH);                CacheRegister(SCALER_TEST);                CacheRegister(VIDEO_FORMAT);                if (pATI->Chip < ATI_CHIP_264VTB)                {                    CacheRegister(BUF0_OFFSET);                    CacheRegister(BUF0_PITCH);                    CacheRegister(BUF1_OFFSET);                    CacheRegister(BUF1_PITCH);                }                else                {                    CacheRegister(SCALER_BUF0_OFFSET);                    CacheRegister(SCALER_BUF1_OFFSET);                    CacheRegister(SCALER_BUF_PITCH);                    CacheRegister(OVERLAY_EXCLUSIVE_HORZ);                    CacheRegister(OVERLAY_EXCLUSIVE_VERT);                    if (pATI->Chip >= ATI_CHIP_264GTPRO)                    {                        CacheRegister(SCALER_COLOUR_CNTL);                        CacheRegister(SCALER_H_COEFF0);                        CacheRegister(SCALER_H_COEFF1);                        CacheRegister(SCALER_H_COEFF2);                        CacheRegister(SCALER_H_COEFF3);                        CacheRegister(SCALER_H_COEFF4);                        CacheRegister(SCALER_BUF0_OFFSET_U);                        CacheRegister(SCALER_BUF0_OFFSET_V);                        CacheRegister(SCALER_BUF1_OFFSET_U);                        CacheRegister(SCALER_BUF1_OFFSET_V);                    }                }            }        }    }#ifndef AVOID_CPIO    if (pATIHW->crtc == ATI_CRTC_MACH64)#endif /* AVOID_CPIO */    {        /* Aperture setup */        outr(MEM_VGA_WP_SEL, pATIHW->mem_vga_wp_sel);        outr(MEM_VGA_RP_SEL, pATIHW->mem_vga_rp_sel);        outr(DAC_CNTL, pATIHW->dac_cntl);        outr(CONFIG_CNTL, pATIHW->config_cntl);        outr(BUS_CNTL, pATIHW->bus_cntl);        if (pATI->Chip >= ATI_CHIP_264VTB)        {            outr(MEM_BUF_CNTL, pATIHW->mem_buf_cntl);            outr(MEM_CNTL, pATIHW->mem_cntl);            outr(MPP_CONFIG, pATIHW->mpp_config);            outr(MPP_STROBE_SEQ, pATIHW->mpp_strobe_seq);            outr(TVO_CNTL, pATIHW->tvo_cntl);        }    }}/* * ATIMach64SaveScreen -- * * This function blanks or unblanks a Mach64 screen. */voidATIMach64SaveScreen(    ATIPtr pATI,    int    Mode){    CARD32 crtc_gen_cntl = inr(CRTC_GEN_CNTL);    switch (Mode)    {        case SCREEN_SAVER_OFF:        case SCREEN_SAVER_FORCER:            outr(CRTC_GEN_CNTL, crtc_gen_cntl & ~CRTC_DISPLAY_DIS);            break;        case SCREEN_SAVER_ON:        case SCREEN_SAVER_CYCLE:            outr(CRTC_GEN_CNTL, crtc_gen_cntl | CRTC_DISPLAY_DIS);            break;        default:            break;    }}/* * ATIMach64SetDPMSMode -- * * This function sets a Mach64's VESA Display Power Management Signaling mode. */voidATIMach64SetDPMSMode(    ScrnInfoPtr pScreenInfo,    ATIPtr      pATI,    int         DPMSMode){    CARD32 crtc_gen_cntl =        inr(CRTC_GEN_CNTL) & ~(CRTC_HSYNC_DIS | CRTC_VSYNC_DIS);    switch (DPMSMode)    {        case DPMSModeOn:        /* HSync on, VSync on */            break;        case DPMSModeStandby:   /* HSync off, VSync on */            crtc_gen_cntl |= CRTC_HSYNC_DIS;            break;        case DPMSModeSuspend:   /* HSync on, VSync off */            crtc_gen_cntl |= CRTC_VSYNC_DIS;            break;        case DPMSModeOff:       /* HSync off, VSync off */            crtc_gen_cntl |= CRTC_HSYNC_DIS | CRTC_VSYNC_DIS;            break;        default:                /* Muffle compiler */            return;    }#ifdef XF86DRI_DEVEL    /* XAA Sync requires the DRM lock if DRI enabled */    ATIDRILock(pScreenInfo);#endif /* XF86DRI_DEVEL */    ATIMach64Sync(pScreenInfo);    outr(CRTC_GEN_CNTL, crtc_gen_cntl);    if (pATI->OptionPanelDisplay && (pATI->LCDPanelID >= 0))    {        CARD32 lcd_index = 0;        /*         * ATI's BIOS simply turns the panel on and off, so do the same by         * default, but keep the previous behaviour around for reference.         */        if (pATI->OptionDevel)        {            CARD32 power_management;            if (pATI->Chip == ATI_CHIP_264LT)            {                power_management = inr(POWER_MANAGEMENT);            }            else /* if ((pATI->Chip == ATI_CHIP_264LTPRO) ||                        (pATI->Chip == ATI_CHIP_264XL) ||                        (pATI->Chip == ATI_CHIP_MOBILITY)) */            {                lcd_index = inr(LCD_INDEX);                power_management = ATIMach64GetLCDReg(LCD_POWER_MANAGEMENT);            }            power_management &= ~(STANDBY_NOW | SUSPEND_NOW);            switch (DPMSMode)            {                case DPMSModeOn:                    break;                case DPMSModeStandby:                    power_management |= STANDBY_NOW;                    break;                case DPMSModeSuspend:                    power_management |= SUSPEND_NOW;                    break;                case DPMSModeOff:                    power_management |= STANDBY_NOW | SUSPEND_NOW;  /* ? */                    break;                default:        /* Muffle compiler */                    return;            }            if (pATI->Chip == ATI_CHIP_264LT)            {                outr(POWER_MANAGEMENT, power_management);            }            else /* if ((pATI->Chip == ATI_CHIP_264LTPRO) ||                        (pATI->Chip == ATI_CHIP_264XL) ||                        (pATI->Chip == ATI_CHIP_MOBILITY)) */            {                ATIMach64PutLCDReg(LCD_POWER_MANAGEMENT, power_management);                outr(LCD_INDEX, lcd_index);            }        }        else        {            CARD32 lcd_gen_ctrl;            if (pATI->Chip == ATI_CHIP_264LT)            {                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);                lcd_gen_ctrl = ATIMach64GetLCDReg(LCD_GEN_CNTL);            }            if (DPMSMode == DPMSModeOn)                lcd_gen_ctrl |= LCD_ON;            else                lcd_gen_ctrl &= ~LCD_ON;            if (pATI->Chip == ATI_CHIP_264LT)                outr(LCD_GEN_CTRL, lcd_gen_ctrl);            else /* if ((pATI->Chip == ATI_CHIP_264LTPRO) ||                        (pATI->Chip == ATI_CHIP_264XL) ||                        (pATI->Chip == ATI_CHIP_MOBILITY)) */            {                ATIMach64PutLCDReg(LCD_GEN_CNTL, lcd_gen_ctrl);                outr(LCD_INDEX, lcd_index);            }        }    }#ifdef XF86DRI_DEVEL    ATIDRIUnlock(pScreenInfo);#endif /* XF86DRI_DEVEL */}

⌨️ 快捷键说明

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