Philip Rebohle
6e8598846d
[dxvk] Allow mutable commands to be recorded into CS chunks
2022-07-16 20:19:46 +02:00
Philip Rebohle
39dd25e972
[dxvk] Unconditionally call updateDynamicState
...
And optimize that instead. The previous check would always succeed anyway
since we'd set unused dynamic states to dirty, which is necessary for us
to update that state once it's actually used by a pipeline.
2022-07-16 14:47:54 +02:00
Philip Rebohle
dadc1bc8ff
[dxvk] Add dirty tracking for dynamic depth-stencil state
...
Significantly reduces the number of API calls and potentially
context rolls when switching between different base pipelines.
2022-07-16 13:27:55 +02:00
Philip Rebohle
2fabc90f46
[dxvk] Add fast path for rasterizer state comparison
2022-07-16 13:21:58 +02:00
Philip Rebohle
e2340d7224
[dxvk] Fix dual-source blending with multiple bound render targets
...
We can't write to more than one render target, so zero out the write
mask. Also, normalize blend state for disabled render targets for
good measure.
2022-07-15 23:51:04 +02:00
Philip Rebohle
9e7b93b55b
[dxvk] Fix infinite recursion caused by rebase derp
2022-07-15 19:32:03 +02:00
Philip Rebohle
661a8cd258
[dxvk] Be consistent about enabling dynamic blend constants
2022-07-15 17:25:39 +02:00
Philip Rebohle
46a596dd84
[dxvk] Normalize vertex input state using vertex shader input mask
...
Filters out unused bindings and attributes when creating Vulkan pipelines.
2022-07-15 17:25:39 +02:00
Philip Rebohle
2fee959515
[dxvk] Bump state cache format to v15
2022-07-15 17:25:39 +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
fc525d5b70
[dxvk] Optimize format lookup for simple formats
2022-07-15 17:25:34 +02:00
Philip Rebohle
cdf22a4086
[dxvk] Rename imageFormatInfo -> lookupFormatInfo
2022-07-15 17:25:13 +02:00
Philip Rebohle
5c4b44c97c
[dxvk] Correctly detect viewport index or layer exports in DxvkShader
2022-07-15 16:12:03 +02:00
Philip Rebohle
c3af42356f
[dxbc] Enable SPIR-V 1.6
2022-07-15 16:10:16 +02:00
Philip Rebohle
e5c45d4ce0
[dxbc] Use StorageBuffer storage class instead of BufferBlock
2022-07-15 16:10:16 +02:00
Philip Rebohle
320534cb34
[spirv] Automatically track interface variables
2022-07-15 16:10:16 +02:00
Philip Rebohle
10c5c17bc1
[meta] Build meta shaders against Vulkan 1.2
...
Silences some validation errors regarding layer export.
2022-07-15 16:10:16 +02:00
Philip Rebohle
5ecd11fbd0
[meta] Update SPIR-V headers
2022-07-15 16:10:16 +02:00
Philip Rebohle
686df3ec1b
[dxvk] Don't set scissor and viewport count for meta pipelines
...
Oversight from when we changed these to be unconditionally dynamic.
Fixes a bunch of validation errors.
2022-07-15 16:07:31 +02:00
Philip Rebohle
b59571ab22
[dxvk] Explicitly initialize null descriptor structs
...
There's a weird rule that requires null buffer descriptors to specify
VK_WHOLE_SIZE. Silences a bunch of validation errors in God of War.
2022-07-15 15:59:54 +02:00
Philip Rebohle
0f6ba59f16
[dxvk] Normalize dynamic depth-stencil state based on bound attachment
...
We already do the same for monolothic pipelines. SpellForce 3 tries
to write depth with a read-only layout, which is a bad idea.
2022-07-14 22:25:59 +02:00
Philip Rebohle
b00d7f35f5
[dxvk] Mark more pipeline state as dynamic for base pipelines
...
Otherwise we might never set depth bias and friends.
2022-07-14 21:51:57 +02:00
Philip Rebohle
70a71237cf
[dxvk] Always initialize dynamic depth/stencil state
...
Spec says we must set any dynamic state before making a draw call, there
doesn't seem to be an exception if we don't enable depth or stencil tests.
2022-07-14 21:45:22 +02:00
Philip Rebohle
0b59af996a
[dxvk] Use dynamic depth bias enable for base pipelines
...
This is always supported in Vulkan 1.3.
2022-07-14 21:35:28 +02:00
Philip Rebohle
d6d7d5137b
[dxvk] Drop VK_EXT_4444_formats
...
These formats are core in Vulkan 1.3 and all relevant drivers support them.
2022-07-14 21:21:34 +02:00
Philip Rebohle
f60bdcbcbf
[dxvk] Replace VK_EXT_shader_demote_to_helper_invocation with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
13425eb39b
[dxvk] Replace VK_EXT_pipeline_creation_cache_control with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
7677db3371
[dxvk] Replace VK_EXT_extended_dynamic_state with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
3cfc3e7714
[dxvk] Replace VK_KHR_dynamic_rendering with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
e79a2e8dfa
[dxvk] Enable Vulkan 1.3 feature structs
2022-07-14 21:21:34 +02:00
Philip Rebohle
1dd3f24b43
[dxbc] Drop workarounds for unsupported drivers
2022-07-14 21:21:34 +02:00
Philip Rebohle
223a4fd186
[d3d9] Always assume RADV has fast mulz support
...
All supported Mesa version support this.
2022-07-14 21:21:34 +02:00
Philip Rebohle
81b89cf31d
[dxvk] Simplify Nvidia HVV workaround
...
We no longer support 465 series drivers, so the check was obsolete.
2022-07-14 21:21:34 +02:00
Philip Rebohle
131af0d677
[dxvk] Replace VK_KHR_driver_properties with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
78c5ef88bc
[dxvk] Replace VK_KHR_shader_float_controls with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
000e3cb960
[dxvk] Replace VK_KHR_image_format_list with core feature
2022-07-14 21:21:34 +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
b701dd497f
[dxvk] Drop VK_KHR_create_renderpass2
2022-07-14 21:21:34 +02:00
Philip Rebohle
d657a526ae
[dxvk] Replace VK_EXT_shader_viewport_index_layer with core features
...
And enable them optionally in the backend, since we use this for meta
operations.
2022-07-14 21:21:34 +02:00
Philip Rebohle
afdaba6caf
[dxvk] Replace VK_KHR_buffer_device_address with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
0b47297b7d
[dxvk] Replace VK_EXT_host_query_reset with core feature
...
And make it a hard requirement in the backend. We no longer support
the old fallback path for queries anyway.
2022-07-14 21:21:34 +02:00
Philip Rebohle
f07ba07ad8
[dxvk] Replace VK_KHR_draw_indirect_count with core feature
...
And enable it optionally in the backend, since we provide the functionality.
2022-07-14 21:21:34 +02:00
Philip Rebohle
eee4ac1e91
[dxvk] Replace VK_KHR_sampler_mirror_clamp_to_edge with core features
...
And make it a hard requirement. We're not checking for feature support
anyway and all relevant drivers support this feature anyway.
2022-07-14 21:21:34 +02:00
Philip Rebohle
73f313f904
[dxvk] Enable Vulkan 1.2 feature structs
2022-07-14 21:21:34 +02:00
Philip Rebohle
2774a04195
[dxvk] Use VkPhysicalDeviceVulkan11{Features,Properties} where appropriate
2022-07-14 21:21:34 +02:00
Philip Rebohle
fd15795a0b
[dxvk] Require Vulkan 1.3 adapter
2022-07-14 21:21:34 +02:00
Philip Rebohle
6ac5ca3bff
[d3d9] Use existing staging buffer implementation for managed uploads
2022-07-14 18:22:23 +02:00
Philip Rebohle
f07a6e160c
[d3d9] Rework UP buffer allocation
2022-07-14 18:22:23 +02:00
Joshua Ashton
e884413c49
[dxvk] Don't synchronize device if going for DLL shutdown
...
All our other threads have been destroyed and we can no longer synchronize with them properly.
Co-authored-by: Paul Gofman <pgofman@codeweavers.com>
2022-07-14 17:04:52 +02:00
Georg Lehmann
5ae5476d71
[d3d9] Make reported sample counts consistent with DecodeMultiSampleType behavior.
2022-07-14 15:32:42 +01:00