3DMigoto Upscaling Feature
  1 / 4    
You can post the games that are working and that are not working with the new upscaling feature, so we can try to improve the feature!
You can post the games that are working and that are not working with the new upscaling feature, so we can try to improve the feature!

#1
Posted 07/12/2017 10:54 AM   
For finding out whether a game is using normal CreateSwapChain calls, people can enable logging with calls=1 in the top of the d3dx.ini. We log the primary creation of objects like this, so it will be possible to see which is used. As a general rule, the most common creation is from D3D11CreateDeviceAndSwapChain, which is found in the D3D11Wrapper.cpp file. You'll probably want to add your creation there. HackerDXGIFactory::CreateSwapChain is actually more rare to be used by games. I should have noted this earlier.
For finding out whether a game is using normal CreateSwapChain calls, people can enable logging with calls=1 in the top of the d3dx.ini.

We log the primary creation of objects like this, so it will be possible to see which is used.


As a general rule, the most common creation is from D3D11CreateDeviceAndSwapChain, which is found in the D3D11Wrapper.cpp file.

You'll probably want to add your creation there. HackerDXGIFactory::CreateSwapChain is actually more rare to be used by games. I should have noted this earlier.

Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers

#2
Posted 07/12/2017 11:34 AM   
Games I tested so far: - The Crew, upscaling works great from 1440p to 4K with updated fix, no issues. - Assassin's Creed Unity (CM) stuck with the splash screen, doesn't start. - Assassin's Creed Syndicate (CM) works without an issue with upscaling from 1440p to 2160p. - RoT Tomb Raider, no 3DV fix just 3DMigoto 1.2.63 with enabled upscale, crashes at start. After enabling "allow_create_device=1", game works but 3DV is broken; one eye is black. - The Technomancer, game works but upscaling doesn't work, tried different combinations with upscaling settings but no change, interleaving lines are broken. - Watch Dogs 2 gave black screen for me, can hear sounds and see 3DV overlay and the ingame mouse cursor. Games tested by ColAngel: - Batman Arkham Origins, working - Far Cry 4, working - The Witcher 3, working - Tomb Raider 2013, not working, game does not run even with disabled upscaling mode, at least on my system (Seems to be another issue).
Games I tested so far:

- The Crew, upscaling works great from 1440p to 4K with updated fix, no issues.

- Assassin's Creed Unity (CM) stuck with the splash screen, doesn't start.

- Assassin's Creed Syndicate (CM) works without an issue with upscaling from 1440p to 2160p.

- RoT Tomb Raider, no 3DV fix just 3DMigoto 1.2.63 with enabled upscale, crashes at start. After enabling "allow_create_device=1", game works but 3DV is broken; one eye is black.

- The Technomancer, game works but upscaling doesn't work, tried different combinations with upscaling settings but no change, interleaving lines are broken.

- Watch Dogs 2 gave black screen for me, can hear sounds and see 3DV overlay and the ingame mouse cursor.


Games tested by ColAngel:

- Batman Arkham Origins, working

- Far Cry 4, working

- The Witcher 3, working

- Tomb Raider 2013, not working, game does not run even with disabled upscaling mode, at least on my system (Seems to be another issue).

Asus Deluxe Gen3, Core i7 2700k@4.5Ghz, GTX 1080Ti, 16 GB RAM, Win 7 64bit
Samsung Pro 250 GB SSD, 4 TB WD Black (games)
Benq XL2720Z

#3
Posted 07/12/2017 02:59 PM   
[quote="bo3b"] ... As a general rule, the most common creation is from D3D11CreateDeviceAndSwapChain, which is found in the D3D11Wrapper.cpp file. ... [/quote] Ok will take a look at it at week end! But already now i see a problem with the function: how do i create my fake swap chain without creating new device? there is no factory or is there a way to dig it somewhere out? Thx in advance! I ll also try to take a look at the games at week end!
bo3b said:

...

As a general rule, the most common creation is from D3D11CreateDeviceAndSwapChain, which is found in the D3D11Wrapper.cpp file.
...




Ok will take a look at it at week end! But already now i see a problem with the function: how do i create my fake swap chain without creating new device? there is no factory or is there a way to dig it somewhere out? Thx in advance!

