D3D: minor vs constant-setting optimization, remove a stupid memcpy that doesn't do anything, don't see much benefit though :/ At least the PIX logs will be cleaner.

git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@4301 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
hrydgard
2009-09-19 10:46:25 +00:00
parent 0d9543030b
commit dae1a68bfc
9 changed files with 81 additions and 30 deletions

View File

@ -43,11 +43,11 @@ void SetVSConstant4f(int const_number, float f1, float f2, float f3, float f4)
lastVSconstants[const_number][3] != f4)
{
const float f[4] = {f1, f2, f3, f4};
D3D::dev->SetVertexShaderConstantF(const_number, f, 1);
lastVSconstants[const_number][0] = f1;
lastVSconstants[const_number][1] = f2;
lastVSconstants[const_number][2] = f3;
lastVSconstants[const_number][3] = f4;
D3D::dev->SetVertexShaderConstantF(const_number, lastVSconstants[const_number], 1);
}
}
@ -58,11 +58,37 @@ void SetVSConstant4fv(int const_number, const float *f)
lastVSconstants[const_number][2] != f[2] ||
lastVSconstants[const_number][3] != f[3])
{
D3D::dev->SetVertexShaderConstantF(const_number, f, 1);
lastVSconstants[const_number][0] = f[0];
lastVSconstants[const_number][1] = f[1];
lastVSconstants[const_number][2] = f[2];
lastVSconstants[const_number][3] = f[3];
D3D::dev->SetVertexShaderConstantF(const_number, lastVSconstants[const_number], 1);
}
}
void SetMultiVSConstant3fv(int const_number, int count, const float *f)
{
bool change = false;
for (int i = 0; i < count; i++)
{
if (lastVSconstants[const_number + i][0] != f[0 + i*3] ||
lastVSconstants[const_number + i][1] != f[1 + i*3] ||
lastVSconstants[const_number + i][2] != f[2 + i*3])
{
change = true;
break;
}
}
if (change)
{
for (int i = 0; i < count; i++)
{
lastVSconstants[const_number + i][0] = f[0 + i*3];
lastVSconstants[const_number + i][1] = f[1 + i*3];
lastVSconstants[const_number + i][2] = f[2 + i*3];
lastVSconstants[const_number + i][3] = 0.0f;
}
D3D::dev->SetVertexShaderConstantF(const_number, lastVSconstants[const_number], count);
}
}
@ -82,13 +108,14 @@ void SetMultiVSConstant4fv(int const_number, int count, const float *f)
}
if (change)
{
D3D::dev->SetVertexShaderConstantF(const_number, f, count);
for (int i = 0; i < count; i++) {
for (int i = 0; i < count; i++)
{
lastVSconstants[const_number + i][0] = f[0 + i*4];
lastVSconstants[const_number + i][1] = f[1 + i*4];
lastVSconstants[const_number + i][2] = f[2 + i*4];
lastVSconstants[const_number + i][3] = f[3 + i*4];
}
D3D::dev->SetVertexShaderConstantF(const_number, lastVSconstants[const_number], count);
}
}