D3D12 Missing Features

Actually DS is the better port of the two games when it comes to performance and such.

1 Like

BTW, can I get some help testing something from users w/ AMD or Intel GPUs?

I believe NVIDIA’s drivers are implementing predicated rendering wrong. According to the D3D12 spec, these two DLLs should behave identically:

SpecialK64_predicate_not_equal_zero.7z (7.5 MB)
SpecialK64_predicate_equal_zero.7z (7.5 MB)

But on my NV hardware, NotEqualZero renders the overlay and EqualZero does not.

Predication is supposed to be disabled in both, so the test condition should not affect the output. This may be responsible for the flickering in Assassin’s Creed Valhalla.

1 Like

There’s a text for it if nothing else.

Unsure if hardware GPU scheduling affects anything or not but there are differences in what AMD and NVIDIA has as best practices so what the internals look like and especially some years later and how the respective GPU company handles or implements some of this will probably differ.

Anything else for this just having it draw the SpecialK overlay then?
Easy enough to test if that’s all. :slight_smile:

Equal Zero draws.
Not equal zero has it hidden.

EDIT: Let me just check that again because I have the opposite results it seems from your reports.
That must be amazing for retaining compatibility.

EDIT: Yeah that wasn’t wrong.

Not equal zero isn’t showing the overlay, equal zero does show it when toggled.

EDIT: Should really use a less intensive area for testing and it’s also raining but eh.

EDIT: Also post-patch or whatever is causing it the temporal little things can now be observed and it’s sorta annoying ha ha.

Kinda hard to do it right in a static image but there’s this “effect” like a shimmer or flicker on a lot of elements that makes the resulting output really noisy, earlier it was mostly the edges of the SSR or simplified it was mostly observed in the water sources. :slight_smile:

1 Like

Good to know. It’s a problem with the entire D3D12 runtime then.

I don’t think this is a very common scenario (turning predication off when it was already off), but it could create some weird results if this doesn’t get fixed.


Updated build with better AC Valhalla support

SpecialK64.7z (7.6 MB)

Drawing at arbitrary framerates should now be possible without SK’s overlay flickering. I also found and fixed a few deadlock issues in Serious Sam 4. Performance overhead is lower too.

2 Likes

Control DXR + HDR


I know I said I was avoiding ugly game-specific compat. hacks in the new D3D12 codebase, but so many people have been requesting Control + D3D12 + DXR ++ HDR support that I had to add one.

Control HDR (D3D12 + DXR) Compatible Build

       SpecialK64.7z (7.6 MB)

The problem with opening the game’s menu after a save has been loaded is ‘fixed’. Technically the framebuffer should be copied and displayed behind the menu, but that was crashing because the texture the game’s trying to copy to was 8-bit color and SK uses 16-bit color for HDR. I just skipped the copy operation, so it’s a black screen. It’s a minor inconvenience, I’ll consider fixing it the right way when I have more D3D12 games confirmed working.

3 Likes

Is this for Global injection compatibility? Or still local injection?

Edit: Nevermind its only for local. I am guessing flickering effect is due to something else lol.

This one have the above fix as well you posted for Valhalla?

Was that test on AMD card?

Yeah the 5700XT though that probably doesn’t matter too much.
Just bring up the SpecialK UI and with one of the files it shows the OSD and with the other the mouse cursor jumps a bit but the OSD doesn’t display it’s invisible. :slight_smile:

The Control build has the OSD working just fine if you’re wondering about that I just got done trimming some of the older settings and fixing a few of the config parameters I had set improperly. :slight_smile:

No stability issues either but that was just a two hour session in Valhalla for now, going to see about Watch_Dogs Legion eventually and at some point Yakuza Like a Dragon but that’s D3D11 and then there aren’t too many other D3D12 titles in the backlog.

Thought Cyberpunk 2077 had gotten delayed again but it seems to still be on track for December 10th, might be something to look into but probably wait on for a few months and see how the game is on launch and what a few updates plus the big “next-gen” update will bring even for the PC version.
(Maybe get a GPU upgrade in the meantime if that’s even remotely possible ha ha.)

I really wish D3D11On12 didn’t exist. It’s @#$%ing confusing trying to figure out a game’s render API on-the-fly when there’s D3D11 noise coming from RTSS and Steam :stuck_out_tongue:

That’s why the overlay behaves strangely / crashes sometimes when changing graphics settings. SK has to make a split second decision whether the game’s D3D12 or D3D11 and those overlays are not making it easy.

Much easier when you put dxgi.dll in the game’s directory, the game will load it up before those non-native D3D12 overlays start mucking things up. I have absolutely no idea why Steam’s overlay isn’t D3D12 native, it’s not even rendered inside the game – the only thing the overlay does is transfer images rendered in another application and stretch them over the game. That’s trivial to make D3D12 native.

put the dxgi.dll on the Control (Game) folder and when start DX11 works, DX12 dont.

