Commit Graph

1958 Commits

Author SHA1 Message Date
Philip Rebohle 3fff5d56b3
[d3d11] Mark raw and structured buffers as potential storage buffers 2018-12-14 23:45:37 +01:00
Philip Rebohle 0d230eb447
[spirv] Add OpArrayLength instruction 2018-12-14 23:45:34 +01:00
Philip Rebohle 328871de7e
[d3d11] Re-introduce support for dxgi.numBackBuffers option 2018-12-14 14:58:36 +01:00
Philip Rebohle 64aefcc2a1
[dxgi] Catch exception when instance creation fails
Fixes #810.
2018-12-12 18:36:37 +01:00
Philip Rebohle f276bcd0e7
[dxbc] Check for RADV/Nvidia drivers explicitly using the new function
This way, only RADV gets locked out of using early discard whereas
AMDVLK and -PRO are able to use it.
2018-12-12 16:27:01 +01:00
Philip Rebohle 598280dc3f
[dxvk] Add function to check for a specific driver / driver version 2018-12-12 15:43:39 +01:00
Philip Rebohle 6c992c7b02
[dxvk] Enable VK_KHR_driver_properties 2018-12-12 15:16:25 +01:00
Philip Rebohle d16323f56b
[dxgi] Clean up DxgiAdapter 2018-12-11 16:03:37 +01:00
Philip Rebohle a29b9f6779
[dxgi] Use new mode switch API for DxgiOutput
Also removes the old functions which are no longer needed.
2018-12-11 16:02:46 +01:00
Philip Rebohle d9cf8fdc58
[dxgi] Use new mode switch API for DxgiSwapChain 2018-12-11 16:02:46 +01:00
Philip Rebohle 1594a20b94
[dxgi] Add new functions to change the display mode of a monitor 2018-12-11 16:02:35 +01:00
Philip Rebohle 1db3c6d883
[dxgi] Remove SetOutputData and GetOutputData methods 2018-12-11 15:33:54 +01:00
Philip Rebohle aa2ec3f998
[dxgi] Port DxgiOutput and DxgiSwapChain to new monitor data API
This allows us to remove the dependency between DxgiSwapChain
and DxgiVkAdapter without losing gamma control emulation.
2018-12-11 15:32:54 +01:00
Philip Rebohle e30bb498b6
[dxgi] Add functions to share per-monitor data between DXGI objects 2018-12-11 15:32:00 +01:00
Philip Rebohle 57e814717e
[dxgi] Move GetOutputFromMonitor to swap chain class
Not a great solution, but we only need it for the swap chain anyway.
2018-12-10 12:38:33 +01:00
Philip Rebohle 9e9e17348f
[dxgi] DxgiSwapchain: Remove SetGammaControl methods
These were only used internally to forward stuff to the presenter
anyway, so we might as well call that method directly.
2018-12-10 12:34:57 +01:00
Philip Rebohle 7eb60daf63
[dxgi] DxgiSwapchain: Take factory as IDXGIFactory
No need to be specific about the exact type of factory.
2018-12-10 12:10:15 +01:00
Philip Rebohle 9572425912
[dxvk] Clear color write mask if fragment shader output is undefined
Fallout 76 writes undefined data to one specific render target
otherwise. Refs #779.
2018-12-07 13:43:27 +01:00
Philip Rebohle ef63328eb8
[d3d10] Initialize DSV pointer in OMGetRenderTargets
Completely redundant, but apparently MSVC refuses to compile the
code otherwise. Refs #801.
2018-12-07 13:43:14 +01:00
Philip Rebohle 86d4d31b7c
[dxgi] Ignore scaling and scanline order during fullscreen transitions
Games usually don't use these correctly anyway, so we might as well
ignore them, since DXVK's DXGI does not report scanline modes other
than UNSPECIFIED. Fixes #291.
2018-12-06 16:38:45 +01:00
Philip Rebohle 171cf53bc0 [dxvk] Don't re-initialize 3D images when clearing render targets
Layout transitions apply to the full subresource, even if we only
render to one slice. Fixes #775 on Nvidia Kepler and Maxwell cards.
2018-12-04 23:25:50 +01:00
Philip Rebohle df667b7b0e
[dxgi] Report Adapter LUID if available 2018-12-04 19:39:09 +01:00
Philip Rebohle 033ea0c31b
[d3d11] Find Vulkan device if DXGI adapter was not created by DXVK
Tests the LUID, then the PCI device IDs, and finally falls back
to the first Vulkan device available on the system. This allows
DXVK's d3d11.dll to be used without its own dxgi.dll, as long
as presentation support is implemented in some way.

With the previous changes, based on zzhiyi/dxvk@0fc3a24d96

