summaryrefslogtreecommitdiff
path: root/src/mesa/drivers/dri/s3v/s3v_dri.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/mesa/drivers/dri/s3v/s3v_dri.h')
-rw-r--r--src/mesa/drivers/dri/s3v/s3v_dri.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/src/mesa/drivers/dri/s3v/s3v_dri.h b/src/mesa/drivers/dri/s3v/s3v_dri.h
new file mode 100644
index 0000000000..339c579f7f
--- /dev/null
+++ b/src/mesa/drivers/dri/s3v/s3v_dri.h
@@ -0,0 +1,143 @@
+/*
+ * Author: Max Lingua <sunmax@libero.it>
+ */
+
+#ifndef _S3V_DRI
+#define _S3V_DRI
+
+#include "s3v_common.h"
+
+#define S3V_MAX_DRAWABLES (S3V_DMA_BUF_NR/2) /* 32 */ /* 256 */ /* FIXME */
+
+typedef struct
+{
+ int deviceID;
+ int width;
+ int height;
+ int mem;
+ int cpp;
+ int bitsPerPixel;
+
+ int fbOffset;
+ int fbStride;
+
+ int logTextureGranularity;
+ int textureOffset;
+
+ drm_handle_t regs;
+ drmSize regsSize;
+
+ unsigned int sarea_priv_offset;
+/*
+ drmAddress regsMap;
+
+ drmSize textureSize;
+ drm_handle_t textures;
+*/
+
+#if 0
+ drm_handle_t agp_buffers;
+ drmSize agp_buf_size;
+#endif
+
+/*
+ drmBufMapPtr drmBufs;
+ int irq;
+ unsigned int sarea_priv_offset;
+*/
+
+/* FIXME: cleanup ! */
+
+ drmSize registerSize; /* == S3V_MMIO_REGSIZE */
+ drm_handle_t registerHandle;
+
+ drmSize pciSize;
+ drm_handle_t pciMemHandle;
+
+ drmSize frontSize; /* == videoRambytes */
+/* drm_handle_t frontHandle; */
+ unsigned long frontOffset; /* == fbOffset */
+ int frontPitch;
+/* unsigned char *front; */
+
+ unsigned int bufferSize; /* size of depth/back buffer */
+
+ drmSize backSize;
+/* drm_handle_t backHandle; */
+ unsigned long backOffset;
+ int backPitch;
+/* unsigned char *back; */
+
+ drmSize depthSize;
+/* drm_handle_t depthHandle; */
+ unsigned long depthOffset;
+ int depthPitch;
+/* unsigned char *depth; */
+
+ drmSize texSize;
+/* drm_handle_t texHandle; */
+ unsigned long texOffset;
+ int texPitch;
+/* unsigned char *tex; */
+
+ drmSize dmaBufSize; /* Size of buffers (in bytes) */
+ drm_handle_t dmaBufHandle; /* Handle from drmAddMap */
+ unsigned long dmaBufOffset; /* Offset/Start */
+ int dmaBufPitch; /* Pitch */
+ unsigned char *dmaBuf; /* Map */
+ int bufNumBufs; /* Number of buffers */
+ drmBufMapPtr buffers; /* Buffer map */
+
+} S3VDRIRec, *S3VDRIPtr;
+
+/* WARNING: Do not change the SAREA structure without changing the kernel
+ * as well */
+
+typedef struct {
+ unsigned char next, prev; /* indices to form a circular LRU */
+ unsigned char in_use; /* owned by a client, or free? */
+ int age; /* tracked by clients to update local LRU's */
+} S3VTexRegionRec, *S3VTexRegionPtr;
+
+typedef struct {
+ unsigned int nbox;
+ drm_clip_rect_t boxes[S3V_NR_SAREA_CLIPRECTS];
+
+ /* Maintain an LRU of contiguous regions of texture space. If
+ * you think you own a region of texture memory, and it has an
+ * age different to the one you set, then you are mistaken and
+ * it has been stolen by another client. If global texAge
+ * hasn't changed, there is no need to walk the list.
+ *
+ * These regions can be used as a proxy for the fine-grained
+ * texture information of other clients - by maintaining them
+ * in the same lru which is used to age their own textures,
+ * clients have an approximate lru for the whole of global
+ * texture space, and can make informed decisions as to which
+ * areas to kick out. There is no need to choose whether to
+ * kick out your own texture or someone else's - simply eject
+ * them all in LRU order.
+ */
+ S3VTexRegionRec texList[S3V_NR_TEX_REGIONS+1]; /* Last elt is sentinal */
+
+ int texAge; /* last time texture was uploaded */
+
+ int last_enqueue; /* last time a buffer was enqueued */
+ int last_dispatch; /* age of the most recently dispatched buffer */
+ int last_quiescent; /* */
+
+ int ctxOwner; /* last context to upload state */
+} S3VSAREARec, *S3VSAREAPtr;
+
+typedef struct {
+ /* Nothing here yet */
+ int dummy;
+} S3VConfigPrivRec, *S3VConfigPrivPtr;
+
+typedef struct {
+ /* Nothing here yet */
+ int dummy;
+} S3VDRIContextRec, *S3VDRIContextPtr;
+
+
+#endif