Philip Rebohle
49e5357a87
[hud] Greatly simplify frame time graph rendering
2022-02-20 15:58:29 +01:00
Philip Rebohle
0709c5f5c7
[hud] Greatly simplify text rendering in the HUD
2022-02-20 15:58:29 +01:00
Philip Rebohle
8ce83cabca
[dxvk] Only mark transfer buffers as transient
...
Otherwise we may accidentally catch things like uniform buffers as well.
2022-02-20 15:58:26 +01:00
Joshua Ashton
ccecc664ab
[meta] Bump arch-mingw-github-action to v7
2022-02-20 03:39:08 +00:00
Robin Kertels
fd23dcef64
[d3d9] Disable direct buffer mapping for RE games
2022-02-20 03:30:03 +00:00
Robin Kertels
cf4c5c3422
[d3d9] Add option to disable direct buffer mapping
2022-02-20 03:30:03 +00:00
Robin Kertels
6d71eea516
[d3d9] Store buffer map mode in D3D9CommonBuffer
2022-02-20 03:30:03 +00:00
Robin Kertels
97ae14b6a0
[d3d9] Synchronize only to given sequence number in WaitForResources
2022-02-20 03:29:31 +00:00
Robin Kertels
917a8d00a2
[d3d9] Track last staging resource usage with a sequence number
2022-02-20 03:29:31 +00:00
Robin Kertels
c12cd1952c
[d3d9] Handle different mip chain lengths in UpdateTexture
2022-02-20 03:29:04 +00:00
Philip Rebohle
80f744549f
[dxvk] Get rid of spinlock when allocating GPU events
...
This is not performance-critical
2022-02-20 01:16:04 +01:00
Philip Rebohle
0ade12dc83
[dxvk] Use lock-free list for render pass instances
...
And replace the spin lock with a regular mutex.
2022-02-20 00:04:06 +01:00
Philip Rebohle
477cb617ac
[dxvk] Use lock-free list for compute pipeline lookup
2022-02-19 17:36:42 +01:00
Philip Rebohle
67e2ee1b26
[dxvk] Use lock-free list for graphics pipeline lookup
...
And use a proper mutex if we do have to synchronize,
so that we can avoid busy-waits.
2022-02-19 17:36:42 +01:00
Philip Rebohle
a4fe43462c
[dxvk] Introduce lock-free list
2022-02-19 17:36:39 +01:00
Philip Rebohle
c9750f6657
[dxvk] Don't use spinlocks for CS chunk pool
...
No reason to anymore since SRWLocks are fast enough here.
2022-02-19 16:57:09 +01:00
Philip Rebohle
520d62903a
[dxvk] Remove null check when setting vertex stride
...
Move the responsibility to the front-end instead.
2022-02-19 13:29:59 +01:00
Philip Rebohle
8e11630370
[d3d11] Set zero stride when binding null vertex buffer
2022-02-19 13:20:36 +01:00
Philip Rebohle
146fbd492f
[dxvk] Free existing staging buffer before creating a new one
2022-02-18 18:13:28 +01: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
9af3dce304
[dxvk] Track buffer as used in initBuffer
...
Git ate my commit when I was testing something...
2022-02-17 23:42:31 +01:00
Philip Rebohle
6ae5488157
[d3d9] Use initBuffer method
2022-02-17 20:58:31 +01:00
Philip Rebohle
18a960a1e1
[d3d11] Use initBuffer method
2022-02-17 20:58:31 +01:00
Philip Rebohle
080aa1a989
[dxvk] Add initBuffer method
2022-02-17 20:58:31 +01:00
Philip Rebohle
f7e021f791
[dxvk] Add command buffer parameter to cmdFillBuffer
2022-02-17 20:58:31 +01:00
Philip Rebohle
102bceb30c
[dxvk] Remove unused clear methods
2022-02-17 20:58:31 +01:00
Philip Rebohle
752f98cf00
[d3d9] Use initImage to clear uninitialized image resources
2022-02-17 20:58:31 +01:00
Philip Rebohle
6d0e5dfd21
[d3d11] Use initImage to clear uninitialized image resources
2022-02-17 20:58:31 +01:00
Philip Rebohle
464c6810b3
[dxvk] Repurpose initImage method
...
This is now supposed to clear images of any type, and only to be
used for resource initialization after creation.
2022-02-17 20:58:31 +01:00
Philip Rebohle
34fd16b8f2
[d3d11] Add implicit flush after tracking sequence numbers
...
Flushing early when using a tracked resource may reduce stalls.
2022-02-16 20:49:00 +01:00
Philip Rebohle
2dfdc5ac3b
[d3d11] Enable stall tracking for timestamp queries
...
Because games are dumb and don't understand that the GPU doesn't
work synchronously with the render thread.
2022-02-16 19:59:11 +01:00
Philip Rebohle
d45f5a8d79
[d3d11] Handle subresource field in copy/move operations
...
Derp.
2022-02-15 13:00:10 +01:00
Philip Rebohle
e70f9f92a6
[util] Enable apitrace mode for Nier Replicant
...
Game is broken and reads back dynamic vertex/index buffers over PCI-E.
2022-02-14 09:20:41 +01:00
Philip Rebohle
4e464327ef
[util] Bump maxImplicitDiscardSize for Quantum Break
...
Otherwise we're synchronizing and frame times are garbage.
2022-02-14 04:21:46 +01:00
Philip Rebohle
e1b3bc45ce
[d3d11] Add d3d11.maxImplicitDiscardSize option
2022-02-14 04:17:56 +01:00
Philip Rebohle
63bf928ab5
[hud] Display GPU synchronization in HUD
2022-02-14 03:28:45 +01:00
Philip Rebohle
4d9b464f7c
[d3d9] Use new waitForResource method
2022-02-14 03:15:47 +01:00
Philip Rebohle
2f80f8847e
[d3d11] Use new waitForResource method
2022-02-14 03:15:47 +01:00
Philip Rebohle
0c99b17081
[dxvk] Introduce DxvkDevice::waitForResource
...
Blocks on the queue thread's condition variable instead of busy-waiting,
and tracks synchronization with new stat counters. Cleanup is rearranged
to minimize delays before signals and resources are notified.
2022-02-14 03:15:47 +01:00
Philip Rebohle
25ebf94873
[dxvk] Display barrier count in draw call HUD item
2022-02-14 01:10:15 +01:00
Philip Rebohle
316e252a27
[dxvk] Add stat counter for pipeline barriers
2022-02-14 01:08:55 +01:00
Philip Rebohle
b5078a7ec0
[dxvk] Reduce context staging buffer size to 4 MiB
...
Same idea as before, just create a temporary buffer for larger resources.
This can avoid frequent Vulkan memory allocations and deallocations since
many small buffers are more likely to fit into a single memory chunk than
a small number of large buffers, thus reducing the overall memory footprint.
2022-02-14 01:01:34 +01:00
Philip Rebohle
08ecd49c66
[dxvk] Don't suballocate large staging buffer allocations
...
Otherwise we'll risk wasting almost half the staging buffer memory.
Creating a temporary buffer is cheap enough, so just do that.
2022-02-14 01:00:48 +01:00
Philip Rebohle
b9201db554
[dxvk] Remove unused trimStagingBuffers method
2022-02-13 02:08:20 +01:00
Philip Rebohle
95b7e6c030
[dxvk] Rework HUD font texture initialization
...
We really shouldn't need a separate context for this.
2022-02-13 02:08:20 +01:00
Philip Rebohle
425fce9200
[dxvk] Introduce transient memory flag for staging buffers
...
Potentially reduces fragmentation by putting short-lived staging buffers
and sysmem resources created by the application into different memory pools.
2022-02-13 02:08:20 +01:00
Philip Rebohle
9d4be00fa7
[dxvk] Allow large sysmem allocations on 64-bit platforms again
...
Since we frequently discard staging buffers now, having larger chunks
is actually beneficial again.
2022-02-13 02:08:20 +01:00
Philip Rebohle
d262bebd90
[dxvk] Remove DxvkStagingDataAlloc
...
Unused and overly clunky.
2022-02-13 02:08:20 +01:00
Philip Rebohle
8518572d13
[dxvk] Use DxvkStagingBuffer in DxvkContext
2022-02-13 02:08:20 +01:00
Philip Rebohle
1b88bc624a
[dxvk] Remove unused updateImage function
2022-02-13 02:08:20 +01:00