📄 trident_context.h
字号:
/* * Copyright 2002 by Alan Hourihane, Sychdyn, North Wales, UK. * * Permission to use, copy, modify, distribute, and sell this software and its * documentation for any purpose is hereby granted without fee, provided that * the above copyright notice appear in all copies and that both that * copyright notice and this permission notice appear in supporting * documentation, and that the name of Alan Hourihane not be used in * advertising or publicity pertaining to distribution of the software without * specific, written prior permission. Alan Hourihane makes no representations * about the suitability of this software for any purpose. It is provided * "as is" without express or implied warranty. * * ALAN HOURIHANE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO * EVENT SHALL ALAN HOURIHANE BE LIABLE FOR ANY SPECIAL, INDIRECT OR * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR * PERFORMANCE OF THIS SOFTWARE. * * Authors: Alan Hourihane, <alanh@fairlite.demon.co.uk> * * Trident CyberBladeXP driver. * */#ifndef _TRIDENT_CONTEXT_H_#define _TRIDENT_CONTEXT_H_#include "dri_util.h"#include "macros.h"#include "mtypes.h"#include "drm.h"#include "mm.h"#define SUBPIXEL_X (0.0F)#define SUBPIXEL_Y (0.125F)#define _TRIDENT_NEW_VERTEX (_NEW_TEXTURE | \ _DD_NEW_TRI_UNFILLED | \ _DD_NEW_TRI_LIGHT_TWOSIDE)#define TRIDENT_FALLBACK_TEXTURE 0x01#define TRIDENT_FALLBACK_DRAW_BUFFER 0x02#define TRIDENT_NEW_CLIP 0x01#define TRIDENT_UPLOAD_COMMAND_D 0x00000001#define TRIDENT_UPLOAD_CONTEXT 0x04000000#define TRIDENT_UPLOAD_CLIPRECTS 0x80000000#define TAG(x) trident##x#include "tnl_dd/t_dd_vertex.h"#undef TAG/* these require that base be dword-aligned */static INLINE void MMIO_OUT32(unsigned char *base, unsigned int offset, unsigned int val){ unsigned int *addr = (unsigned int *)(base + offset); *addr = val;}static INLINE unsigned int MMIO_IN32(unsigned char *base, unsigned int offset){ unsigned int *addr = (unsigned int *)(base + offset); return *addr;}#define MMIO_OUT8(base, offset, val) *((base) + (offset)) = (val)#define MMIO_IN8(base, offset) *((base) + (offset))struct trident_context;typedef struct trident_context tridentContextRec;typedef struct trident_context *tridentContextPtr;typedef void (*trident_quad_func)( tridentContextPtr, const tridentVertex *, const tridentVertex *, const tridentVertex *, const tridentVertex * );typedef void (*trident_tri_func)( tridentContextPtr, const tridentVertex *, const tridentVertex *, const tridentVertex * );typedef void (*trident_line_func)( tridentContextPtr, const tridentVertex *, const tridentVertex * );typedef void (*trident_point_func)( tridentContextPtr, const tridentVertex * );typedef struct { drm_handle_t handle; /* Handle to the DRM region */ drmSize size; /* Size of the DRM region */ unsigned char *map; /* Mapping of the DRM region */} tridentRegionRec, *tridentRegionPtr;typedef struct { __DRIscreenPrivate *driScreen; /* Back pointer to DRI screen */ drmBufMapPtr buffers; unsigned int frontOffset; unsigned int frontPitch; unsigned int backOffset; unsigned int backPitch; unsigned int depthOffset; unsigned int depthPitch; unsigned int width; unsigned int height; unsigned int cpp;#if 0 unsigned int sarea_priv_offset;#endif tridentRegionRec mmio;} tridentScreenRec, *tridentScreenPtr;/** * tridentRenderbuffer, derived from Mesa's gl_renderbuffer */typedef struct { struct gl_renderbuffer Base; /* XXX per-window info should go here */ int foo, bar;} tridentRenderbuffer;struct trident_context { GLcontext *glCtx; /* Mesa context */ __DRIcontextPrivate *driContext; __DRIscreenPrivate *driScreen; __DRIdrawablePrivate *driDrawable; GLuint new_gl_state; GLuint new_state; GLuint dirty;#if 0 drm_trident_sarea_t *sarea; #endif /* Temporaries for translating away float colors: */ struct gl_client_array UbyteColor; struct gl_client_array UbyteSecondaryColor; /* Mirrors of some DRI state */ int lastStamp; /* mirror driDrawable->lastStamp */ drm_context_t hHWContext; drmLock *driHwLock; int driFd; tridentScreenPtr tridentScreen; /* Screen private DRI data */ /* Visual, drawable, cliprect and scissor information */ GLenum DrawBuffer; GLint drawOffset, drawPitch; GLint drawX, drawY; /* origin of drawable in draw buffer */ GLint readOffset, readPitch; GLuint numClipRects; /* Cliprects for the draw buffer */ drm_clip_rect_t *pClipRects; GLint scissor; drm_clip_rect_t ScissorRect; /* Current software scissor */ GLuint Fallback; GLuint RenderIndex; GLuint SetupNewInputs; GLuint SetupIndex; GLfloat hw_viewport[16]; GLfloat depth_scale; GLuint vertex_format; GLuint vertex_size; GLuint vertex_stride_shift; GLubyte *verts; GLint tmu_source[2]; GLuint hw_primitive; GLenum render_primitive; trident_point_func draw_point; trident_line_func draw_line; trident_tri_func draw_tri; trident_quad_func draw_quad;#if 0 gammaTextureObjectPtr CurrentTexObj[2]; struct gamma_texture_object_t TexObjList; struct gamma_texture_object_t SwappedOut; GLenum TexEnvImageFmt[2]; struct mem_block *texHeap; int lastSwap; int texAge; int ctxAge; int dirtyAge; int lastStamp;#endif /* Chip state */ int commandD; /* Context State */ int ClearColor;};void tridentDDInitExtensions( GLcontext *ctx );void tridentDDInitDriverFuncs( GLcontext *ctx );void tridentDDInitSpanFuncs( GLcontext *ctx );void tridentDDInitState( tridentContextPtr tmesa );void tridentInitHW( tridentContextPtr tmesa );void tridentDDInitStateFuncs( GLcontext *ctx );void tridentDDInitTextureFuncs( GLcontext *ctx );void tridentDDInitTriFuncs( GLcontext *ctx );extern void tridentBuildVertices( GLcontext *ctx, GLuint start, GLuint count, GLuint newinputs );extern void tridentInitVB( GLcontext *ctx );extern void tridentCopyBuffer( const __DRIdrawablePrivate *dPriv );extern void tridentFallback( tridentContextPtr tmesa, GLuint bit, GLboolean mode );extern void tridentCheckTexSizes( GLcontext *ctx );extern void tridentChooseVertexState( GLcontext *ctx );extern void tridentDDUpdateHWState( GLcontext *ctx );extern void tridentUploadHwStateLocked( tridentContextPtr tmesa );#define TRIDENT_CONTEXT(ctx) ((tridentContextPtr)(ctx->DriverCtx))#endif /* _TRIDENT_CONTEXT_H_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -