summaryrefslogtreecommitdiff
path: root/src/via_driver.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/via_driver.h')
-rw-r--r--src/via_driver.h114
1 files changed, 84 insertions, 30 deletions
diff --git a/src/via_driver.h b/src/via_driver.h
index 84c8657..fc5a765 100644
--- a/src/via_driver.h
+++ b/src/via_driver.h
@@ -55,6 +55,8 @@
#include "via_bios.h"
#include "via_priv.h"
#include "via_swov.h"
+#include "via_dmabuffer.h"
+#include "via_3d.h"
#ifdef XF86DRI
#define _XF86DRI_SERVER_
@@ -70,12 +72,24 @@
#define PATCHLEVEL 33
#define VIA_VERSION ((VERSION_MAJOR<<24) | (VERSION_MINOR<<16) | PATCHLEVEL)
-#define VIA_MAX_ACCEL_X (2047)
-#define VIA_MAX_ACCEL_Y (2047)
-#define VIA_PIXMAP_CACHE_SIZE (4 * (VIA_MAX_ACCEL_X + 1) * (VIA_MAX_ACCEL_Y +1))
+#ifdef VIA_HAVE_EXA
+#include "exa.h"
+#define VIA_AGP_UPL_SIZE (1024*128)
+#define VIA_DMA_DL_SIZE (1024*128)
+#define VIA_SCRATCH_SIZE (2048*1024)
+
+ /*
+ * Pixmap sizes below which we don't try to do hw accel.
+ */
+
+#define VIA_MIN_COMPOSITE 1 /*400*/
+#define VIA_MIN_UPLOAD 4000
+#define VIA_MIN_TEX_UPLOAD 400
+#define VIA_MIN_DOWNLOAD 400
+#endif
+
#define VIA_CURSOR_SIZE (4 * 1024)
#define VIA_VQ_SIZE (256 * 1024)
-#define VIA_CBUFFERSIZE 512
typedef struct {
CARD8 SR08, SR0A, SR0F;
@@ -134,15 +148,25 @@ typedef struct {
typedef struct _twodContext {
CARD32 mode;
+ CARD32 cmd;
+ CARD32 fgColor;
+ CARD32 bgColor;
+ CARD32 pattern0;
+ CARD32 pattern1;
+ CARD32 patternAddr;
+ CARD32 keyControl;
+ unsigned srcOffset;
+ unsigned srcPitch;
+ unsigned Bpp;
+ unsigned bytesPPShift;
+ Bool clipping;
+ int clipX1;
+ int clipX2;
+ int clipY1;
+ int clipY2;
} ViaTwodContext;
typedef struct{
- unsigned curPos;
- CARD32 buffer[VIA_CBUFFERSIZE];
- int status;
-} ViaCBuffer;
-
-typedef struct{
/* textMode */
CARD8 *state, *pstate; /* SVGA state */
int statePage, stateSize, stateMode;
@@ -155,13 +179,13 @@ typedef struct _VIA {
VIARegRec SavedReg;
xf86CursorInfoPtr CursorInfoRec;
int Bpp, Bpl;
- unsigned PlaneMask;
Bool FirstInit;
unsigned long videoRambytes;
int videoRamKbytes;
int FBFreeStart;
int FBFreeEnd;
+ int driSize;
int CursorStart;
int VQStart;
int VQEnd;
@@ -179,11 +203,6 @@ typedef struct _VIA {
unsigned char* FBBase;
CARD8 MemClk;
- /* Private memory pool management */
- int SWOVUsed[MEM_BLOCKS]; /* Free map for SWOV pool */
- unsigned long SWOVPool; /* Base of SWOV pool */
- unsigned long SWOVSize; /* Size of SWOV blocks */
-
/* Here are all the Options */
Bool VQEnable;
Bool pci_burst;
@@ -212,16 +231,38 @@ typedef struct _VIA {
/* Support for XAA acceleration */
XAAInfoRecPtr AccelInfoRec;
- xRectangle Rect;
- CARD32 SavedCmd;
- CARD32 SavedFgColor;
- CARD32 SavedBgColor;
- CARD32 SavedPattern0;
- CARD32 SavedPattern1;
- CARD32 SavedPatternAddr;
- int justSetup;
ViaTwodContext td;
- ViaCBuffer cBuf;
+ Via3DState v3d;
+ Via3DState *lastToUpload;
+ ViaCommandBuffer cb;
+ int accelMarker;
+ CARD32 markerOffset;
+ CARD32 *markerBuf;
+ CARD32 curMarker;
+ CARD32 lastMarkerRead;
+ Bool agpDMA;
+#ifdef VIA_HAVE_EXA
+ ExaDriverPtr exaDriverPtr;
+ ExaOffscreenArea *exa_scratch;
+ unsigned int exa_scratch_next;
+ Bool useEXA;
+ void *maskP;
+ CARD32 maskFormat;
+ Bool componentAlpha;
+ void *srcP;
+ CARD32 srcFormat;
+ ExaOffscreenArea *scratchFBBuffer;
+ unsigned scratchOffset;
+ char * scratchAddr;
+ Bool noComposite;
+#ifdef XF86DRI
+ drm_via_mem_t scratchAGPBuffer;
+ drm_via_mem_t texAGPBuffer;
+ unsigned texOffset;
+ char * texAddr;
+ char * dBounce;
+#endif
+#endif
/* BIOS Info Ptr */
VIABIOSInfoPtr pBIOSInfo;
@@ -266,6 +307,10 @@ typedef struct _VIA {
Bool IsPCI;
Bool drixinerama;
ViaXvMC xvmc;
+ int drmVerMajor;
+ int drmVerMinor;
+ int drmVerPL;
+ VIAMem driOffScreenMem;
#endif
Bool DRIIrqEnable;
Bool agpEnable;
@@ -318,7 +363,7 @@ typedef struct
} VIAEntRec, *VIAEntPtr;
/* Prototypes. */
-#ifdef XF86DRI
+#if defined(XF86DRI) || defined(VIA_HAVE_EXA)
void VIAInitialize3DEngine(ScrnInfoPtr pScrn);
#endif
@@ -330,10 +375,19 @@ void ViaCursorStore(ScrnInfoPtr pScrn);
void ViaCursorRestore(ScrnInfoPtr pScrn);
/* In via_accel.c. */
-Bool VIAInitAccel(ScreenPtr);
-void VIAInitialize2DEngine(ScrnInfoPtr);
-void VIAAccelSync(ScrnInfoPtr);
-void ViaVQDisable(ScrnInfoPtr pScrn);
+Bool viaInitAccel(ScreenPtr);
+void viaInitialize2DEngine(ScrnInfoPtr);
+void viaAccelSync(ScrnInfoPtr);
+void viaDisableVQ(ScrnInfoPtr);
+void viaExitAccel(ScreenPtr);
+void viaAccelBlitRect(ScrnInfoPtr, int, int, int, int, int, int);
+void viaAccelFillRect(ScrnInfoPtr, int, int, int, int, unsigned long);
+void viaAccelSyncMarker(ScrnInfoPtr);
+void viaFinishInitAccel(ScreenPtr);
+void viaAccelWaitMarker(ScreenPtr, int);
+int viaAccelMarkSync(ScreenPtr);
+
+
/* In via_shadow.c */
void ViaShadowFBInit(ScrnInfoPtr pScrn, ScreenPtr pScreen);