Robin Kertels
d998dee46e
[d3d11] Lock context in KeyedMutex::ReleaseSync
...
Co-authored-by: Yuxuan Shui <yshuiv7@gmail.com>
2023-11-16 15:43:07 +01:00
Joshua Ashton
428ca9416d
[d3d11] Implement synchronization on keyed mutexes
...
Co-authored-by: Paul Gofman <pgofman@codeweavers.com>
2023-08-23 16:50:52 +02:00
Philip Rebohle
3d5becaf6a
[d3d11] Implement Acquire/ReleaseWrappedResource
2023-03-18 00:50:42 +01:00
Philip Rebohle
3f9d2269f6
[d3d11] Synchronize queue submissions for 11on12 devices as necessary
...
When the app explicitly calls Flush, Signal or Wait, we need to wait
for the submission to actually take place so that subsequent D3D12
submissions execute in the correct order.
2023-03-18 00:50:42 +01:00
Philip Rebohle
591e2df701
[d3d11] Consider flushing after each CS chunk
...
This way we will never end up with overly long command lists.
2023-01-17 15:01:06 +01:00
Philip Rebohle
2a3d7ee7dc
[d3d11] Use new flush heuristic
2023-01-17 15:01:06 +01:00
Philip Rebohle
f952418958
[d3d11] Determine pending commands based on sequence number
...
We get this for free and this allows us to query how many CS chunks
have been emitted since the last flush.
2023-01-17 15:01:06 +01:00
Joshua Ashton
000a647c56
[d3d11] Store D3D11DeviceContextState as private ref
...
Avoids a circular dependency
2022-09-16 12:49:10 +02:00
Philip Rebohle
fdcbdeb28f
[d3d11] Implement dirty trackig for default-mapped images
...
Avoids GPU synchronization when using WriteToSubresource,
and also reduces bandwidth.
2022-09-05 05:52:55 +02:00
Philip Rebohle
ca833082b5
[d3d11] Fix broken image readback for mapped default images
2022-09-05 04:31:13 +02:00
Philip Rebohle
86bdda70b4
[d3d11] Move D3D10Multithread instance to immediate context
...
Deferred contexts do not support this.
2022-08-24 12:15:35 +02:00
Philip Rebohle
37a2b02558
[d3d11] Fix compiler error on GCC 10.3
2022-08-04 18:42:13 +02:00
Philip Rebohle
e49524fcb0
[d3d11] Move GetType and GetContextFlags to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
1d2d712dfb
[d3d11] Move d3d11_context_common.* -> d3d11_context.*
2022-08-04 13:43:36 +02:00
Philip Rebohle
77c032da5c
[d3d11] Move OM* functions to D3D11CommonContext
...
We can get rid of the immediate context overload as well
since we can just directly call FlushImplicit here.
2022-08-04 13:43:35 +02:00
Philip Rebohle
3ead348b82
[d3d11] Move UpdateSubresource code to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
e4204f76e6
[d3d11] Introduce D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
7e42939a4a
[d3d11] Call endFrame at the end of each frame
2022-06-28 14:35:57 +02:00
Philip Rebohle
17a1b0ad44
[d3d11] Consider empty CS chunks when tracking resources
...
Avoids deadlocks if we track multiple resources and flush in between.
2022-02-18 14:21:53 +01:00
Philip Rebohle
e1b3bc45ce
[d3d11] Add d3d11.maxImplicitDiscardSize option
2022-02-14 04:17:56 +01:00
Philip Rebohle
0364a79eb0
[d3d11] Optimize Unmap on immediate contexts
2022-02-11 18:17:35 +01:00
Philip Rebohle
5a6711ed1d
[d3d11] Synchronize only to given sequence number in WaitForResources
...
Avoids costly thread synchronization when mapping staging resources
for reading, as well as some other scenarios.
2022-02-11 18:17:35 +01:00
Philip Rebohle
d33dac569c
[d3d11] Track last staging resource usage with a sequence number
2022-02-11 18:17:35 +01:00
Philip Rebohle
6c862b63a2
[d3d11] Optimize UpdateSubresource for small buffer updates
...
Some games use UpdateSubresource to upload constant buffers in
between draws, so this path should be as fast as possible.
Also fixes a potential issue when using D3D11_COPY_NO_OVERWRITE
on deferred contexts, since the Map requirements don't hold here.
2022-02-07 16:14:02 +01:00
Philip Rebohle
4c222ec557
[d3d11] Use callback fence to signal Flush1 event
2021-08-05 22:57:58 +02:00
Philip Rebohle
e87aa08fd2
[d3d11] Implement basic video processor blitting
2021-05-30 19:42:43 +02:00
Philip Rebohle
969ac59667
[d3d11] Add ID3D11VideoContext stub
2021-05-30 19:42:43 +02:00
Joshua Ashton
742b52bbb5
[d3d11] Fix device child refs properly
2021-01-15 23:47:48 +01:00
Philip Rebohle
a9b6421f60
[d3d11] Support signaling event in Flush1
2020-03-19 23:38:28 +01:00
Joshua Ashton
7e3142b2ed
[d3d11] Hook up platform-specific clock
...
See 89dfa2bc22577c758cb8badd34e4f177192a6eff
2019-11-26 01:52:58 +01:00
Philip Rebohle
77a0cb2b19
[d3d11] Don't synchronize with CS thread on present
...
Instead, submit from the CS thread in order to prevent out-of-order
submissions. Improves minimum FPS in Final Fantasy XIV by 5-10%.
2019-11-02 17:53:17 +01:00
Philip Rebohle
be5dc234c1
[d3d11] Move common Begin/End implementation to immediate context
2019-11-02 13:48:03 +01:00
Philip Rebohle
1282c2b99e
[d3d11] Fix immediate context reference counting
...
Fixes various wine test failures.
2019-10-14 01:56:34 +02:00
Philip Rebohle
e9fcf64a8c
[dxvk] Only wait for writes when mapping with D3D11_MAP_READ
2019-09-20 01:44:02 +02:00
Philip Rebohle
f9d9307a28
[d3d11] Implement ID3D11DeviceContext4
2019-09-16 13:41:31 +02:00
Philip Rebohle
0599a82dee
[d3d11] Implement ID3D11DeviceContext3
2019-09-16 13:41:31 +02:00
Philip Rebohle
e1610f81dc
Revert "[d3d11] Use STDMETHODCALLTYPE for private virtual method"
...
For some reason, this produces broken binaries for some Gentoo
users. Fixes #1067 .
This reverts commit e5fa55cbb5fac2761b1e85e5d8008bf49ecea4c4.
2019-05-19 13:22:04 +02:00
Philip Rebohle
e5fa55cbb5
[d3d11] Use STDMETHODCALLTYPE for private virtual method
...
Improves code generation on some compilers.
2019-05-15 22:01:19 +02:00
Philip Rebohle
45be1dfb53
[d3d11] Flush more aggressively on stalling Event queries
...
Increases GPU utilization in Quake Champions.
2019-05-09 18:04:36 +02:00
Philip Rebohle
af45f810b2
[dxvk] Change flushing behaviour of immediate context methods
...
Should fix some inappropriate flushing, while flushing more
aggressively on render target changes.
We still keep the flush on UpdateSubresource since some games
use it to update large quantities of data.
2019-05-09 18:04:36 +02:00
Philip Rebohle
f733d082f4
[d3d11] Implement D3D11DeviceContext::SwapDeviceContextState
2019-05-04 15:57:57 +02:00
Philip Rebohle
5a30110d0f
Revert "[d3d11] Remove some flush points"
...
This reverts commit 5ab6f691aeb95c0b04cde5612f892716300a1da1.
Apparently this leads to extremely bad frame times on some Nvidia setups.
2018-10-25 20:55:37 +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
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
f1b075c0f3
[dxvk] Add CS chunk pool
...
Reduces the number of dynamic memory allocations for CS chunks by
recycling them once they are no longer needed. Also fixes a potential
issue with chunks that are dispatched multiple times.
2018-08-27 16:07:38 +02:00
Jacek Caban
c934d85b85
[d3d11] Move D3D11ImmediateContext constexpr values to .cpp file
...
In my winelib builds, I get unresolved dxvk::D3D11ImmediateContext::MinFlushIntervalUs symbol. I'm not sure why it doesn't inline this constexpr, but it doesn't seem useful to expose that in header anyway.
2018-07-19 08:55:34 +02:00
Philip Rebohle
42a676bbdb
[d3d11] Tweak implicit flush limits
...
We're going to flush more often in CPU-limited scenarios, but these
new values are reasonable especially in games which submit large
amounts of GPU work at once, and should help reduce rendering latency.
Improves GPU utilization and frame rates in Hellblade by up to 10%.
2018-06-27 20:25:33 +02:00
Philip Rebohle
9fee253d09
[d3d11] Add more implicit flush points
...
All these methods will implicitly spill the active render pass and
are typically not called very often, so we can try to keep the GPU
busy.
2018-06-27 18:34:17 +02:00
Philip Rebohle
c716372941
[d3d11] Move GetData implementation to D3D11ImmediateContext
...
It is illegal to call this method on a deferred context, so we should
filter out those calls. This allows the implementation to make use of
features specific to the immediate context.
2018-06-08 12:29:24 +02:00