I would want to test it with Forza Horizon 4 (Microsoft Store game), but only way to do that I know is to use SKIF. How can I make SKIF use this DLL for DX12 games, so I can test MS Store games?

Make sure you use proper settings.

i only put the dxgi.dll on the Control folder and when hit DX11 the SK show up, when hit DX12 dont. what proper settings should i be using? Before starting the game or after SK configuration?

Special K works for me in Control DX12.

Maybe you could try starting from scratch, deleting dxgi.ini and let Special K generate a now one.

It might take a couple tries though. For me, the game will close down the first time launching the game + Special K without dxgi.ini.
But the second launch, after dxgi.ini was generated, the game runs properly with Special K.

2 Likes

Ok. I delete “dxgi.ini”. I drag “dxgi.dll” to Control folder. Only “dxgi.dll”. Launch the game in DX12. The SK dont show up. I try several times. (if i launch in DX11, SK do popup)
Do i need others files to proper install SK? I never see SK work like global injection, only local.

As I shake my head about this subject, I realized something curious that might interest everyone: I have a Samsung Q80. Her behavior has always been; if a game has HDR it activates HDR alone. If I turn off the HDR in the game the TV will switch to SDR. Okay. Okay.

I don’t know if it was a TV or Nvidia update, but if I put HDR in Windows and then run Control, TV or Nvidia (I don’t know) forces HDR in the game that doesn’t have HDR, understand?

I tested several games that do not have HDR, old enough to ensure that HDR does not exist there (Limbo, Inside, Control, RE Remake). And in all cases the HDR is forced into the game, changing the gamma of colors, contrast and peak brightness.

And before, and ever since, TV behavior was; even if I turned on HDR on windows and then ran the game, if this game didn’t have HDR the TV would simply switch to SDR on its own.

Curious…

Maybe the TV received an update, or Nvidia, or I’m going crazy.

It has to do with Windows, its automatic SDR->HDR conversion, as well as the game itself and whether it makes use of NVAPI or not to enable HDR.

A few key things to note before I get into the gritty details:

  • Games running in borderless/window mode will not override the display mode set in Windows.

  • Games running in exclusive fullscreen mode can override the display mode set in Windows.

  • Windows 10 v1803 and later includes automatic SDR->HDR conversion to prevent SDR content from looking dim and washed out when HDR is enabled for a display.

  • Nvidia’s NVAPI allows games to force HDR mode on a display without having to enable it in Windows itself.

What the above means is the following:

  • If HDR is enabled for a display in Windows 10, and the game is running in borderless/window mode, the operating system will automatically convert SDR to HDR output to prevent the game from looking grey/washed out. This is what’s typically known as “fake HDR” as there’s no additional gain or brightness to be ha. It’s similar to e.g. resizing a 720p image to 4K – you will get a larger image but the details will still limited by what was present in the 720p image.

  • When HDR is enabled for a display in Windows 10, if a SDR game is running in exclusive fullscreen mode it will tell Windows to switch over to a SDR display mode, thereby disabling HDR.

  • When HDR is disabled for a display in Windows 10, games making use of the NVAPI to enable HDR can forcefully enable HDR mode for the display – in both borderless/window and exclusive fullscreen mode.

So the various different results you’re seeing is based on the above factors.


If we assume HDR was disabled for the display in Windows, this means the game that you’re seeing this behavior in makes use of Nvidia’s NVAPI to forcefully enable HDR for the display.


Both of the above scenarios are Windows 10’s SDR->HDR conversion at play. It’s a simple changing of the scale basically – you don’t actually get anything more out of the experience. It’s solely there to prevent SDR from looking grey/washed out as it did in earlier versions of Windows 10 (before v1803). So called “fake HDR” in a nutshell.

Special K’s retrofitting of HDR actually enables games to make use of the expanded dynamic range that HDR has – and is basically a more “proper” form of HDR.

Edit:

Note that beyond the above, the TV might also be configured to a “Vivid” or “Enhanced” mode/preset which further expands and manipulates the colors and brightness of the image. This is basically where the TV takes the “HDR” output from Windows and then artificially manipulates it to create more contrast where non existed previously. This doesn’t mean that the game is actually using HDR natively though – it just means the TV is taking the SDR->HDR image sent to it and throws some additional post-processing effects on top of it to create a (technically) fake but more “vivid” HDR experience.

SDR (game) → HDR (Windows) → Vivid HDR (TV) does not mean the game itself makes use of HDR natively.


This means the game is running in exclusive fullscreen mode, which allows it to override the display mode to a SDR one.

1 Like

Turn off Rivatuner Statistics Server, then it works. Also launch DX12 directly don’t use the launcher.

great…
Here I was studying about Servers only to stumble upon complete Greatness… Can’t wait to dabble with what you’ve given us on this early d12 build!!

Thank you & will keep ya posted~!

1 Like