I ll also try to take a look at the games at week end!

#4
Posted 07/12/2017 03:32 PM   
Mafia 3 (CM), works without an issue (1440p to 4K). Batman Arkham Knight (CM), game works but interleaving lines are broken. Resident Evil 6, game refuses to upscale, opens full screen but viewable area is in 1440p tried without the 3DV fix. Edit: Wrong info fixed.
Mafia 3 (CM), works without an issue (1440p to 4K).

Batman Arkham Knight (CM), game works but interleaving lines are broken.

Resident Evil 6, game refuses to upscale, opens full screen but viewable area is in 1440p tried without the 3DV fix.

Edit: Wrong info fixed.

Asus Deluxe Gen3, Core i7 2700k@4.5Ghz, GTX 1080Ti, 16 GB RAM, Win 7 64bit
Samsung Pro 250 GB SSD, 4 TB WD Black (games)
Benq XL2720Z

#5
Posted 07/13/2017 09:46 PM   
[quote="ColAngel"][quote="bo3b"]... As a general rule, the most common creation is from D3D11CreateDeviceAndSwapChain, which is found in the D3D11Wrapper.cpp file. ...[/quote]Ok will take a look at it at week end! But already now i see a problem with the function: how do i create my fake swap chain without creating new device? there is no factory or is there a way to dig it somewhere out? Thx in advance! I ll also try to take a look at the games at week end![/quote] For adding the support in the D3D111Wrapper.cpp, you should be able to use the same technique you did before. The actual call to D3D11CreateDeviceAndSwapChain will still need to be run. You'll just wrap the SwapChain part the way you want, and let the device go through. That routine is getting on the porky side, so adding this in will also make it less clear. Maybe see if you can abstract the creation process into a routine or the constructor for UpscalingSwapChain so that the regular path isn't changed too much.
ColAngel said:
bo3b said:...

As a general rule, the most common creation is from D3D11CreateDeviceAndSwapChain, which is found in the D3D11Wrapper.cpp file.
...
Ok will take a look at it at week end! But already now i see a problem with the function: how do i create my fake swap chain without creating new device? there is no factory or is there a way to dig it somewhere out? Thx in advance!

I ll also try to take a look at the games at week end!

For adding the support in the D3D111Wrapper.cpp, you should be able to use the same technique you did before. The actual call to D3D11CreateDeviceAndSwapChain will still need to be run. You'll just wrap the SwapChain part the way you want, and let the device go through.

That routine is getting on the porky side, so adding this in will also make it less clear. Maybe see if you can abstract the creation process into a routine or the constructor for UpscalingSwapChain so that the regular path isn't changed too much.

Acer H5360 (1280x720@120Hz) - ASUS VG248QE with GSync mod - 3D Vision 1&2 - Driver 372.54
GTX 970 - i5-4670K@4.2GHz - 12GB RAM - Win7x64+evilKB2670838 - 4 Disk X25 RAID
SAGER NP9870-S - GTX 980 - i7-6700K - Win10 Pro 1607
Latest 3Dmigoto Release
Bo3b's School for ShaderHackers

#6
Posted 07/16/2017 08:56 AM   
M[quote="bo3b"][quote="ColAngel"][quote="bo3b"]... As a general rule, the most common creation is from D3D11CreateDeviceAndSwapChain, which is found in the D3D11Wrapper.cpp file. ...[/quote]Ok will take a look at it at week end! But already now i see a problem with the function: how do i create my fake swap chain without creating new device? there is no factory or is there a way to dig it somewhere out? Thx in advance! I ll also try to take a look at the games at week end![/quote] For adding the support in the D3D111Wrapper.cpp, you should be able to use the same technique you did before. The actual call to D3D11CreateDeviceAndSwapChain will still need to be run. You'll just wrap the SwapChain part the way you want, and let the device go through. That routine is getting on the porky side, so adding this in will also make it less clear. Maybe see if you can abstract the creation process into a routine or the constructor for UpscalingSwapChain so that the regular path isn't changed too much.[/quote] My main considiration was, that i dindt want to create andother device and context. But after closer look in the documentation (and reading the comments in the d3dwrapper.cpp) i now know that you can pass null to the device and context and still get another swap chain. "...That routine is getting on the porky side,..." - I intend to add a new swap chain constructor. I thing it is the best way to keep the code as clear as possible. Do you know a cheap game that uses the function to test it (tried all my games nor of the uses it)? (Or i just use simple example from the rastertek tutorial).
M
bo3b said:
ColAngel said:
bo3b said:...

