Philip Rebohle
cc22ccfc5c
[dxvk] Use new lifetime tracking for resources
2024-10-18 12:42:33 +02:00
Philip Rebohle
8389734e9f
[dxvk] Use new lifetime tracking for raw allocations
2024-10-18 12:42:33 +02:00
Philip Rebohle
b011e22406
[dxvk] Use new lifetime tracking for samplers
2024-10-18 12:42:33 +02:00
Philip Rebohle
7fef97dae0
[dxvk] Use new lifetime tracking for events
2024-10-18 12:42:33 +02:00
Philip Rebohle
50d8e3933a
[dxvk] Use new lifetime tracking for queries
2024-10-18 12:42:33 +02:00
Philip Rebohle
4a00623c40
[dxvk] Introduce DxvkTrackingRef and new tracking functions
...
The intention here is to clean up the code significantly while also
paving a way to perform more complex operations on resource release.
2024-10-18 12:42:33 +02:00
Philip Rebohle
56e8d55830
[dxvk] Remove direct resource allocation tracking
...
Track the containing virtual resources instead and only explicitly
keep allocations alive through invalidations.
2024-10-18 12:42:33 +02:00
Philip Rebohle
693ee7898d
[dxvk] Refactor queries to be properly ref-counted
...
Should fix a long-standing lifetime tracking issue with timestamp
queries as well as invalid Vulkan usage with overlapping scoped
queries.
2024-10-13 12:08:35 +02:00
Philip Rebohle
1b9c59c964
[dxvk] Refactor events to be properly ref-counted
...
Mostly serves as a proof-of-concept for the pending query rework,
but also cleans up some silly code.
2024-10-13 12:08:35 +02:00
Philip Rebohle
ac1dfbacb6
[dxvk] Move image initialization to init command buffer
2024-10-08 17:46:18 +02:00
Philip Rebohle
d330718353
[dxvk] Implement staging buffer statistics
2024-10-08 17:46:18 +02:00
Philip Rebohle
725a04b954
[dxvk,d3d11] Refactor uploadImage to consume a staging buffer
...
And also handle format differences.
2024-10-08 17:46:18 +02:00
Philip Rebohle
46f10c8fd5
[dxvk] Add command list parameter to dispatch-related functions
2024-10-04 12:58:55 +02:00
Philip Rebohle
7d31a7f16f
[dxvk] Add command list parameter to some query-related functions
...
And reintroduce cmdResetQueryPool.
2024-10-04 12:58:55 +02:00
Philip Rebohle
4ce200bcae
[dxvk] Add command list parameter to cmdBindDescriptorSet(s)
2024-10-04 12:58:55 +02:00
Philip Rebohle
aa162365ce
[dxvk] Add command list parameter to cmdPushConstants
...
We want to be able to invoke compute shaders during init commands.
2024-10-04 12:58:55 +02:00
Philip Rebohle
4635397bb1
[dxvk] Implement sampler pool
...
Deduplicates redundant sampler objects and makes sampler creation
as well as lifetime tracking a bit more efficient.
2024-09-28 20:21:06 +02:00
Philip Rebohle
af4a2f7973
[dxvk] Introduce DxvkResourceMemoryInfo
...
And replace the old sparse thing.
2024-09-26 17:37:50 +02:00
Philip Rebohle
5263307c4a
[dxvk] Improve lifetime tracking logic
...
Reduces ref counting overhead on the CS thread a bit.
2024-09-26 17:37:50 +02:00
Philip Rebohle
088ba404a6
[dxvk] Rework buffer view creation
2024-09-26 17:37:50 +02:00
Philip Rebohle
14990dbb49
[dxvk] Rework buffer slice allocation
...
Temporary solution that hits the allocator on every single invalidation,
which isn't great but will do for now.
2024-09-26 17:37:50 +02:00
Robin Kertels
f83ba898af
[dxvk] Use signed int for vertexOffset
...
BaseVertexIndex is signed in Vulkan, D3D11 & D3D9.
2024-02-05 13:13:18 +00:00
Philip Rebohle
64828e2c6c
[dxvk] Use vkCmdBindIndexBuffer2 if supported
2023-08-24 13:12:07 +02:00
Joshua Ashton
4e9853f608
[dxvk] Expose depth bias representation/exact controls
2023-06-20 13:31:48 +01:00
Philip Rebohle
b1b0abdbbf
[dxvk] Move presenter implementation to DXVK module
2023-06-01 17:48:51 +02:00
Philip Rebohle
41ee092b97
[dxvk] Get rid of global timeline semaphore
...
Timeline semaphores are broken on 32-bit Proton, so just use the existing
command list binary semaphore to synchronize sparse binding operation.
This will introduce some additional graphics queue submissions around
sparse binding, but since that is basically unused it's not a concern.
2023-01-21 13:15:09 +01:00
Philip Rebohle
196fefec4c
[dxvk] Enable dynamic multisample state if supported by the device
...
Eliminates stutter in situations where sample rate shading is used with MSAA.
2023-01-06 23:48:31 +01:00
Philip Rebohle
fea86ef116
[dxvk] Use dynamic depth clip enable for linked pipelines if supported
...
This way we won't have to compile any vertex shader pipelines twice.
2022-10-24 16:39:24 +02:00
Philip Rebohle
1b66b8c9f3
[dxvk] Go back to fence-based command list synchronization
...
Timeline semaphores are too unreliable on 32-bit Proton builds.
2022-09-04 18:23:11 +02:00
Philip Rebohle
12d2f8a9d4
[dxvk] Expose sparse binding operations as part of the command list
2022-08-26 05:53:03 +02:00
Philip Rebohle
2615af7664
[dxvk] Submit sparse binding operations alongside command buffers
2022-08-26 05:53:03 +02:00
Philip Rebohle
6f2ff2562d
[dxvk] Support splitting command lists into multipe submissions
2022-08-22 15:43:23 +02:00
Philip Rebohle
e378be826e
[dxvk] Use DxvkCommandPool
2022-08-22 14:40:41 +02:00
Philip Rebohle
c3a721f562
[dxvk] Introduce DxvkCommandPool
2022-08-22 14:14:25 +02:00
Philip Rebohle
def93fd18b
[dxvk] Introduce DxvkCommandSubmissionInfo
2022-08-22 14:14:25 +02:00
Philip Rebohle
d367fac64e
[dxvk] Rework queue submission helper
...
We want this to be less verbose and smarter about when to perform
submissions for when we introduce the ability to split a command
list into multiple submissions.
2022-08-22 14:14:25 +02:00
Philip Rebohle
f88239719c
[dxvk] Explicitly mark execution command buffer as used
...
We can omit the execution command buffer in some circumstances,
and for the sparse resource changes we need to track this in
order to be able to merge consecutive sparse binding calls.
We only need to do this on action commands with observable side effects
as long as the backend still properly resets those command buffers.
All draw commands are implcitly covered by cmdBeginRendering.
2022-08-22 12:36:59 +02:00
Philip Rebohle
dd0d611d4d
[dxvk] Reintroduce binary semaphore for transfer <-> graphics sync
...
The global timeline semaphore does not work here since we could be
signaling it from two different queues at the same time, or out of
order.
2022-08-22 05:52:28 +02:00
Philip Rebohle
f385b4bb47
[dxvk] Use global timeline semaphore for command list synchronization
...
Replaces the old fence mechanism and also makes it easier to
synchronize across queues.
2022-08-22 00:40:07 +02:00
Philip Rebohle
11ef1084d0
[dxvk] Rename semaphore stuff in command list code
2022-08-22 00:08:42 +02:00
Philip Rebohle
23c3960f65
[dxvk] Store WSI semaphore pair directly with the command list
2022-08-22 00:07:15 +02:00
Philip Rebohle
ab1d629961
[dxvk] Implement lifetime tracking for graphics pipelines
2022-08-09 13:40:58 +02:00
Philip Rebohle
9d8484f2e9
[dxvk] Use synchronization2 functions for timestamp queries
...
Again not really making use of the new stage flags, but might as well
call the function. Oversight from earlier changes.
2022-07-23 15:32:59 +02:00
Philip Rebohle
05a827703b
[dxvk] Add fence support to command list
...
Co-authored-by: Derek Lesho <dlesho@codeweavers.com>
2022-07-21 02:14:59 +02:00
Philip Rebohle
4167e1b887
[dxvk] Refactor queue submission info
...
Co-authored-by: Derek Lesho <dlesho@codeweavers.com>
2022-07-21 02:14:59 +02:00
Philip Rebohle
0ba741b7d2
[dxvk] Use copy_commands2 functions for buffer <-> image copies
2022-07-19 15:16:54 +02:00
Philip Rebohle
23846ad577
[dxvk] Use copy_commands2 functions for image copies
2022-07-19 15:16:54 +02:00
Philip Rebohle
dc1d82deff
[dxvk] Use copy_commands2 functions for buffer copies
2022-07-19 15:16:54 +02:00
Philip Rebohle
f39d49772d
[dxvk] Use copy_commands2 functions for image resolves
...
Same idea as with blits, don't expose VkImageResolve2.
2022-07-19 14:10:47 +02:00
Philip Rebohle
ff81323228
[dxvk] Use copy_commands2 functions for image blits
...
Don't expose VkImageBlit2 to client APIs since we can't easily
support pNext chains, so just convert the struct internally.
2022-07-19 13:53:28 +02:00