1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-11-29 01:24:11 +01:00
Commit Graph

6382 Commits

Author SHA1 Message Date
Philip Rebohle
9977313c32 [dxvk] Do not defragment chunks with immovable resources 2024-10-24 12:31:18 +02:00
Philip Rebohle
62f266098e [dxvk] Consider driver allocations when computing memory budget 2024-10-24 12:31:18 +02:00
Philip Rebohle
de400ae8a9 [dxvk] Increase memory task tick rate to 0.5s
Makes cleanup a bit quicker in some cases.
2024-10-24 12:31:18 +02:00
Philip Rebohle
7a09ab6c83 [dxvk] Limit amount of memory to relocate per submission
If the resources we're moving around are in slow memory, moving a full
chunk at once can already take several milliseconds. Try to avoid that.
2024-10-24 12:31:18 +02:00
Philip Rebohle
787671ef62 [dxvk] Limit number of allocations to move per submissions 2024-10-24 12:31:18 +02:00
Philip Rebohle
899f48bc43 [dxvk] Periodically defragment VRAM chunks 2024-10-24 12:31:18 +02:00
Philip Rebohle
c4cddebb89 [hud] Visualize inactive chunks 2024-10-24 12:31:18 +02:00
Philip Rebohle
2c8fe59924 [dxvk] Sort chunks by allocation time for statistics 2024-10-24 12:31:18 +02:00
Philip Rebohle
69437c2fea [dxvk] Include chunk status in statistics 2024-10-24 12:31:18 +02:00
Philip Rebohle
7a693ed41a [dxvk] Implement per-submission resource relocation 2024-10-24 12:31:18 +02:00
Philip Rebohle
9cbd45b8cf [dxvk] Add helper class for resource relocation 2024-10-24 12:31:18 +02:00
Philip Rebohle
0723250c12 [dxvk] Introduce flag to synchronize transfer queue
Also, get rid of superfluous binary semaphores since we have
a straight per-submission timeline anyway.
2024-10-24 12:31:18 +02:00
Philip Rebohle
13da763f9b [dxvk] Use small_vector in submission code 2024-10-24 12:31:18 +02:00
Philip Rebohle
800792a67d [dxvk] Add function to safely acquire a resource 2024-10-24 12:31:18 +02:00
Philip Rebohle
c7a9c626f5 [dxvk] Handle dead chunks in pool allocator 2024-10-24 12:31:18 +02:00
Philip Rebohle
a9bcb40655 [dxvk] Add concept of disabled chunks to allocator 2024-10-24 12:31:18 +02:00
Philip Rebohle
bfcfcab60f [dxvk] Add method to allocate backing storage with constraints 2024-10-24 12:31:18 +02:00
Philip Rebohle
a3c8c88222 [dxvk] Fix race condition in relocation check
The storage pointer is not safe to dereference outside the CS thread
for relocatable resources since the storage object may change.
2024-10-24 12:31:18 +02:00
Philip Rebohle
3a1de271cb [dxvk] Introduce allocation modes
Will be useful when relocating resources for defragmentation purposes.
2024-10-24 12:31:18 +02:00
Philip Rebohle
9a8406f28a [dxvk] Add global resource map to memory allocator 2024-10-24 12:31:18 +02:00
Philip Rebohle
8e94a8bcc6 [dxvk] Add per-chunk allocation list 2024-10-24 12:31:18 +02:00
Philip Rebohle
4e40d0b939 [dxvk] Add allocation flag for moveable resources 2024-10-24 12:31:18 +02:00
Philip Rebohle
bb05f123db [dxvk] Pass resource cookie to allocation objects 2024-10-24 12:31:18 +02:00
Philip Rebohle
efebceecbe [dxvk] Introduce DxvkAllocationInfo
Useful when more properties are added in the future.
2024-10-24 12:31:18 +02:00
Philip Rebohle
7ccfb57d57 [dxvk] Reintroduce resource cookies 2024-10-24 12:31:18 +02:00
Philip Rebohle
809257051b [dxvk] Rename unspecific "next" member in DxvkResourceAllocation 2024-10-24 12:31:18 +02:00
Philip Rebohle
3befea6516 [dxvk] Actually count barriers from resource relocation 2024-10-24 12:31:18 +02:00
Philip Rebohle
90f32d76ff [dxvk] Ignore uninitialized image subresources during relocation 2024-10-24 12:31:18 +02:00
Philip Rebohle
77a1164d1b [dxvk] Track initialization of internally managed images
Otherwise, these will not be relocated properly during defragmentation.
2024-10-24 12:31:18 +02:00
Philip Rebohle
1c157d1a63 [util] Properly return reference from small_vector emplace_back 2024-10-24 12:31:18 +02:00
Philip Rebohle
4af31a9d64 [dxvk] Remove context type concept
We only have a single context per device now.
2024-10-24 12:30:54 +02:00
Philip Rebohle
b4ed108105 [d3d9] Remove format conversion context 2024-10-24 12:30:54 +02:00
Philip Rebohle
f9a99e81f4 [dxvk] Bump state cache format to v18
All D3D11 shader keys change, so we should invalidte existing caches.
2024-10-23 16:56:32 +02:00
Philip Rebohle
f3fa2535e8 [d3d11] Validate shader creation parameters 2024-10-23 16:56:32 +02:00
Philip Rebohle
800f71c4f5 [d3d11] Use existing MD5 hash to look up shader objects
Skips the expensive SHA-1 pass.
2024-10-23 16:56:32 +02:00
Philip Rebohle
ae9024492b [d3d11] Devirtualize context method forwarding 2024-10-23 16:56:22 +02:00
Philip Rebohle
d10df6353b [d3d11] Devirtualize resource and view creation method forwarding 2024-10-23 16:56:22 +02:00
Philip Rebohle
565af8c311 [dxvk] Add important assert to object tracker 2024-10-23 11:30:37 +02:00
Blisto91
24e0440043 [util] Remove The Old Republic config
Looks fine without since dxvk 2.0
2024-10-23 11:19:01 +02:00
Philip Rebohle
01300bb884 [dxvk] Improve some descriptor setup code
Help the compiler out since it cannot fully prove that two consecutive
calls to DxvkImageView::handle with the same argument return the same result.
2024-10-23 10:26:24 +02:00
Philip Rebohle
cd4d68244d [dxvk] Use real shader access types for writeable descriptor types
Mostly relevant for storage buffers since those are often read-only.
2024-10-23 10:08:03 +02:00
Blisto91
f813549ced [util] Set forceSamplerTypeSpecConstants for Alpha Protocol
Some objects like metal containers will have unwanted reflection when they shouldn't otherwise.
2024-10-22 11:34:02 +02:00
Philip Rebohle
ce42ce2f3f [dxvk] Remove memory worker thread 2024-10-21 17:29:38 +02:00
Philip Rebohle
a5dc3400bd [dxvk] Use swap chain fences to synchronize WSI semaphores
Requires EXT_swapchain_maintenance1 to work, otherwise we won't use this.
2024-10-21 12:02:44 +02:00
Philip Rebohle
27539fc838 [dxvk] Use timeline semaphores for GPU synchronization
Ditches the old fence and binary semaphore code.
2024-10-21 12:02:44 +02:00
Philip Rebohle
1ee60048c0 [dxvk] Create timeline semaphores in submission queue 2024-10-21 12:02:44 +02:00
Philip Rebohle
4c0cbbef6a [dxvk] Factor DxvkResource code into DxvkPagedResource
And remove the now obsolete code.
2024-10-18 12:42:33 +02:00
Philip Rebohle
6540ab4f3e [dxvk] Use DxvkPagedResource for CPU synchronization 2024-10-18 12:42:33 +02:00
Philip Rebohle
3a587c5116 [dxvk] Remove old lifetime tracking code 2024-10-18 12:42:33 +02:00
Philip Rebohle
cc22ccfc5c [dxvk] Use new lifetime tracking for resources 2024-10-18 12:42:33 +02:00