1
0
Files
2022-09-29 17:59:04 +03:00

181 lines
5.5 KiB
C

#ifndef __GL_CRIMECHIP_H__
#define __GL_CRIMECHIP_H__
/*
** Copyright 1993, Silicon Graphics, Inc.
** All Rights Reserved.
**
** This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics, Inc.;
** the contents of this file may not be disclosed to third parties, copied or
** duplicated in any form, in whole or in part, without the prior written
** permission of Silicon Graphics, Inc.
**
** RESTRICTED RIGHTS LEGEND:
** Use, duplication or disclosure by the Government is subject to restrictions
** as set forth in subdivision (c)(1)(ii) of the Rights in Technical Data
** and Computer Software clause at DFARS 252.227-7013, and/or in similar or
** successor clauses in the FAR, DOD or NASA FAR Supplement. Unpublished -
** rights reserved under the Copyright Laws of the United States.
*/
/*
** This is the Crime Rendering Engine interface
**
** $Revision: 1.1 $
*/
#include "crimereg.h"
#ifdef EASY_TO_READ
typedef struct crimeregs {
CrmIntfBufReg Ib; /*page0*/
CrmTlbReg Tlb; /*page1*/
CrmBufModeReg BufMode; /*page2*/
CrmClipModeReg ClipMode;
CrmDrawModeReg DrawMode;
CrmClipRectReg ScrMask[5];
CrmClipRectReg Scissor;
CrmWinOffsetReg WinOffset;
CrmPrimitiveReg Primitive;
CrmVertexReg Vertex;
CrmStartSetupReg StartSetup;
CrmPixelXferReg PixelXfer;
CrmStippleReg Stipple;
CrmShadeReg Shade;
CrmTextureReg Texture;
CrmFogReg Fog;
CrmAntialiasReg Antialias;
CrmAlphaTestReg AlphaTest;
CrmBlendReg Blend;
CrmLogicOpReg LogicOp;
CrmColorMaskReg ColorMask;
CrmDepthReg Depth;
CrmStencilReg Stencil;
CrmPixPipeNullReg PixPipeNull;
CrmPixPipeFlushReg PixPipeFlush;
CrmMteReg Mte; /*page3*/
CrmStatusReg Status; /*page4*/
CrmSetStartPtrReg SetStartPtr;
} Crimeregs;
#endif
/*
** register aligned Crime chip.
*/
#define align(regName,r0,r1,regType) \
unsigned char __pad##regName [(r1) - (r0) - sizeof(regType)]
#define CRMDRAWREGS \
CrmBufModeReg BufMode; \
CrmClipModeReg ClipMode; align(ClipMode, \
CRM_CLIP_MODE_REG, \
CRM_DRAW_MODE_REG, \
CrmClipModeReg); \
CrmDrawModeReg DrawMode; align(DrawMode, \
CRM_DRAW_MODE_REG, \
CRM_SCRMASK0_REG, \
CrmDrawModeReg); \
CrmClipRectReg ScrMask[5]; \
CrmClipRectReg Scissor; \
CrmWinOffsetReg WinOffset; \
CrmPrimitiveReg Primitive; align(Primitive, \
CRM_PRIMITIVE_REG, \
CRM_VERTEX_X_XY0_REG, \
CrmPrimitiveReg); \
CrmVertexReg Vertex; \
CrmStartSetupReg StartSetup; align(StartSetup, \
CRM_START_SETUP_REG, \
CRM_PIXELXFER_SRC_ADDR_REG,\
CrmStartSetupReg); \
\
CrmPixelXferReg PixelXfer; align(PixelXfer, \
CRM_PIXELXFER_SRC_ADDR_REG,\
CRM_STIPPLE_MODE_REG, \
CrmPixelXferReg); \
CrmStippleReg Stipple; align(Stipple, \
CRM_STIPPLE_MODE_REG, \
CRM_SHADE_FGCOLOR_REG, \
CrmStippleReg); \
CrmShadeReg Shade; \
CrmTextureReg Texture; \
CrmFogReg Fog; \
CrmAntialiasReg Antialias; \
CrmAlphaTestReg AlphaTest; align(AlphaTest, \
CRM_ALPHATEST_REG, \
CRM_BLEND_CONSTCOLOR_REG, \
CrmAlphaTestReg); \
CrmBlendReg Blend; \
CrmLogicOpReg LogicOp; align(LogicOp, \
CRM_LOGICOP_REG, \
CRM_COLORMASK_REG, \
CrmLogicOpReg); \
CrmColorMaskReg ColorMask; align(ColorMask, \
CRM_COLORMASK_REG, \
CRM_DEPTH_FUNC_REG, \
CrmColorMaskReg); \
CrmDepthReg Depth; \
CrmStencilReg Stencil; align(Stencil, \
CRM_STENCIL_MODE_REG, \
CRM_PIXPIPE_NULL_REG, \
CrmStencilReg); \
CrmPixPipeNullReg PixPipeNull; align(PixPipeNull, \
CRM_PIXPIPE_NULL_REG, \
CRM_PIXPIPE_FLUSH_REG, \
CrmPixPipeNullReg); \
CrmPixPipeFlushReg PixPipeFlush
typedef struct crimechip {
/*page0*/
CrmIntfBufReg Ib; align(Ib,
CRM_INTFBUF_BASE,
CRM_TLB_BASE,
CrmIntfBufReg);
/*page1*/
CrmTlbReg Tlb; align(Tlb,
CRM_TLB_BASE,
CRM_PIXPIPE_BASE,
CrmTlbReg);
/*page2*/
CRMDRAWREGS;
align(PixPipeFlush,
CRM_PIXPIPE_FLUSH_REG,
CRM_PAGE_SIZE,
CrmPixPipeFlushReg);
/*page3*/
CrmMteReg Mte; align(Mte, 0,
CRM_PAGE_SIZE,
CrmMteReg);
/*page4*/
#undef Status
CrmStatusReg Status; align(Status, 0,
SET_STARTPTR_REG,
CrmStatusReg);
CrmSetStartPtrReg SetStartPtr;
} Crimechip;
typedef struct crmshadowregs {
CRMDRAWREGS;
align(PixPipeFlush,
CRM_PIXPIPE_FLUSH_REG,
CRM_PIXPIPE_FLUSH_REG + 8,
CrmPixPipeFlushReg);
CrmMteReg Mte;
} CrmShadowRegs;
typedef CrmShadowRegs CrimeShadow;
#undef align
typedef int Status;
#endif /* __GL_CRIMECHIP_H__ */