Jump to content

Some questions about DX12 programming for Windows 7

Delicieuxz

Cyberpunk 2077 will only run with DirectX 12

 

"Thanks to the introduction of DX12 support for Windows 7 SP1 that Microsoft introduced last year, the game will run on this system. We do, and will continue to, test Cyberpunk 2077 on Windows 7 in an attempt to iron out any edge-cases that might arise."

 

 

I find it interesting that CD Projekt are making Cyberpunk 2077 Windows 7-compatible despite it being a DX12-only game, and these are just general questions I have:

 

Microsoft added DX 12 support to Windows 7 in 2019. But is it a limited version of DX 12 and lacking important aspects, and would making a DX 12 game run in Windows 7 impose any limitations on its overall usage of DX12?

 

Is DXGI Flip only available in Windows 8 and 10, and not available in Windows 7? Windows 7 had its own earlier implementation of the DX flip method, but is this is only available when using D3D9 and not when using DX 10, 11, and 12? And if it isn't, does that mean that a game made to be Win 7-compatible has to use an alternate method of retrieving the buffer information? Also, is it a notable downgrade if the flip method cannot be used?

 

Are there any critical or important DX12 features which would not be able to be used if making a DX12 game compatible with Windows 7?

 

When a game is made to be compatible with Windows 7, does the best-possible Windows 10 implementation of it suffer in any notable way?

You own the software that you purchase - Understanding software licenses and EULAs

 

"We’ll know our disinformation program is complete when everything the american public believes is false" - William Casey, CIA Director 1981-1987

Link to comment
Share on other sites

Link to post
Share on other sites

11 minutes ago, Delicieuxz said:

Cyberpunk 2077 will only run with DirectX 12

 

does the best-possible Windows 10 implementation of it suffer in any notable way?

what kind of idea is that?!

no, modern softwares are being developed ON and FOR windows 10 everyday.

| CPU: Core i7-8700K @ 4.89ghz - 1.21v  Motherboard: Asus ROG STRIX Z370-E GAMING  CPU Cooler: Corsair H100i V2 |
| GPU: MSI RTX 3080Ti Ventus 3X OC  RAM: 32GB T-Force Delta RGB 3066mhz |
| Displays: Acer Predator XB270HU 1440p Gsync 144hz IPS Gaming monitor | Oculus Quest 2 VR

Link to comment
Share on other sites

Link to post
Share on other sites

That's not really how development works. Support means it will run based on that software and if a OS has support for the layers the game needs (DX12 in this case) the only impact the OS will have will be its handling of hardware/drivers. Generally speaking atleast.

Link to comment
Share on other sites

Link to post
Share on other sites

I'd suspect they're doing it in such a way that the game detects which OS is being used, then disables or works around any DX12 features that aren't available in Windows 7, so no compromises made when on Windows 10.

 

On the other hand, I've got no idea why CD Projekt are bothering with Windows 7 support at all, given it's EOL. And for that matter I don't know why Microsoft bothered bringing DX12 to Windows 7 less than a year before its EOL.

¯\_(ツ)_/¯

 

 

Desktop:

Intel Core i7-11700K | Noctua NH-D15S chromax.black | ASUS ROG Strix Z590-E Gaming WiFi  | 32 GB G.SKILL TridentZ 3200 MHz | ASUS TUF Gaming RTX 3080 | 1TB Samsung 980 Pro M.2 PCIe 4.0 SSD | 2TB WD Blue M.2 SATA SSD | Seasonic Focus GX-850 Fractal Design Meshify C Windows 10 Pro

 

Laptop:

HP Omen 15 | AMD Ryzen 7 5800H | 16 GB 3200 MHz | Nvidia RTX 3060 | 1 TB WD Black PCIe 3.0 SSD | 512 GB Micron PCIe 3.0 SSD | Windows 11

Link to comment
Share on other sites

Link to post
Share on other sites

1 minute ago, i_build_nanosuits said:

what kind of idea is that?!

no, modern softwares are being developed ON and FOR windows 10 everyday.

I think you mistook what I was saying. The question there is, does making a Windows 10 game be compatible for Windows 7 mean that the Windows 10 implementation of it will have to suffer in some way in order for it to have compatibility with Windows 7.

You own the software that you purchase - Understanding software licenses and EULAs

 

"We’ll know our disinformation program is complete when everything the american public believes is false" - William Casey, CIA Director 1981-1987

Link to comment
Share on other sites

Link to post
Share on other sites

4 minutes ago, BobVonBob said:

I'd suspect they're doing it in such a way that the game detects which OS is being used, then disables or works around any DX12 features that aren't available in Windows 7, so no compromises made when on Windows 10.

So, there are DX12 features that aren't available on Windows 7? Anything important?

 

What about DXGI Flip in particular - is that method not possible in Windows 7 outside of its D3D9 implementation?

 

 

blt-flip-mode-present.png

You own the software that you purchase - Understanding software licenses and EULAs

 

"We’ll know our disinformation program is complete when everything the american public believes is false" - William Casey, CIA Director 1981-1987

Link to comment
Share on other sites

Link to post
Share on other sites

3 minutes ago, Delicieuxz said:

So, there are DX12 features that aren't available on Windows 7? Anything important?

 