As a general rule, the most common creation is from D3D11CreateDeviceAndSwapChain, which is found in the D3D11Wrapper.cpp file.
...
Ok will take a look at it at week end! But already now i see a problem with the function: how do i create my fake swap chain without creating new device? there is no factory or is there a way to dig it somewhere out? Thx in advance!

I ll also try to take a look at the games at week end!

For adding the support in the D3D111Wrapper.cpp, you should be able to use the same technique you did before. The actual call to D3D11CreateDeviceAndSwapChain will still need to be run. You'll just wrap the SwapChain part the way you want, and let the device go through.

That routine is getting on the porky side, so adding this in will also make it less clear. Maybe see if you can abstract the creation process into a routine or the constructor for UpscalingSwapChain so that the regular path isn't changed too much.


My main considiration was, that i dindt want to create andother device and context. But after closer look in the documentation (and reading the comments in the d3dwrapper.cpp) i now know that you can pass null to the device and context and still get another swap chain.

"...That routine is getting on the porky side,..." - I intend to add a new swap chain constructor. I thing it is the best way to keep the code as clear as possible.

Do you know a cheap game that uses the function to test it (tried all my games nor of the uses it)?
(Or i just use simple example from the rastertek tutorial).

#7
Posted 07/17/2017 05:08 AM   
@lacuna: Could you please run the watch docs 2 with enabled logging (in the logging section set calls=1). Please do it with the clean version of the 3dmigoto (without the actuall fix and with disabled upscaling). So i can see what spawchain creation function is used by the game. After you activated it just run the game ones. Then open d3d11 log file and search for swapchain. you will find one of them: - D3D11CreateDeviceAndSwapChain - HackerDXGIFactory::CreateSwapChain - HackerDXGIFactory2::CreateSwapChainForHwnd - HackerDXGIFactory2::CreateSwapChainForCoreWindow - HackerDXGIFactory2::CreateSwapChainForComposition (However, the last three are not very likely) Thank you in advance! To the AC Unity: Unfortunatelly i had to take care of some other unexpected things. But I ll take a look at it as soon as i can find time for it!
@lacuna:

Could you please run the watch docs 2 with enabled logging (in the logging section set calls=1). Please do it with the clean version of the 3dmigoto (without the actuall fix and with disabled upscaling). So i can see what spawchain creation function is used by the game.
After you activated it just run the game ones. Then open d3d11 log file and search for swapchain.
you will find one of them:

- D3D11CreateDeviceAndSwapChain
- HackerDXGIFactory::CreateSwapChain
- HackerDXGIFactory2::CreateSwapChainForHwnd
- HackerDXGIFactory2::CreateSwapChainForCoreWindow
- HackerDXGIFactory2::CreateSwapChainForComposition

(However, the last three are not very likely)

Thank you in advance!


To the AC Unity: Unfortunatelly i had to take care of some other unexpected things. But I ll take a look at it as soon as i can find time for it!

#8
Posted 07/17/2017 05:25 AM   
I uploaded d3d11_log to a file hosting, hope it will be useful, good luck. http://www71.zippyshare.com/v/a9oRzocE/file.html
I uploaded d3d11_log to a file hosting, hope it will be useful, good luck.

http://www71.zippyshare.com/v/a9oRzocE/file.html

Asus Deluxe Gen3, Core i7 2700k@4.5Ghz, GTX 1080Ti, 16 GB RAM, Win 7 64bit
Samsung Pro 250 GB SSD, 4 TB WD Black (games)
Benq XL2720Z

#9
Posted 07/17/2017 05:59 AM   
@ColAngel be aware that WATCH_DOGS2 does some really weird stuff with their swap chain that causes the last few draw calls to only complete in one eye on a single GPU that I had to work around by redirecting the GUI to my own custom buffer and copying it to the back buffer myself (SLI was OK because both cards are drawing each eye simultaneously). 3DMigoto never sees the final copy to the back buffer that the game attempted - I believe they must (somehow) be doing that out of band.
@ColAngel be aware that WATCH_DOGS2 does some really weird stuff with their swap chain that causes the last few draw calls to only complete in one eye on a single GPU that I had to work around by redirecting the GUI to my own custom buffer and copying it to the back buffer myself (SLI was OK because both cards are drawing each eye simultaneously). 3DMigoto never sees the final copy to the back buffer that the game attempted - I believe they must (somehow) be doing that out of band.

2x Geforce GTX 980 in SLI provided by NVIDIA, i7 6700K 4GHz CPU, Asus 27" VG278HE 144Hz 3D Monitor, BenQ W1070 3D Projector, 120" Elite Screens YardMaster 2, 32GB Corsair DDR4 3200MHz RAM, Samsung 850 EVO 500G SSD, 4x750GB HDD in RAID5, Gigabyte Z170X-Gaming 7 Motherboard, Corsair Obsidian 750D Airflow Edition Case, Corsair RM850i PSU, HTC Vive, Win 10 64bit

Alienware M17x R4 w/ built in 3D, Intel i7 3740QM, GTX 680m 2GB, 16GB DDR3 1600MHz RAM, Win7 64bit, 1TB SSD, 1TB HDD, 750GB HDD

Pre-release 3D fixes, shadertool.py and other goodies: http://github.com/DarkStarSword/3d-fixes
Support me on Patreon: https://www.patreon.com/DarkStarSword or PayPal: https://www.paypal.me/DarkStarSword

#10
Posted 07/18/2017 12:41 PM   
@DarkStarSword: heh seems the game developer (engine developer) are not looking for simple ways :-) Thank you for the hint. However, i do not have the game. So can not do anything at the moment. @lacuna: The log file seems ok to me. The issue is probalby caused by the weird game implementation (thx to DarkStarSword) and requires special solution.
@DarkStarSword: heh seems the game developer (engine developer) are not looking for simple ways :-)
Thank you for the hint. However, i do not have the game. So can not do anything at the moment.

@lacuna: The log file seems ok to me. The issue is probalby caused by the weird game implementation (thx to DarkStarSword) and requires special solution.

