10#define XE_MAX_INDICES_PER_DRAW 65535
12#define SHADER_TYPE_PIXEL 1
13#define SHADER_TYPE_VERTEX 0
15#define XE_PRIMTYPE_POINTLIST 1
16#define XE_PRIMTYPE_LINELIST 2
17#define XE_PRIMTYPE_LINESTRIP 3
18#define XE_PRIMTYPE_TRIANGLELIST 4
19#define XE_PRIMTYPE_TRIANGLEFAN 5
20#define XE_PRIMTYPE_TRIANGLESTRIP 6
21#define XE_PRIMTYPE_RECTLIST 8
22#define XE_PRIMTYPE_QUADLIST 13
27#define XE_CMP_LESSEQUAL 3
28#define XE_CMP_GREATER 4
29#define XE_CMP_NOTEQUAL 5
30#define XE_CMP_GREATEREQUAL 6
31#define XE_CMP_ALWAYS 7
33#define XE_BLEND_ZERO 0
35#define XE_BLEND_SRCCOLOR 4
36#define XE_BLEND_INVSRCCOLOR 5
37#define XE_BLEND_SRCALPHA 6
38#define XE_BLEND_INVSRCALPHA 7
39#define XE_BLEND_DESTCOLOR 8
40#define XE_BLEND_INVDESTCOLOR 9
41#define XE_BLEND_DESTALPHA 10
42#define XE_BLEND_INVDESTALPHA 11
43#define XE_BLEND_BLENDFACTOR 12
44#define XE_BLEND_INVBLENDFACTOR 13
45#define XE_BLEND_CONSTANTALPHA 14
46#define XE_BLEND_INVCONSTANTALPHA 15
47#define XE_BLEND_SRCALPHASAT 16
53#define XE_BLENDOP_ADD 0
54#define XE_BLENDOP_SUBTRACT 1
55#define XE_BLENDOP_REVSUBTRACT 4
56#define XE_BLENDOP_MIN 2
57#define XE_BLENDOP_MAX 3
59#define XE_STENCILOP_KEEP 0
60#define XE_STENCILOP_ZERO 1
61#define XE_STENCILOP_REPLACE 2
62#define XE_STENCILOP_INCRSAT 3
63#define XE_STENCILOP_DECRSAT 4
64#define XE_STENCILOP_INVERT 5
65#define XE_STENCILOP_INCR 6
66#define XE_STENCILOP_DECR 7
68#define XE_TEXADDR_WRAP 0
69#define XE_TEXADDR_MIRROR 1
70#define XE_TEXADDR_CLAMP 2
71#define XE_TEXADDR_MIRRORONCE 3
72#define XE_TEXADDR_BORDER_HALF 4
73#define XE_TEXADDR_MIRRORONCE_BORDER_HALF 5
74#define XE_TEXADDR_BORDER 6
75#define XE_TEXADDR_MIRRORONCE_BORDER 7
77#define XE_CLIP_ENABLE_PLANE0 0x0001
78#define XE_CLIP_ENABLE_PLANE1 0x0002
79#define XE_CLIP_ENABLE_PLANE2 0x0004
80#define XE_CLIP_ENABLE_PLANE3 0x0008
81#define XE_CLIP_ENABLE_PLANE4 0x0010
82#define XE_CLIP_ENABLE_PLANE5 0x0020
83#define XE_CLIP_MASTER_DISABLE 0x10000
85#define XE_FILL_POINT 0x01
86#define XE_FILL_WIREFRAME 0x25
87#define XE_FILL_SOLID 0x00
97#define XE_SHADER_MAX_INSTANCES 16
138#define SWIZZLE_XYZW 0x688
139#define SWIZZLE_XYZ1 0xA88
140#define SWIZZLE_XY01 0xA08
141#define SWIZZLE_XY__ 0xFC8
142#define SWIZZLE_XYZ_ 0xEC8
143#define SWIZZLE_XYZ0 0x0C8
144#define SWIZZLE_XY0_ 0xE08
153#define XE_TYPE_FLOAT2 37
154#define XE_TYPE_FLOAT3 57
155#define XE_TYPE_FLOAT4 38
156#define XE_TYPE_UBYTE4 6
159#define XE_USAGE_POSITION 0
160#define XE_USAGE_BLENDWEIGHTS 1
161#define XE_USAGE_BLENDINDICES 2
162#define XE_USAGE_NORMAL 3
163#define XE_USAGE_PSIZE 4
164#define XE_USAGE_TEXCOORD 5
165#define XE_USAGE_TANGENT 6
166#define XE_USAGE_BINORMAL 7
167#define XE_USAGE_TESSFACTOR 8
168#define XE_USAGE_POSITIONT 9
169#define XE_USAGE_COLOR 10
170#define XE_USAGE_FOG 11
171#define XE_USAGE_DEPTH 12
172#define XE_USAGE_SAMPLE 13
175#define XE_FMT_MASK 0x3F
180#define XE_FMT_16161616 26
181#define XE_FMT_ARGB 0x80
182#define XE_FMT_BGRA 0x00
184#define XE_FMT_16BE 0x40
225#define XE_FMT_INDEX16 0
226#define XE_FMT_INDEX32 1
256#define DIRTY_ALU 0x0001
257#define DIRTY_FETCH 0x0002
258#define DIRTY_CLIP 0x0004
259#define DIRTY_INTEGER 0x0008
260#define DIRTY_CONTROL 0x0010
261#define DIRTY_SHADER 0x0020
262#define DIRTY_MISC 0x0040
308#define XE_SOURCE_COLOR 0
309#define XE_SOURCE_DS 4
311#define XE_CLEAR_COLOR 1
393#define XE_LOCK_READ 1
394#define XE_LOCK_WRITE 2
unsigned int __mf_uintptr_t __attribute__((__mode__(__pointer__)))
struct XenosSurface default_fb
int rb_secondary_boundary
struct XenosSurface tex_fb
struct XenosVertexBuffer * current_vb
struct XenosVertexBuffer * vb_pool_after_frame
volatile void * rb_secondary
struct XenosVertexBuffer * vb_current
u32 fetch_constants[96 *2]
struct XenosIndexBuffer * current_ib
float alu_constants[256 *4 *2]
struct XenosVertexBuffer * vb_head
volatile unsigned int * regs
volatile void * rb_primary
struct XenosVertexBuffer * vb_pool
u32 integer_constants[10 *4]
u32 shader_phys[XE_SHADER_MAX_INSTANCES]
void * shader_instance[XE_SHADER_MAX_INSTANCES]
struct XenosVertexBuffer * next
void Xe_Fatal(struct XenosDevice *xe, const char *fmt,...)
void Xe_SetStencilFunc(struct XenosDevice *xe, int bfff, unsigned int func)
void * Xe_IB_Lock(struct XenosDevice *xe, struct XenosIndexBuffer *ib, int offset, int size, int flags)
void Xe_InstantiateShader(struct XenosDevice *xe, struct XenosShader *sh, unsigned int index)
void Xe_Draw(struct XenosDevice *xe, struct XenosVertexBuffer *vb, struct XenosIndexBuffer *ib)
void Xe_VBPut(struct XenosDevice *xe, void *data, int len)
void Xe_SetZWrite(struct XenosDevice *xe, int zw)
void Xe_Surface_Unlock(struct XenosDevice *xe, struct XenosSurface *surface)
void Xe_DirtyAluConstant(struct XenosDevice *xe, int base, int len)
int Xe_GetShaderLength(struct XenosDevice *xe, void *sh)
int Xe_VBFCalcStride(struct XenosDevice *xe, const struct XenosVBFFormat *fmt)
void Xe_InvalidateState(struct XenosDevice *xe)
void Xe_DirtyFetch(struct XenosDevice *xe, int base, int len)
void Xe_DrawIndexedPrimitive(struct XenosDevice *xe, int type, int base_index, int min_index, int num_vertices, int start_index, int primitive_count)
void Xe_SetStencilEnable(struct XenosDevice *xe, unsigned int enable)
void Xe_SetVertexShaderConstantB(struct XenosDevice *xe, int index, int value)
struct XenosIndexBuffer * Xe_CreateIndexBuffer(struct XenosDevice *xe, int length, int format)
void * Xe_VB_Lock(struct XenosDevice *xe, struct XenosVertexBuffer *vb, int offset, int size, int flags)
void Xe_SetShader(struct XenosDevice *xe, int type, struct XenosShader *sh, int instance)
void Xe_SetCullMode(struct XenosDevice *xe, unsigned int cullmode)
void Xe_ResolveInto(struct XenosDevice *xe, struct XenosSurface *surface, int source, int clear)
void Xe_SetSrcBlend(struct XenosDevice *xe, unsigned int blend)
void Xe_DestroyTexture(struct XenosDevice *xe, struct XenosSurface *surface)
void Xe_SetStencilOp(struct XenosDevice *xe, int bfff, int fail, int zfail, int pass)
void Xe_SetPixelShaderConstantB(struct XenosDevice *xe, int index, int value)
void Xe_Sync(struct XenosDevice *xe)
void Xe_SetBlendControl(struct XenosDevice *xe, int col_src, int col_op, int col_dst, int alpha_src, int alpha_op, int alpha_dst)
struct XenosShader * Xe_LoadShader(struct XenosDevice *xe, const char *filename)
struct XenosSurface * Xe_GetFramebufferSurface(struct XenosDevice *xe)
void Xe_DestroyVertexBuffer(struct XenosDevice *xe, struct XenosVertexBuffer *vb)
void Xe_DrawPrimitive(struct XenosDevice *xe, int type, int start, int primitive_count)
void Xe_VBReclaim(struct XenosDevice *xe)
void Xe_SetDestBlend(struct XenosDevice *xe, unsigned int blend)
void Xe_SetSrcBlendAlpha(struct XenosDevice *xe, unsigned int blend)
struct XenosVertexBuffer * Xe_VBPoolAlloc(struct XenosDevice *xe, int size)
void Xe_SetClearColor(struct XenosDevice *xe, u32 clearcolor)
void Xe_SetAlphaTestEnable(struct XenosDevice *xe, int enable)
void Xe_SetZEnable(struct XenosDevice *xe, int zw)
void Xe_Init(struct XenosDevice *xe)
void Xe_SetScissor(struct XenosDevice *xe, int enable, int left, int top, int right, int bottom)
void Xe_Execute(struct XenosDevice *xe)
void Xe_SetClipPlane(struct XenosDevice *xe, int idx, float *plane)
void Xe_SetBlendOp(struct XenosDevice *xe, unsigned int blendop)
void Xe_SetStreamSource(struct XenosDevice *xe, int index, struct XenosVertexBuffer *vb, int offset, int stride)
void Xe_DestroyIndexBuffer(struct XenosDevice *xe, struct XenosIndexBuffer *ib)
struct XenosVertexBuffer * Xe_VBEnd(struct XenosDevice *xe)
void Xe_SetStencilMask(struct XenosDevice *xe, int bfff, int mask)
void Xe_IB_Unlock(struct XenosDevice *xe, struct XenosIndexBuffer *ib)
void Xe_ShaderApplyVFetchPatches(struct XenosDevice *xe, struct XenosShader *sh, unsigned int index, const struct XenosVBFFormat *fmt)
void Xe_SetFrameBufferSurface(struct XenosDevice *xe, struct XenosSurface *fb)
void * Xe_Surface_LockRect(struct XenosDevice *xe, struct XenosSurface *surface, int x, int y, int w, int h, int flags)
void Xe_SetFillMode(struct XenosDevice *xe, int front, int back)
void Xe_SetDestBlendAlpha(struct XenosDevice *xe, unsigned int blend)
void Xe_Resolve(struct XenosDevice *xe)
void Xe_SetVertexShaderConstantF(struct XenosDevice *xe, int start, const float *data, int count)
void Xe_SetClipPlaneEnables(struct XenosDevice *xe, int enables)
void Xe_SetIndices(struct XenosDevice *de, struct XenosIndexBuffer *ib)
int Xe_VBFCalcSize(struct XenosDevice *xe, const struct XenosVBFElement *fmt)
int Xe_IsVBlank(struct XenosDevice *xe)
void Xe_VBBegin(struct XenosDevice *xe, int pitch)
void Xe_SetStencilRef(struct XenosDevice *xe, int bfff, int ref)
void Xe_SetBlendOpAlpha(struct XenosDevice *xe, unsigned int blendop)
void Xe_SetPixelShaderConstantF(struct XenosDevice *xe, int start, const float *data, int count)
void Xe_SetAlphaFunc(struct XenosDevice *xe, unsigned int func)
void Xe_VBPoolAdd(struct XenosDevice *xe, struct XenosVertexBuffer *vb)
void const char void Xe_SetRenderTarget(struct XenosDevice *xe, struct XenosSurface *rt)
void Xe_VB_Unlock(struct XenosDevice *xe, struct XenosVertexBuffer *vb)
void Xe_SetZFunc(struct XenosDevice *xe, int z_func)
void Xe_SetAlphaRef(struct XenosDevice *xe, float alpharef)
void Xe_SetStencilWriteMask(struct XenosDevice *xe, int bfff, int writemask)
void Xe_Clear(struct XenosDevice *xe, int flags)
void Xe_SetTexture(struct XenosDevice *xe, int index, struct XenosSurface *tex)
#define XE_SHADER_MAX_INSTANCES
struct XenosSurface * Xe_CreateTexture(struct XenosDevice *xe, unsigned int width, unsigned int height, unsigned int levels, int format, int tiled)
struct XenosVertexBuffer * Xe_CreateVertexBuffer(struct XenosDevice *xe, int length)
struct XenosShader * Xe_LoadShaderFromMemory(struct XenosDevice *xe, void *shader)
uint32_t u32
32bit unsigned integer