Skip to content

Commit 5e4653d

Browse files
committed
Fix crashes and performance losses related to noise optimizations.
MS Visual Studio's "Whole Program Optimization" feature ( `/GL`) seems to have caused cross-contamination between code paths designated to be optimized for different enhanced instruction sets (`/arch:AVX`, `/arch:AVX2`, or none), causing crashes on non-AVX-capable CPUs as well as poor performance on others. As a remedy, whole program optimization is now turned off for all source files designated to make use of enhanced instruction sets.
1 parent 06469c5 commit 5e4653d

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

changes.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ Miscellaneous:
3939
improvements introduced in the previous beta, as they caused artifacts.
4040
- Fixed some sphere sweep inside texture inconsistencies when using
4141
control points with negative radius.
42+
- Fixed crash of Windows version on machines without AVX support.
43+
- Fixed performance loss of Windows version observed with previous beta.
4244

4345

4446
Changes between 3.7.1-beta.5 and 3.7.1-beta.6

windows/vs2015/povplatform.vcxproj

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,24 +384,40 @@
384384
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
385385
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release-AVX|x64'">AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
386386
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">AdvancedVectorExtensions2</EnableEnhancedInstructionSet>
387+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</WholeProgramOptimization>
388+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</WholeProgramOptimization>
389+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">false</WholeProgramOptimization>
390+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release-AVX|x64'">false</WholeProgramOptimization>
387391
</ClCompile>
388392
<ClCompile Include="..\..\platform\x86\avxfma4\avxfma4noise.cpp">
389393
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
390394
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
391395
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release-AVX|x64'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
392396
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
397+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</WholeProgramOptimization>
398+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</WholeProgramOptimization>
399+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">false</WholeProgramOptimization>
400+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release-AVX|x64'">false</WholeProgramOptimization>
393401
</ClCompile>
394402
<ClCompile Include="..\..\platform\x86\avx\avxnoise.cpp">
395403
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
396404
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
397405
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release-AVX|x64'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
398406
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
407+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</WholeProgramOptimization>
408+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</WholeProgramOptimization>
409+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">false</WholeProgramOptimization>
410+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release-AVX|x64'">false</WholeProgramOptimization>
399411
</ClCompile>
400412
<ClCompile Include="..\..\platform\x86\avx\avxportablenoise.cpp">
401413
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
402414
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release|x64'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
403415
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
404416
<EnableEnhancedInstructionSet Condition="'$(Configuration)|$(Platform)'=='Release-AVX|x64'">AdvancedVectorExtensions</EnableEnhancedInstructionSet>
417+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">false</WholeProgramOptimization>
418+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</WholeProgramOptimization>
419+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release-SSE2|Win32'">false</WholeProgramOptimization>
420+
<WholeProgramOptimization Condition="'$(Configuration)|$(Platform)'=='Release-AVX|x64'">false</WholeProgramOptimization>
405421
</ClCompile>
406422
<ClCompile Include="..\..\platform\x86\cpuid.cpp" />
407423
<ClCompile Include="..\..\platform\x86\optimizednoise.cpp" />

0 commit comments

Comments
 (0)