via_driver.h revision 03bd066f
17e6fb56fSmrg/* 27e6fb56fSmrg * Copyright 2004-2005 The Unichrome Project [unichrome.sf.net] 37e6fb56fSmrg * Copyright 1998-2003 VIA Technologies, Inc. All Rights Reserved. 47e6fb56fSmrg * Copyright 2001-2003 S3 Graphics, Inc. All Rights Reserved. 57e6fb56fSmrg * 67e6fb56fSmrg * Permission is hereby granted, free of charge, to any person obtaining a 77e6fb56fSmrg * copy of this software and associated documentation files (the "Software"), 87e6fb56fSmrg * to deal in the Software without restriction, including without limitation 97e6fb56fSmrg * the rights to use, copy, modify, merge, publish, distribute, sub license, 107e6fb56fSmrg * and/or sell copies of the Software, and to permit persons to whom the 117e6fb56fSmrg * Software is furnished to do so, subject to the following conditions: 127e6fb56fSmrg * 137e6fb56fSmrg * The above copyright notice and this permission notice (including the 147e6fb56fSmrg * next paragraph) shall be included in all copies or substantial portions 157e6fb56fSmrg * of the Software. 167e6fb56fSmrg * 177e6fb56fSmrg * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 187e6fb56fSmrg * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 197e6fb56fSmrg * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL 207e6fb56fSmrg * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 217e6fb56fSmrg * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 227e6fb56fSmrg * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 237e6fb56fSmrg * DEALINGS IN THE SOFTWARE. 247e6fb56fSmrg */ 257e6fb56fSmrg 267e6fb56fSmrg#ifndef _VIA_DRIVER_H_ 277e6fb56fSmrg#define _VIA_DRIVER_H_ 1 287e6fb56fSmrg 298aedb4f6Smrg//#define VIA_DEBUG_COMPOSITE 1 307e6fb56fSmrg#define HAVE_DEBUG 1 317e6fb56fSmrg 327e6fb56fSmrg#ifdef HAVE_DEBUG 337e6fb56fSmrg#define DEBUG(x) x 347e6fb56fSmrg#else 357e6fb56fSmrg#define DEBUG(x) 367e6fb56fSmrg#endif 377e6fb56fSmrg 387e6fb56fSmrg#include "vgaHW.h" 397e6fb56fSmrg#include "xf86.h" 407e6fb56fSmrg 418aedb4f6Smrg#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 427e6fb56fSmrg#include "xf86Resources.h" 437e6fb56fSmrg#endif 447e6fb56fSmrg 457e6fb56fSmrg#include "xf86Pci.h" 467e6fb56fSmrg#include "xf86_OSproc.h" 477e6fb56fSmrg#include "compiler.h" 487e6fb56fSmrg#include "xf86Cursor.h" 497e6fb56fSmrg#include "mipointer.h" 507e6fb56fSmrg#include "micmap.h" 517e6fb56fSmrg#include "fourcc.h" 527e6fb56fSmrg#include "fb.h" 537e6fb56fSmrg 548aedb4f6Smrg#include "xf86Crtc.h" 5503bd066fSmrg#include "xf86fbman.h" 568aedb4f6Smrg#include "xf86RandR12.h" 577e6fb56fSmrg#include "xf86cmap.h" 587e6fb56fSmrg 598aedb4f6Smrg#ifdef HAVE_DRI 607e6fb56fSmrg#define _XF86DRI_SERVER_ 618aedb4f6Smrg#include "xf86dri.h" 627e6fb56fSmrg#include "sarea.h" 637e6fb56fSmrg#include "dri.h" 648aedb4f6Smrg#include "drm_fourcc.h" 657e6fb56fSmrg#include "GL/glxint.h" 667e6fb56fSmrg#include "via_dri.h" 678aedb4f6Smrg#include "via_drmclient.h" 688aedb4f6Smrg#include "via_drm.h" 697e6fb56fSmrg#endif 707e6fb56fSmrg#include "exa.h" 718aedb4f6Smrg#include "via_memmgr.h" 728aedb4f6Smrg 738aedb4f6Smrg#include "via_regs.h" 748aedb4f6Smrg#include "via_kms.h" 758aedb4f6Smrg#include "via_ums.h" 768aedb4f6Smrg#include "via_dmabuffer.h" 778aedb4f6Smrg#include "via_3d.h" 788aedb4f6Smrg#include "via_xv.h" 798aedb4f6Smrg#include "via_xv_overlay.h" 808aedb4f6Smrg#include "via_eng_regs.h" 818aedb4f6Smrg 828aedb4f6Smrg#ifdef HAVE_PCIACCESS 838aedb4f6Smrg#include <pciaccess.h> 848aedb4f6Smrg#else 858aedb4f6Smrg#include "xf86PciInfo.h" 868aedb4f6Smrg#endif 878aedb4f6Smrg#include <errno.h> 888aedb4f6Smrg 8944802259Smrg#include "via_vt1632.h" 9044802259Smrg 918aedb4f6Smrg#include "compat-api.h" 927e6fb56fSmrg#define VIA_AGP_UPL_SIZE (1024*128) 937e6fb56fSmrg#define VIA_DMA_DL_SIZE (1024*128) 947e6fb56fSmrg#define VIA_SCRATCH_SIZE (4*1024*1024) 957e6fb56fSmrg 967e6fb56fSmrg/* 977e6fb56fSmrg * Pixmap sizes below which we don't try to do hw accel. 987e6fb56fSmrg */ 997e6fb56fSmrg 1007e6fb56fSmrg#define VIA_MIN_COMPOSITE 400 1017e6fb56fSmrg#define VIA_MIN_UPLOAD 4000 1027e6fb56fSmrg#define VIA_MIN_TEX_UPLOAD 200 1037e6fb56fSmrg#define VIA_MIN_DOWNLOAD 200 1047e6fb56fSmrg 1057e6fb56fSmrg#define AGP_PAGE_SIZE 4096 1067e6fb56fSmrg#define AGP_PAGES 8192 1077e6fb56fSmrg#define AGP_SIZE (AGP_PAGE_SIZE * AGP_PAGES) 1087e6fb56fSmrg 1097e6fb56fSmrg#define DRIVER_NAME "openchrome" 1108aedb4f6Smrg#define VIA_VERSION ((VIA_MAJOR_VERSION << 24) | (VIA_MINOR_VERSION << 16) | VIA_PATCHLEVEL) 1117e6fb56fSmrg 1128aedb4f6Smrg#define VIA_VQ_SIZE (256 * 1024) 1137e6fb56fSmrg 1148aedb4f6Smrg#if GET_ABI_MAJOR(ABI_VIDEODRV_VERSION) < 6 1157e6fb56fSmrg#define VIA_RES_SHARED RES_SHARED_VGA 1167e6fb56fSmrg#define VIA_RES_UNDEF RES_UNDEFINED 1177e6fb56fSmrg#else 1187e6fb56fSmrg#define VIA_RES_SHARED NULL 1197e6fb56fSmrg#define VIA_RES_UNDEF NULL 1207e6fb56fSmrg#endif 1217e6fb56fSmrg 1228aedb4f6Smrg/* Video Engines */ 1238aedb4f6Smrg#define VIDEO_ENGINE_UNK 0 /* Unknown video engine */ 1248aedb4f6Smrg#define VIDEO_ENGINE_CLE 1 /* CLE First generation video engine */ 1258aedb4f6Smrg#define VIDEO_ENGINE_CME 2 /* CME Second generation video engine */ 1268aedb4f6Smrg 1278aedb4f6Smrgstatic int gVIAEntityIndex = -1; 1288aedb4f6Smrg 1297e6fb56fSmrgtypedef struct { 1307e6fb56fSmrg CARD8 SR08, SR0A, SR0F; 1317e6fb56fSmrg 13203bd066fSmrg /* Extended Sequencer Registers */ 13303bd066fSmrg CARD8 SR10, SR11, SR12, SR13, SR14, SR15, SR16, SR17; 13403bd066fSmrg CARD8 SR18, SR19, SR1A, SR1B, SR1C, SR1D, SR1E, SR1F; 13503bd066fSmrg CARD8 SR20, SR21, SR22, SR23, SR24, SR25, SR26, SR27; 13603bd066fSmrg CARD8 SR28, SR29, SR2A, SR2B, SR2C, SR2D, SR2E, SR2F; 13703bd066fSmrg CARD8 SR30, SR31, SR32, SR33, SR34; 13803bd066fSmrg CARD8 SR40, SR41, SR42, SR43, SR44, SR45, SR46, SR47; 13903bd066fSmrg CARD8 SR48, SR49, SR4A, SR4B, SR4C, SR4D, SR4E, SR4F; 1407e6fb56fSmrg 14103bd066fSmrg /* CRTC Registers */ 1428aedb4f6Smrg CARD8 CR0C, CR0D; 14303bd066fSmrg CARD8 CR13; 14403bd066fSmrg 14503bd066fSmrg /* IGA1 Registers */ 14603bd066fSmrg CARD8 CR30, CR31, CR32, CR33, CR34, CR35, CR36, CR37; 14703bd066fSmrg CARD8 CR38, CR39, CR3A, CR3B, CR3C, CR3D, CR3E, CR3F; 14803bd066fSmrg CARD8 CR40, CR41, CR42, CR43, CR44, CR45, CR46, CR47; 14903bd066fSmrg CARD8 CR48; 15003bd066fSmrg 15103bd066fSmrg /* IGA2 Registers */ 15203bd066fSmrg CARD8 EXCR[0xFD - 0x50 + 1]; 15303bd066fSmrg 1547e6fb56fSmrg} VIARegRec, *VIARegPtr; 1557e6fb56fSmrg 1567e6fb56fSmrg/* 1578aedb4f6Smrg * variables that need to be shared among different screens. 1587e6fb56fSmrg */ 1597e6fb56fSmrgtypedef struct { 1607e6fb56fSmrg Bool b3DRegsInitialized; 1617e6fb56fSmrg} ViaSharedRec, *ViaSharedPtr; 1627e6fb56fSmrg 1638aedb4f6Smrgenum dri_type { 1648aedb4f6Smrg DRI_NONE, 1658aedb4f6Smrg DRI_1, 1668aedb4f6Smrg DRI_2 1678aedb4f6Smrg}; 1688aedb4f6Smrg 1698aedb4f6Smrg#ifdef HAVE_DRI 1707e6fb56fSmrg 1717e6fb56fSmrg#define VIA_XVMC_MAX_BUFFERS 2 1727e6fb56fSmrg#define VIA_XVMC_MAX_CONTEXTS 4 1737e6fb56fSmrg#define VIA_XVMC_MAX_SURFACES 20 1747e6fb56fSmrg 1757e6fb56fSmrgtypedef struct { 1768aedb4f6Smrg struct buffer_object *memory_ref; 1777e6fb56fSmrg unsigned long offsets[VIA_XVMC_MAX_BUFFERS]; 1787e6fb56fSmrg} ViaXvMCSurfacePriv; 1797e6fb56fSmrg 1807e6fb56fSmrgtypedef struct { 1817e6fb56fSmrg drm_context_t drmCtx; 1827e6fb56fSmrg} ViaXvMCContextPriv; 1837e6fb56fSmrg 1847e6fb56fSmrgtypedef struct { 1857e6fb56fSmrg XID contexts[VIA_XVMC_MAX_CONTEXTS]; 1867e6fb56fSmrg XID surfaces[VIA_XVMC_MAX_SURFACES]; 1877e6fb56fSmrg ViaXvMCSurfacePriv *sPrivs[VIA_XVMC_MAX_SURFACES]; 1887e6fb56fSmrg ViaXvMCContextPriv *cPrivs[VIA_XVMC_MAX_CONTEXTS]; 1897e6fb56fSmrg int nContexts,nSurfaces; 1907e6fb56fSmrg drm_handle_t mmioBase,fbBase,sAreaBase; 1917e6fb56fSmrg unsigned sAreaSize; 1927e6fb56fSmrg drmAddress sAreaAddr; 1937e6fb56fSmrg unsigned activePorts; 1947e6fb56fSmrg}ViaXvMC, *ViaXvMCPtr; 1957e6fb56fSmrg 1967e6fb56fSmrg#endif 1977e6fb56fSmrg 1987e6fb56fSmrgtypedef struct _twodContext { 1997e6fb56fSmrg CARD32 mode; 2007e6fb56fSmrg CARD32 cmd; 2017e6fb56fSmrg CARD32 fgColor; 2027e6fb56fSmrg CARD32 bgColor; 2037e6fb56fSmrg CARD32 pattern0; 2047e6fb56fSmrg CARD32 pattern1; 2057e6fb56fSmrg CARD32 patternAddr; 2067e6fb56fSmrg CARD32 keyControl; 2077e6fb56fSmrg unsigned srcOffset; 2087e6fb56fSmrg unsigned srcPitch; 2097e6fb56fSmrg unsigned Bpp; 2107e6fb56fSmrg unsigned bytesPPShift; 2117e6fb56fSmrg Bool clipping; 2127e6fb56fSmrg Bool dashed; 2137e6fb56fSmrg int clipX1; 2147e6fb56fSmrg int clipX2; 2157e6fb56fSmrg int clipY1; 2167e6fb56fSmrg int clipY2; 2177e6fb56fSmrg} ViaTwodContext; 2187e6fb56fSmrg 2197e6fb56fSmrgtypedef struct _VIA { 2207e6fb56fSmrg VIARegRec SavedReg; 2217e6fb56fSmrg int Bpp, Bpl; 2227e6fb56fSmrg 2238aedb4f6Smrg Bool KMS; 2247e6fb56fSmrg Bool FirstInit; 2257e6fb56fSmrg unsigned long videoRambytes; 2267e6fb56fSmrg int FBFreeStart; 2277e6fb56fSmrg int FBFreeEnd; 2287e6fb56fSmrg int driSize; 2297e6fb56fSmrg int maxDriSize; 2308aedb4f6Smrg struct buffer_object *vq_bo; 2317e6fb56fSmrg int VQStart; 2327e6fb56fSmrg int VQEnd; 2337e6fb56fSmrg 2347e6fb56fSmrg /* These are physical addresses. */ 2357e6fb56fSmrg unsigned long FrameBufferBase; 2367e6fb56fSmrg unsigned long MmioBase; 2377e6fb56fSmrg 2387e6fb56fSmrg /* These are linear addresses. */ 2397e6fb56fSmrg unsigned char* MapBase; 2407e6fb56fSmrg unsigned char* MpegMapBase; 2417e6fb56fSmrg unsigned char* BltBase; 2427e6fb56fSmrg unsigned char* MapBaseDense; 2437e6fb56fSmrg unsigned char* FBBase; 2447e6fb56fSmrg CARD8 MemClk; 2457e6fb56fSmrg 2467e6fb56fSmrg /* Here are all the Options */ 2477e6fb56fSmrg Bool VQEnable; 2487e6fb56fSmrg Bool NoAccel; 2497e6fb56fSmrg Bool shadowFB; 2507e6fb56fSmrg Rotation rotate; 2517e6fb56fSmrg int agpMem; 2527e6fb56fSmrg 2538aedb4f6Smrg CreateScreenResourcesProcPtr CreateScreenResources; 2547e6fb56fSmrg CloseScreenProcPtr CloseScreen; 2558aedb4f6Smrg#ifdef HAVE_PCIACCESS 2568aedb4f6Smrg struct pci_device *PciInfo; 2577e6fb56fSmrg#else 2588aedb4f6Smrg pciVideoPtr PciInfo; 2597e6fb56fSmrg PCITAG PciTag; 2607e6fb56fSmrg#endif 2617e6fb56fSmrg int Chipset; 2627e6fb56fSmrg int ChipId; 2637e6fb56fSmrg int ChipRev; 2647e6fb56fSmrg int EntityIndex; 2657e6fb56fSmrg 2667e6fb56fSmrg /* Support for shadowFB and rotation */ 2677e6fb56fSmrg unsigned char* ShadowPtr; 2687e6fb56fSmrg 2698aedb4f6Smrg /* Support for EXA acceleration */ 2707e6fb56fSmrg ViaTwodContext td; 2717e6fb56fSmrg Via3DState v3d; 2727e6fb56fSmrg Via3DState *lastToUpload; 2737e6fb56fSmrg ViaCommandBuffer cb; 2747e6fb56fSmrg int accelMarker; 2758aedb4f6Smrg struct buffer_object *exa_sync_bo; 2768aedb4f6Smrg struct buffer_object *exaMem; 2777e6fb56fSmrg CARD32 markerOffset; 2788aedb4f6Smrg void *markerBuf; 2797e6fb56fSmrg CARD32 curMarker; 2807e6fb56fSmrg CARD32 lastMarkerRead; 2817e6fb56fSmrg Bool agpDMA; 2827e6fb56fSmrg Bool nPOT[VIA_NUM_TEXUNITS]; 2838aedb4f6Smrg const unsigned *HqvCmeRegs; 2847e6fb56fSmrg ExaDriverPtr exaDriverPtr; 2857e6fb56fSmrg ExaOffscreenArea *exa_scratch; 2867e6fb56fSmrg unsigned int exa_scratch_next; 2877e6fb56fSmrg Bool useEXA; 2887e6fb56fSmrg void *maskP; 2897e6fb56fSmrg CARD32 maskFormat; 2907e6fb56fSmrg Bool componentAlpha; 2917e6fb56fSmrg void *srcP; 2927e6fb56fSmrg CARD32 srcFormat; 2937e6fb56fSmrg unsigned scratchOffset; 2947e6fb56fSmrg int exaScratchSize; 2957e6fb56fSmrg char * scratchAddr; 2967e6fb56fSmrg Bool noComposite; 2978aedb4f6Smrg struct buffer_object *scratchBuffer; 2988aedb4f6Smrg#ifdef HAVE_DRI 2998aedb4f6Smrg struct buffer_object *texAGPBuffer; 3007e6fb56fSmrg char * dBounce; 3017e6fb56fSmrg#endif 3027e6fb56fSmrg 3037e6fb56fSmrg /* Rotation */ 3047e6fb56fSmrg Bool RandRRotation; 3057e6fb56fSmrg 3067e6fb56fSmrg /* BIOS Info Ptr */ 3077e6fb56fSmrg VIABIOSInfoPtr pBIOSInfo; 30844802259Smrg 30944802259Smrg /* OLPC XO-1.5 */ 31044802259Smrg Bool IsOLPCXO15; 3117e6fb56fSmrg 3127e6fb56fSmrg /* I2C & DDC */ 3138aedb4f6Smrg I2CBusPtr pI2CBus1; 3148aedb4f6Smrg I2CBusPtr pI2CBus2; 3157e6fb56fSmrg I2CBusPtr pI2CBus3; 3167e6fb56fSmrg 3177e6fb56fSmrg /* MHS */ 3187e6fb56fSmrg Bool IsSecondary; 3197e6fb56fSmrg Bool HasSecondary; 3207e6fb56fSmrg Bool SAMM; 3217e6fb56fSmrg 3228aedb4f6Smrg drmmode_rec drmmode; 3238aedb4f6Smrg enum dri_type directRenderingType; 3248aedb4f6Smrg#ifdef HAVE_DRI 3257e6fb56fSmrg Bool XvMCEnabled; 3268aedb4f6Smrg DRIInfoPtr pDRIInfo; 3278aedb4f6Smrg int numVisualConfigs; 3288aedb4f6Smrg __GLXvisualConfig* pVisualConfigs; 3298aedb4f6Smrg VIAConfigPrivPtr pVisualConfigsPriv; 3308aedb4f6Smrg drm_handle_t agpHandle; 3318aedb4f6Smrg drm_handle_t registerHandle; 3327e6fb56fSmrg drm_handle_t frameBufferHandle; 3338aedb4f6Smrg unsigned long agpAddr; 3347e6fb56fSmrg drmAddress agpMappedAddr; 3358aedb4f6Smrg unsigned int agpSize; 3368aedb4f6Smrg Bool IsPCI; 3377e6fb56fSmrg ViaXvMC xvmc; 3387e6fb56fSmrg int drmVerMajor; 3397e6fb56fSmrg int drmVerMinor; 3407e6fb56fSmrg int drmVerPL; 3418aedb4f6Smrg struct buffer_object *driOffScreenMem; 3427e6fb56fSmrg void * driOffScreenSave; 3437e6fb56fSmrg#endif 3448aedb4f6Smrg Bool DRIIrqEnable; 3457e6fb56fSmrg Bool agpEnable; 3467e6fb56fSmrg Bool dma2d; 3477e6fb56fSmrg Bool dmaXV; 3487e6fb56fSmrg 3497e6fb56fSmrg /* Video */ 3507e6fb56fSmrg int VideoEngine; 3518aedb4f6Smrg swovRec swov; 3527e6fb56fSmrg CARD32 VideoStatus; 3538aedb4f6Smrg VIAHWDiff HWDiff; 3548aedb4f6Smrg unsigned long dwV1, dwV3; 3558aedb4f6Smrg unsigned long dwFrameNum; 3567e6fb56fSmrg 3578aedb4f6Smrg CARD32* VidRegBuffer; /* Temporary buffer for video overlay registers. */ 3588aedb4f6Smrg unsigned long VidRegCursor; /* Write cursor for VidRegBuffer. */ 3597e6fb56fSmrg 3608aedb4f6Smrg unsigned long old_dwUseExtendedFIFO; 3618aedb4f6Smrg 3628aedb4f6Smrg ViaSharedPtr sharedData; 3637e6fb56fSmrg Bool useDmaBlit; 3647e6fb56fSmrg 3657e6fb56fSmrg void *displayMap; 3667e6fb56fSmrg CARD32 displayOffset; 3678aedb4f6Smrg 3688aedb4f6Smrg CARD8 I2CDevices; /* Option */ 3697e6fb56fSmrg 3707e6fb56fSmrg#ifdef HAVE_DEBUG 3717e6fb56fSmrg Bool disableXvBWCheck; 3727e6fb56fSmrg Bool DumpVGAROM; 3737e6fb56fSmrg Bool PrintVGARegs; 3747e6fb56fSmrg Bool PrintTVRegs; 3757e6fb56fSmrg Bool I2CScan; 3767e6fb56fSmrg#endif /* HAVE_DEBUG */ 3778aedb4f6Smrg 3788aedb4f6Smrg video_via_regs* VideoRegs; 3797e6fb56fSmrg} VIARec, *VIAPtr; 3807e6fb56fSmrg 3817e6fb56fSmrg#define VIAPTR(p) ((VIAPtr)((p)->driverPrivate)) 3827e6fb56fSmrg 3837e6fb56fSmrgtypedef struct 3847e6fb56fSmrg{ 3857e6fb56fSmrg Bool IsDRIEnabled; 3867e6fb56fSmrg 3877e6fb56fSmrg Bool HasSecondary; 3887e6fb56fSmrg Bool BypassSecondary; 3897e6fb56fSmrg /*These two registers are used to make sure the CRTC2 is 3908aedb4f6Smrg restored before CRTC_EXT, otherwise it could lead to blank screen.*/ 3917e6fb56fSmrg Bool IsSecondaryRestored; 3927e6fb56fSmrg Bool RestorePrimary; 3937e6fb56fSmrg 3947e6fb56fSmrg ScrnInfoPtr pSecondaryScrn; 3957e6fb56fSmrg ScrnInfoPtr pPrimaryScrn; 3967e6fb56fSmrg} VIAEntRec, *VIAEntPtr; 3977e6fb56fSmrg 39803bd066fSmrg 39903bd066fSmrg/* In via_display.c. */ 40003bd066fSmrgconst xf86CrtcFuncsRec iga1_crtc_funcs; 40103bd066fSmrgconst xf86CrtcFuncsRec iga2_crtc_funcs; 40203bd066fSmrg 4038aedb4f6Smrg/* In via_exa.c. */ 4048aedb4f6SmrgBool viaInitExa(ScreenPtr pScreen); 4058aedb4f6SmrgBool viaAccelSetMode(int bpp, ViaTwodContext * tdc); 4067e6fb56fSmrgvoid viaAccelSync(ScrnInfoPtr); 4077e6fb56fSmrgvoid viaExitAccel(ScreenPtr); 4087e6fb56fSmrgvoid viaFinishInitAccel(ScreenPtr); 4098aedb4f6SmrgBool viaOrder(CARD32 val, CARD32 * shift); 4108aedb4f6SmrgCARD32 viaBitExpandHelper(CARD32 pixel, CARD32 bits); 4118aedb4f6SmrgBool viaCheckUpload(ScrnInfoPtr pScrn, Via3DState * v3d); 4128aedb4f6Smrgvoid viaPixelARGB8888(unsigned format, void *pixelP, CARD32 * argb8888); 4138aedb4f6SmrgBool viaExpandablePixel(int format); 4148aedb4f6Smrgvoid viaAccelFillPixmap(ScrnInfoPtr, unsigned long, unsigned long, 4157e6fb56fSmrg int, int, int, int, int, unsigned long); 4168aedb4f6Smrgvoid viaAccelTextureBlit(ScrnInfoPtr, unsigned long, unsigned, unsigned, 4177e6fb56fSmrg unsigned, unsigned, unsigned, unsigned, 4187e6fb56fSmrg unsigned long, unsigned, unsigned, 4197e6fb56fSmrg unsigned, unsigned, int); 4208aedb4f6Smrg#ifdef VIA_DEBUG_COMPOSITE 4218aedb4f6Smrgvoid viaExaCompositePictDesc(PicturePtr pict, char *string, int n); 4228aedb4f6Smrgvoid viaExaPrintCompositeInfo(char *info, CARD8 op, PicturePtr pSrc, PicturePtr pMask, 4238aedb4f6Smrg PicturePtr pDst); 4248aedb4f6Smrg#endif 4257e6fb56fSmrg 4268aedb4f6Smrg/* In via_exa_h2.c */ 4278aedb4f6SmrgBool viaExaPrepareSolid_H2(PixmapPtr pPixmap, int alu, Pixel planeMask, 4288aedb4f6Smrg Pixel fg); 4298aedb4f6Smrgvoid viaExaSolid_H2(PixmapPtr pPixmap, int x1, int y1, int x2, int y2); 4308aedb4f6Smrgvoid viaExaDoneSolidCopy_H2(PixmapPtr pPixmap); 4318aedb4f6SmrgBool viaExaPrepareCopy_H2(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, 4328aedb4f6Smrg int xdir, int ydir, int alu, Pixel planeMask); 4338aedb4f6Smrgvoid viaExaCopy_H2(PixmapPtr pDstPixmap, int srcX, int srcY, int dstX, 4348aedb4f6Smrg int dstY, int width, int height); 4358aedb4f6SmrgBool viaExaCheckComposite_H2(int op, PicturePtr pSrcPicture, 4368aedb4f6Smrg PicturePtr pMaskPicture, PicturePtr pDstPicture); 4378aedb4f6SmrgBool viaExaPrepareComposite_H2(int op, PicturePtr pSrcPicture, 4388aedb4f6Smrg PicturePtr pMaskPicture, PicturePtr pDstPicture, 4398aedb4f6Smrg PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst); 4408aedb4f6Smrgvoid viaExaComposite_H2(PixmapPtr pDst, int srcX, int srcY, 4418aedb4f6Smrg int maskX, int maskY, int dstX, int dstY, 4428aedb4f6Smrg int width, int height); 4438aedb4f6Smrgint viaAccelMarkSync_H2(ScreenPtr); 4448aedb4f6Smrg 4458aedb4f6Smrg/* In via_exa_h6.c */ 4468aedb4f6SmrgBool viaExaPrepareSolid_H6(PixmapPtr pPixmap, int alu, Pixel planeMask, 4478aedb4f6Smrg Pixel fg); 4488aedb4f6Smrgvoid viaExaSolid_H6(PixmapPtr pPixmap, int x1, int y1, int x2, int y2); 4498aedb4f6Smrgvoid viaExaDoneSolidCopy_H6(PixmapPtr pPixmap); 4508aedb4f6SmrgBool viaExaPrepareCopy_H6(PixmapPtr pSrcPixmap, PixmapPtr pDstPixmap, 4518aedb4f6Smrg int xdir, int ydir, int alu, Pixel planeMask); 4528aedb4f6Smrgvoid viaExaCopy_H6(PixmapPtr pDstPixmap, int srcX, int srcY, int dstX, 4538aedb4f6Smrg int dstY, int width, int height); 4548aedb4f6SmrgBool viaExaCheckComposite_H6(int op, PicturePtr pSrcPicture, 4558aedb4f6Smrg PicturePtr pMaskPicture, PicturePtr pDstPicture); 4568aedb4f6SmrgBool viaExaPrepareComposite_H6(int op, PicturePtr pSrcPicture, 4578aedb4f6Smrg PicturePtr pMaskPicture, PicturePtr pDstPicture, 4588aedb4f6Smrg PixmapPtr pSrc, PixmapPtr pMask, PixmapPtr pDst); 4598aedb4f6Smrgvoid viaExaComposite_H6(PixmapPtr pDst, int srcX, int srcY, 4608aedb4f6Smrg int maskX, int maskY, int dstX, int dstY, 4618aedb4f6Smrg int width, int height); 4628aedb4f6Smrgint viaAccelMarkSync_H6(ScreenPtr); 4638aedb4f6Smrg 4648aedb4f6Smrg/* In via_xv.c */ 4658aedb4f6Smrgvoid viaInitVideo(ScreenPtr pScreen); 4668aedb4f6Smrgvoid viaExitVideo(ScrnInfoPtr pScrn); 4678aedb4f6Smrgvoid viaSaveVideo(ScrnInfoPtr pScrn); 4688aedb4f6Smrgvoid viaRestoreVideo(ScrnInfoPtr pScrn); 4698aedb4f6Smrgvoid viaSetColorSpace(VIAPtr pVia, int hue, int saturation, int brightness, int contrast, 4708aedb4f6Smrg Bool reset); 4717e6fb56fSmrg 4727e6fb56fSmrg 4738aedb4f6Smrg/* In via_xv.c */ 4747e6fb56fSmrgvoid viaInitVideo(ScreenPtr pScreen); 4757e6fb56fSmrgvoid viaExitVideo(ScrnInfoPtr pScrn); 4767e6fb56fSmrgvoid viaSaveVideo(ScrnInfoPtr pScrn); 4777e6fb56fSmrgvoid viaRestoreVideo(ScrnInfoPtr pScrn); 4787e6fb56fSmrgvoid viaSetColorSpace(VIAPtr pVia, int hue, int saturation, int brightness, int contrast, 4797e6fb56fSmrg Bool reset); 4807e6fb56fSmrgvoid VIAVidAdjustFrame(ScrnInfoPtr pScrn, int x, int y); 4817e6fb56fSmrg 4828aedb4f6Smrg/* In via_memcpy.c */ 4838aedb4f6Smrgtypedef void (*vidCopyFunc)(unsigned char *, const unsigned char *, 4848aedb4f6Smrg int, int, int, int); 4858aedb4f6Smrgextern vidCopyFunc viaVidCopyInit( char *copyType, ScreenPtr pScreen ); 4867e6fb56fSmrg 4877e6fb56fSmrg/* In via_xwmc.c */ 4887e6fb56fSmrg 4898aedb4f6Smrg#ifdef HAVE_DRI 4907e6fb56fSmrg/* Basic init and exit functions */ 4918aedb4f6Smrgvoid ViaInitXVMC(ScreenPtr pScreen); 4927e6fb56fSmrgvoid ViaCleanupXVMC(ScrnInfoPtr pScrn, XF86VideoAdaptorPtr *XvAdaptors, int XvAdaptorCount); 4937e6fb56fSmrgint viaXvMCInitXv(ScrnInfoPtr pScrn, XF86VideoAdaptorPtr XvAdapt); 4947e6fb56fSmrg 4957e6fb56fSmrg/* Returns the size of the fake Xv Image used as XvMC command buffer to the X server*/ 4967e6fb56fSmrgunsigned long viaXvMCPutImageSize(ScrnInfoPtr pScrn); 4977e6fb56fSmrg#endif 4987e6fb56fSmrg 4997e6fb56fSmrg/* via_i2c.c */ 5007e6fb56fSmrgvoid ViaI2CInit(ScrnInfoPtr pScrn); 5017e6fb56fSmrg 5028aedb4f6Smrg#ifdef HAVE_DRI 5038aedb4f6SmrgBool VIADRI1ScreenInit(ScreenPtr pScreen); 5047e6fb56fSmrgvoid VIADRICloseScreen(ScreenPtr pScreen); 5057e6fb56fSmrgBool VIADRIFinishScreenInit(ScreenPtr pScreen); 5067e6fb56fSmrgvoid VIADRIRingBufferCleanup(ScrnInfoPtr pScrn); 5077e6fb56fSmrgBool VIADRIRingBufferInit(ScrnInfoPtr pScrn); 5087e6fb56fSmrgvoid viaDRIOffscreenRestore(ScrnInfoPtr pScrn); 5097e6fb56fSmrgvoid viaDRIOffscreenSave(ScrnInfoPtr pScrn); 5108aedb4f6SmrgBool VIADRIBufferInit(ScrnInfoPtr pScrn); 5117e6fb56fSmrg 5128aedb4f6Smrg#endif /* HAVE_DRI */ 5137e6fb56fSmrg 5147024fa79Smrgint viaOffScreenLinear(struct buffer_object *obj, ScrnInfoPtr pScrn, unsigned long size); 51544802259Smrgvoid viaShowCursor(ScrnInfoPtr pScrn); 51644802259Smrgvoid viaHideCursor(ScrnInfoPtr pScrn); 51744802259SmrgBool viaHWCursorInit(ScreenPtr pScreen); 51844802259Smrgvoid ViaDisplaySetStreamOnCRT(ScrnInfoPtr pScrn, Bool primary); 519d89f4815Schristosvoid ViaDisplaySetStreamOnDFP(ScrnInfoPtr pScrn, Bool primary); 520d89f4815Schristos 5217e6fb56fSmrg#endif /* _VIA_DRIVER_H_ */ 522