Compile with /fp:precise instead of /fp:fast in release mode on Windows
/fp:fast was introducing FP precision problems, and mixing it with some /fp:precise code caused strange game behaviors, DSI exceptions and freezes. This commit should fix most of the issues introduced by 3.0-73 (r95517a97). Thanks to hatarumoroboshi@hotmail.com for tracking a lot of these Win32 bugs. Fixes issue 4906. Fixes issue 5138. Probably fixes (not tested) issue 5067.
This commit is contained in:
parent
6202714efd
commit
70b6c4280f
|
@ -42,10 +42,6 @@ using namespace MathUtil;
|
|||
|
||||
void UpdateSSEState();
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma float_control(precise, on, push)
|
||||
#endif
|
||||
|
||||
// Extremely rare - actually, never seen.
|
||||
// Star Wars : Rogue Leader spams that at some point :|
|
||||
void Interpreter::Helper_UpdateCR1(double _fValue)
|
||||
|
@ -518,8 +514,4 @@ void Interpreter::fsqrtx(UGeckoInstruction _inst)
|
|||
rPS0(_inst.FD) = sqrt(b);
|
||||
UpdateFPRF(rPS0(_inst.FD));
|
||||
if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD));
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#pragma float_control(pop)
|
||||
#endif
|
||||
}
|
|
@ -19,7 +19,7 @@
|
|||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||
<PreprocessorDefinitions>_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||
<FloatingPointModel>Fast</FloatingPointModel>
|
||||
<FloatingPointModel>Precise</FloatingPointModel>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<OptimizeReferences>true</OptimizeReferences>
|
||||
|
|
Loading…
Reference in New Issue