mirror of
https://github.com/hrydgard/ppsspp.git
synced 2024-11-23 13:30:02 +00:00
Merge pull request #14043 from unknownbrackets/vertexjit-abi
vertexjit: Correct saved registers on x64
This commit is contained in:
commit
30b6f1f865
@ -732,6 +732,7 @@ void CallSyscall(MIPSOpcode op)
|
|||||||
int funcnum = callno & 0xFFF;
|
int funcnum = callno & 0xFFF;
|
||||||
int modulenum = (callno & 0xFF000) >> 12;
|
int modulenum = (callno & 0xFF000) >> 12;
|
||||||
double total = time_now_d() - start - hleSteppingTime;
|
double total = time_now_d() - start - hleSteppingTime;
|
||||||
|
_dbg_assert_msg_(total >= 0.0, "Time spent in syscall became negative");
|
||||||
hleSteppingTime = 0.0;
|
hleSteppingTime = 0.0;
|
||||||
updateSyscallStats(modulenum, funcnum, total);
|
updateSyscallStats(modulenum, funcnum, total);
|
||||||
}
|
}
|
||||||
|
@ -185,7 +185,7 @@ JittedVertexDecoder VertexDecoderJitCache::Compile(const VertexDecoder &dec, int
|
|||||||
// Parameters automatically fall into place.
|
// Parameters automatically fall into place.
|
||||||
|
|
||||||
// This will align the stack properly to 16 bytes (the call of this function pushed RIP, which is 8 bytes).
|
// This will align the stack properly to 16 bytes (the call of this function pushed RIP, which is 8 bytes).
|
||||||
const uint8_t STACK_FIXED_ALLOC = 64 + 8;
|
const uint8_t STACK_FIXED_ALLOC = 96 + 8;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Allocate temporary storage on the stack.
|
// Allocate temporary storage on the stack.
|
||||||
@ -197,6 +197,8 @@ JittedVertexDecoder VertexDecoderJitCache::Compile(const VertexDecoder &dec, int
|
|||||||
MOVUPS(MDisp(ESP, 16), XMM5);
|
MOVUPS(MDisp(ESP, 16), XMM5);
|
||||||
MOVUPS(MDisp(ESP, 32), XMM6);
|
MOVUPS(MDisp(ESP, 32), XMM6);
|
||||||
MOVUPS(MDisp(ESP, 48), XMM7);
|
MOVUPS(MDisp(ESP, 48), XMM7);
|
||||||
|
MOVUPS(MDisp(ESP, 64), XMM8);
|
||||||
|
MOVUPS(MDisp(ESP, 80), XMM9);
|
||||||
|
|
||||||
bool prescaleStep = false;
|
bool prescaleStep = false;
|
||||||
// Look for prescaled texcoord steps
|
// Look for prescaled texcoord steps
|
||||||
@ -273,6 +275,8 @@ JittedVertexDecoder VertexDecoderJitCache::Compile(const VertexDecoder &dec, int
|
|||||||
MOVUPS(XMM5, MDisp(ESP, 16));
|
MOVUPS(XMM5, MDisp(ESP, 16));
|
||||||
MOVUPS(XMM6, MDisp(ESP, 32));
|
MOVUPS(XMM6, MDisp(ESP, 32));
|
||||||
MOVUPS(XMM7, MDisp(ESP, 48));
|
MOVUPS(XMM7, MDisp(ESP, 48));
|
||||||
|
MOVUPS(XMM8, MDisp(ESP, 64));
|
||||||
|
MOVUPS(XMM9, MDisp(ESP, 80));
|
||||||
ADD(PTRBITS, R(ESP), Imm8(STACK_FIXED_ALLOC));
|
ADD(PTRBITS, R(ESP), Imm8(STACK_FIXED_ALLOC));
|
||||||
|
|
||||||
#ifdef _M_IX86
|
#ifdef _M_IX86
|
||||||
|
@ -954,7 +954,9 @@ void GPUCommon::NotifySteppingExit() {
|
|||||||
if (timeSteppingStarted_ <= 0.0) {
|
if (timeSteppingStarted_ <= 0.0) {
|
||||||
ERROR_LOG(G3D, "Mismatched stepping enter/exit.");
|
ERROR_LOG(G3D, "Mismatched stepping enter/exit.");
|
||||||
}
|
}
|
||||||
timeSpentStepping_ += time_now_d() - timeSteppingStarted_;
|
double total = time_now_d() - timeSteppingStarted_;
|
||||||
|
_dbg_assert_msg_(total >= 0.0, "Time spent stepping became negative");
|
||||||
|
timeSpentStepping_ += total;
|
||||||
timeSteppingStarted_ = 0.0;
|
timeSteppingStarted_ = 0.0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1028,6 +1030,7 @@ bool GPUCommon::InterpretList(DisplayList &list) {
|
|||||||
|
|
||||||
if (coreCollectDebugStats) {
|
if (coreCollectDebugStats) {
|
||||||
double total = time_now_d() - start - timeSpentStepping_;
|
double total = time_now_d() - start - timeSpentStepping_;
|
||||||
|
_dbg_assert_msg_(total >= 0.0, "Time spent DL processing became negative");
|
||||||
hleSetSteppingTime(timeSpentStepping_);
|
hleSetSteppingTime(timeSpentStepping_);
|
||||||
timeSpentStepping_ = 0.0;
|
timeSpentStepping_ = 0.0;
|
||||||
gpuStats.msProcessingDisplayLists += total;
|
gpuStats.msProcessingDisplayLists += total;
|
||||||
|
Loading…
Reference in New Issue
Block a user