mirror of https://github.com/PCSX2/pcsx2.git
zzogl-pg: Revise the TransferHostLocal functions a bit. More arrays.
git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3526 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
parent
48bbe19bd3
commit
b58a43cdf6
|
@ -172,10 +172,11 @@ static __forceinline int FinishTransfer(TransferData data, int nLeftOver)
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
static __forceinline int RealTransfer(TransferData data, /*TransferFuncts fun,*/ const void* pbyMem, u32 nQWordSize)
|
static __forceinline int RealTransfer(u32 psm, const void* pbyMem, u32 nQWordSize)
|
||||||
{
|
{
|
||||||
assert(gs.imageTransfer == 0);
|
assert(gs.imageTransfer == 0);
|
||||||
|
TransferData data = tData[psm];
|
||||||
|
TransferFuncts fun(data.psm);
|
||||||
pstart = g_pbyGSMemory + gs.dstbuf.bp * 256;
|
pstart = g_pbyGSMemory + gs.dstbuf.bp * 256;
|
||||||
const T* pbuf = (const T*)pbyMem;
|
const T* pbuf = (const T*)pbyMem;
|
||||||
const int tp2 = TransPitch(2, data.transfersize);
|
const int tp2 = TransPitch(2, data.transfersize);
|
||||||
|
@ -183,8 +184,7 @@ static __forceinline int RealTransfer(TransferData data, /*TransferFuncts fun,*/
|
||||||
tempY = gs.imageY;
|
tempY = gs.imageY;
|
||||||
tempX = gs.imageX;
|
tempX = gs.imageX;
|
||||||
Point alignedPt;
|
Point alignedPt;
|
||||||
TransferFuncts fun(data.psm);
|
|
||||||
|
|
||||||
nSize = (nQWordSize * 4 * 2) / tp2;
|
nSize = (nQWordSize * 4 * 2) / tp2;
|
||||||
nSize = min(nSize, gs.imageWnew * gs.imageHnew);
|
nSize = min(nSize, gs.imageWnew * gs.imageHnew);
|
||||||
|
|
||||||
|
@ -213,83 +213,19 @@ static __forceinline int RealTransfer(TransferData data, /*TransferFuncts fun,*/
|
||||||
return FinishTransfer(data, nLeftOver);
|
return FinishTransfer(data, nLeftOver);
|
||||||
}
|
}
|
||||||
|
|
||||||
int TransferHostLocal32(const void* pbyMem, u32 nQWordSize)
|
int TransferHostLocal32(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u32>(PSMCT32, pbyMem, nQWordSize); }
|
||||||
{
|
int TransferHostLocal32Z(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u32>(PSMT32Z, pbyMem, nQWordSize); }
|
||||||
TransferData data(2, 32, 8, 8, 32, PSMCT32);
|
int TransferHostLocal24(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u8>(PSMCT24, pbyMem, nQWordSize); }
|
||||||
return RealTransfer<u32>(data, pbyMem, nQWordSize);
|
int TransferHostLocal24Z(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u8>(PSMT24Z, pbyMem, nQWordSize); }
|
||||||
}
|
int TransferHostLocal16(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u16>(PSMCT16, pbyMem, nQWordSize); }
|
||||||
|
int TransferHostLocal16S(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u16>(PSMCT16S, pbyMem, nQWordSize); }
|
||||||
int TransferHostLocal32Z(const void* pbyMem, u32 nQWordSize)
|
int TransferHostLocal16Z(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u16>(PSMT16Z, pbyMem, nQWordSize); }
|
||||||
{
|
int TransferHostLocal16SZ(const void* pbyMem, u32 nQWordSize){ return RealTransfer<u16>(PSMT16SZ, pbyMem, nQWordSize); }
|
||||||
TransferData data(2, 32, 8, 8, 32, PSMT32Z);
|
int TransferHostLocal8(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u8>(PSMT8, pbyMem, nQWordSize); }
|
||||||
return RealTransfer<u32>(data, pbyMem, nQWordSize);
|
int TransferHostLocal4(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u8>(PSMT4, pbyMem, nQWordSize); }
|
||||||
}
|
int TransferHostLocal8H(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u8>(PSMT8H, pbyMem, nQWordSize); }
|
||||||
|
int TransferHostLocal4HL(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u8>(PSMT4HL, pbyMem, nQWordSize); }
|
||||||
int TransferHostLocal24(const void* pbyMem, u32 nQWordSize)
|
int TransferHostLocal4HH(const void* pbyMem, u32 nQWordSize) { return RealTransfer<u8>(PSMT4HH, pbyMem, nQWordSize); }
|
||||||
{
|
|
||||||
TransferData data(8, 32, 8, 8, 24, PSMCT24);
|
|
||||||
return RealTransfer<u8>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal24Z(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(8, 32, 8, 8, 24, PSMT24Z);
|
|
||||||
return RealTransfer<u8>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal16(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(4, 16, 16, 8, 16, PSMCT16);
|
|
||||||
return RealTransfer<u16>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal16S(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(4, 16, 16, 8, 16, PSMCT16S);
|
|
||||||
return RealTransfer<u16>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal16Z(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(4, 16, 16, 8, 16, PSMT16Z);
|
|
||||||
return RealTransfer<u16>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal16SZ(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(4, 16, 16, 8, 16, PSMT16SZ);
|
|
||||||
return RealTransfer<u16>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal8(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(4, 8, 16, 16, 8, PSMT8);
|
|
||||||
return RealTransfer<u8>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal4(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(8, 4, 32, 16, 4, PSMT4);
|
|
||||||
return RealTransfer<u8>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal8H(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(4, 32, 8, 8, 8, PSMT8H);
|
|
||||||
return RealTransfer<u8>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal4HL(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(8, 32, 8, 8, 4, PSMT4HL);
|
|
||||||
return RealTransfer<u8>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
int TransferHostLocal4HH(const void* pbyMem, u32 nQWordSize)
|
|
||||||
{
|
|
||||||
TransferData data(8, 32, 8, 8, 4, PSMT4HH);
|
|
||||||
return RealTransfer<u8>(data, pbyMem, nQWordSize);
|
|
||||||
}
|
|
||||||
|
|
||||||
void TransferLocalHost32(void* pbyMem, u32 nQWordSize) { FUNCLOG }
|
void TransferLocalHost32(void* pbyMem, u32 nQWordSize) { FUNCLOG }
|
||||||
void TransferLocalHost24(void* pbyMem, u32 nQWordSize) {FUNCLOG}
|
void TransferLocalHost24(void* pbyMem, u32 nQWordSize) {FUNCLOG}
|
||||||
|
|
|
@ -62,7 +62,7 @@ struct TransferData
|
||||||
u32 blockheight;
|
u32 blockheight;
|
||||||
u32 transfersize;
|
u32 transfersize;
|
||||||
u32 psm;
|
u32 psm;
|
||||||
__forceinline TransferData(u32 limit, u32 bits, u32 width, u32 height, u32 size, u32 ps)
|
/*__forceinline TransferData(u32 limit, u32 bits, u32 width, u32 height, u32 size, u32 ps)
|
||||||
{
|
{
|
||||||
widthlimit = limit;
|
widthlimit = limit;
|
||||||
blockbits = bits;
|
blockbits = bits;
|
||||||
|
@ -70,7 +70,7 @@ struct TransferData
|
||||||
blockheight = height;
|
blockheight = height;
|
||||||
transfersize = size;
|
transfersize = size;
|
||||||
psm = ps;
|
psm = ps;
|
||||||
}
|
}*/
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TransferFuncts
|
struct TransferFuncts
|
||||||
|
@ -94,6 +94,7 @@ struct TransferFuncts
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extern TransferData tData[64];
|
||||||
// rest not visible externally
|
// rest not visible externally
|
||||||
|
|
||||||
struct BLOCK
|
struct BLOCK
|
||||||
|
|
|
@ -326,4 +326,35 @@ _readPixel_0 readPixelFun_0[64] =
|
||||||
NULL, NULL, readPixel16SZ_0, NULL, NULL, NULL, NULL, NULL
|
NULL, NULL, readPixel16SZ_0, NULL, NULL, NULL, NULL, NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define TD_NULL {0,0,0,0,0,0}
|
||||||
|
TransferData tData[64] =
|
||||||
|
{
|
||||||
|
{2,32,8,8,32,PSMCT32},
|
||||||
|
{8,32,8,8,24,PSMCT24},
|
||||||
|
{4,16,16,8,16,PSMCT16},
|
||||||
|
TD_NULL, TD_NULL, TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
TD_NULL, TD_NULL,
|
||||||
|
{4,16,16,8,16,PSMCT16S},
|
||||||
|
TD_NULL, TD_NULL, TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
{4,8,16,16,8,PSMT8},
|
||||||
|
{8,4,32,16,4,PSMT4},
|
||||||
|
TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
{4,32,8,8,8,PSMT8H},
|
||||||
|
TD_NULL, TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
TD_NULL, TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
{8,32,8,8,4,PSMT4HL},
|
||||||
|
TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
TD_NULL, TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
{8,32,8,8,4,PSMT4HH},
|
||||||
|
TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
{2,32,8,8,32,PSMT32Z},
|
||||||
|
{8,32,8,8,24,PSMT24Z},
|
||||||
|
{4,16,16,8,16,PSMT16Z},
|
||||||
|
TD_NULL, TD_NULL, TD_NULL, TD_NULL, TD_NULL,
|
||||||
|
TD_NULL, TD_NULL,
|
||||||
|
{4,16,16,8,16,PSMT16SZ},
|
||||||
|
TD_NULL, TD_NULL, TD_NULL, TD_NULL, TD_NULL
|
||||||
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue