1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-14 00:48:44 +01:00
Commit Graph

4269 Commits

Author SHA1 Message Date
Philip Rebohle
16eae7adde
[dxvk] Allow resetting the state cache using the DXVK_STATE_CACHE env var 2022-07-20 13:58:50 +02:00
Kassin Dornelles
75d0b1af96 [util] Remove Resident Evil 6 workaround
It's actually making things worse, so better use the default path
2022-07-20 12:00:13 +02:00
Philip Rebohle
2d93760002
[dxvk] Clarify feature enablement
And fall back to robustImageAccess if robustImageAccess2 is not supported.
Not what we want, but better than nothing.
2022-07-19 19:08:58 +02:00
Philip Rebohle
fc796abede
[dxvk] Bump engine version reported to the Vulkan driver
Might help with Fossilize stuff.
2022-07-19 15:27:18 +02:00
Philip Rebohle
0ba741b7d2
[dxvk] Use copy_commands2 functions for buffer <-> image copies 2022-07-19 15:16:54 +02:00
Philip Rebohle
23846ad577
[dxvk] Use copy_commands2 functions for image copies 2022-07-19 15:16:54 +02:00
Philip Rebohle
dc1d82deff
[dxvk] Use copy_commands2 functions for buffer copies 2022-07-19 15:16:54 +02:00
Philip Rebohle
f39d49772d
[dxvk] Use copy_commands2 functions for image resolves
Same idea as with blits, don't expose VkImageResolve2.
2022-07-19 14:10:47 +02:00
Philip Rebohle
ff81323228
[dxvk] Use copy_commands2 functions for image blits
Don't expose VkImageBlit2 to client APIs since we can't easily
support pNext chains, so just convert the struct internally.
2022-07-19 13:53:28 +02:00
Philip Rebohle
563b1d7801
[dxvk] Add entry points for copy_commands2 2022-07-19 13:49:01 +02:00
Philip Rebohle
330ff8fa48
[dxvk] Use synchronization2 functions for queue submissions 2022-07-19 02:27:31 +02:00
Philip Rebohle
0c79882e84
[dxvk] Use synchronization2 functions for events 2022-07-19 02:27:31 +02:00
Philip Rebohle
adb906b18c
[dxvk] Use synchronization2 functions for barriers
We don't really use the new stage/access flags yet, and I'm not sure
whether we will move to them since the benefits seem rather limited.
However, using the functions means we can bypass a lot of internal
translation inside some Vulkan drivers.
2022-07-19 02:27:31 +02:00
Philip Rebohle
0d65142136
[dxvk] Add entry points for new synchronization API 2022-07-18 22:49:49 +02:00
Philip Rebohle
17205f5353
[dxvk] Fix formatting in barrier function 2022-07-18 22:49:47 +02:00
Blisto91
e28b268351 [util] Enable disableMsaa option for Mary Skelter 2 2022-07-18 22:17:13 +02:00
Philip Rebohle
e6df48fa3e
[dxvk] Fix a derp 2022-07-18 14:53:29 +02:00
Philip Rebohle
a76b5693f3
[dxvk] Clean up remaining object creation code 2022-07-18 14:52:12 +02:00
Philip Rebohle
9ebeb8e502
[dxvk] Clean up instance creation code a bit 2022-07-18 14:51:40 +02:00
Philip Rebohle
a1ace8ef21
[dxvk] Clean up misc. code 2022-07-18 14:51:26 +02:00
Philip Rebohle
37f31ae1e7
[dxvk] Clean up more code around object creation in meta passes 2022-07-18 14:50:29 +02:00
Philip Rebohle
fc461d0e27
[dxvk] Clean up some swapchain creation code 2022-07-18 14:49:28 +02:00
Philip Rebohle
04f43f0d2c
[dxvk] Clean up sampler creation code 2022-07-18 14:36:08 +02:00
Philip Rebohle
6276d5503c
[ðxvk] Clean up some device creation code 2022-07-18 14:31:09 +02:00
Philip Rebohle
d29d403c67
[dxvk] Clean up buffer and buffer view creation code 2022-07-18 14:21:23 +02:00
Philip Rebohle
0b11995dea
[dxvk] Clean up image and image view creation code
Someone was dunk while setting pNext to VK_NULL_HANDLE instead of nullptr.
2022-07-18 14:19:06 +02:00
Philip Rebohle
8d1b9eca5d
[dxvk] Fix blending with A8 render targets 2022-07-17 17:06:42 +02:00
Philip Rebohle
f15466a2c5
[dxvk] Remove remaining built-in specialization constants 2022-07-17 17:06:42 +02:00
Philip Rebohle
0f16a8f70d
[dxbc] Remove output mapping code 2022-07-17 17:06:42 +02:00
Philip Rebohle
568aae8667
[dxvk] Use SPIR-V pass to swizzle FS outputs instead of spec constants 2022-07-17 17:06:42 +02:00
Philip Rebohle
c401167161
[dxvk] Introduce SPIR-V pass to inject render target swizzles 2022-07-17 17:06:40 +02:00
Leopard1907
48ac9b27e4 eveonline-dx12_workaround
Launcher probes feature level 12_1, if it fails to probe it DX12 option in launcher stays greyed out, doesn't let user enable DX12.
2022-07-17 13:51:40 +02:00
Philip Rebohle
d898eff3be
[dxvk] Don't remove private inpurs from interface list in SPIR-V 1.4+
And if we have to, exit after one iteration since otherwise our iterator
gets invalidated.
2022-07-17 03:57:05 +02:00
Philip Rebohle
ff39819086
[dxvk] Merge methods to bind a compute pipeline
There is no workload in practice where the same shader will be used
multiple times with different spec constants, so there is no good
reason to have two dirty flags or to split lookup and binding.
2022-07-17 00:09:30 +02:00
Philip Rebohle
a1c3df7750
[dxvk] Always pre-compile compute shaders
We didn't initially do this because the pipeline library code
unconditionally used pNext chains to pass shader code. However,
shader module creation has since been refactored, and now there
is no good reason not to compile compute shaders immediately.

