📄 s3v_dri.h
字号:
/* * 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
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -