1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-14 18:23:52 +01:00
Commit Graph

2231 Commits

Author SHA1 Message Date
Philip Rebohle
d9931e3621
[utils] Report Nvidia GPUs for Far Cry 3 and Far Cry 4
Both games make assumptions about the exact clear value for UNORM
render targets, which is incorrect on most Vulkan drivers.
2019-02-18 18:04:36 +01:00
Andrew Sheldon
be22756d2a Update DXVK_FILTER_DEVICE_NAME to support matching substrings
Why? RADV device names include the LLVM version, which means that on every LLVM
upgrade, the device name needs to be changed to match. This change allows setting
something like "AMD RADV VEGA10" which should remain persistent over time.
2019-02-17 08:32:03 +01:00
Philip Rebohle
fe781df591
[util] Enable relaxed barriers for Resident Evil 7
Same engine as Resident Evil 2, although the impact will be lower.
2019-02-15 20:59:33 +01:00
Philip Rebohle
11d2082fd2
[hud] Add 'api' option to show the client API 2019-02-15 18:05:44 +01:00
Philip Rebohle
10123ce9ab
[dxvk] Pass description of the client API to the DXVK device 2019-02-15 17:38:52 +01:00
Philip Rebohle
cbaeca8f43
[d3d11] Move sType/pNext initialization for dev.features to backend
There's no good reason to have this code in the D3D11 module.
2019-02-15 10:20:03 +01:00
Philip Rebohle
f7ed7b7118
[d3d11] Fix device feature enablement in some situations
- Geometry shaders are required by the backend
- FL9 already supports BC texture formats
2019-02-15 10:05:17 +01:00
Philip Rebohle
7056425bbd
[dxvk] Create state cache directory if it does not yet exist
We only create it if the parent directory already exists. Resolves #907.
2019-02-11 22:24:19 +01:00
Philip Rebohle
9bfa470581
[util] Implement createDirectory function 2019-02-11 21:59:46 +01:00
Philip Rebohle
629238ac36
[util] Implement tows method to convert strings to wide strings 2019-02-11 21:35:32 +01:00
Philip Rebohle
746562de5a
[dxgi,d3d11] Remove IDXGIVkPresentDevice 2019-02-11 20:06:12 +01:00
Philip Rebohle
fd445f7b4d
[d3d11] Move D3D11 presenter creation to WineDXGISwapChainFactory 2019-02-11 20:06:12 +01:00
Philip Rebohle
9f8c1d08a6
[dxgi,d3d11] Move swap chain creation to D3D11 module 2019-02-11 20:06:12 +01:00
Philip Rebohle
7ed91872b6
[dxgi] Use IWineDXGISwapChainFactory to create DXGI swap chains 2019-02-11 20:06:11 +01:00
Joshua Ashton
5ea8648cd9 [d3d11, d3d10, dxgi] Handle null ppvObject in QueryInterface. (#909)
When a null ppvObject is passed into a QueryInterface on any IUnknown, a E_POINTER should be returned as the result (and it should not crash.)

This matches native d3d11/d3d10/dxgi behaviour and the documentation found here https://docs.microsoft.com/en-us/windows/desktop/api/unknwn/nf-unknwn-iunknown-queryinterface(q_) for IUnknown.
2019-02-10 08:01:01 +01:00
Philip Rebohle
311661e404
[dxvk] Use vkCmdUpdateBuffer to clear tiny buffers
While this might consume a few more CPU cycles, UpdateBuffer may
be cheaper on the GPU for very small buffers, so we should use
it instead.

Also seems to fix rendering issues in Far Cry Primal for unknown reasons.
2019-02-09 22:21:57 +01:00
Philip Rebohle
8543f96413
[dxvk] Don't create flat 2D views for cube maps
Fixes a rendering issue in Heroes of the Storm, where the game
binds a cube map array to a resource slot which expects a 2D
view.

Refs #777.
2019-02-09 01:01:43 +01:00
Philip Rebohle
f6380fa152
[util] Enable relaxed barriers for Resident Evil 2
Improves performance by up to 10% when GPU-bound.
2019-02-08 01:38:03 +01:00
Philip Rebohle
e56710e64f
[d3d11] Add option to disable write-after-write barriers 2019-02-07 19:39:05 +01:00
Philip Rebohle
023cf01c3c
[dxvk] Implemet IgnoreWriteAfterWrite for compute shaders
When enabled, potential write-after-write hazards will be ignored and
no barrier will be inserted. Can improve performance in some cases.
2019-02-07 19:39:05 +01:00
Philip Rebohle
24dca37fce
[dxvk] Add methods to query source access type for an accessed resource 2019-02-07 19:39:05 +01:00
Philip Rebohle
9165f8c072
[dxvk] Add type and context method to set barrier control flags 2019-02-07 19:39:05 +01:00
Philip Rebohle
915091b76b
[dxbc] OpSDiv by 4 -> OpShiftRightLogical by 2 2019-02-07 19:32:07 +01:00
Philip Rebohle
8b80db7839
[dxbc] Fix storage class for UBO loads
UniformConstant is used for other things, UBOs are Uniform.
2019-02-05 21:28:50 +01:00
Philip Rebohle
9c4a6ee950
[utils] Enable strict division for Final Fantasy XIV
Fixes #904.
2019-02-05 21:28:27 +01:00
Philip Rebohle
c0b325b483
[dxbc] Add option to enable strict sm4-compliat division
SM4 is defined to return the first source operand if the divisor is zero.
Windows drivers don't do this by default, so we shouldn't do it either.
2019-02-05 21:08:13 +01:00
Philip Rebohle
a4378996d9
[dxbc] Reduce length of temporary shader input array to a minimum
Fixes severe performance regression with the AMD proprietary driver.
2019-02-04 13:30:08 +01:00
Philip Rebohle
6c17fa075b
[d3d11] Minor map optimization on deferred contexts 2019-02-04 10:26:04 +01:00
Philip Rebohle
8d493d9445
[d3d11] Minor map optimization on immediate contexts
We should make the fast path as fast as possible.
2019-02-04 10:24:30 +01:00
Philip Rebohle
01a7e06ad7
[dxvk] Inline DxvkBuffer::allocSlice and DxvkBuffer::freeSlice
Seems to take some load off both the main rendering thread and the
cleanup thread in SotTR.
2019-02-04 10:01:29 +01:00
Philip Rebohle
c451c9a95e
[dxvk] Only merge clears when framebuffer size matches view size
Otherwise, we'll only clear a smaller portion of the view, which is
incorrect. Fixes a rendering issue in Fallout New Vegas with DXUP.
2019-02-04 07:31:17 +01:00
Philip Rebohle
405bd737e0
[util] Disable nvapi hack for Far Cry 4 / Primal
Dunia engine games don't seem to like this either.
2019-02-04 07:09:37 +01:00
Philip Rebohle
e5a06d3f4a
[dxbc] Only load requested components from constant buffers
Results in better performance compared to loading the entire vector
on RADV. Suggested by Samuel Pitoiset.
2019-01-30 16:32:25 +01:00
Philip Rebohle
c360a196fb
[dxvk] Restore dedicated allocation behaviour
Whoops.
2019-01-30 15:49:06 +01:00
Philip Rebohle
412fb9ac57
[dxvk] Use VK_EXT_memory_budget to report memory usage 2019-01-30 15:45:57 +01:00
Philip Rebohle
b76f470c5f
[dxvk] Remove dxvk.allowMemoryOvercommit option
The default behaviour is now to allow overallocation by default,
which makes sense especially when VK_EXT_memory_priority is used.

Does not seem to affect Nvidia drivers.
2019-01-30 13:52:43 +01:00
Philip Rebohle
dfa8524e73
[dxvk] Wire up memory priority to device memory allocations 2019-01-30 13:52:43 +01:00
Philip Rebohle
03b488772d
[dxvk] Store device instead of adapter in memory allocator 2019-01-30 13:52:43 +01:00
Philip Rebohle
b884c56631
[dxvk] Enable VK_EXT_memory_priority and features if available 2019-01-30 13:52:43 +01:00
Philip Rebohle
e7bf1647dd
[dxvk] Use high memory priority for GPU-writable resources 2019-01-30 13:52:43 +01:00
Philip Rebohle
134613375d
[dxvk] Introduce concept of priorities to device-local memory allocations
The priority defines the importance of any given allocation being
resident in device-local memory rather than system memory, with
values between 0 (low) and 1 (high).

Suballocations will only work on chunks with the requested priority.
This ensures that high-priority allocations are reserved solely for
high-priority resources, and that high-priority resources will be
allocated from a high-priority memory chunk.
2019-01-30 13:52:43 +01:00
Philip Rebohle
4171596d14
[meta] Update Vulkan headers to 1.1.98 2019-01-30 13:52:17 +01:00
Philip Rebohle
35c7d687ff
[meta] Release 0.96 2019-01-26 18:41:48 +01:00
Philip Rebohle
af92bc9d9b
[utils] Disable nvapi hack for Mass Effect Andromeda
Fixes #886.
2019-01-26 18:38:58 +01:00
Philip Rebohle
1cc24c223b
[dxbc] Reduce length of tessellation i/o arrays to minimum
This allows us to fix a violation of the Vulkan specification
where using the same location range for per-vertex and per-patch
i/o is illegal.

May also help certain drivers figure out what's actually needed.
2019-01-26 17:12:23 +01:00
Philip Rebohle
b0b7960548
[dxbc] Add method to count required registers for signatures 2019-01-26 17:11:49 +01:00
Philip Rebohle
0b5cffb0bb
[dxbc] Parse patch constant signature 2019-01-26 14:52:29 +01:00
Philip Rebohle
3960355d47
[d3d11] Avoid redundant viewport updates in RSSetState
Rise of the Tomb Raider changes its rasterizer state very frequently
(once every handful of draws), and the viewport package is very large,
so we should avoid sending it to the CS thread redundantly.

We only need to update when the scissor test state has changed.
2019-01-23 05:36:49 +01:00
Philip Rebohle
df7573f332
[dxvk] Implement separate code path for clear-only render passes
Allows more clears to overlap with non-rendering commands
in case the app calls OMSetRenderTargets prior to the clear.
Also fixes a bug where we might accidentally use the wrong
set of color attachments to set up render pass operations.
2019-01-23 01:12:03 +01:00
Philip Rebohle
8cfb7936ed
[dxvk] Use explicit barriers after framebuffer clears
This may allow clears to overlap with subsequent commands unless a
barrier is actually required.
2019-01-23 01:12:03 +01:00