Commit Graph

175 Commits

Author SHA1 Message Date
Philip Rebohle 832b3a9dba
[hud] Render HUD directly to swap chain image
Saves a fullscreen render target, render pass, and a queue submission.
2018-06-28 01:00:07 +02:00
Philip Rebohle 9cae049b53
[dxvk] Move adapter list to the DXVK instance 2018-06-26 12:33:26 +02:00
Philip Rebohle 4f28d57352
[dxvk] Remove unused rasterizer discard state flag 2018-06-25 16:56:52 +02:00
Philip Rebohle 7fa26f1c87
[d3d11] Implement render pass spilling for UAV rendering
Spilling the render pass should make shader storage buffer/image writes
visible due to how external subpass dependencies are defined. For UAV
rendering, we need to do this when changing the UAVs, even if the render
targets themselves do not change.
2018-06-15 20:49:24 +02:00
Philip Rebohle 7a22fa22a7
[dxgi] FindClosestMatchingMode: Handle Width/Height = 0 case
When an applicationn calls this method with the width or height
set to 0, we are allowed to pick any resolution, so we'll try to
find one close to the *current* display mode which usually returns
the current display mode itself.
2018-06-14 11:34:17 +02:00
Philip Rebohle fc3ff78083
[dxgi] Map typeless formats to their UNORM variants by default
Works around some annoyances with RenderDoc.
2018-06-12 22:35:02 +02:00
Philip Rebohle e8ac81fe8a
[dxvk] Removed support for depth bounds test
This feature is not used in D3D11, so we don't need backend support.
2018-06-06 13:11:09 +02:00
Philip Rebohle e615fc19a9
[dxgi] Support SyncInterval values > 1
Required for Eve Online and the Unity Blacksmith demo.
2018-05-28 21:06:35 +02:00
Philip Rebohle 23ba3e228a
[dxgi] Add option for deferred surface creation
Deferred surface creation is required for Frostpunk due to conflicts
with the D3D9 swap chain created by the game before it presents the
first frame to the DXGI swap chain, but breaks NieR:Automata due to
threading issues.
2018-05-24 12:31:21 +02:00
Philip Rebohle 66db3e8714
[dxgi] Add app-specific DXGI options 2018-05-24 12:31:04 +02:00
Philip Rebohle 61049c33fb
[dxgi] Reduce reported VRAM on 32-bit platforms
This is closer to what Windows does, and some applications may have
trouble with more than 3GB VRAM.
2018-05-24 10:48:06 +02:00
Philip Rebohle 38c5e57025
[dxgi] Refactor Vulkan swap chain and surface creation
Creating the Vulkan surface at the latest possible moment fixes
an issue with Frostpunk, which renders to a D3D9 swap chain
before presenting to the GXGI swap chain.
2018-05-23 13:03:12 +02:00
Philip Rebohle 531732fe91
[dxgi] Add IDXGIFactory2 to supported interfaces 2018-05-23 01:32:52 +02:00
Philip Rebohle d1b705bf0d
[dxgi] Implemented IDXGISwapChain1 2018-05-23 01:06:34 +02:00
Philip Rebohle 58fa815926
[dxgi] Fixed error message formatting in DxgiDevice 2018-05-22 23:52:12 +02:00
Philip Rebohle 56e7389495
[dxgi] Stubbed out IDXGIFactory2 2018-05-22 23:52:03 +02:00
Philip Rebohle 5a61d81135
[dxgi] Stubbed out IDXGISwapChain1 2018-05-22 23:50:28 +02:00
Philip Rebohle 979ba2d7c6
[dxgi] Implemented IDXGIAdapter2 2018-05-22 23:48:07 +02:00
Philip Rebohle 3c611503d6
[dxgi] Fix reported VRAM size for 32-bit builds 2018-05-07 19:04:25 +02:00
Philip Rebohle 757be61b70
[dxgi] Use per-adapter format lookup tables
Allows Nvidia cards to use 24-bit depth buffers.
2018-05-06 13:12:30 +02:00
Philip Rebohle fb3dbd8bcd
[d3d11] Relaxed view format compatibility check
Fixes regressions in multiple games. MSDN docs regarding
format compatibility are wrong in every way.
2018-05-05 20:16:01 +02:00
Philip Rebohle e1a27faa4a
[dxgi] Added DXGI format family info 2018-05-05 12:57:22 +02:00
Philip Rebohle fe24d76fd0
[dxgi] Report D3D10 support only when DXVK_FAKE_DX10_SUPPORT is set
Should fix a regression in Assassin's Creed 4: Black Flag.
2018-05-05 00:48:35 +02:00
Philip Rebohle 94b74667e9
[dxgi] Fix Fullscreen->Windowed transition (again)
We need to preserve the flags if the application changes them.
This is in line with what native DXGI does.
2018-05-04 21:55:38 +02:00
Philip Rebohle 6cbc133619 [dxgi] Use ShowWindow instead of redundant SetWindowPos call 2018-05-04 17:53:02 +02:00
Philip Rebohle de803b3670 [dxgi] Report refresh rate as a multiple of 1000 Hz
More closely emulates what Windows dows.
2018-05-04 17:37:29 +02:00
Philip Rebohle 77d0424d7f [dxgi] Advertize support for ID3D10Device and ID3D10Device1
We don't actually support these, but applications can reasonably
assume that D3D10 is supported if D3D11 is present. Closes #329.
2018-05-02 17:00:56 +02:00
Philip Rebohle e30a8299e6 [dxvk] Refactor DxvkFramebuffer and DxvkRenderpass 2018-05-02 00:45:10 +02:00
Philip Rebohle 41fca78d27 [dxgi] Add GetDevice method to IDXGIVkInteropSurface
Convenient way of getting the IDXGIVkInteropDevice from the surface
without having to go through several D3D interface queries.
2018-05-01 23:30:39 +02:00
Philip Rebohle 4c298d486d [dxgi] Restore display mode even when the window got destroyed 2018-04-30 20:15:35 +02:00
Philip Rebohle 46f2e4d864 [dxgi] CheckInterfaceSupport; Log interface queries 2018-04-30 20:01:50 +02:00
Philip Rebohle ba53cf92ac Revert "[dxvk] Refactor DxvkFramebuffer and DxvkRenderpass"
This reverts commit 1bbfe77013.
Breaks Path of Exile.
2018-04-30 18:47:35 +02:00
Philip Rebohle 1bbfe77013 [dxvk] Refactor DxvkFramebuffer and DxvkRenderpass 2018-04-30 15:47:29 +02:00
Philip Rebohle a32050374c [dxgi] Implement display mode changes
Allows games to change the screen resolution in fullscreen
mode. This is currently in a rough shape and some games may
not work as expected when selecting fullscreen mode.
2018-04-29 23:03:27 +02:00
Philip Rebohle a3c561f9dc [dxgi] LeaveFullscreenMode: Correctly restore the window size 2018-04-29 17:26:00 +02:00
Philip Rebohle 81a0fa4805
[d3d11] Implemented IDXGIVkInteropSurface for common textures 2018-04-20 10:38:39 +02:00
Philip Rebohle 62b0e34a73
[d3d11] Implement IDXGIVkInteropDevice for D3D11Device 2018-04-20 00:19:03 +02:00
Philip Rebohle c2854e1fb9
[dxgi] Added IDXGIVkInteropSurface interface 2018-04-19 20:13:53 +02:00
Philip Rebohle 478a87f6d2
[dxgi] Added IDXGIVkInteropDevice interface 2018-04-19 15:46:57 +02:00
Philip Rebohle adb0f5e16b
[dxgi] DxgiSwapchain: Check whether window is valid
Fixes a GPU hang when closing Dark Souls 3 as well as similar
undesired behaviour in other games that continue to use the
DXGI swap chain after the window has been destroyed.
2018-04-18 17:30:46 +02:00
Philip Rebohle bb3e3c9e4f
[dxgi] GetDisplayModeList: Report DXGI_MODE_SCALING_UNSPECIFIED
This is what happens on Windows 10. In addition, we might have
to add CENTERED and STRETCHED entries for non-native modes.
2018-04-18 16:04:17 +02:00
Philip Rebohle ffe3028285
[dxgi] GetDisplayModeList: Sort display mode list
Some games, including Dark Souls 3, rely on display modes
being returned in a specific order. This emulates Windows
10 behaviour.
2018-04-18 15:33:56 +02:00
Philip Rebohle 01061e43aa
[dxgi] GetDisplayModeList: Do not report modes as stretched
This is more in line with what Windows does. Games should now be
able to list more than just the monitor's maximum resolution again.
2018-04-18 15:33:15 +02:00
Philip Rebohle af19bba048
[dxgi] Remove support gamma-related ScaleAndOffsetSupported
Some games, including Heroes of the Storm (#287), do not set
the values correctly so it's better to ignore them altogether.
2018-04-15 20:12:41 +02:00
Philip Rebohle 8d3e60c2f1
[dxgi] Cosmetic changes 2018-04-14 12:02:55 +02:00
Philip Rebohle ded6dec7eb
[dxgi] DxgiVkPresenter: use Microsoft-style API 2018-04-13 13:57:29 +02:00
Philip Rebohle 5d7c83855e
[dxgi] Use 1D texture to implement the gamma lookup table
This allows us to abuse hardware texture filters for linear
interpolation. Should fix an issue with the latest Nvidia
beta drivers.
2018-04-13 13:47:15 +02:00
pchome f806c8eafc [dxgi] Use GetMonitorInfoW function explicitly (#271)
No `std::mbstowcs` string conversion needed than.
W/o this change I have different output when running `dxgi-factory.exe` compiled with MinGW:
* `Output 0:`
  ```
  \\.\DISPLAY1 (default)
  \\.\DISPLAY1 (DXVK MinGW)
  \            (DXVK winebuild)
  ```

With this patch all three variants are identical (`\\.\DISPLAY1`)

p.s. same problem in dxgi_adapter.cpp, but `deviceProp.deviceName` is vulkan structure parameter (char deviceName[VK_MAX_PHYSICAL_DEVICE_NAME_SIZE]).
2018-04-12 20:12:48 +02:00
Philip Rebohle db541d188f
[dxgi] Added static format mapping table 2018-04-12 17:49:14 +02:00
Philip Rebohle 3405b89494
[dxgi] Rename and move DXGI format lookup related structures
This is part of a major refactoring process regarding DXGI->Vulkan
format conversions. Since we don't patch format lookup tables any
longer, we can create a global lookup table.
2018-04-12 15:36:01 +02:00