Philip Rebohle
5595844f75
[dxvk] Add explicit buffer/image memory barrier methods
...
Useful for interop.
2023-03-18 00:50:42 +01:00
Philip Rebohle
da32453b42
[dxvk] Add submission feedback to command submissions
2023-03-16 20:59:43 +01:00
Philip Rebohle
d35bf455d9
[dxvk] Rename bindResourceBuffer to bindUniformBuffer
2023-01-15 15:36:05 +01:00
Philip Rebohle
43b19f773c
[dxvk] Introduce initSparseImage
2022-08-26 05:53:03 +02:00
Philip Rebohle
fc0d952edb
[dxvk] Introduce copySparsePages{To,From}Buffer
2022-08-26 05:53:03 +02:00
Philip Rebohle
d5348a0cf0
[dxvk] Introduce updatePageTable
2022-08-26 05:53:03 +02:00
Philip Rebohle
e923cc5b69
[dxvk] Change emitGraphicsBarrier to specify a dependency
2022-08-26 05:53:03 +02:00
Philip Rebohle
07a1045ffb
[dxvk] Add context methods for submission splitting
2022-08-22 15:44:00 +02:00
Philip Rebohle
ad020c23f9
[dxvk] Optimize barrier logic
...
The is*Dirty methods can exit early if the resource to check
is only used for reading. Only call get*Access to check for
write-after-write scenarios.
2022-08-10 20:47:52 +02:00
Philip Rebohle
11fbcd3131
[dxvk] Rework compute barrier handling to use common functions
...
Cleans up code a bit and should technically even make things a bit
more efficient.
2022-08-10 19:28:35 +02:00
Philip Rebohle
01014c1a2b
[dxvk] Rework checkGfx*Barrier methods
2022-08-10 19:28:35 +02:00
Robin Kertels
9d981ec1a8
[dxvk] Introduce DxvkMarker
...
Co-authored-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2022-08-10 17:31:55 +02:00
Philip Rebohle
08b9b0eb44
[dxvk] Introduce bindVertexBufferRange and bindIndexBufferRange
2022-08-07 19:03:51 +02:00
Philip Rebohle
26d46e7f80
[dxvk] Handle bound buffers with zero size in the backend
2022-08-07 18:45:17 +02:00
Philip Rebohle
2e6a2f1be3
[dxvk] Make shader stage parameter in bindShader a template parameter
2022-08-07 18:44:44 +02:00
Philip Rebohle
12c2d24d5c
[dxvk] Remove bindResourceView method
2022-08-07 17:59:20 +02:00
Philip Rebohle
317850e16f
[dxvk] Introduce bindResourceImageView and bindResourceBufferView methods
2022-08-07 17:59:20 +02:00
Joshua Ashton
31d17efb48
[dxvk] Add feedback loop aspect flags to bindRenderTargets
2022-08-06 01:33:30 +01:00
Philip Rebohle
b950102233
[dxvk] Don't use MaxNumActiveBindings for descriptor updates
2022-08-06 01:44:56 +02:00
Philip Rebohle
67c11e63e6
[dxvk] Remove old resource binding methods
2022-08-04 13:43:36 +02:00
Philip Rebohle
f10be7bc85
[dxvk] Add binding methods that take rvalue references
...
The goal here is to replace the old methods entirely.
2022-08-04 13:43:32 +02:00
Philip Rebohle
2782afaf8a
[dxvk] Inline pushConstants method
...
No reason not to.
2022-07-30 17:52:55 +02:00
Philip Rebohle
94ca65d587
[dxvk] Ignore spec constants that are not used by the current pipeline
...
May reduce the number of pipeline permutations.
2022-07-30 17:42:46 +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
a178c57aea
[dxvk] Remove barrier argument from render target transition functions
...
We're always using the same barrier set anyway.
2022-07-20 16:57:27 +02:00
Philip Rebohle
adb906b18c
[dxvk] Use synchronization2 functions for barriers
...
We don't really use the new stage/access flags yet, and I'm not sure
whether we will move to them since the benefits seem rather limited.
However, using the functions means we can bypass a lot of internal
translation inside some Vulkan drivers.
2022-07-19 02:27:31 +02:00
Philip Rebohle
f15466a2c5
[dxvk] Remove remaining built-in specialization constants
2022-07-17 17:06:42 +02:00
Philip Rebohle
ff39819086
[dxvk] Merge methods to bind a compute pipeline
...
There is no workload in practice where the same shader will be used
multiple times with different spec constants, so there is no good
reason to have two dirty flags or to split lookup and binding.
2022-07-17 00:09:30 +02:00
Philip Rebohle
35fad0aa6c
[dxvk] Use dynamic vertex strides whenever possible
...
May reduce the number of pipeline permutations, as well as the overhead
of the bindVertexBuffer call.
2022-07-15 17:25:39 +02:00
Philip Rebohle
956f293a69
[dxvk] Replace VK_KHR_depth_stencil_resolve with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
ce3eae59a9
[dxvk] Introduce bindResourceBufferRange
2022-07-14 14:56:13 +02:00
Philip Rebohle
bd68f05c9b
[dxvk] Make emitRenderTargetReadbackBarrier more generic
...
And also remove the redundant pipeline barrier.
2022-07-12 17:29:11 +02:00
Philip Rebohle
fcadaec129
[dxvk] Store clear values inside render pass ops
...
The previous model was designed around vkCmdBeginRenderPass, which was
somewhat clunky regarding attachment clears. This is no longer needed.
2022-07-07 16:16:51 +02:00
Philip Rebohle
0c5773dbb9
[dxvk] Emit smarter post-renderpass barriers
...
Allows folding the old post-renderpass barrier into the same pipeline
barrier call as layout transitions from prepareImage or from starting
another render pass, thus reducing the overall number of pipeline
barriers. Also no longer uses VK_PIPELINE_STAGE_ALL_COMMANDS_BIT.
2022-07-07 16:16:50 +02:00
Philip Rebohle
e8f3d9b040
[dxvk] Remove render pass and framebuffer objects
2022-07-07 16:16:50 +02:00
Philip Rebohle
343eba693d
[dxvk] Use dynamic rendering for regular graphics pipelines
...
For now, just do whatever we were previously doing for render passes,
but explicitly.
2022-07-07 16:16:50 +02:00
Philip Rebohle
96e102beff
[dxvk] Use dynamic rendering for copies
...
Significantly reworks framebuffer copies as well. We'll no longer
create dummy samplers to work around glslang versions not supporting
texture descriptors without samplers, and copyImageFb was cleaned
up to factor out the part where a temporary image is created.
2022-07-07 16:16:50 +02:00
Philip Rebohle
758ba5a80d
[dxvk] Inline all frequently-used binding methods
2022-06-28 14:35:58 +02:00
Philip Rebohle
eea5c9f0da
[dxvk] Rename new descriptor pool implementation to DxvkDescriptorPool
2022-06-28 14:35:58 +02:00
Philip Rebohle
6aeed40af2
[dxvk] Remove old descriptor pool implementation
2022-06-28 14:35:58 +02:00
Philip Rebohle
af418dcffd
[dxvk] Fix pipeline invalidation
...
We need to update descriptors and other graphics state when changing
between compute and graphics. This happened to work by chance since
any real-world app binds a new set of shaders around mode switches
anyway, but it could theoretically happen that we wouldn't update
descriptor sets on the first draw after a dispatch.
2022-06-28 14:35:58 +02:00
Philip Rebohle
e2b7522034
[dxvk] Use persistent descriptor pool for regular descriptor sets
2022-06-28 14:35:57 +02:00
Philip Rebohle
5610b3a742
[dxvk] Introduce endFrame method
2022-06-28 14:35:57 +02:00
Philip Rebohle
ab0c15ea54
[dxvk] Introduce DxvkContextType
2022-06-28 14:35:57 +02:00
Philip Rebohle
f34d1c886a
[dxvk] Only use descriptor update templates in 32-bit builds
2022-06-28 14:35:57 +02:00
Philip Rebohle
f9e6d8e23a
[dxvk] Remove old resource update code
2022-06-28 14:35:57 +02:00
Philip Rebohle
219853aa9f
[dxvk] Rework dirty descriptor state tracking
2022-06-28 14:35:57 +02:00
Philip Rebohle
d5e53d3271
[dxvk] Add resource binding code using new pipeline layouts
2022-06-28 14:32:31 +02:00
Philip Rebohle
53519e2bd5
[dxvk] Remove old resource binding methods
2022-06-28 14:32:30 +02:00
Philip Rebohle
10eabb34da
[dxvk] Add shader stage parameter to binding methods
2022-06-28 14:32:30 +02:00