Note that the GitHub, vcpkg, and NuGet links above point to DirectXMath 3.16b which is a hot-fixed version compared to the Windows 10 SDK (20348) copy of DirectXMath 3.16. This includes a few minor syntax fixes to support clang/LLVM and GNUC for the ARM64 platform. There are no functional differences.
There was no Windows 10 SDK release that included version 3.15 beyond the Insider Program, but 3.16 obviously includes all these changes as well:
XMMatrixVectorTensorProductfor creating a matrix from two vectors.
- Use of
__m256registers and FMA3 with
/arch:AVX2for stream and some matrix functions.
- Optimized load/stores for SSE2 float2 & float3 functions.
- Optimized some instruction choices for better AMD CPU support. If you want to favor Intel like the older code did in these cases, you can define the preprocessor symbol
- Improved conformance for clang/LLVM, GCC, and MinGW compilers.
- More use of constexpr and noexcept.
- Support for the Visual C++ 2015 compiler toolset was removed.
This release includes several bug fixes:
- Fixed denorm handling for
XMConvertFloatToHalfto match F16C/CVT16 instructions.
- Fixed flush (too small for denorm) handling for
- Fixed clamping bug in
GXMVECTORfor the x86
__vectorcallcalling-convention to use the in-register passing.
- Cleaned up ARM-NEON intrinsics type issues for improved portability on GNUC.
It also includes new functionality:
XMVectorExp10functions (already had base-2 and base-e versions)
XMColorYUVToRGB_UHDfor Rec. 2020 YUV
- Added optional rhcoords parameter for
BoundingFrustum::CreateFromMatrixwhich previously only supported left-handed projection matrices.
With VS 2019, there is now optional use of the Intel® Short Vector Matrix Library (SVML). This library provides highly optimized versions of SIMD sin, cos, tan, asin, acos, atan, sinh, cosh, tanh, exp, log, and pow functions. This library is ‘vendor-neutral’ so it works well on all x86/x64 compatible CPUs. For more information on SVML and Visual Studio, see this blog post.
- For the Windows 10 SDK version of DirectXMath 3.16, you enable SVML usage by defining the preprocessor symbol
- For the other versions, SVML use is enabled automatically with VS 2019. You can opt-out of using it by defining the symbol