Adam Moss
86148ec070
[d3d11,dxvk] Implement DXVK pieces required for DX11 DLSS support
...
Notably, fairly generic functions to create/launch/destroy Cuda kernels,
and methods to fetch GPU virtual addresses and handles for DX11 resources.
Note: Requires some corresponding dxvk-nvapi changes for DLSS to
be initialized successfully.
2021-09-24 15:10:07 +02:00
Philip Rebohle
5f9d5f1053
[dxvk] Fix IgnoreWriteAfterWritw check for indirect dispatches
2021-09-10 02:50:52 +02:00
Philip Rebohle
5db76784bd
[dxbc] Accurately determine access flags for UAVs
2021-09-09 15:53:02 +02:00
Philip Rebohle
c9f7ccc7f9
[dxvk] Fix hazard detection for shader resources
2021-09-09 14:58:04 +02:00
Philip Rebohle
5109000747
[dxvk] Add IgnoreGraphicsBarriers flag
2021-09-09 14:28:25 +02:00
Philip Rebohle
2f5c7562c2
[dxvk] Track transform feedback counter hazards properly
...
If we avoid needlessly pausing and resuming transform feedback with the
same counters, we can use existing barrier tracking to insert counter
barriers without requiring an invalid render pass self-dependency.
2021-08-23 17:35:58 +02:00
Joshua Ashton
79cf2e875f
[dxvk] Avoid needless refcount in updateFramebuffer
...
Avoids a needless refcount
2021-08-09 15:23:59 +02:00
Joshua Ashton
a35f2af5e5
[dxvk] Remove needless refcount in updateTransformFeedbackBuffers
2021-08-09 15:23:59 +02:00
Joshua Ashton
4edaade185
[dxvk] Avoid needless refcount in copyImageFb
2021-08-09 15:23:59 +02:00
Philip Rebohle
45a6d5fb5b
[dxvk] Fix potential undesired host-visible buffer invalidation
...
We cannot invalidate mapped buffers in the backend because the frontend
may cache the mapped slice from its own invalidations, which would then
become invalid. Very unlikely to be an issue in practice.
2021-06-29 13:58:52 +02:00
Philip Rebohle
f50c5234dc
[dxvk] Add source offset/extent to copyPackedBufferToDepthStencilImage
2021-06-24 21:07:48 +02:00
Philip Rebohle
a14884c652
[dxvk] Add destination offset/extent to copyDepthStencilImageToPackedBuffer
...
Needed to support partial copies between buffers and depth-stencil images.
2021-06-24 21:07:47 +02:00
Philip Rebohle
ba9d670157
[dxvk] Introduce copyPackedBufferImage
2021-06-24 21:07:47 +02:00
Philip Rebohle
9f7a5a077f
[dxvk] Fix broken row/slice alignment in buffer<->image copies
...
If the specified row or slice alignment matches the row size exactly
but is not a power of two, we could accidentally screw up the alignment.
2021-06-24 21:07:47 +02:00
Philip Rebohle
ba4938e201
[dxvk] Add slice alignment to copyImageToBuffer
2021-06-24 21:07:47 +02:00
Philip Rebohle
4840cdaf8c
[dxvk] Add slice alignment to copyBufferToImage
2021-06-24 21:07:45 +02:00
Philip Rebohle
87d32a234d
[dxvk] Handle discard aspects correctly when performing clears
...
Should fix an Nvidia driver crash, see #2118 .
2021-06-24 17:15:52 +02:00
Philip Rebohle
de05728c8c
[dxvk] Check view format as well when deferring clears
...
Otherwise, we may accidentally clear to an incorrect value.
Fixes #2100 .
2021-06-14 16:41:31 +02:00
Philip Rebohle
4630bbc427
[dxvk] Support multi-plane formats in updateImage
2021-05-30 19:42:43 +02:00
Philip Rebohle
6462174c13
[dxvk] Support multi-plane formats in copyImageToBuffer
2021-05-30 19:42:43 +02:00
Philip Rebohle
a660b35f6e
[dxvk] Support multi-plane formats in clearCompressedColorImage
2021-05-30 19:42:43 +02:00
Philip Rebohle
ed57019e13
[dxvk] Support multi-plane formats in copyImage
2021-05-30 19:42:43 +02:00
Philip Rebohle
41e28cb280
[dxvk] Support multi-plane formats in uploadImage
2021-05-30 19:42:43 +02:00
Philip Rebohle
86542248df
[dxvk] Support multi-plane formats in copyBufferToImage
2021-05-30 19:42:43 +02:00
Philip Rebohle
0f5e126735
[dxvk] Introduce flushSharedImages
...
Fixes problems with images not being cleared prior to presentation
if the clear is the last command issued in the frame.
2021-05-30 19:42:43 +02:00
Liam Middlebrook
5ce5999232
[dxvk] Add support for debug utils labels
...
Reviewed-by: Oleg Kuznetsov <okouznetsov@nvidia.com>
2021-04-08 14:25:02 +02:00
Philip Rebohle
8be777b8e2
[dxvk] Move inline clears out of performClear
...
It is easier to reason about this code when there is no way for
performClear to be called within an active render pass instance.
2021-03-18 16:06:21 +01:00
Philip Rebohle
b9360bacc2
[dxvk] Do not clear read-only aspects inside render pass
...
Instead, end the render pass as necessary and clear outside of it.
May fix validation errors in some very rare scenarios where the game
performs a clear and then uses a read-only depth-stencil view.
2021-03-18 16:06:18 +01:00
Philip Rebohle
e3b92bcfac
[dxvk] Add conservative rasterization mode to rasterizer state
2021-03-13 20:22:32 +01:00
Philip Rebohle
787297ee4e
[dxvk] Fix wrong aspect mask for clear copies
2021-03-07 16:29:21 +01:00
Philip Rebohle
95740eb78c
[dxvk] Use clears to impelemnt image copies if possible
...
Optimizes away a large amount of redundant depth-stencil clear+copy
madness in Final Fantasy XIV for a small performance improvement.
2021-03-06 02:43:28 +01:00
Philip Rebohle
8a4beefd3a
[dxvk] Store new image view when deferring clear/discard with matching subresources
...
Otherwise, if the view used for the second clear has a different format than
the first one, we'll end up clearing to the wrong colur. Assumes that images
with more than one aspect never have views with mismatching formats.
Also potentially improves logic around render pass clears depending on usage
patterns.
2021-03-06 02:37:02 +01:00
Philip Rebohle
b579b03047
[dxvk] Spill render pass when clearing overlapping views
...
Since we're flushing all pending clears, we need to make sure
that all images are in the correct layout. Found by inspection.
2021-03-06 01:31:55 +01:00
Philip Rebohle
5f0f90f8d4
[dxvk] Merge clears with different views but identical subresources
2021-03-05 19:50:11 +01:00
Philip Rebohle
94049c0c90
[dxvk] Fix incorrect barrier for fragment shader resolve
2021-03-03 23:16:25 +01:00
Philip Rebohle
9bdc491cb7
[dxvk] Fix potential iterator invalidation in deferClear/Discard
...
flushClears clears the deferred clear list, so we need to
break out of the loop on that code path.
2021-03-01 16:49:02 +01:00
Joshua Ashton
d51562fc9a
[dxvk] Only pass needed amount of clear values when binding a framebuffer
...
Works around a Renderdoc bug and should hopefully make more sense.
The views are compacted in a framebuffer so it should be fine to do this.
2021-02-26 18:43:45 +01:00
Philip Rebohle
1b97ca253f
[dxvk] Actually transition source image in fragment shader blits
...
All meta ops should transition all involved images to the correct
image layout.
2021-02-26 05:02:32 +00:00
Philip Rebohle
5e55ced8b2
[dxvk] Fix deferred clear logic for overlapping image views
...
If we clear the same image subresources twice with different views
and then start rendering to one view, we may end up clearing to
the wrong clear value.
2021-02-21 14:53:03 +01:00
Philip Rebohle
7168cc160f
[dxvk] Remove layout transition hack for presentable images
2021-02-21 02:19:44 +01:00
Philip Rebohle
e46bf78f31
[dxvk] Implement discardImageView
...
Built on top of the deferred clear logic.
2021-02-21 01:56:52 +01:00
Joshua Ashton
80049c360e
[dxvk] Fix resource tracking in attachment transitions
...
Fixes a crash in Portal 2 on DXVK native in which an old depth stencil is used after free after a device reset.
2021-02-20 19:34:49 +01:00
Philip Rebohle
5fc83a6075
[dxvk] Add missing trackImage to changeImageLayout
2021-02-20 14:35:57 +01:00
Philip Rebohle
df76a5252a
[dxvk] Use default layout for depth-stencil image descriptors
...
Apparently the image layout matching rules were relaxed at some point,
so just using DEPTH_STENCIL_READ_ONLY_OPTIMAL for descriptors is legal
even if the image is in DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL or
DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL in the current render pass.
2021-02-15 17:00:35 +01:00
Philip Rebohle
a0cf5926d8
[dxvk] Add parameter to prepareImage to ignore clears
...
Otherwise we may flush clears while clearing a render target,
which is silly and undoes the layout optimizations.
2021-02-14 04:22:52 +01:00
Philip Rebohle
2b401725dc
[dxvk] Do not transition non-shared images at the end of the command buffer
...
Currently, if the frontend flushes the command list, we always transition
render targets to their default layout. This may lead to some arbitrary
GPU performance issues if the transitions are not free.
Instead, keep all images that are only used internally in their attachment
layout across command list boundaries, until they are unbound.
2021-02-14 04:00:02 +01:00
Philip Rebohle
6efc2588f8
[dxvk] Remove checkFramebufferBarrier
...
No longer serves any practical purpose.
2021-02-14 04:00:02 +01:00
Philip Rebohle
95676bf1e6
[dxvk] Always prepare images not bound to the current FB when clearing
...
Fixes a potential bug when clearing a render target after the
last render pass using it gets suspended.
Also, for some reason we were checking for <1 instead of <0.
2021-02-14 04:00:02 +01:00
Philip Rebohle
0c18a86090
[dxvk] Fix render target clears if attachments are not tightly packed
...
We do actually need to use the color target indices here rather than
the attachment index, since the repacking happens inside DxvkRenderPass.
Clear values still need to be tightly packed.
2021-02-12 03:13:11 +01:00
Philip Rebohle
0956050db6
[dxvk] Fix actual render target layout transitions for 3D images
...
Also, only emit transitions if the layouts differ.
2021-02-12 03:13:11 +01:00