Philip Rebohle
190f114449
[dxvk] Add methods to check which dynamic states a pipeline uses
2019-01-16 20:01:20 +01:00
Philip Rebohle
59462f3231
[dxvk] Don't re-emit dynamic state every time we bind a pipeline
...
This used to be necessary on some drivers that would lose dynamic
state upon pipeline bindings, but that no longer seems to be the
case.
2019-01-16 17:47:31 +01:00
Michal Srb
cc38412d04
[d3d11] Fix bad check in DrawInstancedIndirect ( #863 )
2019-01-15 11:12:03 +01:00
Philip Rebohle
109300d541
[d3d11] Remove unused syncMode option
2019-01-14 19:21:10 +01:00
Philip Rebohle
2bae3a5c8b
[d3d11] Reintroduce support for dxgi.maxFrameLatency
...
This option was previously ignored for some reason.
2019-01-14 18:29:25 +01:00
Entryhazard
7306c3153c
[util] Change getEnvVar to use getenv ( #859 )
2019-01-13 21:27:59 +01:00
Philip Rebohle
ddce33692c
[meta] Release v0.95
2019-01-12 21:42:49 +01:00
Philip Rebohle
79eded9ae2
[d3d11] Only apply viewport and scissor rect if they have changed
...
Resident Evil 2 calls these functions before every single draw
call, so we should avoid emitting redundant viewport updates.
2019-01-12 20:22:08 +01:00
Philip Rebohle
c804d99db7
[d3d11] Fix log spam in SetEvictionPriority stubs
2019-01-12 15:22:34 +01:00
Philip Rebohle
bee21e7539
[dxbc] Support parsing the ISG1 and OSG1 signature chunks
...
Required to get the Resident Evil 2 demo to work.
2019-01-12 15:17:51 +01:00
Philip Rebohle
3935d2540e
[util] Get rid of explicit wchar_t parameter
...
We shouldn't be catering to Windows' weird string encoding mechanisms.
2019-01-11 13:43:15 +01:00
Philip Rebohle
4f0da40afa
[d3d11] Add some documentation to d3d11_cmd.h
2019-01-11 12:05:25 +01:00
Philip Rebohle
e665d896e3
[d3d11] Fix build errors on MSVC
2019-01-10 18:26:52 +01:00
Philip Rebohle
bbc3b3fb2b
[d3d11] Use multiDrawIndirect for subsequent indirect draw calls
...
Significantly improves performance in AC:Odyssey when CPU bound.
Only has an effect when no state changes between draw calls, and
when the draw parameter buffer is tightly packed.
2019-01-10 17:14:12 +01:00
Philip Rebohle
ad6233f74c
[d3d11] Enable multiDrawIndirect device feature if available
2019-01-10 16:59:53 +01:00
Philip Rebohle
f7dbcbe882
[dxvk] Introduce command type with extra data
...
The additional data is stored as a struct which can be
modified after submitting the command to the CS chunk.
2019-01-10 16:59:53 +01:00
Philip Rebohle
d12b2c6149
[util] Disable NVAPI hack for NFS2015 and CoD:WW2
...
Fixes #850 .
Fixes #832 .
2019-01-10 11:59:35 +01:00
Philip Rebohle
cf9de54a12
[dxgi] Add dxgi.nvapiHack option to disable NVAPI workaround
2019-01-10 11:58:16 +01:00
Philip Rebohle
9faf841f32
[dxvk] Remove DxvkPhysicalBuffer and friends
2019-01-09 18:05:01 +01:00
Philip Rebohle
8b5db80fbd
[dxvk] Reimplement DxvkBuffer
...
Avoids the DxvkPhysicalBuffer indirection and keeps all buffer
objects alive until the DxvkBuffer itself gets destroyed.
2019-01-09 18:04:46 +01:00
Philip Rebohle
cc61e38b9c
[dxvk] Reimplement DxvkBufferView
...
Instead of recreating the buffer view every single time the
underlying buffer gets invalidated, this keeps all buffer
views around until the object itself gets destroyed.
2019-01-09 18:02:00 +01:00
Philip Rebohle
61fdf4ef64
[dxvk] Use DxvkBufferSliceHandle for dummy resources
2019-01-09 18:02:00 +01:00
Philip Rebohle
c8e1813b07
[dxvk] Use DxvkBufferSliceHandle for staging buffers
2019-01-09 18:02:00 +01:00
Philip Rebohle
004db3677b
[dxvk] Use DxvkBufferSliceHandle for transform feedback
2019-01-09 15:13:04 +01:00
Philip Rebohle
17398e47bd
[dxvk] Use DxvkBufferSliceHandle for buffer memory barriers
2019-01-09 15:03:17 +01:00
Philip Rebohle
bbb7728b58
[dxvk] Introduce DxvkBufferSliceHandle
...
This struct is meant to replace DxvkPhysicalBufferSlice in the long
run, in a way that doesn't require extra reference counting.
2019-01-09 14:56:02 +01:00
Philip Rebohle
2f1f8ba0a4
[d3d11] Fix CheckMultisampleQualityLevels behaviour
...
- Querying DXGI_FORMAT_UNKNOWN should not return an error,
and should advertize support for a sample count of 1
- Querying non-power of two sample counts should not fail
- Invalid arguments should be handled properly
2019-01-09 00:28:25 +01:00
Philip Rebohle
6282280f8d
[util] Enable raw SSBOs for FIFA 19
...
This game incorrectly binds a typed buffer view when the shader
expects a structured buffer. Using raw SSBOs matches Windows
behaviour in this case. Fixes #642 .
2019-01-08 23:18:46 +01:00
Philip Rebohle
4fe5929799
[dxbc] Add options to enable/disble early discard and raw ssbo use
2019-01-08 20:58:18 +01:00
Philip Rebohle
524227d21c
[util] Add tristate config option type
2019-01-08 20:57:38 +01:00
Philip Rebohle
214891ffc6
[d3d11] Improve error logging when texture creation fails
2019-01-08 10:34:48 +01:00
Philip Rebohle
9890b87225
[dxbc] Fix incorrect error message
2019-01-08 00:46:24 +01:00
Philip Rebohle
d0ee7f54bf
[hud] Add DXVK_HUD=full option
...
Enables all HUD elements at once. Close #842 .
2019-01-07 19:23:00 +01:00
Chip Davis
6feeb4bbba
Only set 2D_ARRAY_COMPATIBLE on 3D textures that will be rendered to.
...
It is impossible to create a 2D or 2D array SRV or UAV from a 3D
texture. Nor is it possible to create a DSV from a 3D texture.
Therefore, the only time we ever need to create a 2D array view from a
3D texture is when we're going to render to it.
2019-01-02 19:15:23 +01:00
Robin
7a69135ba1
[d3d10] Check if d3d11 pointers are null
2019-01-02 19:13:42 +01:00
Robin
1750b14c2a
[d3d11] Lock in SynchronizeCsThread
...
This prevents fixes threading issues with D3D10 games when
Present() gets called.
Fixes #567 .
2018-12-30 21:08:52 +01:00
Robin
4c9af44356
[d3d10] Use context lock instead of separate device lock
2018-12-30 21:08:52 +01:00
Philip Rebohle
4e22e4bc3a
[dxgi] Refactor swap chain creation
...
Cleans up constructor and moves a bunch of common code
to the new CreateDxvkSwapChainForHwnd function, which
can be called from both d3d11 and dxgi.
Also fixes potential issues with the current implementation
of the IWineDXGISwapChainFactory interface.
2018-12-21 15:53:29 +01:00
Philip Rebohle
15078357dc
[dxgi] Implement and use GetWindowClientSize fuction
...
This new function provides a cleaner way to retrieve a
window's client size and can be used outside the swap
chain functions.
2018-12-21 15:14:07 +01:00
Philip Rebohle
1e393bf24d
[d3d11] Implement IWineDXGISwapChainFactory
...
See #822 .
2018-12-21 14:03:28 +01:00
Andrew Eikum
dc2cde3395
[vr] Cosmetic code cleanup, again
...
This reverts commit 20353f6f62f802bab9618b19940748af19cc1812, but fixes
openvr_api module refcounting.
2018-12-20 01:35:27 +01:00
Philip Rebohle
652525119f
[vr] Query required device extensions during instance creation
...
After the DXGI device refactor in c5deedef2d
,
device extensions required for OpenVR interop would not be enabled correctly
because the VR-related code is now being called from both the D3D11 and DXGI
DLLs rather than just the DXGI DLL, and the D3D11 one is not in the expected
state when querying required device extensions. Querying them during instance
creation fixes that problem as it moves the relevant code back to the same
DLL which creates the Vulkan instance.
2018-12-20 01:32:56 +01:00
Philip Rebohle
f638689b2a
[d3d11] Remove some unnecessary type casts in interop code
2018-12-19 22:34:47 +01:00
Philip Rebohle
92f3648efa
[meta] Release 0.94
2018-12-15 13:54:57 +01:00
Philip Rebohle
e5beab2872
[dxbc] Rename struct_c0 -> c0_t etc.
2018-12-14 23:45:38 +01:00
Philip Rebohle
01b8e74457
[dxbc] Use raw SSBOs for raw and structured buffers if appropriate
2018-12-14 23:45:37 +01:00
Philip Rebohle
48548eb894
[dxbc] Add useRawSsbo option
...
ENabled when we can replace texel buffers for raw and structured
buffers with raw SSBOs.
2018-12-14 23:45:37 +01:00
Philip Rebohle
fd201c4c53
[dxvk] Bind buffer slice when binding buffer view
...
This is going to be necessary when we can bind raw buffer views as SSBOs.
2018-12-14 23:45:37 +01:00
Philip Rebohle
0bc2498570
[dxvk] Relax compute shader barriers for read-only storage buffers
2018-12-14 23:45:37 +01:00
Philip Rebohle
a0de90861c
[dxvk] Store access flags in resource slots
...
Makes distinguishing read-only resources from read-write
resources significantly easier.
2018-12-14 23:45:37 +01:00
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
Philip Rebohle
500d67e002
[util] Report Nvidia GPU for Battlefield 1
...
Reportedly improves performance for some weird reason.
2018-11-26 08:04:30 +01:00
Philip Rebohle
2d55852777
[dxvk] Disable state cache for Anno 2205
...
Fixes #686 .
2018-11-24 20:04:21 +01:00
Philip Rebohle
10b272b4c9
[meta] Release 0.93
2018-11-24 10:41:41 +01:00
Philip Rebohle
2424cf0289
[dxbc] Disable early discard on AMD cards
...
Causes GPU hangs.
2018-11-24 10:09:33 +01:00
Philip Rebohle
ce3642edd0
[dxvk] Don't put rendering stage/access masks into image info
...
Not needed since these stages and access flags are handled by render
pass transitions.
2018-11-24 00:40:59 +01:00
Philip Rebohle
8081dc1591
[util] Enable TGSM initialization for Quantum Break
...
Fixes artifacting on Mesa 18.3.
2018-11-23 16:12:09 +01:00
Philip Rebohle
a75c596132
[d3d11] Add config option to enable TGSM initialization
2018-11-23 16:12:02 +01:00
Philip Rebohle
ea5f11d091
[dxbc] Implement function to clear thread-group shared memory
...
Can be enabled in case a game reads undefined data from TGSM.
2018-11-23 15:57:54 +01:00
Philip Rebohle
79a6dd111e
[dxbc] Store workgroup size for compute shaders
2018-11-23 14:39:33 +01:00
Philip Rebohle
3e686098cc
[dxbc] Disable subgroup early discard on Nvidia GPUs
...
People report performance regressions up to 5% with it enabled.
2018-11-23 12:28:48 +01:00
Philip Rebohle
6dd82dfe03
[dxbc] Clamp written depth value to (0.0, 1.0)
...
Fixes shadow issue in Overwatch (#738 ).
2018-11-23 12:00:23 +01:00
Philip Rebohle
0418c02ac3
[dxbc] Use clustered subgroup operations on supported hardware
2018-11-21 11:17:09 +01:00
Philip Rebohle
ab17c49c4e
[dxbc] Fix compiler warning about uninitialized values
2018-11-21 11:17:09 +01:00
Philip Rebohle
4f76b89941
[dxbc] Use subgroup operations for early discard
...
Can improve performance in some complex fragment shaders.
2018-11-21 11:17:09 +01:00
Philip Rebohle
a574829bb6
[dxbc] Remove DeferKill flag
...
This behaviour is correct, and needs to be enabled by default.
2018-11-21 11:17:09 +01:00
Philip Rebohle
968a085f1e
[dxvk] Query device subgroup properties
...
Also query the device properites for this extension as well
as support for subgroup operations on this device.
2018-11-21 11:17:09 +01:00
Philip Rebohle
67e10246cb
[dxvk] Request Vulkan 1.1 instance
...
Falls back to a regular 1.0 instance on old drivers.
We need to do this in order to legally use SPIR-V 1.3.
2018-11-21 11:17:09 +01:00
Philip Rebohle
59d0ad4413
[spirv] Add non-uniform group instructions
2018-11-21 11:17:09 +01:00
Philip Rebohle
dbd7db3328
[dxvk] Fix typo around dual-src blending
...
Fixes e744117042
2018-11-20 19:55:08 +01:00
Philip Rebohle
bcd5a9235c
[dxvk] Make use of VK_AMD_memory_overallocation_behavior
...
Currently only supported on AMDVLK. Enforces memory limits on a driver
level unless the corresponding dxvk.allowMemoryOvercommit option is enabled.
2018-11-20 15:50:41 +01:00
Philip Rebohle
99f6953e89
[dxvk] Store DXVK options directly with the instance object
2018-11-20 15:50:01 +01:00
Philip Rebohle
81765de35b
[util] Remove default options that spoof AMD GPUs
...
This is no longer necessary due to the nvapi workaround.
2018-11-20 13:17:36 +01:00
Philip Rebohle
5d49644cdc
[dxgi] Hack: Report Nvidia cards as AMD cards by default
...
Prevents UE4 games from repeatedly trying to load nvapi.dll
on a performance-critical code path.
2018-11-20 13:15:39 +01:00
Philip Rebohle
bfb7e54218
[d3d11] Rename dcMapSpeedHack to dcSingleUseMode
2018-11-20 11:37:48 +01:00
Philip Rebohle
ad5688764c
[d3d11] Use single-use submission mode for CS chunks where possible
2018-11-20 10:44:04 +01:00
Philip Rebohle
c61200d35f
[dxvk] Introduce single-use mode for CS chunks
...
This allows us to reset the CS chunk immediately while executing it,
which can reduce the overhead of the reset operation and may lead to
resources being released earlier.
2018-11-20 10:35:23 +01:00
Philip Rebohle
e744117042
[dxvk] Patch fragment shader for dual-source blending
2018-11-19 17:07:05 +01:00
Philip Rebohle
f69c5e4c4e
[dxbc] Emit Index decoration for pixel shader outputs
...
Simplifies shader patching when dual-source blending is used.
2018-11-19 16:57:11 +01:00
Philip Rebohle
3e3c31f365
[spirv] Add support for Index decoration
...
Needed for dual-source blending
2018-11-19 16:57:08 +01:00
Philip Rebohle
5aad615aef
[dxvk] Unbind graphics pipeline when spilling render pass
...
Otherwise we may in some very rare cases continue using an incorrect
pipeline in subsequent render passes if the same shaders are used for
drawing.
2018-11-19 01:35:41 +01:00
Philip Rebohle
85f0fe729c
[dxvk] Move DxvkEventTracker to dxvk_event.{h,cpp}
...
The upcoming new event and query classes will follow this design.
Reduces the number of files around these small classes.
2018-11-17 01:17:03 +01:00
Andrew Eikum
aea4162198
[dxgi] MultiByteToWideChar counts length in characters
2018-11-16 19:53:37 +01:00
Philip Rebohle
e4d3357e55
[dxgi] Query window size before creating presenter
...
Otherwise we may pass a size of zero to the presenter.
2018-11-16 15:03:09 +01:00
Derek Lesho
66bcc4b3d8
Use std::string for util::getEnvVar input
...
This allows cleaner code when implementing DXVK as a native library
2018-11-16 06:43:45 +01:00
Philip Rebohle
c25483e856
[dxgi] Implement IDXGISwapChain3
...
- Stub IDXGISwapChain3::ResizeBuffers1
2018-11-15 18:02:27 +01:00
Philip Rebohle
81bb561c75
[dxgi] Implement IDXGIAdapter3
2018-11-15 18:02:21 +01:00
Philip Rebohle
171251bc83
[dxgi] Implement IDXGIFactory4
...
Do not support WARP adapters for the moment.
2018-11-15 17:08:36 +01:00
Philip Rebohle
0b7e114cb0
[dxgi] Implement IDXGIDevice3
2018-11-15 17:08:36 +01:00
Philip Rebohle
23ac9b5277
[dxgi] Implement IDXGISwapChain2 stubs
...
Most of the additions are stubs for now, but we should be
able to implement most of the functionality at a later time.
None of the backends implement this yet, but this should be
relatively easy to do.
2018-11-15 17:08:35 +01:00
Philip Rebohle
a849ffc56c
[dxgi] Implement IDXGIOutput3
2018-11-15 17:08:35 +01:00
Philip Rebohle
9af842801c
[dxgi] Implement IDXGIFactory3
2018-11-15 17:08:35 +01:00
Philip Rebohle
f03d87b918
[dxgi] Implement IDXGIOutput1
...
Required for DXGI 1.2.
2018-11-15 17:08:35 +01:00
Philip Rebohle
f7b2194e0b
[dxgi] Include DXGI 1.4 headers
2018-11-15 17:08:27 +01:00
Philip Rebohle
1af96347e1
[dxvk] Forward memory allocation statistics to the adapter
2018-11-15 17:08:05 +01:00
Philip Rebohle
d49de734b7
[dxvk] Set low thread priority for pipeline compiler threads
...
This currently does not have any effect when using regular wine, but
if it ever gets supported then these background jobs should have less
of an influence on the game's performance when they kick in.
2018-11-15 12:19:24 +01:00
Philip Rebohle
305168d2bb
[util] Add method to set thread priority
2018-11-15 12:17:18 +01:00
Philip Rebohle
6adf534589
[dxvk] Add option to set number of pipeline compiler threads
2018-11-15 09:24:11 +01:00
Philip Rebohle
4db5c21ec5
[dxvk] Use ticket lock to synchronize access to query objects
...
Lowers overhead in the uncontested case compared to std::mutex, and
prevents the main rendering thread from blocking updates for too long.
2018-11-13 17:05:37 +01:00
Philip Rebohle
63d42073b8
[util] Add ticket lock implementation
2018-11-13 17:05:06 +01:00
Philip Rebohle
1724d51079
[dxgi] Refactor presenter creation
...
This change is needed to support non-D3D11 presenters in our DXGI code.
2018-11-12 11:39:34 +01:00
Philip Rebohle
8d2f8fca64
[meta] Release v0.92
2018-11-11 16:16:01 +01:00
Philip Rebohle
6f28ce5809
[dxvk] Do not require GL_EXT_samplerless_texture_functions
...
Ubuntu ships a version of the GLSL compiler that does not support
this extension yet, so building DXVK fails on those systems.
Closes #760 .
2018-11-11 15:48:07 +01:00
Philip Rebohle
a971370524
[dxbc] Implement Dmovc instruction
...
Fixes some mandelbrot demo mentioned in #216 .
2018-11-10 23:27:56 +01:00
Philip Rebohle
0cfa5b16d3
[d3d11] Support R11G11B10 format in ClearUnorderedAccessViewUint
...
Silences an error message in Shadow of the Tomb Raider. Does not have
any consequences for this game because it initializes the view to 0.
2018-11-10 18:48:44 +01:00
Philip Rebohle
05856e836b
[d3d11] Don't enable StorageImageReadWithoutFormat feature for FL11_0
...
We don't really need this, although it might be useful in the future.
2018-11-10 11:34:23 +01:00
Philip Rebohle
504de3994b
[dxvk] Inline DxvkBufferView::updateView method
...
Most of the time the condition is false, so we should help
the compiler where we can to optimize for the common case.
2018-11-09 11:40:44 +01:00
Philip Rebohle
bd03225c14
[dxbc] Refactor DxbcOptions
...
A bit mask isn't good enough going forward, and we also don't
need application-specific options for now.
2018-11-09 08:41:02 +01:00
Philip Rebohle
ab3ba776e0
[d3d11] Do not re-upload mapped image if it was mapped for reading
2018-11-08 18:51:53 +01:00
Philip Rebohle
4d103aad5d
[d3d11] Allow mapping depth-stencil images for reading
...
This may be needed for The Surge and Lords of the Fallen.
2018-11-08 18:51:47 +01:00
Philip Rebohle
f483bc9633
[d3d11] Add usage flag for meta-pack operations if necessary
...
- Fix depth-stencil format list
2018-11-08 18:51:43 +01:00
Philip Rebohle
81a5e2fa0c
[d3d11] Add helper to find exact mapping for depth-stencil formats
...
This is necessary in situations when we need to get the Vulkan format
that corresponds to the DXGI format rather than the remapped one.
2018-11-08 18:51:43 +01:00
Philip Rebohle
2b02e692c3
[dxvk] Implement DxvkContext::copyDepthStencilImageToPackedBuffer
2018-11-08 18:10:56 +01:00
Philip Rebohle
d7d1db1b8b
[dxvk] Add convenience method to retrieve image descriptor
2018-11-08 18:10:56 +01:00
Philip Rebohle
fc8f49899a
[dxvk] Create instance of depth-stencil packing objects
2018-11-08 18:10:56 +01:00
Philip Rebohle
119c06e453
[dxvk] Add pipelines needed for depth-stencil packing
...
- Add method to retrieve meta pack pipeline for a given format
- Add descriptor update template
2018-11-08 18:10:49 +01:00
Philip Rebohle
863f2d07fd
[dxvk] Add compute shaders for depth-stencil packing
2018-11-08 18:10:49 +01:00
Philip Rebohle
0dbac29729
[dxvk] Add packed size to depth-stencil formats
2018-11-08 18:10:49 +01:00
Philip Rebohle
70b14f9dbf
[dxvk] Report app name to the Vulkan implementation
...
Because why not?
2018-11-07 21:54:00 +01:00
Philip Rebohle
f32aff29fa
[d3d11] Clear compressed images if they do not get initialized
...
This probably makes Quantum Break run even worse, but I don't really
care at this point. Fixes #744 .
2018-11-07 18:41:07 +01:00
Philip Rebohle
7ed9f36769
[dxvk] Add clearCompressedColorImage method
...
Since we can't use regular clears for compressed
formats, we need a new method to zero image memory.
2018-11-07 18:31:01 +01:00
Philip Rebohle
2d8c9c6a26
[vulkan] Add makeSubresourceLayers helper
2018-11-07 18:30:44 +01:00
Philip Rebohle
3d2e5a7cde
[util] Spoof Nvidia card for Elite Dangerous
2018-11-06 17:03:01 +01:00
Philip Rebohle
780780f8d1
[dxbc] Don't enable sample shading for interpolation functions
...
Actually doesn't resolve #456 , and doesn't make any sense either because
interpolation at a given sample index is apparently supposed to work even
without using sample shading.
2018-11-05 18:30:32 +01:00
Philip Rebohle
2ee7ef7689
[dxbc] Enable sample shading when using interpolation functions
...
Fixes artifacts on RADV when enabling MSAA in World of Warcraft (#456 ).
2018-11-05 17:07:11 +01:00
Philip Rebohle
5a1b37b770
[build] Don't use empty dependencies
...
Fixes build error with Meson 0.44.
2018-11-05 07:55:36 +01:00
Philip Rebohle
e0f1510901
[meta] Release 0.91
2018-11-04 17:23:27 +01:00
dhewg
a05c93dd17
cross build cleanup ( #746 )
...
- Don't turn off warnings for winelib builds, fix them. Using __declspec on winelib builds just doesn't make sense.
- Drop the custom cross property 'winelib'. Detect it instead.
- Move the libdl dependency to the build system
- Don't run wine during mingw build process. Same as for wine builds, see 715d2571
2018-11-04 16:18:32 +01:00
Philip Rebohle
b6ded02a5d
[dxvk] Pull 'if's into commit{Graphics,Compute}State methods
...
Improves performance because GCC generates silly code around those
if blocks, most of which have a false condition anyway. Improves
performance of 100k empty draw calls with no state changes by as
much as 25%.
2018-11-03 00:51:02 +01:00
Philip Rebohle
963bd66fb3
[dxvk] Use new vulkan helpers to create VkImageSubresourceRange structs
2018-11-02 19:42:53 +01:00
Philip Rebohle
a97073adb9
[dxvk] Move vulkan helpers to vulkan module
2018-11-02 19:42:29 +01:00
Philip Rebohle
d5481ac013
[d3d11] Remove redundant D3D11Buffer::GetSize method
2018-11-02 15:43:46 +01:00
Philip Rebohle
851d9fb726
[general] Remove unnecessary include directories from build files
...
These are no longer needed because dxvk includes consistently
use relative file paths now, instead of global includes.
2018-11-02 14:54:39 +01:00
Philip Rebohle
93d88afab9
[general] Fix some old includes
2018-11-02 14:37:59 +01:00
Philip Rebohle
1cd912556e
[dxvk] Move Vulkan loader to separate directory
2018-11-02 14:23:45 +01:00
Philip Rebohle
45a234607a
[dxvk] Track device / instance ownership
...
This allows us to use the Vulkan function loader for a vkd3d device.
2018-11-02 14:13:07 +01:00
Philip Rebohle
175385481e
[dxvk] Insert barrier before CS image view clear only if needed
...
Removes one unnecessary sync point in Claybook.
2018-11-01 21:48:22 +01:00
Philip Rebohle
f5b21d42fc
[dxvk] Open state cache file only when necessary
...
Fixes an issue with Shadow of the Tomb Raider randomly nuking its cache
when it creates not one but *two* D3D11 devices.
2018-11-01 16:35:49 +01:00
Philip Rebohle
8054e4a772
[dxvk] Add DXVK context method to transparently flush the command list
...
This is identical to what the D3D11 function did, but having it in this
place will allow us to potentially implement better flush heuristics
based on work done on the CS thread.
2018-11-01 13:24:42 +01:00
Philip Rebohle
36ccd46ae7
[dxvk] Move sampler border color handling to the backend
2018-10-31 21:51:23 +01:00
Philip Rebohle
e15e693dc4
[dxvk] Spill render pass for pipelines that use vertex stage UAVs
...
We cannot use simple pipeline barriers in this case because of the
extremely strict restrictions surrounding self-dependencies.
2018-10-30 14:43:52 +01:00
Philip Rebohle
76b63efedb
[dxvk] Use self-dependency to synchronize SSBO writes
...
While this doesn't support vertex stages yet, it should be faster
when the pipeline writes to storage resources from the fragment
shader.
We should analyze the vertex stage shaders for SSBO writes in
order to determine whether to spill the render pass.
2018-10-30 14:11:27 +01:00
Philip Rebohle
43ed820be9
[d3d11] Remove state tracking for UAV rendering
...
This scenario is now properly handled by the DXVK state tracker.
2018-10-29 12:12:34 +01:00
Philip Rebohle
fd52022fff
[dxvk] Spill render pass after draws with storage resources
2018-10-29 12:12:34 +01:00
Philip Rebohle
9decfb34b7
[dxvk] Determine whether a graphics pipeline writes to resources
...
- Fix missing test for storage texel buffers
2018-10-29 12:12:34 +01:00
Philip Rebohle
ec8559f40a
[dxvk] Remove unneeded atomic that holds base pipeline handles
...
No longer needed because the full pipeline object gets locked anyway.
2018-10-29 12:11:33 +01:00
Philip Rebohle
a53e053391
[dxbc] Fix incorrect data type for explicit interpolation instructions
2018-10-25 22:25:13 +02:00
Philip Rebohle
5a30110d0f
Revert "[d3d11] Remove some flush points"
...
This reverts commit 5ab6f691ae
.
Apparently this leads to extremely bad frame times on some Nvidia setups.
2018-10-25 20:55:37 +02:00
Philip Rebohle
422cf71c55
[util] Spoof Nvidia GPU for The Vanishing of Ethan Carter Redux
...
For some reason it crashes with AMD cards, but apparently not in D3D code.
Closes #732 .
2018-10-25 18:31:55 +02:00
Philip Rebohle
941db96f79
[dxvk] Remove obsolete DxvkShaderKey constructor
2018-10-25 11:30:02 +02:00
Philip Rebohle
c9ce09e098
[d3d11] Respect xfb metadata when computing shader hash
...
Closes #733 .
2018-10-25 11:28:02 +02:00
Philip Rebohle
7eeeeaa625
[util] Provide method to compute SHA-1 hash from multiple data chunks
...
The underlying implementation supports this trivially, so we should
provide a way to use this feature.
2018-10-25 10:34:38 +02:00
Philip Rebohle
589229f4ca
[dxgi] Query device interface from the presenter
...
Removes the coupling between IDXGISwapChain and IDXGIDevice.
This is necessary because D3D12 devices don't support IDXGIDevice.
2018-10-24 15:54:56 +02:00
Philip Rebohle
7b9726fd93
[d3d11] D3D11Presenter -> D3D11PresentDevice
2018-10-23 15:10:01 +02:00
Philip Rebohle
83b51a66ac
[dxgi] Don't build shaders for presentation
...
These are now embedded in the D3D11 module.
2018-10-23 14:58:57 +02:00
Philip Rebohle
86e6477e80
[dxgi] Remove unused presenter options
2018-10-23 14:58:57 +02:00
Philip Rebohle
3b5b20ca3f
[dxgi] Remove old DXGI presenter
2018-10-23 14:58:57 +02:00
Philip Rebohle
b53f6661f8
[dxgi] Use new presenter for D3D11
2018-10-23 14:58:57 +02:00
Philip Rebohle
967b276acb
[d3d11] Add COM interface for API-agnostic presenter
2018-10-23 14:58:57 +02:00
Philip Rebohle
64185d9be4
[d3d11] Move some DXGI presenter options to D3D11
2018-10-23 14:58:57 +02:00
Philip Rebohle
8cb4852a61
[d3d11] Add new D3D11 swap chain code
...
- Fix deferred surface creation
2018-10-23 14:58:39 +02:00
Philip Rebohle
db2880acfd
[dxvk] Update blend constants only when they have actually changed
...
Reduces number of redundant state changes in Resonance of Fate.
2018-10-22 15:35:56 +02:00
Andreas Heider
ac0f8d6a64
Spoof AMD GPU for Assetto Corsa Competizione
2018-10-22 10:57:54 +02:00
Błażej Szczygieł
57718dcf84
[util] Spoof AMD GPU for SAO FB
...
Improves performance by not trying to load nvapi.
2018-10-22 10:51:48 +02:00
Philip Rebohle
5124fd87d5
[d3d11] Implicitly flush when queueing an event query
...
Significantly improves GPU utilization in Quake Champions.
2018-10-17 17:28:47 +02:00
Philip Rebohle
5ecfbd8425
[d3d11] Do not use QueryInterface to get query pointers
...
We're not going to implement counters anyway, so this is
unnecessary overhead.
2018-10-17 17:28:47 +02:00
Philip Rebohle
5ab6f691ae
[d3d11] Remove some flush points
...
These aren't as useful as they may look like since they occur
at render pass boundaries anyway.
2018-10-17 17:28:47 +02:00
Philip Rebohle
f14d17b743
[d3d11] Don't mark context methods as 'final'
2018-10-17 17:28:47 +02:00
Philip Rebohle
11b269efd1
[d3d11] Save a few CPU cycles in Map/MapBuffer
2018-10-16 12:29:04 +02:00
Philip Rebohle
e0e945f724
[d3d11] Show SetPredication message only when the predicate is not NULL
...
Helps determine which games actually use the feature.
2018-10-15 19:35:50 +02:00
Philip Rebohle
56e9bba279
[dxgi] Fix scaling when swap image extent mismatches window size
...
In Proton 3.16, the window size is not necessarily equal to the size
of the WSI swap chain and DXVK is responsible for doing the scaling,
so we should compare to the actual swap image size instead.
2018-10-15 18:35:00 +02:00
Philip Rebohle
254cd8bd06
[dxvk] Optimize image descriptor updates
...
Avoids unnecessary atomic operations when rendering to a framebuffer
with a depth attachment.
2018-10-15 16:35:40 +02:00
Philip Rebohle
890e5f8c9c
[meta] Release v0.90
2018-10-13 16:31:32 +02:00
Philip Rebohle
6b5aa0b928
Merge branch 'vk_transform_feedback'
2018-10-13 08:00:51 +02:00
Philip Rebohle
8172d347be
Revert "[d3d10] Implement ID3D10Multithread"
...
This reverts commit 55d6eae210
.
We probably don't need it, and the current implementation is broken.
2018-10-12 19:29:52 +02:00
Philip Rebohle
8630ee235a
[util] Re-enable D3D10 for Bioshock
2018-10-12 19:06:53 +02:00
Philip Rebohle
55d6eae210
[d3d10] Implement ID3D10Multithread
2018-10-12 19:06:05 +02:00
Philip Rebohle
e549c9303b
[d3d10] Respect D3D10_CREATE_DEVICE_SINGLETHREADED flag
...
May improve performance in games which do not need the locking behaviour.
2018-10-12 18:36:02 +02:00
Philip Rebohle
6d18efdfc7
[d3d10] Lock device on context operations
...
May fix thread safety issues in some games. Apparently, the
D3D10Device is supposed to be thread safe by default.
2018-10-12 18:31:55 +02:00
Tk-Glitch
502af0f866
[util] Spoof AMD GPU for Dauntless and Redout.
...
It silences some nvapi related warnings and improves performance on both titles by up to 10%.
Also fixes a random crash on Redout.
2018-10-12 12:43:58 +02:00
Fredrick Lockert
27026f48a2
[util] Spoof AMD card for Star Citizen
2018-10-12 07:10:13 +02:00
Philip Rebohle
406816d17c
[d3d10] Support pOffsets parameter in SOGetTargets
2018-10-10 19:55:42 +02:00
Philip Rebohle
93a851a2fc
[d3d11] Implement DrawAuto method
2018-10-10 19:55:42 +02:00
Philip Rebohle
44024e7a7a
[d3d11] Implement Stream Output queries
2018-10-10 19:55:42 +02:00
Philip Rebohle
93753a5ce7
[d3d11] Bind transform feedback buffers in SOSetTargets
2018-10-10 19:55:41 +02:00
Philip Rebohle
97d776cc00
[d3d11] Allocate counter for stream output buffers
2018-10-10 19:55:41 +02:00
Philip Rebohle
0d89dfae95
[d3d11] Report format support for stream output buffers
2018-10-10 19:55:41 +02:00
Philip Rebohle
7369dee9d6
[d3d11] Create passthrough geometry shader if necessary
...
Fixes stream output in Unity Engine titles.
- Fix compilation with new DxbcProgramInfo struct.
2018-10-10 19:55:41 +02:00
Philip Rebohle
5463dc7e6c
[d3d11] Implement CreateGeometryShaderWithStreamOutput
...
- Emit error instead of warning when enabling rasterization
2018-10-10 19:55:26 +02:00
Philip Rebohle
f42ea9f1d1
[d3d11] Set transform feedback usage, stage and access flags
2018-10-10 13:05:38 +02:00
Philip Rebohle
3a48092630
[dxvk] Implement transform feedback draw call
2018-10-10 13:05:37 +02:00
Philip Rebohle
929b75a038
[dxvk] Add support for transform feedback queries
2018-10-10 13:05:37 +02:00
Philip Rebohle
4bdf6daa39
[dxvk] Add structure for transform feedback stream queries
2018-10-10 13:05:37 +02:00
Philip Rebohle
3435702719
[dxvk] Add basic support for indexed queries
2018-10-10 13:05:37 +02:00
Philip Rebohle
76d917df20
[dxvk] Add xfb counter write -> xfb counter read barrier
...
- Update xfb counter barrier
2018-10-10 13:05:37 +02:00
Philip Rebohle
93b1b9bc00
[dxvk] Implement transform feedback
...
Begins transform feedback when rendering with an xfb-enabled
pipeline bound, and ends transform feedback as needed, while
writing back the counters supplied by the app. This does not
yet support transform feedback queries or the draw command.
2018-10-10 13:05:37 +02:00
Philip Rebohle
a27e440272
[dxvk] Detect Xfb and set rasterized stream index
2018-10-10 13:05:37 +02:00
Philip Rebohle
1f135f59ed
[dxvk] Add Xfb API stubs
2018-10-10 13:05:37 +02:00
Philip Rebohle
52e1671167
[dxvk] Add Xfb context state
2018-10-10 13:05:37 +02:00
Philip Rebohle
989a10ab88
[dxvk] Enable transform feedback device feature if available
...
- Enable geometryStreams feature
2018-10-10 13:05:37 +02:00
Philip Rebohle
e27083a04f
[dxvk] Query transform feedback device properties if available
2018-10-10 13:05:37 +02:00
Philip Rebohle
13ecbcaaf5
[dxvk] Enable VK_EXT_transform_feedback
2018-10-10 13:05:37 +02:00
Philip Rebohle
61d56a1732
[dxvk] Add definitions for transform feedback entry points
2018-10-10 13:05:37 +02:00
Philip Rebohle
bf906aa226
[dxvk] Add support for transform feedback access flags
2018-10-10 13:05:37 +02:00
Philip Rebohle
d2c62a8645
[dxbc] Implement passthrough geometry shader
...
This is needed when vertex or domain shader code is
passed to CreateGeometryShaderWithStreamOutput.
- Fix compilation with new DxbcProgramInfo.
2018-10-10 10:28:15 +02:00
Philip Rebohle
017699df15
[dxbc] Implement Xfb output declarations and setup
2018-10-10 10:28:15 +02:00
Philip Rebohle
bb780bbe10
[dxbc] Add Xfb decorations
2018-10-10 10:28:15 +02:00
Philip Rebohle
6a5fe2247a
[dxbc] Add support for multiple streams in geometry shaders
2018-10-10 10:28:15 +02:00
Philip Rebohle
a42f03e32d
[dxbc] Add Xfb structures to DxbcModuleInfo
2018-10-10 10:28:15 +02:00
Philip Rebohle
eff81c7edf
[dxvk] Implement getShader method for graphics pipelines
2018-10-10 10:28:12 +02:00
Philip Rebohle
e5f3019524
[dxgi] *Actually* silence WaitForVBlank warning
...
Guess who needs more coffee.
2018-10-09 19:17:20 +02:00
Philip Rebohle
08b241b3ea
[d3d11] Add option to disable deferred context mapping speed hack
...
Fixes a regression in The Evil Within.
We should probably find a proper solution, but for now this is the best
thing we can do for games which reuse command lists.
2018-10-09 17:07:50 +02:00
Philip Rebohle
6dd5cdbc3e
[dxgi] Silence WaitForVblank warning
2018-10-09 14:48:49 +02:00
Andre Heider
8fcdf78b51
[dxbc] rename DxbcProgramVersion to DxbcProgramInfo
...
The version in not part of this class anymore.
2018-10-08 12:32:01 +02:00
Andre Heider
8492f0501e
[dxbc] Drop unused major/minor from DxbcProgramVersion
2018-10-08 12:32:01 +02:00
Philip Rebohle
781ee00f5c
[dxvk] Refactor indirect draw/dispatch commands
...
Introduces an OpenGL-style bind point for the argument buffer, which
means we can avoid a lot of unnecessary reference tracking in games
that do a lot of indirect draw calls.
Reduces CPU overhead in Assassin's Creed Odyssey.
2018-10-08 10:23:18 +02:00
Philip Rebohle
eb55325640
[dxvk] Fix missing buffer tracking for indirect draw calls
...
This is optimized to allow a large number of indirect draws to be
submitted if they all access the same argument buffer, as is the
case in Assassin's Creed Syndicate and Odyssey.
2018-10-07 17:51:44 +02:00
Philip Rebohle
af16461858
[dxvk] Fix missing indirect dispatch barriers and tracking
2018-10-07 17:33:03 +02:00
Philip Rebohle
417b6cb6dc
[dxvk] Reduce CPU overhead of indirect draw calls
2018-10-07 17:09:46 +02:00
Philip Rebohle
87f1cd2385
[dxgi] Fix undefined display mode format for display mode transitions
...
Fixes resolution change option in Dark Souls 3.
2018-10-06 08:01:48 +02:00
Philip Rebohle
09bbb68d98
[meta] Release v0.81
2018-10-05 21:14:11 +02:00
Philip Rebohle
a3bf90f5a3
[vr] Cosmetic code cleanup
2018-10-04 12:30:26 +02:00
Andrew Eikum
bc367fd817
[vr] Load native openvr library on winelib builds
2018-10-04 12:08:12 +02:00
Philip Rebohle
0b4f1b6d6f
[d3d11] Implement DiscardView and DiscardResource for images
2018-10-01 16:54:34 +02:00
Philip Rebohle
0d9e714d3e
[dxvk] Add discardImage method
2018-10-01 16:54:34 +02:00
Philip Rebohle
da76d74a2d
[dxvk] Minor internal buffer API cleanup
2018-09-30 11:05:20 +02:00
Philip Rebohle
aaaf2c53e0
[dxvk] Don't reset unused bind points
...
Saves a few CPU cycles when binding resources.
2018-09-29 20:23:00 +02:00
Philip Rebohle
387f41ede5
[dxvk] Make DxvkBuffer destructor explicit
...
Prevents compiler from inlining massive amounts of code where it's
not needed. This is more consistent with the other classes as well.
2018-09-29 20:19:07 +02:00
Philip Rebohle
da8274daaf
[d3d11] Don't set meta-resolve usage flags for depth buffers
...
Depth buffers cannot be resolved in D3D11.
May improve performance on some hardware when MSAA is used.
2018-09-29 14:59:36 +02:00
Philip Rebohle
894d9606d5
[dxgi] Add option to force-enable MAILBOX present mode
...
Provides Enhanced Sync-like functionality (#678 ).
2018-09-29 08:13:52 +02:00
Philip Rebohle
de4c88d5aa
[d3d11] Skip CopyResource when src and dst resource are the same
2018-09-28 19:41:27 +02:00
Philip Rebohle
c9d61e16d9
[d3d11] Skip ResolveSubresource when dst and src resource are the same
...
Fixes black screen issue in Mortal Kombat X (#670 ).
2018-09-28 19:41:16 +02:00
Philip Rebohle
33408a8a74
[dxvk] Fix stencil state assignment
...
Not really important since we don't use stencil anyway,
but we should at least populate the struct correctly.
2018-09-27 21:04:49 +02:00
Philip Rebohle
161fb6215a
[d3d11] Optimize UAV binding
...
- UpdateBuffer is faster than ClearBuffer for small updates.
- We shouldn't dispatch *two* CS commands for each UAV, one is enough.
2018-09-27 16:50:34 +02:00
Philip Rebohle
518ab2ebdd
[dxvk] Refactor resolve ops
...
Brings this more in line with clear and copy operations, which
both have more than one code path. Also optimizes barriers.
2018-09-27 12:42:20 +02:00
Philip Rebohle
c5f7f9f3b0
[d3d11] Enable usage flags for meta copy formats
...
This is required in order to make meta copies work between images
that do not have the necessary D3D11 bind flags set, and it may
speed things up because it allows rendering to the destination
image directly rather than requiring a temporary image.
2018-09-27 11:44:09 +02:00
Philip Rebohle
509e6f1abf
[dxvk] Use new meta copy for depth <> color image copies
2018-09-27 11:44:09 +02:00
Philip Rebohle
fad2e13882
[dxvk] Add meta copy code
...
The current way of copying data between incompatible images is slow
and does not work for multisampled images. This new code implements
a render pass which performs an exact copy of the source data.
2018-09-27 11:44:09 +02:00
Philip Rebohle
c11d492597
[dxvk] Add meta copy shaders
...
Used to copy between depth and color images.
2018-09-27 11:44:09 +02:00
Philip Rebohle
b73b91a5c9
[dxgi] Implement slightly better QueryResourceResidency stub
...
This now returns redidency values for all queried resources, but
not the correct ons. May fix issues in Fallout 4?
2018-09-27 07:31:30 +02:00
Philip Rebohle
63d7770870
[dxvk] Flush queued barriers when binding any frame buffer
...
We need to flush when starting meta render passes as well.
2018-09-25 21:32:21 +02:00
Philip Rebohle
8bcd47d6dc
[dxvk] Simplify pipeline object locking
...
Any more complex approach is not very useful at the moment
because we have to put a lock around the actual compile
function anyway.
2018-09-25 18:22:58 +02:00
Philip Rebohle
0be291e123
[dxvk] Don't do image-to-buffer copies for multisampled images
...
Vulkan does not allow this.
2018-09-25 14:37:53 +02:00
Philip Rebohle
305c361c00
[d3d11] Fix incomplete usage mask for buffer UAVs
2018-09-25 10:14:42 +02:00
Philip Rebohle
ddfa7e40b3
[dxvk] Renove redundant vkDestroyPipeline
2018-09-24 22:54:49 +02:00
Philip Rebohle
a950872c7c
[dxvk] Check whether the vertex binding / attribute count is valid
2018-09-24 16:22:12 +02:00
Philip Rebohle
1e40a14a50
[d3d10] Disable D3D10 support for Bioshock
2018-09-24 15:30:13 +02:00
Philip Rebohle
bd4338be42
[d3d10] Add option to enable or disable D3D10 support
2018-09-24 15:26:33 +02:00
Philip Rebohle
04ed4273ba
[dxvk] Avoid buffer slice copy when binding index/vertex buffers
...
Also redesigns getDescriptor to always return the offset.
2018-09-23 20:09:01 +02:00
Philip Rebohle
1c865328d3
[meta] Release v0.80
2018-09-23 19:01:15 +02:00
Philip Rebohle
b49876528a
[dxvk] Enable state cache for compute pipelines
...
Also cleans up some code to get the design more in line
with how graphics pipelines are handled.
2018-09-23 14:42:03 +02:00
Philip Rebohle
6c8ac9e5f4
[dxvk] Add compute shader support to pipeline state cache
2018-09-23 14:42:03 +02:00
Philip Rebohle
689602497f
[d3d11] Use state cache
2018-09-23 14:41:49 +02:00
Philip Rebohle
4a72cae1e6
[dxvk] Enable state cache
2018-09-23 14:41:43 +02:00
Philip Rebohle
57dab630b5
[dxvk] Add pipeline state cache
...
Stores state vectors for graphics pipelines in a file and allows
games to start compiling them in advance on subsequent launches.
Changes:
(1) Add environment variable to select the cache file path
(2) Add magic number and entry size to cache file header
2018-09-22 22:38:35 +02:00
Philip Rebohle
d6742e38c5
[dxvk] Lock pipeline object while compiling one pipeline
...
This prevents us from compiling the exact same pipeline twice
at the same time, which for some reason crashes RADV.
2018-09-22 12:04:06 +02:00
Philip Rebohle
0e2d63f6d2
[dxvk] Add method to retrieve shader key from shader module
2018-09-22 12:04:06 +02:00
Philip Rebohle
f3a23ab81f
[util] Add convenience method for SHA1 hash compulation
2018-09-22 12:04:06 +02:00
Philip Rebohle
83447975ac
[dxvk] Refactor pipeline stat counters
...
The stat counter struct no longer has to be passed to
the pipeline compiler function.
The new implementation uses atomic counters of the pipeline manager
rather than per-command list counters, which removes the need to
pass the counter structure to the compiler function.
2018-09-22 12:02:20 +02:00
Philip Rebohle
5410680401
[dxvk] Refactor pipeline object constructors
...
This way we don't need to pass everything to the pipeline objects.
2018-09-22 11:59:25 +02:00
Philip Rebohle
9284081180
[dxvk] Remove redundant declaration
2018-09-21 19:43:47 +02:00
Philip Rebohle
0f52ec2796
Revert "[dxvk] Move command submission to separate thread"
...
This reverts commit f61ff5d345
.
Apparently, this causes extremely poor frame times on some
configurations. Reason is currently unknown.
2018-09-20 19:58:00 +02:00
Philip Rebohle
2eda95f61a
[dxvk] Optimize retrieval of dynamic buffer offsets
2018-09-20 15:19:33 +02:00
Philip Rebohle
f61ff5d345
[dxvk] Move command submission to separate thread
...
- Reduces load on the CS thread and the main rendering thread.
- This takes into account that VR apps access the queue as well.
2018-09-20 14:43:06 +02:00
Philip Rebohle
539cc77b6e
[dxvk] Eliminate buffer slice copy when updating buffer descriptors
2018-09-20 12:10:43 +02:00
Philip Rebohle
03a760bec6
[meta] Remove redundant linker entries for the utils library
...
Fixes #651 .
2018-09-19 21:00:44 +02:00
Philip Rebohle
35238ec4d1
[d3d11] Make D3D11 context methods more robust to null pointers
...
Assetto Corsa tries to do some questionable things when reflections
are disabled in the game options. Refs #648 .
2018-09-19 12:33:30 +02:00
Philip Rebohle
c1190e81b2
[d3d11] Handle pResource == nullptr case during view creation
2018-09-19 11:55:11 +02:00
Philip Rebohle
837a3f5787
[d3d11] Don't allow creation of 0x0-sized textures
2018-09-18 21:33:27 +02:00
Philip Rebohle
bf5476900a
[d3d11] Expose Feature Level 11_1
...
- We don't actually support the ExtendedResourceSharing feature, but
since we currently don't support resource sharing at all, this makes
no difference in practice
- Likewise, MultisampleRTVWithForcedSampleCountOne is not really
supported, as the Vulkan backend will still use the sample count
of the color attachments, but should have no effect in practice.
- This does not change the fact that Predication and Stream Output
are still missing.
2018-09-18 16:27:40 +02:00
Philip Rebohle
d9009efd22
[d3d11] Implement and advertize support for CopyWithOverlap feature
2018-09-18 16:22:47 +02:00
Philip Rebohle
e3c2815782
[dxvk] Add copyBufferRegion and copyImageRegion methods
...
These new methods can support overlapped subresource copies by
creating a temporary resource and effectively using two copy
operations. This is required for D3D11 overlapped copies.
2018-09-18 16:20:57 +02:00
Philip Rebohle
3f47fdab4d
[d3d11] Advertize support for the ForcedSampleCount rasterizer state
2018-09-18 13:23:28 +02:00
Philip Rebohle
482930f04a
[dxvk] Implement backend support for D3D11 forced sample count
...
We don't support rasterization with a sample count different from
the framebuffer sample count, but if there are no attachments, any
sample count is allowed.
2018-09-18 13:22:28 +02:00
Philip Rebohle
4469ef1ec1
[d3d11] Replace shader debug name with shader key
2018-09-18 10:35:27 +02:00
Philip Rebohle
a078bb947e
[d3d11] Replace D3D11ShaderKey with DxvkShaderKey
2018-09-18 10:35:08 +02:00
Philip Rebohle
0843e2211c
[dxvk] Add new DxvkShaderKey to represent unique shader key
2018-09-18 10:35:08 +02:00
Philip Rebohle
12efd88726
[dxvk] Avoid more unnecessary copies of ref-counted pointers
...
Improves performance measurably in Shadow Warrior 2 when CPU bound.
2018-09-17 23:42:34 +02:00
Philip Rebohle
3a1fbdaaf1
[dxvk] Avoid buffer slice copy when tracking buffer views
2018-09-17 23:30:36 +02:00
Philip Rebohle
6c889c0005
Revert "[d3d11] Avoid unnecessary buffer slice copy when mapping buffer"
...
This reverts commit 72106a02cb
.
Breaks things for some reason. Doesn't have much of an impact anyway.
2018-09-17 23:08:00 +02:00
Philip Rebohle
72106a02cb
[d3d11] Avoid unnecessary buffer slice copy when mapping buffer
2018-09-17 22:04:31 +02:00
Philip Rebohle
820904f22d
[dxvk] Optimize ref counting around resource tracking
...
Micro-optimization that reduces the number of atomic increments
and decrements when moving reference-counted objects around.
2018-09-17 20:42:08 +02:00
Philip Rebohle
f42f708f72
[dxvk] Rename DxvkBindingState -> DxvkBindingMask
...
Preparation for some more binding-related work.
2018-09-17 10:45:28 +02:00
Philip Rebohle
eac86fab15
[dxvk] Do not map allocations that don't need a HOST_VISIBLE memory type
...
Should reduce the amount of virtual memory used on systems without
dedicated VRAM. Refs #640 .
2018-09-17 09:08:00 +02:00
Philip Rebohle
19408f0ebe
[d3d11] Fix reported RowPitch/DepthPitch for mapped buffers
...
Some games rely on this being the exact buffer size.
2018-09-17 07:45:05 +02:00
Philip Rebohle
a78dc3b444
[dxvk] Do not store a strong reference from adapter to instance
...
The instance stores an array of adapters now. Fixes crash when
using the device filter, and fixes the instance not getting
destroyed.
2018-09-16 19:11:15 +02:00
Philip Rebohle
fde67b9773
[dxgi] IsCurrent is not actually a stub
2018-09-16 10:20:24 +02:00
Philip Rebohle
c8e0c253ba
[dxvk] Simplify graphics pipeline instance management
2018-09-16 10:07:45 +02:00
Philip Rebohle
b6bf72aeb6
[dxvk] Fix some legacy cruft around Vulkan instance creation
2018-09-15 14:16:56 +02:00
Philip Rebohle
364e15d11a
[dxvk] Remove all remaining pipecompiler code
2018-09-14 17:22:56 +02:00
Philip Rebohle
18927dc958
[dxvk] Remove asynchronous pipeline compiler
2018-09-14 16:46:07 +02:00
Jens Peters
d4947261c6
[util] Improve logging of configuration options
2018-09-14 15:34:46 +02:00
Philip Rebohle
922f0382f6
[dxvk] Remove option for asynchronous shader compilation
...
Unsafe.
2018-09-13 20:40:32 +02:00
Philip Rebohle
059073fcd0
[dxbc] Fix missing hull shader input declarations
...
Fixes tessellation in Tomb Raider 2013. Closes #368 .
2018-09-13 18:25:32 +02:00
Philip Rebohle
797c568c74
[dxbc] Use temporary array for per-patch hull shader outputs
...
Drivers don't seem to like it when output arrays are addressed dynamically.
2018-09-13 15:17:39 +02:00
Philip Rebohle
d86b5361f0
[dxvk] Only mark render targets as used on draw calls
2018-09-13 12:00:49 +02:00
Philip Rebohle
9e3914b368
[dxvk] Remove redundant parameter from DxvkCommandList constructor
2018-09-12 18:54:05 +02:00
Philip Rebohle
2d93452cba
[util] Spoof Nvidia card for Assassin's Creed Syndicate
...
This one actually doesn't work properly when the AMD AGS library
is not present, but is fine with nvapi not being there.
2018-09-12 14:10:49 +02:00
Philip Rebohle
1127a344dc
[dxvk] Fix query type enablement in query manager
...
We cannot use query types as flag indices, since query
types added in the future may have gretaer enum values
than 32.
2018-09-11 13:01:00 +02:00
Philip Rebohle
f9add97a07
[d3d11] Fix Begin/End for all queries other than Event and Timestamp
2018-09-11 13:00:52 +02:00
Philip Rebohle
ea6b6e2e53
[dxvk] Rename useAsyncPipeCompiler -> asyncPipeCompiler
2018-09-11 08:38:18 +02:00