(GX More inlined functions

This commit is contained in:
twinaphex 2014-02-21 04:35:43 +01:00
parent cee116d5b8
commit b27f3242c0
2 changed files with 32 additions and 15 deletions

View File

@ -246,7 +246,7 @@ void gx_set_video_mode(void *data, unsigned fbWidth, unsigned lines)
VIDEO_SetBlack(false);
VIDEO_Flush();
GX_SetViewport(0, 0, gx_mode.fbWidth, gx_mode.efbHeight, 0, 1);
__GX_SetViewportJitter(0, 0, gx_mode.fbWidth, gx_mode.efbHeight, 0, 1, 1);
__GX_SetDispCopySrc(__gx, 0, 0, gx_mode.fbWidth, gx_mode.efbHeight);
f32 y_scale = GX_GetYScaleFactor(gx_mode.efbHeight, gx_mode.xfbHeight);
@ -386,9 +386,9 @@ static void init_vtx(struct __gx_regdef *__gx, void *data)
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_F32, 0);
GX_SetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
GX_SetArray(GX_VA_POS, verts, 3 * sizeof(float));
GX_SetArray(GX_VA_TEX0, vertex_ptr, 2 * sizeof(float));
GX_SetArray(GX_VA_CLR0, color_ptr, 4 * sizeof(u8));
__GX_SetArray(__gx, GX_VA_POS, verts, 3 * sizeof(float));
__GX_SetArray(__gx, GX_VA_TEX0, vertex_ptr, 2 * sizeof(float));
__GX_SetArray(__gx, GX_VA_CLR0, color_ptr, 4 * sizeof(u8));
__GX_SetNumTexGens(__gx, 1);
__GX_SetNumChans(__gx, 1);
@ -787,7 +787,7 @@ static void gx_resize(struct __gx_regdef *__gx, void *data)
gx->vp.width = width;
gx->vp.height = height;
GX_SetViewport(x, y, width, height, 0, 1);
__GX_SetViewportJitter(x, y, width, height, 0, 1, 1);
Mtx44 m1, m2;
float top = 1, bottom = -1, left = -1, right = 1;
@ -1199,7 +1199,7 @@ static void gx_render_overlay(void *data)
{
GX_LoadTexObj(&gx->overlay[i].tex, GX_TEXMAP0);
GX_Begin(GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
__GX_Begin(__gx, GX_TRIANGLESTRIP, GX_VTXFMT0, 4);
GX_Position3f32(gx->overlay[i].vertex_coord[0], gx->overlay[i].vertex_coord[1], -0.5);
GX_Color4u8(255, 255, 255, (u8)(gx->overlay[i].alpha_mod * 255.0f));
GX_TexCoord2f32(gx->overlay[i].tex_coord[0], gx->overlay[i].tex_coord[1]);

View File

@ -341,6 +341,19 @@ static void __SETVCDATTR(struct __gx_regdef *__gx, u8 attr,u8 type)
GX_LOAD_XF_REG(0x1019,__gx->mtxIdxHi); \
}
#define __GX_SetArray(__gx, attr, ptr, stride) \
if(attr>=GX_VA_POS && attr<=GX_LIGHTARRAY) \
{ \
GX_LOAD_CP_REG((0xA0 +((attr) - GX_VA_POS)),(u32)MEM_VIRTUAL_TO_PHYSICAL(ptr)); \
GX_LOAD_CP_REG((0xB0 +((attr) - GX_VA_POS)),(u32)(stride)); \
}
#define __GX_Begin(__vtx, primitive, vtxfmt, vtxcnt) \
if(__gx->dirtyState) \
__GX_SetDirtyState(__gx); \
wgPipe->U8 = primitive | (vtxfmt & 7); \
wgPipe->U16 = vtxcnt
#ifdef HW_DOL
static inline void __GX_UpdateBPMask(struct __gx_regdef *__gx)
{
@ -672,15 +685,6 @@ static void __GX_SendFlushPrim(struct __gx_regdef *__gx)
__gx->genMode = (__gx->genMode & ~0xf)|(nr & 0xf); \
__gx->dirtyState |= 0x02000004
#define __GX_Begin(__gx, primitve, vtxfmt, vtxcnt) \
{ \
u8 reg = primitve|(vtxfmt&7); \
if(__gx->dirtyState) \
__GX_SetDirtyState(__gx); \
wgPipe->U8 = reg; \
wgPipe->U16 = vtxcnt; \
}
#define __GX_PokeARGB(x, y, color) \
{ \
u32 regval; \
@ -713,6 +717,19 @@ static void __GX_SendFlushPrim(struct __gx_regdef *__gx)
__gx->peZMode = (__gx->peZMode&~0x10)|(_SHIFTL(update_enable,4,1)); \
GX_LOAD_BP_REG(__gx->peZMode)
#define X_FACTOR 0.5
#define Y_FACTOR 342.0
#define ZFACTOR 16777215.0
#define __GX_SetViewportJitter(xOrig, yOrig, wd, ht, nearZ, farZ, field) \
GX_LOAD_XF_REGS(0x101a,6); \
wgPipe->F32 = wd* X_FACTOR; /* x0 */ \
wgPipe->F32 = (-ht)* X_FACTOR; /* y0 */ \
wgPipe->F32 = (ZFACTOR * farZ)-(ZFACTOR * nearZ); /* z */ \
wgPipe->F32 = (xOrig+(wd * X_FACTOR))+ Y_FACTOR; /* x1 */ \
wgPipe->F32 = (yOrig+(ht * X_FACTOR))+ Y_FACTOR; /* y1 */ \
wgPipe->F32 = ZFACTOR * farZ /* f */
static void __GX_SetCopyFilter(u8 aa,u8 sample_pattern[12][2],u8 vf,u8 vfilter[7])
{
u32 reg01=0,reg02=0,reg03=0,reg04=0,reg53=0,reg54=0;