Philip Rebohle
b51d7a3cc0
[dxvk] Update descriptor sets after binding pipeline
2022-07-09 13:41:07 +02:00
Philip Rebohle
6256ab2a19
[dxvk] Use pipeline libraries to link base pipelines if possible
2022-07-09 13:41:07 +02:00
Philip Rebohle
7f9a04fd59
[dxvk] Don't keep pipeline locked when building optimized variant
...
Only lock when creating base variant, otherwise we'll have stutter.
2022-07-09 01:53:52 +02:00
Philip Rebohle
cc1575e8b7
[dxvk] Compile optimized graphics pipelines on worker threads if necessary
2022-07-09 01:53:52 +02:00
Philip Rebohle
b50ed2ceca
[dxvk] Deal with multiple pipeline handles for graphics pipeline instances
...
Also make the handles atomic since worker threads may access them when
compiling optimized pipeline variants.
2022-07-09 01:53:51 +02:00
Philip Rebohle
90454438b2
[dxvk] Introduce distinction between base and optimized pipelines
...
We need to know what kind of pipeline we're binding in order to apply
the correct dynamic state.
2022-07-09 01:53:51 +02:00
Philip Rebohle
e01ffc02a8
[dxvk] Add more dynamic state to DxvkCommandList
2022-07-09 01:53:51 +02:00
Philip Rebohle
a683ecd525
[dxvk] Create pipeline library for null shader
2022-07-09 01:53:51 +02:00
Philip Rebohle
a0d1ef7f61
[dxvk] Handle null shader in DxvkShaderPipelineLibrary
2022-07-09 01:53:51 +02:00
Philip Rebohle
2cb9ceba1d
[dxvk] Simplify pipeline instance data
2022-07-09 01:53:51 +02:00
Philip Rebohle
a72bf02374
[dxvk] Pass VS and FS libraries to graphics pipelines
2022-07-09 01:53:51 +02:00
Philip Rebohle
cb56e16a4b
[dxvk] Use precompiled compute pipelines whenever possible
2022-07-09 01:53:51 +02:00
Philip Rebohle
6265b5b809
[dxvk] Use new shader stage info objects in DxvkShaderPipelineLibrary
...
Avoids crashing on drivers which do not support NULL modules for compute
pipelines and just reduces the amount of code by a small amount.
2022-07-09 01:53:51 +02:00
Philip Rebohle
e6470b6d10
[dxvk] Rework DxvkShaderModule into DxvkShaderStageInfo
...
Separates the whole thing from DxvkShader instances so that we
can use this in other places too. Only creates a shader module
if necessary for the given pipeline or device.
2022-07-09 01:53:51 +02:00
Philip Rebohle
5019ce4b9c
[dxvk] Compile pipeline libraries in registerShader if supported
2022-07-09 01:53:51 +02:00
Philip Rebohle
a49333cd87
[dxvk] Add pass to check whether a shader has spec constants
...
Pipeline libraries cannot be used for shaders with user spec constants.
2022-07-09 01:53:51 +02:00
Philip Rebohle
a6b0783a51
[dxvk] Add config option for graphics pipeline library enablement
2022-07-09 01:53:51 +02:00
Philip Rebohle
06c084616f
[dxvk] Clean up graphics and compute pipeline constructors
2022-07-09 01:53:51 +02:00
Philip Rebohle
f2f1f86500
[dxvk] Use new worker thread system in state cache
2022-07-09 01:53:51 +02:00
Philip Rebohle
02e6a212bb
[dxvk] Introduce new pipeline manager worker thread system
2022-07-09 01:53:51 +02:00
Philip Rebohle
1c573a7fd5
[dxvk] Rework state cache object creation
2022-07-09 01:53:51 +02:00
Philip Rebohle
8b645f8563
[dxvk] Rework DxvkPipelineCache
2022-07-09 01:53:51 +02:00
Philip Rebohle
dbcd0333d9
[dxvk] Implement shader-based pipeline libraries
2022-07-09 01:53:51 +02:00
Philip Rebohle
30c25ee1f0
[dxvk] Add way to create partial pipeline layouts
2022-07-09 01:53:51 +02:00
Philip Rebohle
3b10efbc30
[dxvk] Implement fragment output pipeline libraries
2022-07-09 01:53:51 +02:00
Philip Rebohle
578c136239
[dxvk] Implement vertex input pipeline libraries
2022-07-09 01:53:51 +02:00
Philip Rebohle
47ac5f49cb
[dxvk] Factor out fragment shader state setup
2022-07-09 01:53:51 +02:00
Philip Rebohle
33067f2a23
[dxvk] Factor out pre-rasterization state setup
2022-07-09 01:53:51 +02:00
Philip Rebohle
08e0e4181b
[dxvk] Factor out fragment output state setup
2022-07-09 01:53:51 +02:00
Philip Rebohle
1e56f2b7a0
[dxvk] Factor out vertex input state setup
2022-07-09 01:53:51 +02:00
Philip Rebohle
6c756c2dbe
[dxvk] Add check whether graphics pipeline libraries can be used
2022-07-09 01:53:51 +02:00
Philip Rebohle
d6afe36592
[dxvk] Enable VK_EXT_graphics_pipeline_library if supported
2022-07-09 01:53:51 +02:00
Philip Rebohle
97f2d81b25
[meta] Update Vulkan headers to 1.3.219
2022-07-09 01:53:51 +02:00
Joshua Ashton
2bd062f9d6
[util] Implement LUID helpers for non-Windows platforms Initial commit
2022-07-09 01:14:18 +02:00
Blisto91
3733590756
[util] disable allowDoNotWait for Port Royale 3 ( #2668 )
2022-07-09 01:00:21 +02:00
Philip Rebohle
21ca9b91d0
[dxvk] Mark VK_EXT_extended_dynamic_state as required
...
The device feature is already required anyway.
2022-07-08 23:44:05 +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
d71e85785c
[dxvk] Drop barrier before renderPassBindFramebuffer
...
Not necessary since that function emits barriers anyway.
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
67d35ecc8d
[dxvk] Introduce DxvkGlobalPipelineBarrier
2022-07-07 16:16:50 +02:00
Philip Rebohle
95f7aae3e6
[dxvk] Remove viewport state from graphics pipelines
...
And bump state cache version to v13.
2022-07-07 16:16:50 +02:00
Philip Rebohle
4b82a05e05
[dxvk] Enable and use dynamic viewport and scissor rect count
2022-07-07 16:16:50 +02:00
Philip Rebohle
b34421b055
[dxvk] Always enable extendedDynamicState feature
2022-07-07 16:16:50 +02:00
Philip Rebohle
f19607c11e
[dxvk] Use dynamic rendering directly for partial image view clears
2022-07-07 16:16:50 +02:00
Philip Rebohle
f57a6d485b
[dxvk] Use dynamic rendering directly for render target clears
2022-07-07 16:16:50 +02:00
Philip Rebohle
605fef10b4
[dxvk] Fix render target readback barrier
...
Dynamic rendering does not allow barriers within a render
pass instance, so we have to actually stop rendering.
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
e3a63d4faa
[dxvk] Bump state cache version to v12
...
And remove its reliance on the old render pass format struct.
2022-07-07 16:16:50 +02:00
Philip Rebohle
39a2b1cb7a
[dxvk] Remove support for state cache versions older than v8
...
We could technically keep supporting this with Dynamic Rendering, but
it's a huge amount of work and there's no good reason to do so.
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