Philip Rebohle
75dadf2c1c
[dxvk] Use DxvkBufferAllocation in swap chain blitter
2024-09-26 17:37:50 +02:00
Philip Rebohle
5c2f56c9cc
[dxvk] Introduce DxvkBufferAllocation
...
For now, this is merely a wrapper around the existing buffer slice
struct in order to allow easier refactoring.
2024-09-26 17:37:50 +02:00
Philip Rebohle
d0832f8431
[vulkan] Move stage and access mask definitions to header
2024-09-26 17:37:50 +02:00
Philip Rebohle
7ec75aaf81
[util] Make likely/unlikely less annoying to use
2024-09-26 17:37:50 +02:00
Philip Rebohle
888906a6da
[util] Add some functionality to smart pointer
...
Basically lets us deal with objects that manage their own destruction,
which ideally shold be all of them at some point.
Also adds some missing comparison operators.
2024-09-26 17:37:50 +02:00
Philip Rebohle
06baa48c2b
[dxvk] Align allocation size to create global buffer
2024-09-26 13:13:48 +02:00
Philip Rebohle
401ca41091
[dxvk] Do not always keep an empty chunk around
...
Outdated thinking, we have a 20 second timer on this which should
be more than enough to ensure we're not spamming device memory
allocations.
2024-09-26 13:13:48 +02:00
Philip Rebohle
3cd7e3efb5
[dxvk] Tweak memory allocation behaviour on mapped memory types
2024-09-26 13:13:48 +02:00
Philip Rebohle
5c8728abd2
[hud] Use different colors to highlight mapped or non-mapped allocations
...
Useful on UMA systems or when we have to fall back to system memory.
2024-09-26 13:13:48 +02:00
Philip Rebohle
d00ca261af
[dxvk] Use worker to update adapter's memory statistics
...
Takes a bunch of pointer indirections and atomics off the hot path.
2024-09-26 13:13:48 +02:00
Philip Rebohle
27088beea8
[dxvk] Use worker thread to periodically free unused memory
...
System memory allocations typically peak very high while loading, but
just sit there unused afterwards. This allows us to free them based
on when they have last been used.
Works well in practice since best-fit avoids using empty chunks as much
as possible.
2024-09-26 13:13:48 +02:00
Philip Rebohle
e1fd2bff2c
[dxvk] Rewrite memory allocator
...
Uses a single allocator pair per memory type in order to make memory
allocations on the entire memory pool faster, and further reduce
fragmentation by applying the best fit strategy to the whole memory
pool.
2024-09-26 13:13:48 +02:00
Philip Rebohle
3a4dadb528
[dxvk] Add chunk concept to page allocator
...
This allows the allocator to operate on the entire allocated memory pool.
2024-09-26 13:13:48 +02:00
Philip Rebohle
266b99ad8d
[hud] Add HUD item to visualize memory chunk allocation
2024-09-26 13:13:48 +02:00
Philip Rebohle
f679d7d90f
[dxvk] Add detailed allocation statistics
2024-09-26 13:13:48 +02:00
Philip Rebohle
b46ef2ceff
[dxvk] Move memory statistics from memory types to heaps
2024-09-26 13:13:48 +02:00
Philip Rebohle
35fea6475d
[dxvk] Tune small buffer allocation sizes
...
The pool allocator works on powers of two, so buffers should too.
2024-09-26 13:13:48 +02:00
Philip Rebohle
3faa1a76da
[dxvk] Simplify memory chunk allocation
...
Reduces overall waste of memory by reusing already allocated
chunks more aggressively.
2024-09-26 13:13:48 +02:00
Philip Rebohle
661385584a
[dxvk] Use new allocators for chunk suballocation
2024-09-26 13:13:48 +02:00
Philip Rebohle
5efaa06c61
[dxvk] Add new page allocator implementation
2024-09-26 13:13:48 +02:00
Philip Rebohle
1eec969448
[util] Add 64-bit lzcnt
2024-09-26 13:13:48 +02:00
Philip Rebohle
343af21594
[build] Disable assertions for release builds
2024-09-26 13:13:48 +02:00
Philip Rebohle
0cf05780ab
[meta] Release 2.4.1
2024-09-26 12:09:26 +02:00
Philip Rebohle
15365f2d82
[d3d11] Synchronize shared texture initialization
2024-09-26 08:21:43 +02:00
WinterSnowfall
97091aad39
[util] Enable legacy DISCARD for Rayman 3
2024-09-26 06:48:13 +02:00
WinterSnowfall
a7b3b1e3a4
[d3d8] Add an option to respect DISCARD only for dynamic write-only buffers
2024-09-26 06:48:13 +02:00
WinterSnowfall
4fad20d77c
[d3d8] Relax viewport validation in windowed mode
2024-09-25 20:46:48 +02:00
琴梨梨OvO
bb6d1b3b4c
[util]Add support for Time Leap Paradise
2024-09-25 19:54:24 +02:00
Robin Kertels
f5ca3cf5df
[d3d9] ResolveZ: Only copy aspects that both images support
2024-09-25 00:32:13 +01:00
Robin Kertels
d7c2e3ac76
[d3d9] Use correct aspect mask when blitting depth stencil textures
...
We don't want to blit stencil when the D3D9 format doesn't have
stencil.
2024-09-25 00:32:13 +01:00
Robin Kertels
ca3aa2014b
[d3d9] Improve comment about synchronization with ProcessVertices
2024-09-22 22:53:55 +02:00
Robin Kertels
1d49f247ac
[d3d9] Remove incorrect early-exit
...
The same texture could be bound to
multiple slots and if the shader doesn't
use the lower index texture, we'd never
end up uploading it.
2024-09-22 22:53:55 +02:00
Robin Kertels
ef8bad33a5
[d3d9] Optimize late buffer uploads
...
... similar to what we're doing for textures.
2024-09-22 22:53:55 +02:00
Blisto91
5a08b3c451
[util] Cap fps for F.E.A.R 1 & expansions
...
Visual glitches can occur at very high fps
2024-09-22 21:07:08 +02:00
Robin Kertels
04ad98690b
[d3d9] Add SWVP HUD item
2024-09-22 21:03:23 +02:00
Robin Kertels
033104f335
[d3d9] Cleanup buffer memory flag selection
2024-09-22 21:03:23 +02:00
Robin Kertels
5bb8d09a96
[d3d9] Always use per-draw buffer uploads on pure SWVP devices
2024-09-22 21:03:23 +02:00
WinterSnowfall
97fb6e4f6d
[d3d9] Clean up supported formats from GetUnsupportedFormatInfo
2024-09-22 20:51:15 +02:00
WinterSnowfall
7985ac9cdb
[d3d9] Add R16 and AL16 as known unsupported formats
2024-09-22 20:51:15 +02:00
Blisto91
e687303197
[util] Cap Prince of Persia (2008) max fps
...
Game can get stuck when loading at very high fps
2024-09-22 17:47:51 +02:00
Robin Kertels
07e7781c0b
[d3d9] Only add meta image usage after determining layout
2024-09-22 15:48:18 +02:00
WinterSnowfall
c7cf0a7368
[d3d8] Respect D3DCREATE_MULTITHREADED and make d3d8 thread safe
2024-09-21 16:05:25 +02:00
Robin Kertels
c8791a6ba5
[d3d9] Don't emit 1-sized vector type in SWVP Emu
...
Fixes a validation error.
2024-09-20 12:57:11 +02:00
Robin Kertels
900edf55b5
[d3d9] Only create sampling image views if the image supports sampling
...
Fixes validation error
2024-09-20 12:57:11 +02:00
Robin Kertels
46e8161649
[d3d9] Enable shaderInt8 for ProcessVertices
2024-09-20 12:57:11 +02:00
Robin Kertels
828aaa5cdd
[d3d9] Add missing TRANSFER_SRC usage for swapchain helper images
2024-09-20 12:57:11 +02:00
Philip Rebohle
43c27670ef
[dxvk] Fix buffer view stuff again
...
Testing fallback paths that we only ever hit in scenarios without validation
output sure is fun....
2024-09-20 02:00:50 +02:00
Philip Rebohle
dd8af9da78
[dxvk] Fix buffer view derp systems not supporting maintenance5
2024-09-20 01:25:06 +02:00
Robin Kertels
80e950ac32
[util] Fix small_vector move
...
... again. We can only move over the ptr
if the other small_vector has MORE than N
elements, otherwise it will still use the local array.
2024-09-20 01:20:25 +02:00
Robin Kertels
2f9ce66879
[util] Fix small_vector move constructor
2024-09-19 20:56:09 +02:00