mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-28 01:56:24 +00:00
SSE2: Replace prefetch
This commit is contained in:
parent
ebcf6af93c
commit
25bbeb0ba5
1 changed files with 36 additions and 2 deletions
|
@ -39,7 +39,23 @@ static void applyArraySkinNormalT(uint numMatrixes, uint32 *infPtr, CMesh::CSkin
|
|||
{
|
||||
/* Prefetch all vertex/normal before, it is to be faster.
|
||||
*/
|
||||
#if defined(NL_OS_WINDOWS) && !defined(NL_NO_ASM)
|
||||
#ifdef NL_HAS_SSE2
|
||||
{
|
||||
uint nInfTmp= nInf;
|
||||
uint32 *infTmpPtr= infPtr;
|
||||
for(;nInfTmp>0;nInfTmp--, infTmpPtr++)
|
||||
{
|
||||
uint index= *infTmpPtr;
|
||||
CMesh::CSkinWeight *srcSkin= srcSkinPtr + index;
|
||||
CVector *srcVertex= srcVertexPtr + index;
|
||||
CVector *srcNormal= srcNormalPtr + index;
|
||||
|
||||
_mm_prefetch((const char *)(void *)srcSkin, _MM_HINT_T1);
|
||||
_mm_prefetch((const char *)(void *)srcVertex, _MM_HINT_T1);
|
||||
_mm_prefetch((const char *)(void *)srcNormal, _MM_HINT_T1);
|
||||
}
|
||||
}
|
||||
#elif defined(NL_OS_WINDOWS) && !defined(NL_NO_ASM)
|
||||
{
|
||||
uint nInfTmp= nInf;
|
||||
uint32 *infTmpPtr= infPtr;
|
||||
|
@ -176,7 +192,25 @@ static void applyArraySkinTangentSpaceT(uint numMatrixes, uint32 *infPtr, CMesh:
|
|||
{
|
||||
/* Prefetch all vertex/normal/tgSpace before, it is faster.
|
||||
*/
|
||||
#if defined(NL_OS_WINDOWS) && !defined(NL_NO_ASM)
|
||||
#ifdef NL_HAS_SSE2
|
||||
{
|
||||
uint nInfTmp= nInf;
|
||||
uint32 *infTmpPtr= infPtr;
|
||||
for(;nInfTmp>0;nInfTmp--, infTmpPtr++)
|
||||
{
|
||||
uint index= *infTmpPtr;
|
||||
CMesh::CSkinWeight *srcSkin= srcSkinPtr + index;
|
||||
CVector *srcVertex= srcVertexPtr + index;
|
||||
CVector *srcNormal= srcNormalPtr + index;
|
||||
CVector *srcTgSpace= tgSpacePtr + index;
|
||||
|
||||
_mm_prefetch((const char *)(void *)srcSkin, _MM_HINT_T1);
|
||||
_mm_prefetch((const char *)(void *)srcVertex, _MM_HINT_T1);
|
||||
_mm_prefetch((const char *)(void *)srcNormal, _MM_HINT_T1);
|
||||
_mm_prefetch((const char *)(void *)srcTgSpace, _MM_HINT_T1);
|
||||
}
|
||||
}
|
||||
#elif defined(NL_OS_WINDOWS) && !defined(NL_NO_ASM)
|
||||
{
|
||||
uint nInfTmp= nInf;
|
||||
uint32 *infTmpPtr= infPtr;
|
||||
|
|
Loading…
Reference in a new issue