ppsspp/GPU/ge_constants.h

481 lines
10 KiB
C
Raw Normal View History

2012-11-01 15:19:01 +00:00
// Copyright (c) 2012- PPSSPP Project.
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, version 2.0 or later versions.
2012-11-01 15:19:01 +00:00
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License 2.0 for more details.
// A copy of the GPL 2.0 should have been included with the program.
// If not, see http://www.gnu.org/licenses/
// Official git repository and contact information can be found at
// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.
#ifndef _GE_CONSTANTS_H
#define _GE_CONSTANTS_H
enum GECommand
{
GE_CMD_NOP = 0,
GE_CMD_VADDR=0x1,
GE_CMD_IADDR=0x2,
GE_CMD_PRIM=0x4,
GE_CMD_BEZIER=0x5,
GE_CMD_SPLINE=0x6,
GE_CMD_BOUNDINGBOX=0x7,
GE_CMD_JUMP=0x8,
GE_CMD_BJUMP=0x9,
GE_CMD_CALL=0xA,
GE_CMD_RET=0xB,
GE_CMD_END=0xC,
GE_CMD_SIGNAL=0xE,
GE_CMD_FINISH=0xF,
GE_CMD_BASE=0x10,
GE_CMD_VERTEXTYPE=0x12,
GE_CMD_OFFSETADDR=0x13,
GE_CMD_ORIGIN=0x14,
GE_CMD_REGION1=0x15,
GE_CMD_REGION2=0x16,
GE_CMD_LIGHTINGENABLE=0x17,
GE_CMD_LIGHTENABLE0=0x18,
GE_CMD_LIGHTENABLE1=0x19,
GE_CMD_LIGHTENABLE2=0x1a,
GE_CMD_LIGHTENABLE3=0x1b,
GE_CMD_CLIPENABLE=0x1c,
GE_CMD_CULLFACEENABLE,
GE_CMD_TEXTUREMAPENABLE,
GE_CMD_FOGENABLE,
GE_CMD_DITHERENABLE,
GE_CMD_ALPHABLENDENABLE=0x21,
GE_CMD_ALPHATESTENABLE=0x22,
GE_CMD_ZTESTENABLE=0x23,
2012-11-01 15:19:01 +00:00
GE_CMD_STENCILTESTENABLE=0x24,
GE_CMD_ANTIALIASENABLE=0x25,
2012-11-01 15:19:01 +00:00
GE_CMD_PATCHCULLENABLE=0x26,
GE_CMD_COLORTESTENABLE=0x27,
2012-11-01 15:19:01 +00:00
GE_CMD_LOGICOPENABLE=0x28,
GE_CMD_BONEMATRIXNUMBER=0x2A,
GE_CMD_BONEMATRIXDATA=0x2B,
GE_CMD_MORPHWEIGHT0=0x2C,
GE_CMD_MORPHWEIGHT1=0x2D,
GE_CMD_MORPHWEIGHT2=0x2E,
GE_CMD_MORPHWEIGHT3=0x2F,
GE_CMD_MORPHWEIGHT4=0x30,
GE_CMD_MORPHWEIGHT5=0x31,
GE_CMD_MORPHWEIGHT6=0x32,
GE_CMD_MORPHWEIGHT7=0x33,
GE_CMD_PATCHDIVISION=0x36,
2012-12-28 18:33:26 +00:00
GE_CMD_PATCHPRIMITIVE=0x37,
2012-11-01 15:19:01 +00:00
GE_CMD_PATCHFACING=0x38,
GE_CMD_WORLDMATRIXNUMBER=0x3A,
GE_CMD_WORLDMATRIXDATA,
GE_CMD_VIEWMATRIXNUMBER,
GE_CMD_VIEWMATRIXDATA,
GE_CMD_PROJMATRIXNUMBER,
GE_CMD_PROJMATRIXDATA,
GE_CMD_TGENMATRIXNUMBER=0x40,
GE_CMD_TGENMATRIXDATA=0x41,
GE_CMD_VIEWPORTX1,
GE_CMD_VIEWPORTY1,
GE_CMD_VIEWPORTZ1,
GE_CMD_VIEWPORTX2,
GE_CMD_VIEWPORTY2,
GE_CMD_VIEWPORTZ2,
GE_CMD_TEXSCALEU=0x48,
GE_CMD_TEXSCALEV=0x49,
GE_CMD_TEXOFFSETU=0x4A,
GE_CMD_TEXOFFSETV=0x4B,
GE_CMD_OFFSETX=0x4C,
GE_CMD_OFFSETY=0x4D,
2013-02-02 12:40:26 +00:00
GE_CMD_SHADEMODE=0x50, // flat or gouraud
2013-01-24 20:04:46 +00:00
GE_CMD_REVERSENORMAL=0x51,
2012-11-01 15:19:01 +00:00
GE_CMD_MATERIALUPDATE=0x53,
GE_CMD_MATERIALEMISSIVE, //not sure about these but this makes sense
GE_CMD_MATERIALAMBIENT, //gotta try enabling lighting and check :)
GE_CMD_MATERIALDIFFUSE=0x56,
GE_CMD_MATERIALSPECULAR=0x57,
GE_CMD_MATERIALALPHA=0x58,
GE_CMD_MATERIALSPECULARCOEF=0x5B,
GE_CMD_AMBIENTCOLOR,
GE_CMD_AMBIENTALPHA,
2013-02-02 12:40:26 +00:00
GE_CMD_LIGHTMODE=0x5E,
2012-11-01 15:19:01 +00:00
GE_CMD_LIGHTTYPE0=0x5F,
GE_CMD_LIGHTTYPE1=0x60,
GE_CMD_LIGHTTYPE2=0x61,
GE_CMD_LIGHTTYPE3=0x62,
GE_CMD_LX0=0x63,
GE_CMD_LY0,
GE_CMD_LZ0,
GE_CMD_LX1,
GE_CMD_LY1,
GE_CMD_LZ1,
GE_CMD_LX2,
GE_CMD_LY2,
GE_CMD_LZ2,
GE_CMD_LX3,
GE_CMD_LY3,
GE_CMD_LZ3,
GE_CMD_LDX0=0x6F,
GE_CMD_LDY0,
GE_CMD_LDZ0,
GE_CMD_LDX1,
GE_CMD_LDY1,
GE_CMD_LDZ1,
GE_CMD_LDX2,
GE_CMD_LDY2,
GE_CMD_LDZ2,
GE_CMD_LDX3,
GE_CMD_LDY3,
GE_CMD_LDZ3,
GE_CMD_LKA0=0x7B,
GE_CMD_LKB0,
GE_CMD_LKC0,
GE_CMD_LKA1,
GE_CMD_LKB1,
GE_CMD_LKC1,
GE_CMD_LKA2,
GE_CMD_LKB2,
GE_CMD_LKC2,
GE_CMD_LKA3,
GE_CMD_LKB3,
GE_CMD_LKC3,
GE_CMD_LKS0=0x87,
GE_CMD_LKS1,
GE_CMD_LKS2,
GE_CMD_LKS3,
GE_CMD_LKO0=0x8b,
GE_CMD_LKO1,
GE_CMD_LKO2,
GE_CMD_LKO3,
GE_CMD_LAC0=0x8F,
GE_CMD_LDC0,
GE_CMD_LSC0,
GE_CMD_LAC1,
GE_CMD_LDC1,
GE_CMD_LSC1,
GE_CMD_LAC2,
GE_CMD_LDC2,
GE_CMD_LSC2,
GE_CMD_LAC3,
GE_CMD_LDC3,
GE_CMD_LSC3,
GE_CMD_CULL=0x9B,
GE_CMD_FRAMEBUFPTR=0x9C,
GE_CMD_FRAMEBUFWIDTH=0x9D,
GE_CMD_ZBUFPTR=0x9E,
GE_CMD_ZBUFWIDTH=0x9F,
GE_CMD_TEXADDR0=0xA0,
GE_CMD_TEXADDR1,
GE_CMD_TEXADDR2,
GE_CMD_TEXADDR3,
GE_CMD_TEXADDR4,
GE_CMD_TEXADDR5,
GE_CMD_TEXADDR6,
GE_CMD_TEXADDR7,
GE_CMD_TEXBUFWIDTH0=0xA8,
GE_CMD_TEXBUFWIDTH1,
GE_CMD_TEXBUFWIDTH2,
GE_CMD_TEXBUFWIDTH3,
GE_CMD_TEXBUFWIDTH4,
GE_CMD_TEXBUFWIDTH5,
GE_CMD_TEXBUFWIDTH6,
GE_CMD_TEXBUFWIDTH7,
GE_CMD_CLUTADDR=0xB0,
GE_CMD_CLUTADDRUPPER,
GE_CMD_TRANSFERSRC,
GE_CMD_TRANSFERSRCW,
GE_CMD_TRANSFERDST,
GE_CMD_TRANSFERDSTW,
GE_CMD_TEXSIZE0=0xB8,
GE_CMD_TEXSIZE1,
GE_CMD_TEXSIZE2,
GE_CMD_TEXSIZE3,
GE_CMD_TEXSIZE4,
GE_CMD_TEXSIZE5,
GE_CMD_TEXSIZE6,
GE_CMD_TEXSIZE7,
GE_CMD_TEXMAPMODE=0xC0,
GE_CMD_TEXSHADELS=0xC1,
GE_CMD_TEXMODE=0xC2,
GE_CMD_TEXFORMAT=0xC3,
GE_CMD_LOADCLUT=0xC4,
GE_CMD_CLUTFORMAT=0xC5,
GE_CMD_TEXFILTER=0xC6,
GE_CMD_TEXWRAP=0xC7,
GE_CMD_TEXLEVEL=0xC8,
2012-11-01 15:19:01 +00:00
GE_CMD_TEXFUNC=0xC9,
GE_CMD_TEXENVCOLOR=0xCA,
GE_CMD_TEXFLUSH=0xCB,
GE_CMD_TEXSYNC=0xCC,
GE_CMD_FOG1=0xCD,
GE_CMD_FOG2=0xCE,
GE_CMD_FOGCOLOR=0xCF,
GE_CMD_TEXLODSLOPE=0xD0,
GE_CMD_FRAMEBUFPIXFORMAT=0xD2,
GE_CMD_CLEARMODE=0xD3,
GE_CMD_SCISSOR1=0xD4,
GE_CMD_SCISSOR2=0xD5,
GE_CMD_MINZ=0xD6,
GE_CMD_MAXZ=0xD7,
GE_CMD_COLORTEST=0xD8,
GE_CMD_COLORREF=0xD9,
GE_CMD_COLORTESTMASK=0xDA,
2012-11-01 15:19:01 +00:00
GE_CMD_ALPHATEST=0xDB,
GE_CMD_STENCILTEST=0xDC,
GE_CMD_STENCILOP=0xDD,
GE_CMD_ZTEST=0xDE,
GE_CMD_BLENDMODE=0xDF,
GE_CMD_BLENDFIXEDA=0xE0,
GE_CMD_BLENDFIXEDB=0xE1,
GE_CMD_DITH0=0xE2,
GE_CMD_DITH1,
GE_CMD_DITH2,
GE_CMD_DITH3,
GE_CMD_LOGICOP=0xE6,
GE_CMD_ZWRITEDISABLE=0xE7,
GE_CMD_MASKRGB=0xE8,
GE_CMD_MASKALPHA=0xE9,
GE_CMD_TRANSFERSTART=0xEA,
GE_CMD_TRANSFERSRCPOS=0xEB,
GE_CMD_TRANSFERDSTPOS=0xEC,
GE_CMD_TRANSFERSIZE=0xED,
};
enum GEBufferFormat
{
GE_FORMAT_565=0,
GE_FORMAT_5551=1,
GE_FORMAT_4444=2,
GE_FORMAT_8888=3,
};
#define GE_VTYPE_TRANSFORM (0<<23)
#define GE_VTYPE_THROUGH (1<<23)
#define GE_VTYPE_THROUGH_MASK (1<<23)
#define GE_VTYPE_TC_NONE (0<<0)
#define GE_VTYPE_TC_8BIT (1<<0)
#define GE_VTYPE_TC_16BIT (2<<0)
#define GE_VTYPE_TC_FLOAT (3<<0)
#define GE_VTYPE_TC_MASK (3<<0)
#define GE_VTYPE_TC_SHIFT 0
#define GE_VTYPE_COL_NONE (0<<2)
#define GE_VTYPE_COL_565 (4<<2)
#define GE_VTYPE_COL_5551 (5<<2)
#define GE_VTYPE_COL_4444 (6<<2)
#define GE_VTYPE_COL_8888 (7<<2)
#define GE_VTYPE_COL_MASK (7<<2)
#define GE_VTYPE_COL_SHIFT 2
#define GE_VTYPE_NRM_NONE (0<<5)
#define GE_VTYPE_NRM_8BIT (1<<5)
#define GE_VTYPE_NRM_16BIT (2<<5)
#define GE_VTYPE_NRM_FLOAT (3<<5)
#define GE_VTYPE_NRM_MASK (3<<5)
#define GE_VTYPE_NRM_SHIFT 5
//#define GE_VTYPE_POSITION_NONE (0<<5)
#define GE_VTYPE_POS_8BIT (1<<7)
#define GE_VTYPE_POS_16BIT (2<<7)
#define GE_VTYPE_POS_FLOAT (3<<7)
#define GE_VTYPE_POS_MASK (3<<7)
#define GE_VTYPE_POS_SHIFT 7
#define GE_VTYPE_WEIGHT_NONE (0<<9)
#define GE_VTYPE_WEIGHT_8BIT (1<<9)
#define GE_VTYPE_WEIGHT_16BIT (2<<9)
#define GE_VTYPE_WEIGHT_FLOAT (3<<9)
#define GE_VTYPE_WEIGHT_MASK (3<<9)
#define GE_VTYPE_WEIGHT_SHIFT 9
#define GE_VTYPE_WEIGHTCOUNT_MASK (7<<14)
#define GE_VTYPE_WEIGHTCOUNT_SHIFT 14
#define GE_VTYPE_MORPHCOUNT_MASK (7<<18)
#define GE_VTYPE_MORPHCOUNT_SHIFT 18
2012-11-01 15:19:01 +00:00
#define GE_VTYPE_IDX_NONE (0<<11)
#define GE_VTYPE_IDX_8BIT (1<<11)
#define GE_VTYPE_IDX_16BIT (2<<11)
#define GE_VTYPE_IDX_MASK (3<<11)
#define GE_VTYPE_IDX_SHIFT 11
#define GE_CLEARMODE_COLOR (1<<8)
#define GE_CLEARMODE_ALPHA (1<<9) //or stencil?
#define GE_CLEARMODE_Z (1<<10)
#define GE_CLEARMODE_ALL (GE_CLEARMODE_COLOR|GE_CLEARMODE_ALPHA|GE_CLEARMODE_Z)
2013-01-05 18:26:37 +00:00
enum GEMatrixType {
GE_MTX_BONE0 = 0,
GE_MTX_BONE1,
GE_MTX_BONE2,
GE_MTX_BONE3,
GE_MTX_BONE4,
GE_MTX_BONE5,
GE_MTX_BONE6,
GE_MTX_BONE7,
GE_MTX_WORLD,
GE_MTX_VIEW,
GE_MTX_PROJECTION,
GE_MTX_TEXGEN,
};
2012-11-01 15:19:01 +00:00
enum GEComparison
{
GE_COMP_NEVER=0,
GE_COMP_ALWAYS,
GE_COMP_EQUAL,
GE_COMP_NOTEQUAL,
GE_COMP_LESS,
GE_COMP_LEQUAL,
GE_COMP_GREATER,
GE_COMP_GEQUAL
};
enum GELightType
{
GE_LIGHTTYPE_DIRECTIONAL=0,
GE_LIGHTTYPE_POINT = 1,
GE_LIGHTTYPE_SPOT = 2
};
enum GELightColorSetting
{
GE_LIGHTCOLOR_AMBIENT = 0,
GE_LIGHTCOLOR_DIFFUSE = 1,
GE_LIGHTCOLOR_SPECULAR = 2
};
enum GELightComputation
{
GE_LIGHTCOMP_ONLYDIFFUSE=0,
GE_LIGHTCOMP_BOTH=1,
GE_LIGHTCOMP_BOTHWITHPOWDIFFUSE=2,
};
enum GETextureFormat
{
GE_TFMT_5650=0,
GE_TFMT_5551=1,
GE_TFMT_4444=2,
GE_TFMT_8888=3,
GE_TFMT_CLUT4=4,
GE_TFMT_CLUT8=5,
GE_TFMT_CLUT16=6,
GE_TFMT_CLUT32=7,
GE_TFMT_DXT1=8,
GE_TFMT_DXT3=9,
GE_TFMT_DXT5=10
};
enum GEMaterialColorSetting
{
GE_MATERIALCOLOR_EMISSIVE = 0,
GE_MATERIALCOLOR_AMBIENT = 1,
GE_MATERIALCOLOR_DIFFUSE = 2,
GE_MATERIALCOLOR_SPECULAR = 3,
};
enum GEBlendMode
{
GE_BLENDMODE_MUL_AND_ADD=0,
GE_BLENDMODE_MUL_AND_SUBTRACT=1,
GE_BLENDMODE_MUL_AND_SUBTRACT_REVERSE=2,
GE_BLENDMODE_MIN=3,
GE_BLENDMODE_MAX=4,
GE_BLENDMODE_ABSDIFF=5
};
enum GEBlendSrcFactor
{
GE_SRCBLEND_DSTCOLOR,
GE_SRCBLEND_INVDSTCOLOR,
GE_SRCBLEND_SRCALPHA,
GE_SRCBLEND_INVSRCALPHA,
GE_SRCBLEND_DSTALPHA,
GE_SRCBLEND_INVDSTALPHA,
GE_SRCBLEND_DOUBLESRCALPHA,
GE_SRCBLEND_DOUBLEINVSRCALPHA,
GE_SRCBLEND_DOUBLEDSTALPHA,
GE_SRCBLEND_DOUBLEINVDSTALPHA,
GE_SRCBLEND_FIXA,
2012-11-01 15:19:01 +00:00
};
enum GEBlendDstFactor
{
GE_DSTBLEND_SRCCOLOR,
GE_DSTBLEND_INVSRCCOLOR,
GE_DSTBLEND_SRCALPHA,
GE_DSTBLEND_INVSRCALPHA,
GE_DSTBLEND_DSTALPHA,
GE_DSTBLEND_INVDSTALPHA,
GE_DSTBLEND_DOUBLESRCALPHA,
GE_DSTBLEND_DOUBLEINVSRCALPHA,
GE_DSTBLEND_DOUBLEDSTALPHA,
GE_DSTBLEND_DOUBLEINVDSTALPHA,
GE_DSTBLEND_FIXB,
2012-11-01 15:19:01 +00:00
};
enum GETexFunc
{
GE_TEXFUNC_MODULATE=0,
GE_TEXFUNC_DECAL=1,
GE_TEXFUNC_BLEND=2,
GE_TEXFUNC_REPLACE=3,
GE_TEXFUNC_ADD=4,
};
enum GEStencilOp
{
GE_STENCILOP_KEEP=0,
GE_STENCILOP_ZERO=0,
GE_STENCILOP_REPLACE=0,
GE_STENCILOP_INVERT=0,
GE_STENCILOP_INCR=0,
GE_STENCILOP_DECR=0,
};
// And more i haven't checked yet
#define GE_TFILT_NEAREST 0
#define GE_TFILT_LINEAR 1
#define GE_TFILT_NEAREST_MIPMAP_NEAREST 4
#define GE_TFILT_LINEAR_MIPMAP_NEAREST 5
#define GE_TFILT_NEAREST_MIPMAP_LINEAR 6
#define GE_TFILT_LINEAR_MIPMAP_LINEAR 7
enum GEPrimitiveType
{
GE_PRIM_POINTS=0,
GE_PRIM_LINES=1,
GE_PRIM_LINE_STRIP=2,
GE_PRIM_TRIANGLES=3,
GE_PRIM_TRIANGLE_STRIP=4,
GE_PRIM_TRIANGLE_FAN=5,
GE_PRIM_RECTANGLES=6,
};
enum GELogicOp
{
GE_LOGIC_AND = 1,
GE_LOGIC_XOR = 6,
GE_LOGIC_INVERT = 10,
GE_LOGIC_DRAWINVERTED = 12,
};
2012-11-08 22:26:30 +00:00
enum GEPaletteFormat
{
GE_CMODE_16BIT_BGR5650,
GE_CMODE_16BIT_ABGR5551,
GE_CMODE_16BIT_ABGR4444,
GE_CMODE_32BIT_ABGR8888
};
2012-11-01 15:19:01 +00:00
2012-11-08 22:26:30 +00:00
#endif