mirror of
https://github.com/XProger/OpenLara.git
synced 2025-08-09 06:36:59 +02:00
#407 32X on-chip 2k rasterization code test (slower)
This commit is contained in:
@@ -151,4 +151,8 @@ extern "C"
|
||||
void CacheClearLine(void* ptr);
|
||||
}
|
||||
|
||||
#define CacheClear()\
|
||||
CacheControl(0);\
|
||||
CacheControl(SH2_CCTL_CP | SH2_CCTL_CE);
|
||||
|
||||
#endif
|
||||
|
@@ -9,12 +9,6 @@
|
||||
// int16 e10, e11, e12 // rotation
|
||||
// int16 e20, e21, e22 // rotation
|
||||
// int16 e03, e13, e23 // translation
|
||||
//
|
||||
// word [ N Z Z ] // rot
|
||||
// [ Z N Z ] // rot
|
||||
// [ Z Z N ] // rot
|
||||
// [ Z Z Z ] // trans
|
||||
// long [ NZ ZZ NZ ZZ NZ ZZ ]
|
||||
|
||||
// row[0] rotation
|
||||
#define M00 0
|
||||
|
@@ -5,6 +5,12 @@ SEG_MATH
|
||||
#define ZZ r1
|
||||
#define NZ r2
|
||||
|
||||
// word [ N Z Z ] // rot
|
||||
// [ Z N Z ] // rot
|
||||
// [ Z Z N ] // rot
|
||||
// [ Z Z Z ] // trans
|
||||
// long [ NZ ZZ NZ ZZ NZ ZZ ]
|
||||
|
||||
.align 4
|
||||
.global _matrixSetIdentity_asm
|
||||
_matrixSetIdentity_asm:
|
||||
|
@@ -44,6 +44,14 @@ var_fb:
|
||||
// write per but allow transparent write for byte & word
|
||||
.long 0x24020200
|
||||
var_table:
|
||||
/* 2k on-chip test
|
||||
.long 0xC0000000 + 516 + 416 + 256 + 18 //_rasterizeS_asm
|
||||
.long 0xC0000000 + 516 + 416 + 18 //_rasterizeF_asm
|
||||
.long 0xC0000000 + 516 + 18 //_rasterizeFT_asm
|
||||
.long 0xC0000000 + 516 + 18 //_rasterizeFT_asm
|
||||
.long 0xC0000000 + 20 //_rasterizeGT_asm
|
||||
.long 0xC0000000 + 20 //_rasterizeGT_asm
|
||||
*/
|
||||
.long _rasterizeS_asm
|
||||
.long _rasterizeF_asm
|
||||
.long _rasterizeFT_asm
|
||||
|
@@ -30,6 +30,9 @@ SEG_RASTER
|
||||
#define LMAP inv
|
||||
|
||||
.align 4
|
||||
.global _rasterizeF_asm_start
|
||||
_rasterizeF_asm_start:
|
||||
|
||||
.exit:
|
||||
// pop
|
||||
mov.l @sp+, r14
|
||||
@@ -213,3 +216,7 @@ var_LMAP_ADDR:
|
||||
.long _gLightmap_base
|
||||
var_divTable:
|
||||
.long _divTable
|
||||
|
||||
.align 2
|
||||
.global _rasterizeF_asm_end
|
||||
_rasterizeF_asm_end:
|
@@ -57,6 +57,9 @@ SP_R = 24
|
||||
SP_SIZE = 28
|
||||
|
||||
.align 4
|
||||
.global _rasterizeFT_asm_start
|
||||
_rasterizeFT_asm_start:
|
||||
|
||||
.exit:
|
||||
// pop
|
||||
add #SP_SIZE, sp
|
||||
@@ -317,3 +320,7 @@ var_divTable:
|
||||
.long _divTable
|
||||
var_gTile:
|
||||
.long _gTile
|
||||
|
||||
.align 2
|
||||
.global _rasterizeFT_asm_end
|
||||
_rasterizeFT_asm_end:
|
||||
|
@@ -69,6 +69,10 @@ SP_R = 28
|
||||
SP_SIZE = 32
|
||||
|
||||
.align 4
|
||||
|
||||
.global _rasterizeGT_asm_start
|
||||
_rasterizeGT_asm_start:
|
||||
|
||||
.exit:
|
||||
// pop
|
||||
add #SP_SIZE, sp
|
||||
@@ -400,3 +404,7 @@ var_divTable:
|
||||
.long _divTable
|
||||
var_gTile:
|
||||
.long _gTile
|
||||
|
||||
.align 2
|
||||
.global _rasterizeGT_asm_end
|
||||
_rasterizeGT_asm_end:
|
||||
|
@@ -29,6 +29,9 @@ SEG_RASTER
|
||||
#define ih inv
|
||||
|
||||
.align 4
|
||||
.global _rasterizeS_asm_start
|
||||
_rasterizeS_asm_start:
|
||||
|
||||
.exit:
|
||||
// pop
|
||||
mov.l @sp+, r14
|
||||
@@ -188,3 +191,7 @@ var_LMAP_ADDR:
|
||||
.long _gLightmap_base
|
||||
var_divTable:
|
||||
.long _divTable
|
||||
|
||||
.align 2
|
||||
.global _rasterizeS_asm_end
|
||||
_rasterizeS_asm_end:
|
@@ -685,6 +685,37 @@ void flush_c()
|
||||
return;
|
||||
|
||||
gFacesBase = gFaces;
|
||||
/*
|
||||
CacheControl(0);
|
||||
CacheControl(SH2_CCTL_CP | SH2_CCTL_CE | SH2_CCTL_TW);
|
||||
|
||||
extern int32 rasterizeGT_asm_start;
|
||||
extern int32 rasterizeGT_asm_end;
|
||||
|
||||
int32 size = intptr_t(&rasterizeGT_asm_end) - intptr_t(&rasterizeGT_asm_start);
|
||||
fast_memcpy((void*)(0xC0000000 + 0), &rasterizeGT_asm_start, size >> 2); // 516
|
||||
|
||||
extern int32 rasterizeFT_asm_start;
|
||||
extern int32 rasterizeFT_asm_end;
|
||||
|
||||
size = intptr_t(&rasterizeFT_asm_end) - intptr_t(&rasterizeFT_asm_start);
|
||||
fast_memcpy((void*)(0xC0000000 + 516), &rasterizeFT_asm_start, size >> 2); // 416
|
||||
|
||||
extern int32 rasterizeF_asm_start;
|
||||
extern int32 rasterizeF_asm_end;
|
||||
|
||||
size = intptr_t(&rasterizeF_asm_end) - intptr_t(&rasterizeF_asm_start);
|
||||
fast_memcpy((void*)(0xC0000000 + 516 + 416), &rasterizeF_asm_start, size >> 2); // 256
|
||||
|
||||
extern int32 rasterizeS_asm_start;
|
||||
extern int32 rasterizeS_asm_end;
|
||||
|
||||
size = intptr_t(&rasterizeS_asm_end) - intptr_t(&rasterizeS_asm_start);
|
||||
fast_memcpy((void*)(0xC0000000 + 516 + 416 + 256), &rasterizeS_asm_start, size >> 2); // 224
|
||||
|
||||
//extern int32 fps;
|
||||
//fps = size;
|
||||
*/
|
||||
|
||||
PROFILE(CNT_FLUSH);
|
||||
|
||||
@@ -753,6 +784,10 @@ void flush_c()
|
||||
|
||||
} while (face);
|
||||
}
|
||||
/*
|
||||
CacheControl(0);
|
||||
CacheControl(SH2_CCTL_CP | SH2_CCTL_CE);
|
||||
*/
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -843,6 +878,18 @@ void renderInit()
|
||||
gFacesBase = gFaces;
|
||||
}
|
||||
|
||||
void renderFree()
|
||||
{
|
||||
}
|
||||
|
||||
void renderLevelInit()
|
||||
{
|
||||
}
|
||||
|
||||
void renderLevelFree()
|
||||
{
|
||||
}
|
||||
|
||||
extern "C" X_NOINLINE void drawTriangle(uint32 flags, VertexLink* v)
|
||||
{
|
||||
VertexLink* v0 = v + 0;
|
||||
|
Reference in New Issue
Block a user