1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00

460 Commits

Author SHA1 Message Date
Philip Rebohle
d3b2db5978
[dxvk] Loosen render pass barriers
Still use ALL_COMMANDS_BIT at the end to avoid potential WAR hazards
for things like vertex buffers.
2021-02-12 03:13:10 +01:00
Philip Rebohle
29afaea338
[dxvk] Track current render target image layouts
This can be used to optimize away some barriers and layout transitions.
2021-02-12 03:13:10 +01:00
Philip Rebohle
3caf5269f2
[dxvk] Add regular barrier after graphics queue depth image upload
We still need a barrier for the layout transition.
2021-01-12 13:25:00 +01:00
Philip Rebohle
b19293430a
[dxvk] Execute depth/stencil image upload on graphics queue
Silences a validation error.
2021-01-12 12:14:53 +01:00
Philip Rebohle
0ce5dd8b03
[dxvk] Remove conditional rendering from backend
Was disabled anyway due to being broken on various drivers,
so let's get rid of it.
2020-11-30 19:18:26 +01:00
Philip Rebohle
5e5937baf4
[dxvk] Pass size of 0 for dummy vertex buffer
Silences some validation errors in case null descriptors are disabled.
2020-11-24 17:50:14 +01:00
Philip Rebohle
d256175981
[dxvk] Eliminate back-to-back clears when no render pass is active
Trine 4 hits this with a multisampled depth buffer multiple times
per frame. Previously, we'd only eliminate redudant clears if the
render target to clear was active in the current render pass.
2020-11-21 03:03:15 +01:00
Philip Rebohle
ce33b60f9c
[dxvk] Remove null descriptor code paths for unbound resources 2020-07-10 16:59:20 +02:00
Philip Rebohle
2c641566ab
[dxvk] Fix inefficient check in bindVertexBuffer 2020-07-10 16:59:20 +02:00
Philip Rebohle
dfc0b740f8
[dxvk] Use vkCmdBindVertexBuffers2 to bind buffer ranges
Potentially fixes problems with OOB access on dynamic vertex buffers.
2020-07-10 16:59:20 +02:00
Philip Rebohle
9ba99eba93
[dxvk] Add feature bit for extended dynamic state 2020-07-10 16:59:20 +02:00
Joshua Ashton
7cd46e72e9 [dxvk] Add filter type to generateMipmaps 2020-05-27 10:12:43 +02:00
Joshua Ashton
9a40c1e6ae [dxvk] Fix fb resolve offset
gl_FragCoord is read in the fs shader, so we need to take into account the dstOffset here!

This was causing the offset to be doubled rather than eliminated
for the resolves for refractive water in Serious Sam 2
as srcOffset == dstOffset.

Fixes #1637
2020-05-22 11:13:07 +02:00
Philip Rebohle
0c0d582f24
[dxvk] Default to fragment shader resolved on official AMD drivers
Improves performance of MSAA resolves. RADV does not benefit.
2020-05-19 18:54:25 +02:00
Philip Rebohle
5d7b5b0e35
[dxvk] Fix framebuffer resolve barriers 2020-05-19 16:23:44 +02:00
Philip Rebohle
6643c75f37
[dxvk] Use access flags rather than usage when tracking gfx barriers 2020-05-12 00:24:09 +02:00
Philip Rebohle
7239066c5c
[dxvk] Don't stall SDMA command buffer for image initialization 2020-05-02 20:20:56 +02:00
Philip Rebohle
4fafeb21d0
[dxvk] Optimize clearDepthStencilImage barrier 2020-05-02 20:13:13 +02:00
Philip Rebohle
e24954ca39
[dxvk] Optimize clearColorImage barrier 2020-05-02 20:13:13 +02:00
Philip Rebohle
52cad95f2c
[dxvk] Use initializeImage in clearColorImage 2020-05-02 20:13:13 +02:00
Philip Rebohle
bbd5762d3d
[dxvk] Add initializeImage helper
Allows us to use TOP_OF_PIPE -> xxx barriers more often.
2020-05-02 20:10:19 +02:00
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