#11
Posted 07/19/2017 07:00 AM   
@3dmigoto team: I m currently fighting with the ROTR upscaling. But i guess the issue I m runnging into applies to all games that uses direct mode. The issue is described on GitHub (issue #73). Seems I need to force the upscaling custom shader to run twice once per eye. Is there a way to achieve it with already available features? If i hack the code, it works until I change the game resolution within the game. After changing the resolution the image for the left eye gets correctly upscaled and the other one renders at it native resolution. Please take a look at it, if the time allows it. Maybe one of you have an better idea? Thank you very much in advance!
@3dmigoto team: I m currently fighting with the ROTR upscaling. But i guess the issue I m runnging into applies to all games that uses direct mode. The issue is described on GitHub (issue #73). Seems I need to force the upscaling custom shader to run twice once per eye.

Is there a way to achieve it with already available features?

If i hack the code, it works until I change the game resolution within the game. After changing the resolution the image for the left eye gets correctly upscaled and the other one renders at it native resolution.

Please take a look at it, if the time allows it. Maybe one of you have an better idea?
Thank you very much in advance!

#12
Posted 07/19/2017 07:11 AM   
can someone explain how to use this to downscale/upscale resolution? I am trying to get Final fantasy 14 to run at a lower res on my 4k lg 3d tv. Choosing the resolution in game to lower gives me a big black border.
can someone explain how to use this to downscale/upscale resolution? I am trying to get Final fantasy 14 to run at a lower res on my 4k lg 3d tv. Choosing the resolution in game to lower gives me a big black border.

#13
Posted 07/29/2017 07:22 PM   
Read the latest pages of 3Dmigoto's main thread.
Read the latest pages of 3Dmigoto's main thread.

Asus Deluxe Gen3, Core i7 2700k@4.5Ghz, GTX 1080Ti, 16 GB RAM, Win 7 64bit
Samsung Pro 250 GB SSD, 4 TB WD Black (games)
Benq XL2720Z

#14
Posted 07/30/2017 03:35 PM   
I'm trying to get upscaling working with Deus Ex: Human Revolution and failing badly. I managed to get it working with Quantum Break so I've been comparing ini and log files and making uneducated guesses to try and get it working :-) Ultimately, these are the errors I keep seeing in the log file: ------------------------------------------------------------------- ->Forcing Width to = 3840 ->Forcing Height to = 2160 HackerDevice::GetHackerContext returns 0AED6A38 Overlay::Overlay created for 0AC875E0 on HackerDevice: 0AF4EE70, HackerContext: 0AED6A38 HackerUpscalingSwapChain::HackerUpscalingSwapChain(): result -2147024809 *** HackerUpscalingSwapChain::HackerUpscalingSwapChain() failed HackerUpscalingSwapChain 0AF944D0 created to wrap 0AC875E0. -> HackerSwapChain = 0AF944D0 wrapper of ppSwapChain = 0AC875E0 ->UnhookableCreateSwapChain result 0 ->IDXGIFactory::CreateSwapChain return result 0 HackerSwapChain::QueryInterface(class HackerUpscalingSwapChain@0AF944D0) called with IID: IDXGISwapChain3 *** returns E_NOINTERFACE as error for IDXGISwapChain3. HackerSwapChain::GetContainingOutput(class HackerUpscalingSwapChain@0AF944D0) called returns result = 0 BUG: HackerUpscalingDXGISwapChain::GetBuffer(): Missing upscaling object ------------------------------------------------------------ As mentioned, I don't really know what I'm doing and maybe I'm doomed to failure with this game. I've tried the other upscaling mode (1) and the game just crashes at launch. Because of the wording of the errors, I've tried various hooking/wrapping options but just having no luck. I think I'm going round in circles now, the original fix had "hook=recommended skip_dxgi_factory skip_dxgi_device" in it, does that mean that it relies on some sort of hack that means this won't work?
I'm trying to get upscaling working with Deus Ex: Human Revolution and failing badly.
I managed to get it working with Quantum Break so I've been comparing ini and log files and making uneducated guesses to try and get it working :-)

Ultimately, these are the errors I keep seeing in the log file:

-------------------------------------------------------------------
->Forcing Width to = 3840
->Forcing Height to = 2160
HackerDevice::GetHackerContext returns 0AED6A38
Overlay::Overlay created for 0AC875E0
on HackerDevice: 0AF4EE70, HackerContext: 0AED6A38
HackerUpscalingSwapChain::HackerUpscalingSwapChain(): result -2147024809
*** HackerUpscalingSwapChain::HackerUpscalingSwapChain() failed
HackerUpscalingSwapChain 0AF944D0 created to wrap 0AC875E0.
-> HackerSwapChain = 0AF944D0 wrapper of ppSwapChain = 0AC875E0
->UnhookableCreateSwapChain result 0
->IDXGIFactory::CreateSwapChain return result 0

HackerSwapChain::QueryInterface(class HackerUpscalingSwapChain@0AF944D0) called with IID: IDXGISwapChain3
*** returns E_NOINTERFACE as error for IDXGISwapChain3.
HackerSwapChain::GetContainingOutput(class HackerUpscalingSwapChain@0AF944D0) called
returns result = 0
BUG: HackerUpscalingDXGISwapChain::GetBuffer(): Missing upscaling object
------------------------------------------------------------

As mentioned, I don't really know what I'm doing and maybe I'm doomed to failure with this game.

I've tried the other upscaling mode (1) and the game just crashes at launch.

Because of the wording of the errors, I've tried various hooking/wrapping options but just having no luck.
I think I'm going round in circles now, the original fix had "hook=recommended skip_dxgi_factory skip_dxgi_device" in it, does that mean that it relies on some sort of hack that means this won't work?

Gigabyte RTX2080TI Gaming OC, I7-6700k ~ 4.4Ghz, 3x BenQ XL2420T, BenQ TK800, LG 55EG960V (3D OLED), Samsung 850 EVO SSD, Crucial M4 SSD, 3D vision kit, Xpand x104 glasses, Corsair HX1000i, Win 10 pro 64/Win 7 64https://www.3dmark.com/fs/9529310

#15
Posted 04/02/2018 06:03 PM   
  1 / 4    
Scroll To Top