-
Notifications
You must be signed in to change notification settings - Fork 6.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[dxsdk-d3dx/directxsdk] Add message to handle the conflicts between these two ports #20286
Conversation
Stupid question: What exactly is the difference between these two ports? Should there even be two ports? |
@walbourn |
TL;DR: The dxsdk-d3dx and directxsdk ports are mutually exclusive, and use of directxsdk is strongly discouraged. The directxsdk port was explicitly removed from CI coverage. The legacy DirectX SDK is deprecated, and many of the headers in it conflict with the modern Windows SDK providing much older versions of the headers. About the only scenario where the legacy directxsdk port is called for is if you are using XAudio 2.7 on Windows XP or the deprecated XACT engine. Using the legacy DirectX SDK adds dependencies on the legacy DirectX End User Redistributable which contains SHA-1 only signed payload DLLs, and XInput 1.3 has a known security bug See this blog post for the details. This is why the direcxtsdk port contains this line:
I've done the best I can providing features for the deprecated directxsdk port per the instructions in this blog post for the few scenarios where it's still called for, but by in large developers should move away from using it at all. The recommendations are that new projects should not use either dxsdk-d3dx or directxsdk, and instead use any of the many open source replacements directxtk, directxtex, directxmesh, uvatlas, directxmath, etc. per this blog post for D3DX. For XAudio2 on Windows 7 or later, the xaudio2redist port is the right choice. For XInput, developers should use the original inbox XInput 9.1.0 for Windows 7 or later, or XInput 1.4 for Windows 8 or later because XInput 1.3 has known security bugs, and the feature differences between 9.1.0 are all focused on unused stuff like Xbox 360 headset audio through a controller. The dxsdk-d3dx port exists as a compromise for developers who still make use of the legacy D3DX9/D3DX10/D3DX11 because they have older codebases, are using older tutorials, or simply don't want to rewrite for the new solutions. This port contains only the D3DX headers and has no header conflicts with the modern Windows SDK. Furthermore, it includes SHA-256 payload DLLs with a side-by-side license that means the use of this port does not require any use of the legacy DIrectX End User Runtime Redistributable package. See this blog post. |
My recommendation is to move the FATAL_ERROR about the conflict to after the deprecation message, otherwise looks great to me. Thanks. |
Looks good, thanks for the better error message! |
Describe the pull request
What does your PR fix?
In our CI test, dxsdk-d3dx failed with following error:For fixing this issue, I add message to handle the conflicts between these two ports .
BTW, directxsdk:x64-windows and directxsdk:x86-windows has been skipped in ci.baseline.txt.
No feature need to be tested.