What about DXGI Flip in particular - is that method not possible in Windows 7 outside of its D3D9 implementation?

 

-snip-

Oh I thought you were stating Windows 7 had a limited feature set, not asking if it did. In that case I would expect Windows 7 to be completely feature compatible until some sort of major update, since Windows 7 isn't getting updates anymore.

 

DX12 can only display using flip-model, so I'd expect it was added to Windows 7 along with DX12 compatibility. Those dev docs haven't been updated since 2018 after all.

¯\_(ツ)_/¯

 

 

Desktop:

Intel Core i7-11700K | Noctua NH-D15S chromax.black | ASUS ROG Strix Z590-E Gaming WiFi  | 32 GB G.SKILL TridentZ 3200 MHz | ASUS TUF Gaming RTX 3080 | 1TB Samsung 980 Pro M.2 PCIe 4.0 SSD | 2TB WD Blue M.2 SATA SSD | Seasonic Focus GX-850 Fractal Design Meshify C Windows 10 Pro

 

Laptop:

HP Omen 15 | AMD Ryzen 7 5800H | 16 GB 3200 MHz | Nvidia RTX 3060 | 1 TB WD Black PCIe 3.0 SSD | 512 GB Micron PCIe 3.0 SSD | Windows 11

Link to comment
Share on other sites

Link to post
Share on other sites

53 minutes ago, Delicieuxz said:

I think you mistook what I was saying. The question there is, does making a Windows 10 game be compatible for Windows 7 mean that the Windows 10 implementation of it will have to suffer in some way in order for it to have compatibility with Windows 7.

ohhhh, yeah i did not get it that way.

In that sense, yeah i think there are some functions that probably could encounter fatal stability or compatibility issues that could require more work from the developers to make it fully compatible with an older operating system...yeah!

 

I think they do that mostly so that they don't have to cover too far back for old hardware and operating systems.

Whenever you design a very complicated piece of softwares like those newer modern games, you wan't the user base to be running on similar hardware/operating system to what the application was developed on, for, and tested and validated on.

 

That's why, it will probably run better and be better optimized for a higher-end multicore intel CPU platform and high end RTX nvidia graphics cards...because this is what it was coded and optimized on and for, as well.

| CPU: Core i7-8700K @ 4.89ghz - 1.21v  Motherboard: Asus ROG STRIX Z370-E GAMING  CPU Cooler: Corsair H100i V2 |
| GPU: MSI RTX 3080Ti Ventus 3X OC  RAM: 32GB T-Force Delta RGB 3066mhz |
| Displays: Acer Predator XB270HU 1440p Gsync 144hz IPS Gaming monitor | Oculus Quest 2 VR

Link to comment
Share on other sites

Link to post
Share on other sites

The Flip model was tested out in Windows 7 in a late update to D3DX11. AFAIK the only ancillary requirement to support the flip model in either API is that the Desktop Window Manager supports it (and of course the necessary device driver implementations from GPU vendors :) )

Both Windows 7 and Windows 10 use the DWM. Since DWM support is required for the DirectX12 flip model to function, I would go so far as to say that Microsoft was required to update the Windows 7 DWM to support all types of the flip model that DirectX12 supported at that time, since by simple logic those DWM updates are required to get the flip model working. There have been no additions or breaking changes to that portion of the D3DX12 API since it's introduction, so I would venture to guess that Windows 7 supports the flip model as well as Windows 10 does.

However, I can't find any documentation that even mentions D3DX12 on Windows 7, except for the statements that said that they were adding support for D3DX12 to Windows 7.

 

As for the rest of the game, I think it's silly to be worried about:

REDengine4 also supports PS4, PS5, XBONE, Stadia, <whatever the new Xbox is called>. I would be much more worried about performance hits that arise from console support than I would be from performance hits arising from Windows 7 support.

But beyond that, I bet there's completely different implementations of low level engine components for each platform, and I'd bet that each of those versions is highly optimized for the specific platform it is aimed at. CDPR is extremely good at developing ground breaking games, if history is anything to go by. I guess you could say that I don't think that we should shoot the horse before we find out if it has a lame leg, which seems to be what we are trying to do here.

ENCRYPTION IS NOT A CRIME

Link to comment
Share on other sites

Link to post
Share on other sites

I just came across some additional information. Does this information mean that Flip mode actually isn't available in Windows 7 outside of D3D9?

 

https://microsoft.github.io/DirectX-Specs/d3d/D3D12onWin7.html

Quote

D3D12 on Windows 7 requires different Present APIs. Specifically, attempting to create a DXGI swapchain on a D3D12 device or queue will fail on Windows 7, because DXGI is not updated as part of this package.

 

As an alternative, you should use ID3D12CommandQueueDownlevel::Present. Note that this API only supports windowed blt presents, not fullscreen exclusive or any other mode. The application is responsible for window management, this API will not send messages nor manipulate window properties in any way. The resource that the application provides should not be multisampled, must be committed, and must be in a “displayable” format, one of the following:

 

You own the software that you purchase - Understanding software licenses and EULAs

 

"We’ll know our disinformation program is complete when everything the american public believes is false" - William Casey, CIA Director 1981-1987

Link to comment
Share on other sites

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×