Philip Rebohle
a208f45fe4
[dxvk] Actually reinitialize image if necessary
2020-05-02 19:27:45 +02:00
Philip Rebohle
651646ca7f
[dxvk] Fix acquire barrier in clearCompressedColorImage
2020-05-02 19:06:22 +02:00
Philip Rebohle
dcc38c98e7
[dxvk] Fix acquire barriers in resolveImageHw
2020-05-02 18:58:38 +02:00
Philip Rebohle
b370d13743
[dxvk] Fix acquire barrier in updateImage
2020-05-02 18:52:35 +02:00
Philip Rebohle
8921be81bd
[dxvk] Fix blit acquire barriers
2020-05-02 18:49:58 +02:00
Philip Rebohle
85db84a1b3
[dxvk] Fix access mask in clearImageViewFb
...
VK_ATTACHMENT_LOAD_OP_LOAD requires the read flags to be set.
2020-05-02 18:48:59 +02:00
Philip Rebohle
5bab5ae7a5
[dxvk] Fix acquire barriers in copyImageHw
2020-05-02 18:46:35 +02:00
Philip Rebohle
c1fcc3fc98
[dxvk] Simplify barriers around meta copy operations
2020-05-02 18:46:21 +02:00
Philip Rebohle
f6007e4f1a
[dxvk] Emit graphics barriers upon spilling render pass
...
We actually need to do this now since we no longer set
all the access flags in the render pass barrier.
2020-05-02 11:36:32 +02:00
Philip Rebohle
0245273ab7
[dxvk] Remove store op from render pass ops
...
This is always going to be VK_ATTACHMENT_STORE_OP_STORE anyway.
2020-05-02 11:36:32 +02:00
Philip Rebohle
c0f72940dd
[dxvk] Optimize regular render pass barriers
...
Only applies the depth/color attachment stage and access mask
if necessary, and removes a bunch of pointless read-only flags.
2020-05-02 11:36:32 +02:00
Philip Rebohle
2089426420
[dxvk] Simplify render pass barriers after clears
...
This wasn't really doing what we intended.
2020-05-02 11:36:32 +02:00
Philip Rebohle
b9c56e3e97
[dxvk] Improve deferred clear logic
...
Ignores currently bound render targets until we actually begin a
render pass. This allows us to use LOAD_OP_CLEAR in more situations,
including when games clear their RTs before binding them.
2020-05-02 11:36:32 +02:00
Philip Rebohle
3cbd109020
[dxvk] Remove redundant null pointer check for framebuffer
...
Not necessary because we're *always* calling updateFramebuffer
before startRenderPass.
2020-05-02 11:36:31 +02:00
Philip Rebohle
2967f567d8
[dxvk] Introduce performClear helper
2020-05-02 11:36:31 +02:00
Philip Rebohle
46f860f93e
[dxvk] Don't flush memory in changeImageLayout
2020-05-02 11:36:28 +02:00
Philip Rebohle
7b8a65589e
[dxvk] Use null descriptors for unbound resources
...
This way we won't have to recompile pipelines any time the app
unbinds a resource.
2020-04-30 16:36:59 +02:00
Philip Rebohle
2a25e3f899
[dxvk] Skip draws if no index buffer is bound
...
It doesn't make much sense to bind the null buffer here, as we'd
just draw the same vertex over and over again.
2020-04-30 16:36:59 +02:00
Philip Rebohle
6d5f5580fb
[dxvk] Use correct size to clear zero buffer
2020-04-23 20:49:59 +02:00
Philip Rebohle
bea16263e4
[dxvk] Use GPU-local buffer in clearCompressedColorImage
...
Saves VA space in applications that do not initialize their textures..
2020-04-21 18:10:09 +02:00
Joshua Ashton
bbe681d9ca
[dxvk] Fix incorrect logic in resolveDepthStencilImage
...
This fallbath check path should be triggered if we aren't currently using the fb.
Impacts #1537
2020-04-03 11:20:21 +02:00
Philip Rebohle
304dad2d2e
[dxvk] Fix dumb typo in changeImageLayout
2020-03-08 03:18:34 +01:00
Philip Rebohle
81c3daa3d0
[dxvk] Remove image renaming
...
Broken by design, has to be implemented by client APIs instead.
2020-01-23 22:21:45 +01:00
Philip Rebohle
073669b7e7
[dxvk] Don't enable VK_KHR_maintenance1, VK_KHR_maintenance2
...
Core in Vulkan 1.1.
2020-01-17 17:46:59 +01:00
Philip Rebohle
41a91cbae6
[dxvk] Implement image swapping
2020-01-16 18:50:23 +01:00
Philip Rebohle
b9258c0c49
[dxvk] Separate gfx resource hazard checking and barrier emission
...
Otherwise, when performing three draws with the same storage buffers or
storage images bound, we don't emit a barrier between the 2nd and 3rd
draw since the tracking information gets cleared by the second draw.
Fixes #1262 .
2019-12-11 13:45:57 +01:00
Philip Rebohle
1ae7d4b302
Revert "[dxvk] Don't clear bind mask for unbound UBOs and samplers"
...
For some bizarre reason, this crashes Star Citizen. The reason might be
that we create multiple pipelines with identical pipelines when using a
state cache, which used to crash some drivers in the past.
Fixes #1266 .
This reverts commit 00a064e32bcf46e3d0bb536ce11af1b4c22006d8.
2019-12-04 12:24:25 +01:00
Philip Rebohle
4c0e4fba0c
[dxvk] Don't return a value from updateShaderResources
...
We're checking the bind point all the time anyway, so the previous
design was inconsistent.
2019-11-28 15:25:12 +01:00
Philip Rebohle
2aa1ff414c
[dxvk] Bind descriptor sets at descriptor update time
...
Gets rid of one 'if' per draw/dispatch and two functions.
2019-11-28 15:17:42 +01:00
Philip Rebohle
00a064e32b
[dxvk] Don't clear bind mask for unbound UBOs and samplers
...
These don't need special treatment, so we really don't need to
recompile the pipeline if they are not bound.
2019-11-28 00:55:36 +01:00
Philip Rebohle
2d1fb52b2f
[util] Reimplement Signal
...
The new implementation is more akin to D3D12 fences or timeline
semaphores, and should make implementing similar concepts easier.
2019-11-26 16:11:46 +01:00
Philip Rebohle
014798161c
[dxvk] Avoid some unnecessary barriers around render target clears
2019-11-18 19:36:19 +01:00
Philip Rebohle
44c0f96fc1
[dxvk] Pause transform feedback on buffer updates
...
Otherwise, we might override a currently bound transform
feedback buffer or counter buffer. Fixes Unity Engine.
2019-10-26 19:57:39 +02:00
Philip Rebohle
3c4a57acc6
[dxvk] Fix bogus xfb buffer update check
2019-10-26 19:40:32 +02:00
Philip Rebohle
320e0de4a0
[dxvk] Handle xfb barriers in commitGraphicsBarriers
...
Avoids spilling the render pass when switching xfb buffers.
2019-10-26 17:44:29 +02:00
Philip Rebohle
5b66f1ec0b
[dxvk] Replace buffer in updateBuffer even outside of render passes
...
Needed to avoid barriers arount D3D11 UAV counter buffer updates.
2019-10-26 17:44:29 +02:00
Philip Rebohle
83fc15c594
[dxvk] Force-update draw buffer for graphics pipeline barrier checks
2019-10-26 12:41:40 +02:00
Philip Rebohle
c44d30d78b
[dxvk] Consider indirect draw buffer in graphics pipeline barriers
2019-10-26 04:13:05 +02:00
Philip Rebohle
f60d1db1f1
[dxvk] Consider vertex/index buffers in graphics pipeline barriers
...
Leaving these out was an oversight.
2019-10-26 04:12:32 +02:00
Philip Rebohle
e918104ef3
[dxvk] Introduce checkGfxImageBarrier
2019-10-26 03:56:57 +02:00
Philip Rebohle
7a78852776
[dxvk] Introduce checkGfxBufferBarrier
2019-10-26 03:56:52 +02:00
Philip Rebohle
2b812f07c1
[dxvk] Move finalizeDraw into commitGraphicsState
...
There is no readon to perform this after the draw anymore.
2019-10-26 03:55:03 +02:00
Philip Rebohle
4b0a5dffb2
[dxvk] Support component mappings in blitter
2019-10-16 20:00:38 +02:00
Philip Rebohle
0d7f658f96
[dxvk] Implement framebuffer-based blit
2019-10-16 20:00:38 +02:00
Philip Rebohle
6234a1a6b0
[dxvk] Support arbitrary source texture coordinates in blitter
2019-10-16 02:45:44 +02:00
Philip Rebohle
859ac59e6c
[dxvk] Support multisampled destinations in blitter
...
Apparently this is required for some D3D9 content.
2019-10-16 02:17:55 +02:00
Philip Rebohle
e747315ba6
[dxvk] Support both linear and nearest samplers in blitter
2019-10-16 02:08:04 +02:00
Philip Rebohle
6ea21d57fe
[dxvk] Factor out mip gen classes and rename them to DxvkMetaBlit*
...
Since mip map generation is a blit operation, we can make a more
general-purpose blitter and implement mip map generation on top
of that.
2019-10-16 01:52:14 +02:00
Philip Rebohle
b67e5809ba
[dxvk] Fix buffer usage flags in commitGraphicsBarriers
...
Only checking for one single usage flag is incorrect since
buffers can have both the storage buffer and storage texel
buffer usage bits set.
2019-10-13 03:18:08 +02:00
Philip Rebohle
950ea21b83
[dxvk] Don't rely on binding mask in commitGraphicsBarriers
...
We can't actually use that here since we check barriers before
updating shader resources, unlike on the compute path. Check
all resources manually instead.
2019-10-13 02:19:48 +02:00