Also fix the stat counter while we're at it.
2022-07-16 23:42:46 +02:00
Philip Rebohle
8747c0f105
[dxvk] Remove unused method from graphics pipeline code 2022-07-16 23:17:06 +02:00
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
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
Philip Rebohle
9e110cd3e5 [d3d9] Fix up unsupported sample counts 2022-07-14 14:58:58 +01:00
Philip Rebohle
74a8bfb774 [d3d9] Remove CreateConstantBuffer method 2022-07-14 15:55:08 +02:00
Philip Rebohle
4635c72e95 [d3d9] Use generic constant buffers for SWVP 2022-07-14 15:55:08 +02:00
Philip Rebohle
08c3c45853 [d3d9] Use generic constant buffer implementation 2022-07-14 15:55:08 +02:00
Philip Rebohle
e8d5ce94ea [d3d9] Introduce D3D9ConstantBuffer 2022-07-14 15:55:08 +02:00
Philip Rebohle
bcd2be0698
[d3d11] Fix subtle bug in constant buffer rebinding
Previously, if the app called SetConstantBuffers1 with a non-zero
offset and a full UBO range, and then SetConstantBuffers with the
same buffer, we would not rebind that buffer at offset zero.
2022-07-14 15:14:25 +02:00
Philip Rebohle
aef2eb14df
[dxvk] Use BindConstantBufferRange for SetConstantBuffers1 if possible
Reduces ref counting overhead in the few games that use this.
2022-07-14 15:14:21 +02:00
Philip Rebohle
ce3eae59a9
[dxvk] Introduce bindResourceBufferRange 2022-07-14 14:56:13 +02:00
Philip Rebohle
57445227ac
[d3d11] Fix render target validation (again)
This behaviour is rather obscure and undocumented, but testing shows
that DSV <-> RTV mismatches are allowed under some circumstances.

Fixes #2555.
2022-07-14 12:39:14 +02:00
Robin Kertels
ce48b57f94
[d3d9] Allow POOL_SCRATCH targets in GetFrontBufferData 2022-07-13 14:01:12 +02:00
Blisto91
64d2260656
[d3d9] add D3DFMT_UNKNOWN to windowed BackBufferFormat 2022-07-13 13:03:05 +02:00
Philip Rebohle
95995041b0
[d3d9] Explicitly check for Unknown in CheckDeviceFormatConversion 2022-07-13 12:35:33 +02:00
Robin Kertels
10b174b52c [d3d9] Fix barriers with staging buffers 2022-07-12 21:16:32 +01:00
Philip Rebohle
bd68f05c9b
[dxvk] Make emitRenderTargetReadbackBarrier more generic
And also remove the redundant pipeline barrier.
2022-07-12 17:29:11 +02:00
Philip Rebohle
5ff6f3a2ca
[dxvk] Fix graphics UAV barriers
We broke this when replacing gfxBarriers with execBarriers,
since starting a render pass instance clears queued up barriers.
2022-07-12 14:26:52 +02:00
Philip Rebohle
59475fb053
[dxvk] Remove cull mode and front face from pipeline state
And bump state cache version to v14.
2022-07-12 12:07:25 +02:00