microsoft / vcpkg

C++ Library Manager for Windows, Linux, and MacOS
MIT License
22.74k stars 6.29k forks source link

directxsdk is no longer a valid port #15946

Closed walbourn closed 3 years ago

walbourn commented 3 years ago

The download referenced by https://github.com/microsoft/vcpkg/blob/master/ports/directxsdk/portfile.cmake no longer exists. It was removed along with all other SHA-1 content.

walbourn commented 3 years ago

Note also that the bulk of this content is already in the Windows SDK so there's no need for it to be in a vcpkg.

For XAudio2, the correct solution is to use XAudio2Redist instead:

For XNAMath, the correct solution is to use the directxmath port instead:

XACT; XAudio 2.7 or earlier; XInput 1.1, 1.2, or 1.3; and DirectSetup are all deprecated and should no longer be used at all. This port relied on the legacy DirectSetup (DXSETUP.EXE) which has also been removed from Microsoft Downloads due to SHA-1 retirement.

For DXERR.LIB, see this blog post.

For XDSP.H, see GitHub.

I'm working on a solution for the D3DX9/D3DX10/D3DX11 legacy libraries:

https://walbourn.github.io/where-is-the-directx-sdk-2021-edition/

Hoikas commented 3 years ago

The DirectX included with the Windows SDK removes a great many legacy features that many applications potentially rely on. Off the top of my head, they are DirectDraw and compiling Direct3D9 shaders from assembly. These seemingly have no upgrade paths that are publicly available. Perhaps the port should be updated to use archive.org instead of simply being deleted?

walbourn commented 3 years ago

Well the DirectX SDK including the one used in this port hasn't supported assembly shaders in many year. DirectDraw also works fine from the Windows SDK. IOW this port didn't support either of those things.

The only scenario that is an issue is D3DX which I'm working on finding a solution.

The redist that this port relies on is also no longer hosted on Microsoft servers.

walbourn commented 3 years ago

I'm also working on a port for the xaudio2redist

Hoikas commented 3 years ago

I just updated an application using the June 2010 DX SDK (the one in the port) to the Windows SDK version few months back, and the points I mentioned were the ones I had to work on the most :wink:. To be fair, it was Direct Draw 7, so really old. The application initially targeted a much older DirectX SDK from around 2004, so I don't know how relevant those points are, but I know from experience the math changes are very much trivial in comparison 😄 .

NancyLi1013 commented 3 years ago

Hi @walbourn and @Hoikas

Thanks for posting this issue and also joining the discussion.

@Hoikas Since it is the June 2010 Direct SDK that was moved into the Windows SDK. It's been 10 years and they are not interested in supporting it anymore and they no longer want to distribute it. Because it's literally a 10 years old SDK. We're going to switch to an empty port. If you find a hosted archive, we could consider restoring it, but in the meantime this is just it's not supported by the bars.

Thanks.

Hoikas commented 3 years ago

@NancyLi1013 As mentioned above, the DirectX libraries included in the Windows SDK do not include all of the DirectX SDK features. The DirectX SDK (June 2010) can still be downloaded from archive.org: https://archive.org/details/dxsdk_jun10

walbourn commented 3 years ago

I'm very mixed on the right choice here...

The real problem with the legacy DirectX SDK is that you don't need most of it, but people are always unclear on what exactly they DO need it for...

Using the archive is worthwhile for Windows XP because that's really the only option--to use the "xp" toolset in Visual C++ you are using the Windows 7.1A SDK and not the Windows 8/10 SDK so you end up on the 'before integration' side of the story.

But for Windows 7 or later, the better option is to completely avoid using the legacy DirectX SDK at all.

Another issue is that the archive.org does not have the legacy DirectSetup packages, so the only way to do deployment is to use the REDIST from the legacy DXSDK itself...

How about this for a proposed solution:

walbourn commented 3 years ago

For review https://github.com/microsoft/vcpkg/pull/16010