core: Remove __uuidof() emulation.
[vkmodelviewer.git] / DirectXMath / README
blob244a79f89ae94cae49bb62032414b31c86f2726d
1 -----------
2 DirectXMath
3 -----------
5 Copyright (c) Microsoft Corporation. All rights reserved.
7 June 2017
9 This package contains the DirectXMath library, an all inline SIMD C++ linear algebra library
10 for use in games and graphics apps
12 This code is designed to build with Visual Studio 2013, 2015, or 2017. It is recommended that you
13 make use of the latest updates (VS 2013 Update 5 or VS 2015 Update 3).
15 These components are designed to work without requiring any content from the DirectX SDK. For details,
16 see "Where is the DirectX SDK?" <http://msdn.microsoft.com/en-us/library/ee663275.aspx>.
18 Inc\
19     DirectXMath Files (in the DirectX C++ namespace)
20         DirectXMath.h - Core library
21         DirectXPackedVector.h - Load/Store functions and types for working with various compressed GPU formats
22         DirectXColors.h - .NET-style Color defines in sRGB color space
23         DirectXCollision.h - Bounding volume collision library
25 Extentions\
26     Advanced instruction set variants for guarded codepaths
27         DirectXMathSSE3.h - SSE3
28         DirectXMathBE.h - Supplemental SSE3 (SSSE3)
29         DirectXMathSSE4.h - SSE4.1
30         DirectXMathAVX.h - Advanced Vector Extensions (AVX)
31         DirectXMathAVX2.h - Advanced Vector Extensions 2 (AVX2)
32         DirectXMathF16C.h - Half-precision conversions (F16C)
33         DirectXMathFMA3.h - Fused multiply-accumulate (FMA3)
34         DirectXMathFMA4.h - Fused multiply-accumulate (FMA4)
36 SHMath\
37     Spherical Harmonics math functions
38         DirectXSH.h - Header for SHMath functions
39         DirectXSH.cpp, DirectXSHD3D11.cpp - Implementation
41 XDSP\
42     XDSP.h - Digital Signal Processing helper functions
44 All content and source code for this package are subject to the terms of the MIT License.
45 <http://opensource.org/licenses/MIT>.
47 Documentation is available at <https://msdn.microsoft.com/en-us/library/windows/desktop/hh437833.aspx>.
49 For the latest version of DirectXMath, bug reports, etc. please visit the project site.
50 <https://github.com/Microsoft/DirectXMath>
52 This project has adopted the Microsoft Open Source Code of Conduct. For more information see the
53 Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.
55 https://opensource.microsoft.com/codeofconduct/
58 ---------------
59 RELEASE HISTORY
60 ---------------
62 June 2017 (3.11)
63     AVX optimization of XMMatrixMultiply and XMMatrixMultiplyTranspose
64     AVX2 optimization for XMVectorSplatX
65     FMA3 optimization of XMVectorMultiplyAdd and XMVectorNegativeMultiplySubtract (implied by /arch:AVX2)
66     Conformance fixes to support compilation with Clang 3.7
68 January 2017 (3.10)
69     Added XMVectorSum for horizontal adds
70     ARMv8 intrinsics use for ARM64 platform (division, rounding, half-precision conversion)
71     Added SSE3 codepaths using opt-in _XM_SSE3_INTRINSICS_
72     XMVectorRound fix for no-intrinsics to match round to nearest (even)
73     XMStoreFloat3SE fix when max channel isn't a perfect power of 2
74     constexpr conformance fix and workaround for compiler bug in VS 2015 RTM
75     Remove support for VS 2012 compilers
76     Remove __vector4i deprecated type
78 June 2016 (3.09)
79     Includes support for additional optimizations when built with /arch:AVX or /arch:AVX2
80     Added use of constexpr for type constructors, XMConvertToRadians, and XMConvertToDegrees
81     Marked __vector4i, XMXDEC4, XMDECN4, XMDEC4, and associated Load & Store functions as deprecated.
82         These are vestiges of Xbox 360 support and will be removed in a future release
83     Renamed parameter in XMMatrixPerspectiveFov* to reduce user confusion when relying on IntelliSense
84     XMU565, XMUNIBBLE4 constructors take uint8_t instead of int8_t
86 May 2016
87     DirectXMath 3.08 released under the MIT license
89 November 2015 (3.08)
90     Added use of _mm_sfence for Stream methods
91     Fixed bug with non-uniform scaling transforms for BoundingOrientedBox
92     Added asserts for Near/FarZ in XMMatrix* methods
93     Added use of =default for PODs with VS 2013/2015
94     Additional SSE and ARM-NEON optimizations for PackedVector functions
96 April 2015 (3.07)
97     Fix customer reported bugs in BoundingBox methods
98     Fix customer reported bug in XMStoreFloat3SE
99     Fix customer reported bug in XMVectorATan2, XMVectorATan2Est
100     Fix customer reported bug in XMVectorRound
102 October 2013 (3.06)
103     Fixed load/store of XMFLOAT3SE to properly match the DXGI_FORMAT_R9G9B9E5_SHAREDEXP
104     Added XMLoadUDecN4_XR and XMStoreUDecN4_XR to match DXGI_FORMAT_R10G10B10_XR_BIAS_A2_UNORM
105     Added XMColorRGBToSRGB and XMColorSRGBToRGB to convert linear RGB <-> sRGB
107 July 2013 (3.05)
108     Use x86/x64 __vectorcall calling-convention when available (XM_CALLCONV, HXMVECTOR, FXMMATRIX introduced)
109     Fixed bug with XMVectorFloor and XMVectorCeiling when given whole odd numbers (i.e. 105.0)
110     Improved XMVectorRound algorithm
111     ARM-NEON optimizations for XMVectorExp2, XMVectorLog2, XMVectorExpE, and XMVectorLogE
112     ARM-NEON code paths use multiply-by-scalar intrinsics when supported
113     Additional optimizations for ARM-NEON Stream functions
114     Fixed potential warning C4723 using operator/ or operator/=
116 March 2013 (3.04)
117     XMVectorExp2, XMVectorLog2, XMVectorExpE, and XMVectorLogE functions added to provide base-e support in addition to the existing base-2 support
118     XMVectorExp and XMVectorLog are now aliases for XMVectorExp2 and XMVectorLog2
119     Additional optimizations for Stream functions
120     XMVector3Cross now ensures w component is zero on ARM
121     XMConvertHalfToFloat and XMConvertFloatToHalf  now use IEEE 754 standard float16 behavior for INF/QNAN
122     Updated matrix version Transform for  BoundingOrientedBox  and  BoundingFrustum  to handle scaling
124 March 2012 (3.03)
125     Breaking change: Removed union members from XMMATRIX type to make it a fully 'opaque' type
126     Marked single-parameter C++ constructors for XMFLOAT2, XMFLOAT2A, XMFLOAT3, XMFLOAT3A, XMFLOAT4, and XMFLOAT4A explicit
128 February 2012 (3.02)
129     ARM-NEON intrinsics (selected by default for the ARM platform)
130     reworked XMVectorPermute, change of XM_PERMUTE_ defines, removal of XMVectorPermuteControl
131     Addition of XM_SWIZZLE_ defines
132     Optimizations for transcendental functions
133     Template forms for permute, swizzle, shift-left, rotate-left, rotation-right, and insert
134     Removal of deprecated types and functions
135         (XM_CACHE_LINE_SIZE define, XMVectorExpEst, XMVectorLogEst, XMVectorPowEst, XMVectorSinHEs, XMVectorCosHEst, XMVectorTanHEst,
136          XMVector2InBoundsR, XMVector3InBoundsR, XMVector4InBoundsR)
137     Removed XM_STRICT_VECTOR4; XMVECTOR in NO-INTRINSICS always defined without .x, .y, .z, .w, .v, or .u
138     Additional bounding types
139     SAL fixes and improvements
141 September 2011 (3.00)
142     Renamed and reorganized the headers
143     Introduced C++ namespaces
144     Removed the Xbox 360-specific GPU types
145         (HENDN3, XMHEND3, XMUHENDN3, XMUHEND3, XMDHENN3, XMDHEN3,
146          XMUDHENN3, XMUDHEN3, XMXICON4, XMXICO4, XMICON4, XMICO4, XMUICON4, XMUICO4 )