📄 sm501acc.h
字号:
/* Header: //Mercury/Projects/archives/XFree86/4.0/regsmi.h-arc 1.11 14 Sep 2000 11:17:30 Frido $ *//*Copyright (C) 1994-1999 The XFree86 Project, Inc. All Rights Reserved.Copyright (C) 2000 Silicon Motion, Inc. All Rights Reserved.Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal inthe Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copiesof the Software, and to permit persons to whom the Software is furnished to doso, subject to the following conditions:The above copyright notice and this permission notice shall be included in allcopies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FIT-NESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEXFREE86 PROJECT BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER INAN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTIONWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.Except as contained in this notice, the names of the XFree86 Project andSilicon Motion shall not be used in advertising or otherwise to promote thesale, use or other dealings in this Software without prior writtenauthorization from the XFree86 Project and SIlicon Motion.*//* $XFree86: xc/programs/Xserver/hw/xfree86/drivers/siliconmotion/regsmi.h,v 1.2 2002/01/25 21:56:09 tsi Exp $ */#ifndef _SM501ACC_H#define _SM501ACC_H/* 2D Engine commands */#define SMI_TRANSPARENT_SRC 0x00000100 //透明受源控制#define SMI_TRANSPARENT_DEST 0x00000300 //透明受目的控制#define SMI_OPAQUE_PXL 0x00000000 //象素是不透明的#define SMI_TRANSPARENT_PXL 0x00000400 //象素是透明的#define SMI_REPEAT_ROTATE 0x00000800 //当旋转命令有效时起作用, 就是在显示的每一个垂直同步时, 起动旋转引擎#define SMI_MONO_PACK_8 0x00001000 //黑白数据存储格式, 8位为一点#define SMI_MONO_PACK_16 0x00002000 //16位为一点#define SMI_MONO_PACK_32 0x00003000 //32位为一点#define SMI_ROP2_SRC 0x00008000 //设置ROP2操作源为位图#define SMI_ROP2_PAT 0x0000C000 //设置ROP2操作源为重复的图案#define SMI_ROP3 0x00000000 //设置ROP3操作#define SMI_BITBLT 0x00000000 //位块拷贝功能#define SMI_RECT_FILL 0x00010000 //矩形填冲#define SMI_TRAPEZOID_FILL 0x00030000 //不规则四边形(梯形?)填冲#define SMI_SHORT_STROKE 0x00060000 //点划线#define SMI_BRESENHAM_LINE 0x00070000 //画线#define SMI_HOSTBLT_WRITE 0x00080000 //主块写#define SMI_HOSTBLT_READ 0x00090000 //主块读#define SMI_ROTATE_BLT 0x000B0000 //旋转块#define SMI_SRC_COLOR 0x00000000 //主位块是彩色的#define SMI_SRC_MONOCHROME 0x00400000 //主位块是黑白的#define SMI_GRAPHICS_STRETCH 0x00800000 //在Y方向上拉伸#define SMI_ROTATE_CW 0x01000000 //#define SMI_ROTATE_CCW 0x02000000#define SMI_MAJOR_X 0x00000000 //主轴为X#define SMI_MAJOR_Y 0x04000000 //主轴为Y#define SMI_LEFT_TO_RIGHT 0x00000000 //操作方向控制 左=>右#define SMI_RIGHT_TO_LEFT 0x08000000 //操作方向控制 右=>左#define SMI_COLOR_PATTERN 0x40000000 //重复图案是彩色的#define SMI_MONO_PATTERN 0x00000000 //重复图案是黑白的#define SMI_QUICK_START 0x10000000 //当2D DIMENTION X 寄存器写入值是, 2D引擎自动起动#define SMI_START_ENGINE 0x80000000 //引擎状态, 1=START#define MAXLOOP 0x100000 /* timeout value for engine waits */#define TRUE 1#define FALSE 0struct SM501STRU{ /* accel additions */ unsigned long AccelCmd; /* Value for DPR0C */ unsigned long Stride; /* Stride of frame buffer */ unsigned long ScissorsLeft; /* Left/top of current scissors */ unsigned long ScissorsRight; /* Right/bottom of current scissors */ unsigned long ClipTurnedOn; /* Clipping was turned on by the previous command */ int width, height; /* Width and height of the screen */ int Bpp; /* Bytes per pixel */ int bitsPerPixel; /* bits per pixel */ unsigned long hwcursor; /* hardware cursor enabled */ int rotate; /* Rotation flags */};#define FIFO_EMPTY() ((regRead32SRC(0) & 0x00100000) != 0)#define ENGINE_IDLE() ((regRead32SRC(0) & 0x00080000) == 0)/* Wait until "v" queue entries are free */#define WaitQueue() \ do \ { \ int loop = MAXLOOP; \ while (!FIFO_EMPTY()) \ if (loop-- == 0) break; \ if (loop <= 0) \ SMI_GEReset();\ } while (0)/* Wait until GP is idle */#define WaitIdle() \ do \ { \ int loop = MAXLOOP; \ while (!ENGINE_IDLE()) \ if (loop-- == 0) break; \ if (loop <= 0) \ SMI_GEReset();\ } \ while (0)/* Wait until GP is idle and queue is empty */#define WaitIdleEmpty() \ do \ { \ WaitQueue(); \ WaitIdle(); \ } \ while (0)void SMI_GEReset(void);void SMI_BlitRect(int srcx, int srcy, int w, int h, int dstx, int dsty);void SMI_FillRect(int x, int y, int w, int h, unsigned long color);#define ROP_DST 0x00000001#define ROP_SRC 0x00000002#define ROP_PAT 0x00000004#define ROP_0 0x00#define ROP_DPSoon 0x01#define ROP_DPSona 0x02#define ROP_PSon 0x03#define ROP_SDPona 0x04#define ROP_DPon 0x05#define ROP_PDSxnon 0x06#define ROP_PDSaon 0x07#define ROP_SDPnaa 0x08#define ROP_PDSxon 0x09#define ROP_DPna 0x0A#define ROP_PSDnaon 0x0B#define ROP_SPna 0x0C#define ROP_PDSnaon 0x0D#define ROP_PDSonon 0x0E#define ROP_Pn 0x0F#define ROP_PDSona 0x10#define ROP_DSon 0x11#define ROP_SDPxnon 0x12#define ROP_SDPaon 0x13#define ROP_DPSxnon 0x14#define ROP_DPSaon 0x15#define ROP_PSDPSanaxx 0x16#define ROP_SSPxDSxaxn 0x17#define ROP_SPxPDxa 0x18#define ROP_SDPSanaxn 0x19#define ROP_PDSPaox 0x1A#define ROP_SDPSxaxn 0x1B#define ROP_PSDPaox 0x1C#define ROP_DSPDxaxn 0x1D#define ROP_PDSox 0x1E#define ROP_PDSoan 0x1F#define ROP_DPSnaa 0x20#define ROP_SDPxon 0x21#define ROP_DSna 0x22#define ROP_SPDnaon 0x23#define ROP_SPxDSxa 0x24#define ROP_PDSPanaxn 0x25#define ROP_SDPSaox 0x26#define ROP_SDPSxnox 0x27#define ROP_DPSxa 0x28#define ROP_PSDPSaoxxn 0x29#define ROP_DPSana 0x2A#define ROP_SSPxPDxaxn 0x2B#define ROP_SPDSoax 0x2C#define ROP_PSDnox 0x2D#define ROP_PSDPxox 0x2E#define ROP_PSDnoan 0x2F#define ROP_PSna 0x30#define ROP_SDPnaon 0x31#define ROP_SDPSoox 0x32#define ROP_Sn 0x33#define ROP_SPDSaox 0x34#define ROP_SPDSxnox 0x35#define ROP_SDPox 0x36#define ROP_SDPoan 0x37#define ROP_PSDPoax 0x38#define ROP_SPDnox 0x39#define ROP_SPDSxox 0x3A#define ROP_SPDnoan 0x3B#define ROP_PSx 0x3C#define ROP_SPDSonox 0x3D#define ROP_SPDSnaox 0x3E#define ROP_PSan 0x3F#define ROP_PSDnaa 0x40#define ROP_DPSxon 0x41#define ROP_SDxPDxa 0x42#define ROP_SPDSanaxn 0x43#define ROP_SDna 0x44#define ROP_DPSnaon 0x45#define ROP_DSPDaox 0x46#define ROP_PSDPxaxn 0x47#define ROP_SDPxa 0x48#define ROP_PDSPDaoxxn 0x49#define ROP_DPSDoax 0x4A#define ROP_PDSnox 0x4B#define ROP_SDPana 0x4C#define ROP_SSPxDSxoxn 0x4D#define ROP_PDSPxox 0x4E#define ROP_PDSnoan 0x4F#define ROP_PDna 0x50#define ROP_DSPnaon 0x51#define ROP_DPSDaox 0x52#define ROP_SPDSxaxn 0x53#define ROP_DPSonon 0x54#define ROP_Dn 0x55#define ROP_DPSox 0x56#define ROP_DPSoan 0x57#define ROP_PDSPoax 0x58#define ROP_DPSnox 0x59#define ROP_DPx 0x5A#define ROP_DPSDonox 0x5B#define ROP_DPSDxox 0x5C#define ROP_DPSnoan 0x5D#define ROP_DPSDnaox 0x5E#define ROP_DPan 0x5F#define ROP_PDSxa 0x60#define ROP_DSPDSaoxxn 0x61#define ROP_DSPDoax 0x62#define ROP_SDPnox 0x63#define ROP_SDPSoax 0x64#define ROP_DSPnox 0x65#define ROP_DSx 0x66#define ROP_SDPSonox 0x67#define ROP_DSPDSonoxxn 0x68#define ROP_PDSxxn 0x69#define ROP_DPSax 0x6A#define ROP_PSDPSoaxxn 0x6B#define ROP_SDPax 0x6C#define ROP_PDSPDoaxxn 0x6D#define ROP_SDPSnoax 0x6E#define ROP_PDSxnan 0x6F#define ROP_PDSana 0x70#define ROP_SSDxPDxaxn 0x71#define ROP_SDPSxox 0x72#define ROP_SDPnoan 0x73#define ROP_DSPDxox 0x74#define ROP_DSPnoan 0x75#define ROP_SDPSnaox 0x76#define ROP_DSan 0x77#define ROP_PDSax 0x78#define ROP_DSPDSoaxxn 0x79#define ROP_DPSDnoax 0x7A#define ROP_SDPxnan 0x7B#define ROP_SPDSnoax 0x7C#define ROP_DPSxnan 0x7D#define ROP_SPxDSxo 0x7E#define ROP_DPSaan 0x7F#define ROP_DPSaa 0x80#define ROP_SPxDSxon 0x81#define ROP_DPSxna 0x82#define ROP_SPDSnoaxn 0x83#define ROP_SDPxna 0x84#define ROP_PDSPnoaxn 0x85#define ROP_DSPDSoaxx 0x86#define ROP_PDSaxn 0x87#define ROP_DSa 0x88#define ROP_SDPSnaoxn 0x89#define ROP_DSPnoa 0x8A#define ROP_DSPDxoxn 0x8B#define ROP_SDPnoa 0x8C#define ROP_SDPSxoxn 0x8D#define ROP_SSDxPDxax 0x8E#define ROP_PDSanan 0x8F#define ROP_PDSxna 0x90#define ROP_SDPSnoaxn 0x91#define ROP_DPSDPoaxx 0x92#define ROP_SPDaxn 0x93#define ROP_PSDPSoaxx 0x94#define ROP_DPSaxn 0x95#define ROP_DPSxx 0x96#define ROP_PSDPSonoxx 0x97#define ROP_SDPSonoxn 0x98#define ROP_DSxn 0x99#define ROP_DPSnax 0x9A#define ROP_SDPSoaxn 0x9B#define ROP_SPDnax 0x9C#define ROP_DSPDoaxn 0x9D#define ROP_DSPDSaoxx 0x9E#define ROP_PDSxan 0x9F#define ROP_DPa 0xA0#define ROP_PDSPnaoxn 0xA1#define ROP_DPSnoa 0xA2#define ROP_DPSDxoxn 0xA3#define ROP_PDSPonoxn 0xA4#define ROP_PDxn 0xA5#define ROP_DSPnax 0xA6#define ROP_PDSPoaxn 0xA7#define ROP_DPSoa 0xA8#define ROP_DPSoxn 0xA9#define ROP_D 0xAA#define ROP_DPSono 0xAB#define ROP_SPDSxax 0xAC#define ROP_DPSDaoxn 0xAD#define ROP_DSPnao 0xAE#define ROP_DPno 0xAF#define ROP_PDSnoa 0xB0#define ROP_PDSPxoxn 0xB1#define ROP_SSPxDSxox 0xB2#define ROP_SDPanan 0xB3#define ROP_PSDnax 0xB4#define ROP_DPSDoaxn 0xB5#define ROP_DPSDPaoxx 0xB6#define ROP_SDPxan 0xB7#define ROP_PSDPxax 0xB8#define ROP_DSPDaoxn 0xB9#define ROP_DPSnao 0xBA#define ROP_DSno 0xBB#define ROP_SPDSanax 0xBC#define ROP_SDxPDxan 0xBD#define ROP_DPSxo 0xBE#define ROP_DPSano 0xBF#define ROP_Psa 0xC0#define ROP_SPDSnaoxn 0xC1#define ROP_SPDSonoxn 0xC2#define ROP_PSxn 0xC3#define ROP_SPDnoa 0xC4#define ROP_SPDSxoxn 0xC5#define ROP_SDPnax 0xC6#define ROP_PSDPoaxn 0xC7#define ROP_SDPoa 0xC8#define ROP_SPDoxn 0xC9#define ROP_DPSDxax 0xCA#define ROP_SPDSaoxn 0xCB#define ROP_S 0xCC#define ROP_SDPono 0xCD#define ROP_SDPnao 0xCE#define ROP_SPno 0xCF#define ROP_PSDnoa 0xD0#define ROP_PSDPxoxn 0xD1#define ROP_PDSnax 0xD2#define ROP_SPDSoaxn 0xD3#define ROP_SSPxPDxax 0xD4#define ROP_DPSanan 0xD5#define ROP_PSDPSaoxx 0xD6#define ROP_DPSxan 0xD7#define ROP_PDSPxax 0xD8#define ROP_SDPSaoxn 0xD9#define ROP_DPSDanax 0xDA#define ROP_SPxDSxan 0xDB#define ROP_SPDnao 0xDC#define ROP_SDno 0xDD#define ROP_SDPxo 0xDE#define ROP_SDPano 0xDF#define ROP_PDSoa 0xE0#define ROP_PDSoxn 0xE1#define ROP_DSPDxax 0xE2#define ROP_PSDPaoxn 0xE3#define ROP_SDPSxax 0xE4#define ROP_PDSPaoxn 0xE5#define ROP_SDPSanax 0xE6#define ROP_SPxPDxan 0xE7#define ROP_SSPxDSxax 0xE8#define ROP_DSPDSanaxxn 0xE9#define ROP_DPSao 0xEA#define ROP_DPSxno 0xEB#define ROP_SDPao 0xEC#define ROP_SDPxno 0xED#define ROP_DSo 0xEE#define ROP_SDPnoo 0xEF#define ROP_P 0xF0#define ROP_PDSono 0xF1#define ROP_PDSnao 0xF2#define ROP_PSno 0xF3#define ROP_PSDnao 0xF4#define ROP_PDno 0xF5#define ROP_PDSxo 0xF6#define ROP_PDSano 0xF7#define ROP_PDSao 0xF8#define ROP_PDSxno 0xF9#define ROP_DPo 0xFA#define ROP_DPSnoo 0xFB#define ROP_PSo 0xFC#define ROP_PSDnoo 0xFD#define ROP_DPSoo 0xFE#define ROP_1 0xFF#endif /* _SM501ACC_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -