Originally posted to Chuck Walbourn's Blog on MSDN,
DirectXMath version 3.09 is included in the Windows 10 Anniversary Update SDK (14393) that ships with VS 2015 Update 3 when you install the Windows Tools 1.4.1 and select the 10.0.14393 Target Platform Version (see this blog post).
The new version includes the following:
- Support for additional optimizations when built with
- Added use of constexpr for type constructors,
- Marked ``__vector4i``,
XMDEC4, and associated Load & Store functions as deprecated. These are vestiges of Xbox 360 support and will be removed in a future release.
- Renamed parameter in
XMMatrixPerspectiveFov*to reduce user confusion when relying on IntelliSense
The DirectXMath library assumes on x86 and x64 that both SSE and SSE2 are always supported. Later instruction sets are not always supported on PCs, and to avoid the penalty of additional guarded code paths or runtime selection the library avoids using them. As I’ve covered in the past, you can use specific versions in your own guarded code paths as the developer can pick a high-enough level to do the runtime selection to amortize the penalties involved.
For fixed-platforms like the Xbox One, however, the library can rely on additional instructions being present. These optimizations are now also available in the Windows version of DirectXMath when built using the
/arch:AVX2 switches. Keep in mind that the resulting EXE or DLL only works correctly on systems with AVX and/or AVX2 support, so you should ensure that these binaries are only used on such systems (
XMVerifyCPUSupport will perform the additional tests as appropriate when built with these switches).
In addition to shipping with the Windows SDK and the Xbox One XDK, DirectXMath is now also available on GitHub under the MIT license. This repo also includes all the extension libraries such as Spherical Harmonics math, XDSP, etc.
The GitHub’s master branch is already host to a new revision in progress for a future DirectXMath 3.10 release.
Related: Known Issues: DirectXMath 3.03, DirectXMath 3.06, DirectXMath 3.07, DirectXMath 3.08, DirectXMath 3.10, DirectXMath 3.11