Co-authored-by: Zhiyi Zhang <zzhang@codeweavers.com>
2018-12-04 19:38:52 +01:00
Philip Rebohle f7b3b9ca5c
[dxvk] Add new methods to find adapters by LUID or device ID
Co-authored-by: Zhiyi Zhang <zzhang@codeweavers.com>
2018-12-04 19:38:52 +01:00
Philip Rebohle bb1f431e44
[dxvk] Query device ID information if available
Co-authored-by: Zhiyi Zhang <zzhang@codeweavers.com>
2018-12-04 19:38:52 +01:00
Philip Rebohle 1cc0455c8a
[dxgi] Remove old DXGIDevice implementation and IDXGIVkDevice
Both have been moved to the D3D11 module and are no longer needed.
2018-12-04 19:38:52 +01:00
Philip Rebohle c5deedef2d
[d3d11] Move IDXGIDevice implementation to D3D11 module
Helps decouple the D3D11 module from the DXGI implementation. This
also allows us to clean up D3D11 device creation, which is much needed.

Based on zzhiyi/dxvk@fa441937f1

Co-authored-by: Zhiyi Zhang <zzhang@codeweavers.com>
2018-12-04 19:38:38 +01:00
Philip Rebohle de29174d42
Revert "[vr] Cosmetic code cleanup"
This reverts commit a3bf90f5a3.

Crashes SuperHot VR for some reason.
2018-12-04 18:50:11 +01:00
Philip Rebohle 556e0d1dba Revert "[util] Report Nvidia GPU for Battlefield 1"
This reverts commit 500d67e002.

This game has some built-in driver detection on Nvidia which makes it
fail to start on non-Nvidia hardware or when nvapi is not present.
Fixes #795.
2018-12-02 20:27:39 +01:00
Philip Rebohle 835d92b802 [d3d10] D3D10CreateDeviceAndSwapChain: Ignore swap chain if null
Like e4b91057ac, this might fix some
issues with ReShade in D3D10 games.
2018-12-02 15:52:17 +01:00
Philip Rebohle e4b91057ac [d3d11] D3D11CreateDeviceAndSwapChain: Ignore swap chain if null
Fixes some issue with ReShade.
2018-12-02 13:43:55 +01:00
Philip Rebohle cf21111401
[d3d11] Implement ID3D11Multithread for D3D11 contexts 2018-11-30 11:38:00 +01:00
Philip Rebohle 28216909bd
[d3d10] Implement D3D10Multithread 2018-11-30 11:37:57 +01:00
Philip Rebohle d1f179c5af
[util] Add likely/unlikely macros 2018-11-29 22:53:04 +01:00
Philip Rebohle af2f5cc77f
[dxgi] Remove format lookup methods from IDXGIVkAdapter interface 2018-11-28 19:06:34 +01:00
Philip Rebohle cc7f5c4bb1
[d3d11] Duplicate format table into D3D11 device
Removes the direct D3D11Device->DXGIAdapter dependency.
2018-11-28 18:34:05 +01:00
Philip Rebohle 193d24a3e2
[dxgi] Remove IDXGIVkBackBuffer 2018-11-28 18:15:27 +01:00
Philip Rebohle 092cad0e76
[dxvk] Remove DxvkSemaphore 2018-11-28 12:44:18 +01:00
Philip Rebohle 80b9f1d03b
[dxvk] Remove DxvkSurface 2018-11-28 12:44:18 +01:00
Philip Rebohle 9b923bb386
[dxvk] Remove DxvkSwapChain 2018-11-28 12:44:17 +01:00
Philip Rebohle 9139fbf95d
[d3d11] Use new Vulkan presenter 2018-11-28 12:44:17 +01:00
Philip Rebohle 81306cdc11
[dxvk] Support new Vulkan presenter in DxvkDevice 2018-11-28 12:44:17 +01:00
Philip Rebohle 746529b71b
[dxvk] Pass raw semaphore handles to submitCommandList 2018-11-28 12:44:17 +01:00
Philip Rebohle a5c17f2753
[d3d11] Use flushCommandList method to flush initializer context 2018-11-28 12:44:17 +01:00
Philip Rebohle 979ccf23e3
[vulkan] Implement new Vulkan presenter / swap chain 2018-11-28 12:44:11 +01:00
Philip Rebohle 7096937c11
[dxbc] Use ballot to determine early-discard condition in fragment shaders 2018-11-27 11:50:01 +01:00
Philip Rebohle 0113e8f360
[spirv] Add subgroup ballot instructions 2018-11-27 11:50:01 +01:00
Philip Rebohle 4057937d2d
[dxvk] Refactor descriptor set allocation
With this new approach, descriptor pools are decoupled from the
command list they are used with. Instead, the DXVK context takes
ownership of a single descriptor pool until it runs out of memory.

This reduces the amount of memory wasted for under-utilized pools
and should this reduce an application's memory footprint.
2018-11-27 11:42:13 +01:00
Philip Rebohle eb7a5da975
[dxvk] Rebalance descriptor set allocation
This should more closely reflect what applications actually use.
The basic idea here is that it is better for apps to run out of
descriptors before running out of sets and thus reduce the
overall memory footprint of the application.
2018-11-27 10:04:16 +01:00
Philip Rebohle 08b403f655
[d3d11] Fix potential UAV binding issue
When rebinding an already active UAV, we still need to
update the counter unless the app passed a value of -1.

Ref #712.
2018-11-26 17:18:35 +01:00