Philip Rebohle
5f0f90f8d4
[dxvk] Merge clears with different views but identical subresources
2021-03-05 19:50:11 +01:00
Liam Middlebrook
1c2edabbcb
[dxvk] Disable NVIDIA HVV bug workaround on fixed drivers
...
Reviewed-by: Arthur Huillet <ahuillet@nvidia.com>
2021-03-05 11:21:50 +01:00
Liam Middlebrook
b25d6ba615
[dxvk] Add option to disable workaround for NVIDIA HVV bug
...
Adds a new dxvk.halveNvidiaHVVHeap option.
Reviewed-by: Arthur Huillet <ahuillet@nvidia.com>
2021-03-05 11:21:50 +01:00
Philip Rebohle
3acdf6e22a
[d3d11] Perform bound-checking in GetBufferSlice
...
Ensures that we don't pass invalid buffer slices to the backend.
2021-03-04 17:37:13 +01:00
Philip Rebohle
049fda9218
[d3d11] Revert index buffer optimization
...
This causes some problems when the app uses a combination of index
buffer offset and StartIndexLocation that overflows 32-bit integers.
In my testing, there haven't been many games benefitting from this
optimization anyway, so just reverting it should not have tangible
effects on performance.
2021-03-04 15:47:39 +01:00
DadSchoorse
e44a1e614b
[dxvk] preserve order of devices with the same type
2021-03-03 23:17:44 +01:00
Philip Rebohle
94049c0c90
[dxvk] Fix incorrect barrier for fragment shader resolve
2021-03-03 23:16:25 +01:00
Joshua Ashton
0367bf95c4
[build] MSVC check cleanup
2021-03-03 18:57:42 +01:00
Rémi Bernon
1589f516c9
[d3d9] Convert window position relative to its parent.
2021-03-03 15:49:52 +00:00
Philip Rebohle
5083b8474c
[meta] Release 1.8.1
2021-03-01 16:49:02 +01:00
Philip Rebohle
9bdc491cb7
[dxvk] Fix potential iterator invalidation in deferClear/Discard
...
flushClears clears the deferred clear list, so we need to
break out of the loop on that code path.
2021-03-01 16:49:02 +01:00
Joshua Ashton
31063252eb
[d3d9] Don't implicit discard if read locked
2021-02-28 15:06:23 +00:00
Joshua Ashton
741070785a
[d3d9] Allow implicit discard for all backed buffers
2021-02-28 13:01:00 +00:00
Joshua Ashton
572315567c
[util] Add custom vendor id for Warhammer Online
2021-02-28 09:54:33 +00:00
Joshua Ashton
375f8323e2
[dxso] Don't warn about Phase opcode
2021-02-27 21:17:01 +00:00
Joshua Ashton
6bb271b299
[d3d9] Cleanup options code
2021-02-27 20:35:37 +00:00
Joshua Ashton
c7bebe8267
[util] Add config for Warhammer Online
2021-02-27 20:31:13 +00:00
Joshua Ashton
8c2ec5d9c9
[d3d9] Clean up resource locking code
2021-02-27 20:15:39 +00:00
Joshua Ashton
e8fc7ea23a
[d3d9] Add d3d9.allowImplicitDiscard option
2021-02-27 20:08:57 +00:00
Joshua Ashton
50d223e614
[d3d9] Add option to use device local memory for constant buffers
...
Useful for testing performance.
2021-02-27 19:29:52 +00:00
Robin Kertels
eec4481ca0
[d3d9] Fix various issues in UpdateTexture
...
- Skip copies for empty or invalid rects
- align up the extent
- use util functions to slightly clean up the code
2021-02-27 17:31:15 +00:00
Philip Rebohle
12693b17f9
[d3d9] Use DxvkSwapchainBlitter for presentation
2021-02-27 14:54:14 +00:00
Philip Rebohle
148272fbce
[d3d11] Use DxvkSwapchainBlitter for presentation
2021-02-27 14:54:14 +00:00
Philip Rebohle
49f2b4c4a6
[dxvk] Introduce DxvkSwapchainBlitter and new presentation shaders
...
This is meant to provide a common rendering code for D3D9 and D3D11 presentation.
2021-02-27 14:54:14 +00:00
Philip Rebohle
277a4f0206
[hud] Explicitly set up viewport state
2021-02-27 14:54:14 +00:00
Joshua Ashton
d51562fc9a
[dxvk] Only pass needed amount of clear values when binding a framebuffer
...
Works around a Renderdoc bug and should hopefully make more sense.
The views are compacted in a framebuffer so it should be fine to do this.
2021-02-26 18:43:45 +01:00
Philip Rebohle
db69ade7e7
[dxvk] Include fragment shader stage in render pass barrier as necessary
...
If we have readable depth, we need to make sure that the fragment shader
can actually, well, read the image.
2021-02-26 12:59:12 +01:00
Paul Gofman
71ffffb832
[vr] Use registry key to get OpenVR extensions list if available.
2021-02-26 12:46:22 +01:00
Philip Rebohle
dcf4599c98
[d3d9] Use ATTACHMENT_OPTIMAL layout for render targets
...
Significantly improves GPU-bound performance on RADV in a number of games.
2021-02-26 05:02:32 +00:00
Philip Rebohle
1b97ca253f
[dxvk] Actually transition source image in fragment shader blits
...
All meta ops should transition all involved images to the correct
image layout.
2021-02-26 05:02:32 +00:00
Philip Rebohle
9c6d3a2bf6
[d3d11] Fix RSGetViewports and RSGetScissorRects
...
If the output array is non-null, these functons always return the
number of valid viewports or scissors actually written to the array.
Fixes a wine test failure.
2021-02-26 03:35:57 +01:00
Philip Rebohle
d118d35820
[d3d11] Fix IAGetIndexBuffer with optimized index buffers
2021-02-26 02:39:14 +01:00
Joshie
5ac9c45f65
[util] Add config for Mafia 2
...
https://gitlab.freedesktop.org/mesa/mesa/-/issues/1325
2021-02-25 15:09:00 +00:00
Philip Rebohle
5e55ced8b2
[dxvk] Fix deferred clear logic for overlapping image views
...
If we clear the same image subresources twice with different views
and then start rendering to one view, we may end up clearing to
the wrong clear value.
2021-02-21 14:53:03 +01:00
Philip Rebohle
96e1079526
[dxbc] Set usesDerivatives for gather and LOD query operations as well
...
Because these do implicitly use derivatives.
2021-02-21 14:24:54 +01:00
Philip Rebohle
5643bf47fe
[d3d11] Use discardImageView in DiscardView1
2021-02-21 02:51:59 +01:00
Philip Rebohle
5d4d32c613
[d3d11] Remove explicit spec constant for gamma texture
...
No longer needed.
2021-02-21 02:20:14 +01:00
Philip Rebohle
7168cc160f
[dxvk] Remove layout transition hack for presentable images
2021-02-21 02:19:44 +01:00
Philip Rebohle
ab3de5e94b
[d3d11] Manually discard swap chain image view on present
2021-02-21 02:19:23 +01:00
Philip Rebohle
73a06aea72
[d3d9] Manually discard swap chain image view on present
2021-02-21 02:18:55 +01:00
Philip Rebohle
e46bf78f31
[dxvk] Implement discardImageView
...
Built on top of the deferred clear logic.
2021-02-21 01:56:52 +01:00
Philip Rebohle
0ba3e693c9
[dxbc] Clean up some texture handling code
2021-02-20 23:39:15 +01:00
Joshua Ashton
80049c360e
[dxvk] Fix resource tracking in attachment transitions
...
Fixes a crash in Portal 2 on DXVK native in which an old depth stencil is used after free after a device reset.
2021-02-20 19:34:49 +01:00
Joshua Ashton
e9c91daba7
[dxvk] Fix out of bounds read when uploading HUD texture
...
The width + height does not add up to the size of the global array.
2021-02-20 14:37:00 +01:00
Philip Rebohle
5fc83a6075
[dxvk] Add missing trackImage to changeImageLayout
2021-02-20 14:35:57 +01:00
Philip Rebohle
1a1cc32b11
[dxvk] Store VkImage in barrier set rather than DxvkImage*
...
Avoids some accidental ref counting.
2021-02-20 14:35:22 +01:00
Philip Rebohle
d66ecf4a94
[meta] Release 1.8
2021-02-19 05:29:50 +01:00
Joshua Ashton
59816a71b9
Revert "[d3d9] Don't minimise in WM_ACTIVATEAPP"
...
Not needed as this was an FSHack bug.
This reverts commit d87200c4d9
.
2021-02-19 03:14:56 +00:00
Philip Rebohle
fe5e215dfc
[dxgi] Support multiple outputs per adapter
2021-02-18 14:19:55 +01:00
Joshua Ashton
d87200c4d9
[d3d9] Don't minimise in WM_ACTIVATEAPP
...
Sometimes mode-setting jank can occur and technically we'd need to re-set the mode on the next present if the game gets actually minimised.
2021-02-15 17:29:45 +00:00
Philip Rebohle
df76a5252a
[dxvk] Use default layout for depth-stencil image descriptors
...
Apparently the image layout matching rules were relaxed at some point,
so just using DEPTH_STENCIL_READ_ONLY_OPTIMAL for descriptors is legal
even if the image is in DEPTH_READ_ONLY_STENCIL_ATTACHMENT_OPTIMAL or
DEPTH_ATTACHMENT_STENCIL_READ_ONLY_OPTIMAL in the current render pass.
2021-02-15 17:00:35 +01:00
Robin Kertels
ec5c324643
[d3d9] Mark generated mip maps as dirty
2021-02-14 23:55:00 +00:00
Robin Kertels
021ffe7350
[d3d9] Regenerate auto mip gen textures in UpdateTexture
...
.. instead of copying them
2021-02-14 23:55:00 +00:00
Robin Kertels
338f6dfb0e
[d3d9] Track dirty regions for UpdateTexture
2021-02-14 23:55:00 +00:00
Philip Rebohle
a0cf5926d8
[dxvk] Add parameter to prepareImage to ignore clears
...
Otherwise we may flush clears while clearing a render target,
which is silly and undoes the layout optimizations.
2021-02-14 04:22:52 +01:00
Philip Rebohle
2b401725dc
[dxvk] Do not transition non-shared images at the end of the command buffer
...
Currently, if the frontend flushes the command list, we always transition
render targets to their default layout. This may lead to some arbitrary
GPU performance issues if the transitions are not free.
Instead, keep all images that are only used internally in their attachment
layout across command list boundaries, until they are unbound.
2021-02-14 04:00:02 +01:00
Philip Rebohle
bce80b523f
[d3d11] Mark images as shared if necessary
2021-02-14 04:00:02 +01:00
Philip Rebohle
4f184b3424
[d3d9] Mark images as shared if necessary
2021-02-14 04:00:02 +01:00
Philip Rebohle
6564895a32
[dxvk] Add shared flag to images
...
Indicates that images can be accessed by more than one context
internally, or through the interop interfaces without explicit
image layout transitions.
2021-02-14 04:00:02 +01:00
Philip Rebohle
6efc2588f8
[dxvk] Remove checkFramebufferBarrier
...
No longer serves any practical purpose.
2021-02-14 04:00:02 +01:00
Philip Rebohle
95676bf1e6
[dxvk] Always prepare images not bound to the current FB when clearing
...
Fixes a potential bug when clearing a render target after the
last render pass using it gets suspended.
Also, for some reason we were checking for <1 instead of <0.
2021-02-14 04:00:02 +01:00
Christopher Egert
594d09ae3a
[util] Spoof a nvidia card for DIRT 5
2021-02-14 03:54:14 +01:00
Philip Rebohle
0c18a86090
[dxvk] Fix render target clears if attachments are not tightly packed
...
We do actually need to use the color target indices here rather than
the attachment index, since the repacking happens inside DxvkRenderPass.
Clear values still need to be tightly packed.
2021-02-12 03:13:11 +01:00
Philip Rebohle
436820d233
[dxvk] Add method to query color attachment index from attachment index
2021-02-12 03:13:11 +01:00
Philip Rebohle
0956050db6
[dxvk] Fix actual render target layout transitions for 3D images
...
Also, only emit transitions if the layouts differ.
2021-02-12 03:13:11 +01:00
Philip Rebohle
bd87c12138
[dxvk] Make suspend parameter of spillRenderPass not optional
2021-02-12 03:13:11 +01:00
Philip Rebohle
aa0296b7ca
[dxvk] Suspend render pass for most image operations
...
We can big brain this and only explicitly transition the render targets
that are used within the copy operation, if any, and leave the rest intact.
2021-02-12 03:13:11 +01:00
Philip Rebohle
96dfac7fea
[dxvk] Suspend render pass for certain render target clears
2021-02-12 03:13:11 +01:00
Philip Rebohle
d7db413cac
[dxvk] Introduce prepareImage
...
This transitions any framebuffer attachment that is currently in
the wrong layout back to its default layout before it is used by
functions that expec it to be in the default layout.
2021-02-12 03:13:10 +01:00
Philip Rebohle
fe43abbf32
[dxvk] Suspend render pass for buffer copies and render pass barriers
...
No images are directly involved in these, so we can save some layout
transitions.
2021-02-12 03:13:10 +01:00
Philip Rebohle
ba698430cb
[dxvk] Suspend render pass when updating framebuffer
...
Saves barriers in case some of the previously bound framebuffer
arre reused in the new one.
2021-02-12 03:13:10 +01:00
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
2787ba8450
[d3d11] Fix D3D11 bind flags and DXGI usage for swap chain images
2021-02-12 03:12:48 +01:00
Philip Rebohle
c98c5f5d17
[d3d11] Add internal DXGI usage flags to textures
...
We need this for swap chain images.
2021-02-12 03:12:48 +01:00
Philip Rebohle
a60916f7ee
[dxvk] Improve device ordering
...
Make sure that integrated GPUs are preferred over CPU
implementations on systems that have no dedicated GPU.
2021-02-11 14:58:11 +01:00
Philip Rebohle
bcadc04932
[dxvk] Validate vertex attribute alignment
2021-02-08 14:55:18 +01:00
Philip Rebohle
a045cac281
[d3d11] Fix vertex input alignment for small formats
...
Fixes #1922 .
2021-02-08 14:28:55 +01:00
Joshua Ashton
fcaab6aa46
[d3d9] Expose adapter/backbuffer formats properly
...
Matches native behaviour in my testing.
2021-02-06 08:57:32 +00:00
Joshua Ashton
58d6f018bb
[d3d9] Allow A2R10G10B10 backbuffer format in Windowed
2021-02-06 08:43:37 +00:00
Joshua Ashton
ff9d451a4e
[util] Force saner SWVP limits for TrackMania Forever
...
Closes : #1910
2021-02-06 08:28:03 +00:00
Joshua Ashton
bba3f9f3db
[util] Defer surface creation for Nioh 2
...
Fixes black screen on startup.
2021-02-06 07:48:52 +00:00
Joshua Ashton
9bee3e1cb9
[util] Add config for Dark Messiah of Might & Magic
...
Same problem as other early Source titles, infinitely makes resources at startup to measute VRAM.
2021-01-30 04:36:26 +00:00
Philip Rebohle
01a511aa99
[dxvk,dxgi,d3d9] Fix shader spec constant IDs
...
These changed after changing the render target output swizzle stuff.
2021-01-29 16:46:01 +01:00
Philip Rebohle
2d670ec3db
[dxbc] Enable capabilities for float control modes
...
Fixes some validation errors (but seriously, why does everything
have to be a capability in SPIR-V?)
2021-01-29 16:29:39 +01:00
Philip Rebohle
c1073455bf
[spirv] Add hasCapability method
2021-01-29 16:29:26 +01:00
Philip Rebohle
3a993d0c5c
[dxvk] Use only one spec constant for fragment shader output component mapping
...
Let's trust the driver to be able to constant-fold bitfieldExtract operations.
2021-01-29 16:17:07 +01:00
Philip Rebohle
307f43ff1e
[d3d11] Introduce option to disable float controls
...
And disable for SotTR since it introduces rendering issues.
2021-01-28 20:32:38 +01:00
Philip Rebohle
8de9dc9378
[d3d11] Enable d3d11.invariantPosition by default
2021-01-28 20:09:47 +01:00
Philip Rebohle
1478011822
[dxbc] Enable NaN fixup by default on older RADV versions
...
And get rid of a whole bunch of game-specific workarounds.
2021-01-28 19:37:10 +01:00
Philip Rebohle
f5fa7a9099
[dxbc] Set float control bits as necessary
2021-01-28 19:37:10 +01:00
Philip Rebohle
849fb329ec
[dxvk] Enable VK_KHR_shader_float_controls if supported
2021-01-28 19:37:10 +01:00
dom
7d7c057d46
[util] Enable dxgi.customVendorId for Hitman 3
2021-01-28 14:07:52 +01:00
Philip Rebohle
a17ec95f21
[utils] Enable d3d9.deferSurfaceCreation for Atelier Ryza 2
2021-01-26 12:06:20 +01:00
Philip Rebohle
b8bc36559d
[d3d11] Optimize index buffer binding with offset
...
Do not rebind the buffer if only the offset changes. Instead,
adjust StartIndexLocation in indexed draw calls. For indirect
draws, this will be disabled on the fly.
This may save a whole bunch of work in the backend, and reduces
the number of commands being sent to the CS thread in the first
place, which is why this optimization is not being done in the
backend itself but rather on the client API side.
2021-01-24 15:18:38 +01:00
Philip Rebohle
f869881f55
[util] Enable TGSM barrier workaround for more F1 games
...
F1 2020 is reportedly broken as well.
2021-01-16 15:28:30 +01:00
Joshua Ashton
742b52bbb5
[d3d11] Fix device child refs properly
2021-01-15 23:47:48 +01:00
Philip Rebohle
499f15011f
[util] Enable TGSM barrier workaround for F1 2018
...
Game has the same bug as F1 2019. Fixes #1897 .
2021-01-15 13:15:01 +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
Joshua Ashton
0eec95843f
[d3d9] Fix warnings with query caching
2021-01-08 13:49:38 +00:00
Gabriel Ivăncescu
83f6400a07
d3d9: Send necessary messages for full-screen windows during WM_ACTIVATEAPP.
2021-01-08 13:40:34 +00:00
Joshie
dde28a967f
[d3d11] Fix forward declaration of ID3D11Texture2D
...
This should be struct not class.
Silences warnings in MSVC.
2021-01-08 13:06:02 +01:00
Joshua Ashton
838a6ef0f1
[d3d11] Disallow mismatching shader bytecode and type
...
Fixes a wine test which lead to a "refcounting bug" down the line.
2021-01-08 11:59:16 +01:00
Andrew Eikum
2405e474e5
[dxvk] Use wineopenxr to apply required OpenXR extensions
2021-01-07 23:54:02 +01:00
Andrew Eikum
a3065fca8e
[d3d11] Extend interop interfaces for OpenXR support
2021-01-07 23:54:02 +01:00
Robin Kertels
60a2aeb6ef
[d3d9] End query before the stall heuristic flush
2021-01-07 21:19:28 +00:00
Robin Kertels
0f933fee8b
[d3d9] Extend query stall tracking to other query types
2021-01-07 21:19:28 +00:00
Robin Kertels
6554ca8f9e
[d3d9] Cache query data
2021-01-07 21:19:28 +00:00
gofman
5852e318e5
[d3d11] Fix device ref counting from queries. ( #1887 )
...
Fixes AO Tennis 2 crash on exit.
Co-authored-by: Paul Gofman <pgofman@codeweavers.com>
2021-01-06 20:10:44 +01:00
oltolm
f337ad3c05
fix d3d11 header for MinGW 9 ( #1883 )
2021-01-04 00:52:43 +01:00
PendingChaos
f39472a9ba
[util] Set invariantPosition for Devil May Cry 5 ( #1863 )
...
Fixes some missing/shifting geometry on GFX10.3 and RADV/ACO.
Tested using dxvk.conf and DXVK 1.7.3.
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
2021-01-02 10:42:33 +01:00
Jason Bagavatsingham
05f4b1bb3c
[util] Set enableRtOutputNaNFixup for Empire of Sin ( #1858 )
...
Co-authored-by: Jason Bagavatsingham <jason.bagavtsingham@gmail.com>
2021-01-02 10:42:26 +01:00
Samuel Pitoiset
d0d1d99537
[util] set enableRtOutputNanFixup for VRChat ( #1872 )
...
Fixes rendering issues with RADV.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2021-01-01 23:07:11 +01:00
Robin Kertels
ea13a68678
[util] Enable apitrace mode for Everquest
2020-12-26 17:37:07 +00:00
Robin Kertels
56399e49d1
[util] Enable apitraceMode for Tomb Raider Legend
2020-12-14 16:51:19 +00:00
Robin Kertels
6a54d86f25
[d3d9] Implement apitraceMode option
2020-12-14 16:51:19 +00:00
Robin Kertels
4b6632764f
Revert "[d3d9] Only use DEVICE_LOCAL memory for small dynamic buffers"
...
This reverts commit f3a82a0bcc
.
Apparently this makes other games slower. We need a different solution for TR: Legend.
2020-12-14 16:51:19 +00:00
Joshua Ashton
65635b23c1
[d3d9] Always slightly bias viewport, regardless of size
...
Since we got TRUNC_COORD on RADV, we always need to bias this now.
Closes : #1854
2020-12-14 03:51:49 +00:00
PendingChaos
495b2a098e
[util] Set invariantPosition for Monster Hunter World ( #1850 )
...
Fixes flickering on GFX10.3 with RADV/ACO.
2020-12-11 18:51:10 +01:00
Philip Rebohle
03f11baf57
[hud] Fix up nonsensical scaling factors
2020-12-06 01:03:01 +01:00
Philip Rebohle
74abb5bb80
[hud] Initialize scale to 1
...
See #1843 .
2020-12-06 00:48:48 +01:00
Philip Rebohle
854ae7b862
[dxvk] Add transform feedback buffer usage to dummy buffer
...
Silences some Vulkan validation errors.
2020-12-06 00:35:29 +01:00
Philip Rebohle
0b4e167fc9
[hud] Fix typo
2020-12-02 17:13:41 +01:00
Philip Rebohle
b67639bdf0
[meta] Release 1.7.3
2020-12-02 16:14:56 +01:00
Philip Rebohle
6814ad45d4
[hud] Fix positioning of compiler item when scaled
2020-12-02 16:14:56 +01:00
Philip Rebohle
a23be756d7
[hud] Implement HUD scaling
...
Can be set like DXVK_HUD=fps,scale=1.5.
2020-12-01 03:31:22 +01:00
Philip Rebohle
8fe3effb40
[hud] Draw lines as triangle strip
2020-12-01 03:31:22 +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
34e730fe41
[d3d11] Remove predication-related code
2020-11-30 19:18:26 +01:00
Philip Rebohle
e79e8b9062
[dxvk] Increase queued command buffer limit to 18
...
May help when games upload a large number of resources
at once, at the cost of increased memory usage.
2020-11-27 12:22:08 +01:00
Philip Rebohle
c547039bef
[dxvk] Decide memory priority based on access flags rather than usage
...
Buffers used as shader resources are storage buffers as well,
and should not take priority over other read-only resources.
2020-11-27 12:20:55 +01:00
Joshua Ashton
5d8539672d
[util] Fix config for EverQuest2
2020-11-27 06:27:01 +00:00
Joshua Ashton
bbfd6d0690
[util] Enable alpha test wiggle room for EverQuest 2
...
Fixes clothing being alpha tested incorrectly due to wonky interpolation on NVIDIA.
Game uses oC0 == 1.0f
My testing on NV shows the alpha test has a precision of 1/256 for all A8 and below formats, and around 1 / 2048 for A32F formats and 1 / 4096 for A16F formats (It makes no sense to me too) so anyway, we're just going to round this to a precision of 1 / 4096 and hopefully this should make things happy everywhere.
Closes : #1832
2020-11-26 12:16:33 +00:00
Joshua Ashton
09043ddd16
[dxso] Implement option for alpha test wiggle room
2020-11-26 12:15:03 +00:00
Philip Rebohle
538b55921e
[dxbc] Conditionally return zeroes for unbound textures in shader
...
May allow the driver to optimize away texture operations.
2020-11-24 18:39:20 +01:00
Philip Rebohle
45461ee54e
[dxbc] Use opSelect for unbound texel fetch instructions
...
Generates less annoying code compared to control flow instructions,
and drivers should be able to optimize away the texture instruction
anyway since the bound state is a specialization constant.
2020-11-24 18:36:40 +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
Joshua Ashton
6a63f4af56
[d3d9] Enable null descriptors for D3D9
2020-11-24 16:17:36 +00:00
Philip Rebohle
3cf7d65789
[hud] Use textureLod in fragment shader
...
Should silence some validation errors.
2020-11-24 17:07:22 +01:00
Joshua Ashton
c282ec7976
[dxso] Handle extraneous writemasks in matrix ops
2020-11-24 15:58:21 +00:00
Philip Rebohle
f74071ac0a
[d3d11] Support different strides for merged indirect draws
...
Trine 4 uses a stride of 32 bytes. Detecting the stride dynamically
allows us to merge a couple of draws in this game, and others which
do not tightly pack their draw parameter buffers.
2020-11-21 05:39:05 +01:00
Philip Rebohle
bf4465f5a2
[dxvk] Increase query pool sizes
...
Some games create hundreds of timestamp queries, we want to reduce
the number of pools in that case.
2020-11-21 03:35:41 +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
61a07fc9b9
[dxbc] Fix up incorrect infinity returned by f32tof16
...
Completely insane fix for #1826 .
2020-11-21 01:25:03 +01:00
Philip Rebohle
d0cdd79dd2
[dxgi] Allow creating R16_SFLOAT views for D16_UNORM images
...
Just use R16_UNORM. For some reason, D3D11 actually allows this, and
Trine 4 wants the corresponding calls to succeed, although we're going
to interpret the data as UNORM rather than FLOAT.
2020-11-20 17:14:41 +01:00
Shawn M. Chapla
7ef6132cf0
[util] Use nvapiHack by default for Far Cry Primal ( #1821 )
...
Remove nvapiHack=False default override for Far Cry Primal as the game
is unplayable without an nvapi implementation and appears to now perform
fine with nvapiHack.
Co-authored-by: Shawn M. Chapla <schapla@codeweavers.com>
2020-11-18 10:12:40 +01:00
Joshie
6a10c81d4b
[d3d11] Define ordinals for exports ( #1812 )
2020-11-11 16:54:36 +01:00
Philip Rebohle
13052d4949
[dxgi] Actually expose new DXGI interfaces
...
Derp.
2020-10-24 17:41:55 +02:00
Philip Rebohle
54a4e91dad
[dxgi] Implment IDXGIFactory7
2020-10-23 12:21:02 +02:00
Philip Rebohle
a7de355646
[dxgi] Implement IDXGIFactory6
2020-10-23 12:15:48 +02:00
Philip Rebohle
f81395c742
[dxbc] Fix operand modifiers on 64-bit types
2020-10-22 12:43:04 +02:00
Philip Rebohle
7b9644f355
[meta] Release 1.7.2
2020-10-07 17:41:54 +02:00
Philip Rebohle
1863c6e81c
[dxvk] Catch exceptions of type DxvkError on CS thread
2020-10-07 16:33:48 +02:00
Philip Rebohle
0b011ea361
[dxvk] Throw error in case a pipeline layout uses too many bindings
2020-10-07 16:33:48 +02:00
Philip Rebohle
d153d5c19a
[dxvk] Bump state cache version to v9
...
Needed because the binding bit mask increased in size.
2020-10-07 16:33:48 +02:00
Philip Rebohle
e98493fc24
[dxvk] Increase maximum active binding count to 384
...
Fixes a stack overflow in Baldur's Gate 3, caused by a compute shader
that uses 131 resources.
2020-10-07 16:33:48 +02:00
Rhys Perry
4251b7a59c
[util]: Set enableRtOutputNaNFixup for Art of Rally
...
Fixes the (Windows) Art of Rally demo.
See https://gitlab.freedesktop.org/mesa/mesa/-/issues/3562
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
2020-10-06 15:57:07 +02:00
Samuel Pitoiset
ccb782219c
[util] Set enableRtOutputNanFixup for some Chilla's Art games
...
See ValveSoftware/Proton#4167
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2020-09-26 16:45:49 +02:00
Samuel Pitoiset
3487685a79
[util] Set enableRtOutputNaNFixup for The Dungeon of Naheulbeuk
...
Fixes rendering issues with RADV and AMDVLK (haven't tried -pro).
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2020-09-26 15:06:29 +02:00
Joshua Ashton
c3fdc768cf
[d3d9] Only define the push constants we use
...
Fixes #1742
2020-09-26 06:39:52 +01:00
Joshua Ashton
753fcd5649
[d3d9] Only read point scale push constant in fixed function
...
Otherwise it doesn't exist and we're reading garbage/non-existant data.
Even though this gets spec-constanted away via an opSelect, some drivers don't like this
2020-09-26 06:39:52 +01:00
Joshua Ashton
e4bca7a42f
[d3d9] Handle specular fog factor for fixed function
...
Also handle POSITION_T shenanigans
Closes #1771
2020-09-26 06:06:06 +01:00
Joshua Ashton
dc392f7cfa
[d3d9] Fix typo declaring fixed func fog inputs
2020-09-26 04:03:11 +01:00
Philip Rebohle
ab04f45ea0
[d3d11] Handle null pointers in CopySubresourceRegion1.
...
Because of course Marvel's Avengers tries to do this..
2020-09-17 13:36:09 +02:00
Robin Kertels
b21a673a8d
[d3d11] Don't use clamped constant buffer range for bounds checking
2020-09-14 22:43:18 +02:00
Rhys Perry
73cb711f32
[dxbc] Bounds-check temporary array stores
...
Fixes flickering terrain in Just Cause 3 on RADV and possibly ANV.
2020-09-14 16:56:06 +02:00
Philip Rebohle
4801fbe098
[d3d11] Clamp and validate bound constant buffer range
...
SetConstantBuffers will only bind the first 65536 bytes of any
buffer passed to it if it is larger. This can be seen even when
querying the bound range via GetConstantBuffers1.
SetConstantBuffers1 does not have any effect if the bound range
is invalid.
2020-09-14 16:50:16 +02:00
Joshua Ashton
81632b91bb
[dxso] Allocate shader compiler on the heap
...
In some apps that call us with limited stack space, this can stack overflow
2020-09-11 21:49:14 +01:00
Joshua Ashton
3e65c2bb87
[d3d9] Reduce copying around of shader metadata at Create time
2020-09-11 21:49:14 +01:00
Joshua Ashton
1274b7a8e7
[dxvk] Add helper to retrieve SHA1 hash from shader key
2020-09-11 21:49:14 +01:00
ishitatsuyuki
bb85a4caa8
Handle non-ASCII characters properly in paths
2020-09-10 15:56:38 +02:00
Philip Rebohle
7bf02a1925
[d3d11] Fix incorrect layer count for some non-PoT 3D RTVs
...
Otherwise, we may end up with zero layers. Fixes #1756 .
2020-09-04 23:04:06 +02:00
Philip Rebohle
41a49a9c14
[dxgi] Add B8G8A8X8 formats to GetMonitorFormatBpp
...
Doesn't really fix anything, just silences some warnings
in Horizon Zero Dawn.
2020-09-04 17:54:01 +02:00
Philip Rebohle
645c8f8177
[util] Add option to disable log files entirely
...
But still log to stderr. Fixes #1743 .
2020-08-24 09:09:18 +02:00
Philip Rebohle
16a51f3c03
[dxvk] Only use half of the DEVICE_LOCAL | HOST_VISIBLE heap on Nvidia
...
Seems to help with random crashes in FFXIV and potentially
other games on 450 series drivers.
2020-08-22 11:51:56 +02:00
Philip Rebohle
e435e071e0
[dxvk] Introduce memory heap budget
...
Allows more fine-grained control of memory allocations for specific
heaps. For now, target 80% for device-local heaps on UMA devices.
2020-08-22 11:50:37 +02:00
Joshua Ashton
743f309253
[d3d9] Implement YV12 video format
...
Needed for #1726 otherwise it will upload dump that upload garbage in a YUV2 texture.
2020-08-17 22:32:30 +01:00
Robin Kertels
89d36e1d7f
[d3d9] Handle edge cases around implicit discard
2020-08-15 05:45:01 +01:00
Philip Rebohle
ea53923406
[meta] Release 1.7.1
2020-08-13 19:10:20 +02:00
Philip Rebohle
2a0f10e611
[util] Enable apitrace mode for Monster Hunter World
2020-08-13 18:52:45 +02:00
Philip Rebohle
48777c8fcf
[dxvk] Remove optional memory property flags one by one
...
We don't always want to remove HOST_CACHED if no DEVICE_LOCAL
type exists, so iterate over the bits one by one.
2020-08-13 18:47:52 +02:00
Philip Rebohle
346197c8c1
[util] Enable apitrace mode for Darksiders Warmastered Edition
...
Fixes #1719 .
2020-08-12 23:39:53 +02:00
Philip Rebohle
d4f6ccb8a8
[dxvk] Add new 4444 formats to format list
...
Derp.
2020-08-12 23:12:18 +02:00
Joshua Ashton
d92660923a
[d3d9] Use VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT
2020-08-10 09:45:49 +02:00
Philip Rebohle
cb7f1dc966
[dxgi] Use VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT if available
2020-08-10 09:45:45 +02:00
Philip Rebohle
397daa0432
[dxvk] Enable VK_EXT_4444_formats if available
2020-08-10 09:45:45 +02:00
Robin Kertels
b28a7353bb
[d3d9] Do implicit discard when locking system memory resources
2020-08-10 00:09:29 +01:00
Joshua Ashton
98c7da805b
[d3d9] Rename BT.703 to BT.709
...
Don't know how this typo got introduced.
Thanks to Ryao for finding the matrix and pointing this out.
2020-08-07 20:54:45 +01:00
Kevin Schmidt
9f6f6a7979
[util] Enable d3d9.memoryTrackTest for Anarchy Online
...
Prevents the game from consuming all system memory.
Signed-off-by: Kevin Schmidt <kevin.patrick.schmidt@googlemail.com>
2020-08-07 11:11:05 +01:00
Joshua Ashton
e2a26f2bc5
[d3d9] Optimize NV12 conversion to use a macropixel of [2, 1]
2020-08-07 10:56:26 +01:00
Joshua Ashton
9fe1b9d03f
[d3d9] Replace macropixel size with plane count
2020-08-07 10:56:26 +01:00
Joshua Ashton
2bf9f298af
[d3d9] Implement NV12 format conversion
2020-08-07 10:56:26 +01:00
Joshua Ashton
2cfd219024
[d3d9] Move some YUV helpers to common and cleanup YUY2 shader
2020-08-07 10:56:26 +01:00
Joshua Ashton
ad6b91d84a
[d3d9] Flush and synchronize to cs before format conversion
...
Fixes a race when DISCARD is used
2020-08-07 10:56:26 +01:00
Joshua Ashton
f1aa80dab9
[d3d9] Don't private reference additional swapchains
2020-08-07 10:56:26 +01:00
Joshua Ashton
e7d9d4739a
[util] Fix trace macro for functions with no args
2020-08-07 10:56:26 +01:00
Joshua Ashton
aa01d914f1
[util] Implement METHOD_NAME for _MSC_VER
2020-08-07 10:56:26 +01:00
Jason Bagavatsingham
145d8225f4
[util] Set enableRtOutputNaNFixup for Observation
2020-08-06 14:14:49 +02:00
ryester27
d88b792447
Use d3d9.deferSurfaceCreation for Fairy Tail
2020-08-04 04:29:57 +02:00
Philip Rebohle
3322da4b94
[dxgi] Add DXGIGetDebugInterface1 stub
...
Required for Metro Exodus. Also exports the DXGI entry points
with their correct ordinals.
2020-07-24 12:25:48 +02:00
Biswapriyo Nath
3b52cad243
fix clang errors
...
File changes:
* meson.build: add -Wno-unused-private-field and -Wno-microsoft-exception-spec
option to suppress clang compiler warnings
* d3d9/d3d9_swvp_emu.h: include unordered_map for std::unordered_map
2020-07-21 11:41:28 +02:00
Christopher Egert
76e3bb78c9
[util] Disable DF24 support for Borderlands 2
...
and The Pre Sequel!
2020-07-20 18:41:40 +01:00
Robin Kertels
f3a82a0bcc
[d3d9] Only use DEVICE_LOCAL memory for small dynamic buffers
...
Tomb Raider Legend writes to multiple 128KB dynamic buffers
and one 512KB one every frame.
2020-07-20 18:36:20 +01:00
Robin Kertels
2714cb952d
[d3d9] Extend dirty tracking to render targets
...
Ensures we copy a dynamic default pool texture to its
mapping buffer after the device renders to it.
2020-07-20 18:36:20 +01:00
Philip Rebohle
66814ea8db
Revert "[d3d11] Move D3D11Shader implementation to its own file"
...
Useless since it doesn't fix the clang problem.
2020-07-18 00:10:31 +02:00
Philip Rebohle
56fe52ca3c
[d3d11] Move D3D11Shader implementation to its own file
...
And resolve some include madness. Necessary because D3D11Shader::GetDevice
needs to know the full definition of D3D11Device, but D3D11Device needs
to know the full definition of the other shader-related classes.
2020-07-17 10:16:37 +02:00
Philip Rebohle
5ab12d9668
[d3d11] Reenable null descriptor feature
2020-07-10 16:59:20 +02:00
Philip Rebohle
23691cd0ff
[dxvk] Enable extended dynamic state feature if available
2020-07-10 16:59:20 +02: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
Philip Rebohle
9f3fb028b0
[dxvk] Enable VK_EXT_extended_dynamic_state if available.
2020-07-10 16:59:20 +02:00
Gabriel Ivăncescu
1efe91e17d
[dxgi] Restore the Topmost state upon exiting fullscreen
...
Signed-off-by: Gabriel Ivăncescu <gabrielopcode@gmail.com>
2020-07-08 18:57:49 +02:00
Gregor Münch
4ac9dcf855
[util] Enable d3d11.invariantPosition for Mafia III: Definitive Edition
2020-07-05 17:37:13 +02:00
Samuel Pitoiset
c4f37d3981
[util] Enable d3d11.invariantPosition for Star Wars Jedi: Fallen Order
...
Seems to resolve https://gitlab.freedesktop.org/mesa/mesa/-/issues/2706#note_538316
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2020-06-18 13:40:24 +02:00
Robin Kertels
291f7e05bc
[d3d9] Fix uninitialized BufferHandle when discarding mapped buffer
...
Co-authored-by: Christopher Egert <cme3000@gmail.com>
2020-06-15 03:26:47 +01:00
Joshua Ashton
9525f53d00
[d3d9] Only enable FETCH4 when POINT sampling
...
Closes #1660
2020-06-14 00:38:36 +01:00
Rhys Perry
cd0a21dda5
[util] Enable d3d11.invariantPosition for Terminator: Resistance
...
Seems to resolve https://gitlab.freedesktop.org/mesa/mesa/-/issues/2608
2020-06-12 17:58:30 +02:00
Rhys Perry
0a486bd975
[util] Enable d3d11.invariantPosition for Borderlands 3
...
Seems to resolve https://gitlab.freedesktop.org/mesa/mesa/-/issues/2608
2020-06-12 17:58:30 +02:00
Philip Rebohle
51bd84368c
[util] Disable relaxed barrier option for RE7
...
Introduces lighting glitches in some places.
2020-06-11 22:06:53 +02:00
Joshua Ashton
67f01631fa
[d3d9] Clear dirty range when discarding buffers
2020-06-11 05:58:17 +01:00
Robin Kertels
7389da29be
[d3d9] Discard mapped buffer if it's currently in use
2020-06-11 05:53:33 +01:00
Robin Kertels
5d5ec2aa77
[d3d9] Remove IsUploading from CommonTexture
...
This was always true on subsequent Lock calls.
The first lock was handled by the 'freshly allocated fast path' anyway.
2020-06-11 05:53:33 +01:00
Joshua Ashton
e6ed8dab63
[d3d9] Perform tracking for preloaded managed resources
2020-06-11 05:53:33 +01:00
Joshua Ashton
7e72010302
[d3d9] Upload managed resource if needed before mip gen
2020-06-11 05:53:33 +01:00
Joshua Ashton
04397e5a7b
[d3d9] Mark mips as dirty when the filter changes
2020-06-11 05:53:33 +01:00
Joshua Ashton
f537474fe4
[d3d9] Add missing locks to mipmap auto gen
2020-06-11 05:53:33 +01:00
Joshua Ashton
b1bd3597a4
[d3d9] Implement PreLoad for buffers + textures
2020-06-11 05:53:33 +01:00
Samuel Pitoiset
86c53bb9e6
[util] Set enableRtOutputNaNFixup for Stars End
...
To fix output NaNs that introduce glitches with RADV.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
2020-06-09 16:08:16 +02:00
Joshua Ashton
68ae3f4376
[d3d9] Return D3D_OK when unlocking not locked textures
...
Matches D3D9 behaviour
2020-06-05 23:46:33 +01:00
Joshua Ashton
124023bac5
[d3d9] Add read-only check to uploading managed textures on Lock
2020-06-05 23:33:00 +01:00
Joshua Ashton
ed5cbb99b6
[d3d9] Mark managed for upload in Lock rather than Unlock
...
Fixes Nekopara properly.
Also refactor some locking checks
2020-06-05 23:29:23 +01:00
Joshua Ashton
86e8315416
[d3d9] Revert Nekopara hacks
2020-06-05 23:15:10 +01:00
Joshua Ashton
fa988be4aa
[d3d9] Improve MarkAllForUpload implementation
...
Only mark the bits we are actually using.
2020-06-05 02:40:41 +01:00
Joshua Ashton
326f6c26cb
[util] Enable forceSamplerTypeSpecConstants for all of the games in the Spellforce 2 seires
2020-06-05 02:36:17 +01:00
Joshua Ashton
b658cae509
[util] Enable uploadAllManagedSubresources for Nekopara titles
2020-06-05 02:35:03 +01:00
Joshua Ashton
d39cf31189
[d3d9] Implement uploadAllManagedSubresources option
...
Nekopara locks mip 1, then unlocks mip 0 and expects it to upload all the mips.
2020-06-05 02:34:44 +01:00
Joshua Ashton
5558460853
[d3d9] Don't mark lock on DONOTWAIT path
...
Fixes some issues in some games using this feature.
2020-06-01 15:52:25 +01:00
Joshua Ashton
12356d7342
[dxso] Bias FETCH4 half-texel offset to avoid grid effect
2020-06-01 13:33:08 +01:00
Philip Rebohle
2cac70fbb6
[d3d11] Require transform feedback for FL10_0 and newer
...
This has been supported in drivers for one and a half years at this
point, so it should be safe to make it a hard requirement.
2020-05-30 16:02:22 +02:00
Joshua Ashton
f92d60496c
[util] Enable forceSamplerTypeSpecConstants for SpellForce 2: Faith in Destiny
...
The game binds a 2D texture to a 3D (volume) sampler which causes the readback to be 0 0 0 0 on native, whereas we can workaround it and see the intended texture and cool refracty effect that would have rendered on older real hardware 👏
Closes #1645
2020-05-27 17:14:20 +01:00
Joshua Ashton
a21e0d4bcf
Revert "[dxso] Make FETCH4 swizzle ARGB"
...
The documentation lies about the swizzle...
This reverts commit 2fc00a331b
.
Closes #1641
Once and for all !
2020-05-27 12:11:43 +01:00
Joshua Ashton
56687cc258
[dxso] Handle half texel offset for FETCH4
...
Closes #1641
2020-05-27 10:16:03 +02:00
Joshua Ashton
362a591e5b
[spirv] Implement constuReplicant helper
2020-05-27 10:16:03 +02:00
Joshua Ashton
16cea83325
[spirv] Implement constiReplicant helper
2020-05-27 10:16:03 +02:00
Joshua Ashton
a9db65c8c2
[spirv] Implement OpImage
2020-05-27 10:16:03 +02:00
Joshua Ashton
c03eaf2de7
[d3d9] Hook up auto gen mip filter
2020-05-27 10:12:43 +02:00
Joshua Ashton
7cd46e72e9
[dxvk] Add filter type to generateMipmaps
2020-05-27 10:12:43 +02:00
Joshua Ashton
3825d16a31
[d3d9] Move mip filter into common texture
2020-05-27 10:12:43 +02:00
Joshua Ashton
561254b51d
[d3d9] Support RENDERTARGET and AUTOGENMIPMAP together
...
Fixes funky water in Trackmania
Closes #1642
2020-05-27 09:03:58 +01:00
Joshua Ashton
2fc00a331b
[dxso] Make FETCH4 swizzle ARGB
...
https://developer.amd.com/wordpress/media/2012/10/Advanced-DX9-Capabilities-for-ATI-Radeon-Cards_v2.pdf
2020-05-27 06:19:13 +01:00
Joshua Ashton
d8381dab8d
[d3d9] Fix a typo when unmarking autogen mips
2020-05-26 18:57:28 +01:00
Joshua Ashton
1a920f44ea
[d3d9] Rename GenerateMips to EmitGenerateMips
2020-05-26 18:50:34 +01:00
Joshua Ashton
fabe7b5d59
[d3d9] Check if needs mip gen in GenerateTextureMips
...
There could be duplicate indices!
2020-05-26 18:49:17 +01:00
Joshua Ashton
6c030afc95
[d3d9] Update device tracking when manually autogenning mips
...
Avoids some needless generations potentially.
2020-05-26 18:48:42 +01:00
Joshua Ashton
e57aea5749
[d3d9] Track and defer mipmap generations
...
Turns out we need to track this crap and generate at draw time and handle a bunch of other wacky cases for it...
Bah.
Fixes #1642
(The funky water.)
2020-05-26 18:42:53 +01:00
Joshua Ashton
b958473cc9
[d3d9] Move pLockedBox/Rect checks to subresource
2020-05-26 13:14:58 +01:00
Joshua Ashton
4c1deabcd3
[d3d9] Don't expose surfaces for autogenned mips
2020-05-26 13:11:24 +01:00
Joshua Ashton
a35df1c3b1
[d3d9] Fix AUTOGENMIPMAP not working in some instances
...
Closes #1642
2020-05-26 12:46:55 +01:00
Christopher Egert
67b1ee4f9b
[d3d9] Only allow ColorFill on surfaces in D3DPOOL_DEFAULT
...
Both nine and native nvidia d3d9 seems to do this,
this fixes a crash in spacemail by xplsv.
2020-05-25 13:33:12 +01:00
Joshua Ashton
4d70d59ea4
[d3d9] Use base texture for subresource refs
...
Fixes a crash when running d3d9-triangle
2020-05-25 13:29:56 +01:00
Joshua Ashton
9ee4add77e
[dxso] Forbid FETCH4 for 3D and not Cube
...
SPIR-V spec contradicts itself as to what is allowed here, and SPIR-V val doesn't help by listing the wrong dimension.
2020-05-25 09:26:09 +01:00
Joshua Ashton
87e8b9733f
[dxso] Blacklist FETCH4 for cubes and normalize flags
2020-05-25 09:21:30 +01:00
Joshua Ashton
b12fa99435
[dxso] Fix scalar select on vector in FETCH4 code
2020-05-25 09:05:58 +01:00
Joshua Ashton
4e1ee5bf39
[d3d9] Normalize projection spec constant further
...
Only include those used in the pixel shader and are bound.
2020-05-25 06:13:21 +01:00
Joshua Ashton
8fdf9e67d3
[d3d9, dxso] Implement FETCH4
2020-05-25 06:13:21 +01:00
Philip Rebohle
cf1ff99b10
[vulkan] Disable fullscreen exclusive support on wine
...
Fixes issues with RenderDoc captures on winevulkan.
2020-05-24 18:38:54 +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
Joshua Ashton
8e7df31878
[d3d9] Correct resolve offset regions for intermediate StretchRect resolves
...
We don't want to use the dst info for these, given the blit will do that.
Partially fixes #1637
2020-05-22 11:13:07 +02:00
Joshua Ashton
e2ad3b1b20
[d3d9] Improve sampler anisotropy normalization
2020-05-21 08:58:39 +01: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
Christopher Egert
79feed9d89
[d3d9] Allow D3DFMT_NULL as RenderTargetFormat in CheckDepthStencilMatch
...
This partially fixes shadows in Timeshift.
2020-05-19 04:12:36 +01:00
DadSchoorse
84bb768a32
[util] Enable d3d9.invariantPosition for Halo/Hale CE
...
Fixes #1550
2020-05-17 23:41:42 +02:00
Philip Rebohle
2e378257ea
[meta] Release 1.7
2020-05-16 17:07:18 +02:00
Robin Kertels
724d0fc0b2
[d3d9] Set scissor to the viewport if that's smaller
...
Fixes #1608
2020-05-13 18:53:11 +01: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
57acbbd7c7
[d3d11] Always enable STORAGE_BUFFER_BIT usage for srv/uav buffers
...
Fixes validation errors in games that use incorrect view types in
some cases, e.g. Cloudpunk.
2020-05-12 00:23:12 +02:00
Philip Rebohle
aa0b306d2e
[d3d11] Require multiDrawIndirect feature for Feature Level 11.0
...
All hardware that DXVK can run on supports this, so let's just enable it.
Saves some feature checks in games using Ubisoft's Anvil Next engine.
2020-05-11 01:15:06 +02:00
Philip Rebohle
e7455b6460
[vulkan] Remove VulkanFn wrapper
...
Not really necessary, and apparently this is causing trouble on GCC 10.1.
Fixes #1620 .
2020-05-10 02:06:27 +02:00
Joshua Ashton
3a6c0cf605
[dxso] Implicitly define Color inputs as centroid in PS <= 2
2020-05-09 20:49:55 +01:00
Joshua Ashton
774f74cd36
[d3d9] Only dirty ff pixel shader if set texture is in PS binding range
2020-05-07 16:14:11 +01:00
Joshua Ashton
27b9736626
[d3d9] Dirty fixed function pixel shader on texture type change
...
Fixes #1603
2020-05-07 16:09:58 +01:00
Joshua Ashton
b2f6885e55
[d3d9] Make texture stage state args mask easier to read
2020-05-07 15:37:05 +01:00
Joshua Ashton
a6771daf49
[d3d9] Unbind depth image views on device reset
2020-05-07 15:35:48 +01:00
Joshua Ashton
42deab0d60
[d3d9] Cleanup SetStateTextureStageState dirty flags
2020-05-07 14:50:26 +01:00
Joshua Ashton
f88f424da4
[d3d9] Convert border color to float in CS thread
...
It's cheaper to look up sampler keys this way
2020-05-07 13:11:59 +01:00
Joshua Ashton
fd75775197
[d3d9] Use unordered comparison opposed to isnan
...
Results in better codegen
2020-05-07 13:05:36 +01:00
Joshua Ashton
198ce13934
[d3d9] Replace clamp with min in sampler normalization
2020-05-07 13:01:14 +01:00
Philip Rebohle
68be040f4a
[dxvk] Use compute queue for transfers if DMA queue is not available
...
Affects RADV. Let's see if this works and does anything for performance.
2020-05-05 12:49:13 +02:00
Philip Rebohle
5fd361757b
[d3d9] Disable old border color hack if custom border colors are supported
2020-05-04 20:18:44 +02:00
Philip Rebohle
263865cf28
[d3d9] Enable custom border color features if available
2020-05-04 19:46:57 +02:00
Philip Rebohle
00613d1dc7
[d3d11] Enable custom border color features if available
2020-05-04 19:46:57 +02:00
Philip Rebohle
1fc6e3adbe
[dxvk] Use custom border colors if available
2020-05-04 19:46:57 +02:00
Philip Rebohle
0648314451
[dxvk] Refactor DxvkSampler::getBorderColor
2020-05-04 19:46:57 +02:00
Philip Rebohle
7b81db2c75
[dxvk] Pass device to sampler constructor
2020-05-04 19:46:57 +02:00
Philip Rebohle
a968f29754
[dxvk] Enable VK_EXT_custom_border_color if available
2020-05-04 13:27:35 +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
94077ed42b
[dxvk] Reintroduce EXTERNAL->0 subpass dependency
...
Ensures that the layout transition happens at the right time, and
otherwise relaxes the barrier since it is assumed that the backend
will emit barriers with the appropriate as necessary.
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
DadSchoorse
9b602ef850
[util] Rework tearFree as a Tristate
...
PR #1606 .
2020-05-02 10:18:13 +02:00
Philip Rebohle
c9dde91760
[d3d11] Disable null descriptors again
...
Breaks ELEX due to incorrect image query results.
2020-05-02 01:02:46 +02:00
Philip Rebohle
f1e069568d
[build] Remove .spec files
...
No longer needed now that we don't support winelib builds anymore.
2020-05-01 00:52:33 +02:00
Philip Rebohle
6face8a1dc
[d3d11] Enable new robustness features if available
2020-04-30 16:36:59 +02:00
Philip Rebohle
80009831d4
[d3d11] Use explicit spec constant for gamma texture
...
With null descriptors, the "bound" spec constants would always be 1.
2020-04-30 16:36:59 +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
6ea9d83f94
[dxvk] Enable VK_EXT_robustness2 if available
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
ca59d8e74b
[dxgi] Implement DXGIDeclareAdapterRemovalSupport
2020-04-28 15:20:43 +02:00
Philip Rebohle
5d0efd87c2
[dxgi] Implement IDXGIOutput6
2020-04-28 15:00:57 +02:00
Philip Rebohle
15f5efe4c3
[dxgi] Implement IDXGIAdapter4
2020-04-28 14:50:36 +02:00
Philip Rebohle
26ea12b18e
[dxgi] Include DXGI 1.6 headers
2020-04-28 14:44:20 +02:00
Joshua Ashton
9f4baf3f55
[d3d9] Fix swapchain surface refs once and for all
...
The refcounting for d3d9 swapchain surfaces is very funny.
They don't actually hold any form of reference to their parent, unlike the surface->texture relationship.
When a swapchain is destroyed, the surfaces become orphans (like offscreen rendertargets) if they are still reffed.
Calling GetContainer on them when orphaned will return E_NOINTERFACE and nullptr for __uuidof(IDirect3DSwapChain)
Fixes some potential lingering refs on the device.
2020-04-26 13:32:22 +01:00
Philip Rebohle
6d5f5580fb
[dxvk] Use correct size to clear zero buffer
2020-04-23 20:49:59 +02:00
Philip Rebohle
9a76645228
[d3d11] Simplify ClearView implementation
...
Removes some code duplication for the no-clear-rect case.
2020-04-22 22:32:53 +02:00
Philip Rebohle
b3c19ba5e8
[d3d11] Optimize ClearView for render target and depth-only views
...
We should use clearRenderTarget whenever we clear the entire view.
The Talos Principle uses ClearView to clear its render targets for
some reason, and we were hitting a slow path there.
2020-04-22 21:02:46 +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
Philip Rebohle
436357e280
[meta] Remove support for winelib builds
...
Untested, unmaintained, and constantly causing issues on various
setups for no apparent reason. Time to get rid of it for good.
Closes #1584 .
2020-04-20 17:35:08 +02:00
Philip Rebohle
dbc9f40aa1
[meta] Release 1.6.1
2020-04-19 21:43:03 +02:00
Philip Rebohle
b0503b54ce
[dxvk] Don't pad dedicated image allocations
...
Fixes validation errors on Nvidia.
2020-04-19 17:19:06 +02:00
Joshua Ashton
409eac9d20
[d3d9] Use if/else in GetCommonTexture and TextureRefPrivate
...
These are the only things it can be, and they all end up calling what the compiler will optimize to the same function so we can avoid a branch here.
2020-04-19 01:11:11 +01:00
Joshua Ashton
3f2b582d5f
[d3d9] Avoid prematurely deleting swapchain backbuffers if they are still reffed on reset
2020-04-19 00:59:02 +01:00
Joshua Ashton
837861ffdd
[d3d9] Cleanup private ref code for subresources
2020-04-18 21:06:38 +01:00
Joshua Ashton
42089d73c5
[d3d9] Fix ref-counting for swapchain surfaces
2020-04-18 21:06:38 +01:00
Christian Sturm
97cd91885d
[util] Enable constant buffer range check for Secret World Legends
2020-04-18 21:53:21 +02:00
Robin Kertels
d6e1c19fec
[d3d11] Ignore buffer usage for the single use mapping hack
...
The usage doesn't matter as we swap out the entire backing slice anyway.
2020-04-18 17:15:48 +02:00
Philip Rebohle
8c68236f70
[d3d11] Check return value of Map in UpdateSubresource1
...
And fall back to a GPU-side copy if necessary.
2020-04-18 17:04:16 +02:00
Philip Rebohle
487ecd861c
[util] Enable constant buffer range check for Blue Reflection
...
Fixes #1574 .
2020-04-18 14:00:04 +02:00
Philip Rebohle
ab8ab4052f
[d3d9] Fix compiler warnings
2020-04-13 22:05:27 +01:00
Joshua Ashton
4699d4162a
[d3d9] Implement swapchain containers for surfaces
...
Fixes a crash in L.A. Noire.
Closes #1564
2020-04-13 01:42:30 +01:00
Philip Rebohle
4d8940957c
[d3d11] Add option to enforce mailbox present mode
2020-04-12 20:28:33 +02:00
Philip Rebohle
7f03f45301
[util] Support encapsulated strings in configuration files
...
Fixes #1567 .
2020-04-10 21:16:29 +02:00
Joshua Ashton
6e5e50c359
[d3d9] Optimize hazard tracking in the SetTexture case
...
We don't need to perform DS/RT hazard tracking updates if the texture we replaced and ourselves do not have those usages.
2020-04-09 15:29:41 +01:00
Joshua Ashton
9b4cd8aa87
[d3d9] Remove texMask from UpdateActiveHazardsRT
...
This is an invalid optimization and leads to render hazards being dropped
Our hazard tracking for render targets is done in render target indices as opposed to texture indices for depth stencil tracking so `texMask` doesn't work for that reason, and the fact that even if it did, there is no relationship to an individual texture and a render target index that has a hazard.
2020-04-09 15:29:41 +01:00
Joshua Ashton
6b431851da
[util] Enable d3d9.invariantPosition for Battlefield 2
...
Closes #1558 for good
2020-04-09 14:00:26 +01:00
Joshua Ashton
ecb3e05cb9
[d3d9] Ignore adapter type for CheckDepthStencilMatch and CheckDeviceType when windowed
2020-04-09 02:35:35 +01:00
Joshua Ashton
f549586331
[util] Set d3d9.longMad to True for Battlefield 2
2020-04-08 23:23:21 +01:00
Joshua Ashton
c3cff09c4f
[d3d9] Implement d3d9.longMad option
2020-04-08 23:20:57 +01:00
Joshua Ashton
93b4427a13
[d3d9] Add and use D3D9WindowMessageFilter helper
...
Stops us forgetting to reset the message filter
Previously when the device was intially created with fullscreen, filter would always be enabled
2020-04-08 20:20:01 +01:00
Georg Lehmann
e95e4ca225
[hud] remove unused texture
2020-04-08 20:11:02 +02:00
Joshua Ashton
3f4ffdfba8
[d3d9] Fix MinGW compilation
...
MSVC doesn't care about static.
2020-04-06 20:35:30 +01:00
Joshua Ashton
46329689ba
[d3d9] Handle WM_DESTROY event
2020-04-06 20:16:17 +01:00
Joshua Ashton
18b46e5c22
[d3d9] Move HookWindowProc out of swapchain class
2020-04-06 20:15:49 +01:00
Joshua Ashton
a340cd4dd3
[d3d9] Add CallCharsetFunction helper
2020-04-06 20:06:45 +01:00
Joshua Ashton
6cf052b3f2
[d3d9] Cleanup ResetWindowProc
2020-04-06 19:45:15 +01:00
Joshua Ashton
135d246610
[d3d9] Cleanup and formatting for window proc hook
2020-04-06 19:42:48 +01:00
Joshua Ashton
47ddd8466a
[d3d9] Re-look up wnd proc iterator
...
Avoids a potential issue where this could change address during this time.
2020-04-06 19:40:25 +01:00
Joshua Ashton
a80eea926a
[d3d9] Filter out window messages we cause
...
Closes #1517
2020-04-06 19:38:26 +01:00
Joshua Ashton
83e03ac9d8
[d3d9] Make COPM render state unlikely
...
This is only ever called once per game and we don't support it anyway
2020-04-05 06:27:14 +01:00
Joshua Ashton
92031a7bac
[d3d9] Fix dumb typo in ATOC handling
2020-04-03 21:13:15 +01:00
Philip Rebohle
00d371d78d
[util] Spoof AMD GPU for GTA IV
2020-04-03 16:39:29 +01: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
Joshua Ashton
457c0c3021
[d3d9] Fix state sometimes not being set in SetRenderState
...
Previously this prevented us disabling AlphaToCoverage once the application enabled it.
2020-04-03 07:52:35 +01:00
Philip Rebohle
5c3d0c6836
[util] Enable d3d11.relaxedBarriers option for Resident Evil 3
2020-04-03 02:58:59 +02:00
Philip Rebohle
4d6f47640f
[dxgi] Name adapter event thread
2020-04-03 02:09:06 +02:00
Philip Rebohle
079cda1c0c
[dxgi] Implement RegisterVideoMemoryBudgetChangeNotificationEvent
...
Closes #1544 .
2020-04-03 02:05:23 +02:00
Joshua Ashton
904d3e6c90
[d3d9] Don't declspec dllexport on MinGW builds
...
Fixes ordinal exporting on MinGW, which was causing a crash in CSGO due to it querying a fixed ordinal for a D3D9On12 hack.
2020-04-02 02:00:42 +01:00
Philip Rebohle
5750a7d85c
[dxbc] Fix the udiv crap again
2020-03-26 17:17:01 +01:00
Joshua Ashton
62c2c9cd15
[dxbc] Handle 0 divisors in UDiv
...
UDiv is defined as having 0xffffffff as both the quotient and remainder value when the divisor is 0
This fixes vertex corruption on the water bottles in Half-Life: Alyx
https://github.com/ValveSoftware/Proton/issues/3681
https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/udiv--sm4---asm-
2020-03-26 10:49:42 +01:00
Samuel Pitoiset
649c3805d9
[util] fix typo for Yooka-Laylee executable name
2020-03-25 14:29:28 +01:00
Joshua Ashton
bb2e88ee06
[d3d9] Fix crash when calling ColorFill with NULL format
...
Impacts #1528
2020-03-25 07:23:17 +00:00
Joshua Ashton
5ff7cad77d
[d3d9] Fix formatting in D3D9WindowProc
2020-03-25 07:14:35 +00:00
Samuel Pitoiset
f6a79c366a
[util] Set enableRtOutputNaNFixup for Super Monkey and Yooka-Laylee
...
Both games output NaNs that introduce glitches with RADV and
AMDVLK.
2020-03-22 15:38:24 +01:00
Philip Rebohle
3104192af7
[d3d11] Fix winelib build
...
Closes #1521 .
2020-03-20 17:01:46 +01:00
Philip Rebohle
9c7945d936
[meta] Release 1.6
2020-03-20 16:07:25 +01:00
Joshua Ashton
a9339ae832
[d3d9] Fix depth hazard case for write + read
...
Closes #1519
2020-03-20 14:23:29 +01:00
Philip Rebohle
1150121606
[d3d9] Fix depth-stencil layouts
...
Otherwise we're always using GENERAL for depth buffers.
2020-03-20 04:04:53 +00:00
Philip Rebohle
a9b6421f60
[d3d11] Support signaling event in Flush1
2020-03-19 23:38:28 +01:00
Philip Rebohle
76fd9013d4
[util] Add missing include
2020-03-19 23:22:13 +01:00
Philip Rebohle
3697583f71
[d3d10] Separate d3d10core from d3d10
...
This way we skip compiling and linking unnecessary garbage
into the core library.
2020-03-18 22:01:11 +01:00
Joshua Ashton
7a134e49be
[d3d10] Implement D3D10[Core]GetVersion and D3D10[Core]RegisterLayers
2020-03-18 20:49:17 +01:00
Joshua Ashton
021c593ad8
[d3d9] Use all heaps when determining initial texture memory
...
Matches behaviour on Windows 10
Merges #1436
2020-03-18 19:40:01 +00:00
Florian Will
ba41a5219a
[util] Disable explicit frontbuffer for ZUSI 3
...
Fixes flickering when parts of the screen are not redrawn in a frame.
Closes #1368
Merges #1437
2020-03-18 19:32:45 +00:00
Florian Will
1a4b15a82d
[d3d9] Add option to disable the explicit frontbuffer
...
The Vulkan swapchain is unaffected by this, but we don't create an
"internal" frontbuffer in D3D9SwapChainEx if this option is set. This
breaks GetFrontBufferData (which returns backbuffer data if the option
is enabled), but it disables front/backbuffer flipping.
Most windows drivers apparently always use the same backbuffer for all
frames in windowed mode. At least one game (ZUSI 3) seems to rely on
this behavior, and only redraws dirty regions for each frame instead of
redrawing everything. With buffer flips, this leads to flickering. When
enabling this new noExplicitFrontBuffer option, the flickering
disappears.
2020-03-18 19:31:00 +00:00
Joshua Ashton
6a8933cf31
[d3d9] Allow arbitrary backbuffer/adapter formats
...
It seems these aren't linked in the way the docs made out, this fixes a crash when starting some titles.
Closes #1508
2020-03-18 06:00:28 +00:00
Joshua Ashton
a9040c5cce
[d3d9] Allow multisampled depth stencil resolves in StretchRect
...
Fixes a crash in some Source 2 titles
2020-03-18 04:59:27 +00:00
Philip Rebohle
bf480ce659
[d3d11] Initialize all D3D11ContextState members
...
Otherwise, SwapDeviceContextState may swap in some uninitialized data.
Closes #1512 .
Reported-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
2020-03-16 18:42:57 +01:00
Philip Rebohle
26798eb312
[util] Use SwitchToThread for yield
...
According to MSDN, this doesn't interfere with scheduling of other threads,
unlike Sleep(0).
2020-03-15 03:43:04 +01:00
Philip Rebohle
ba213c1fa0
[dxvk] Factor out waiting for resource to become idle
...
And use the new generic spin function to reduce syscall spam.
2020-03-15 03:43:04 +01:00
Philip Rebohle
da506f5932
[util] Add generic recursive spinlock
2020-03-15 03:43:04 +01:00
Philip Rebohle
55e3240479
[util] Add generic spin function
2020-03-15 03:43:04 +01:00
Philip Rebohle
33b0d4c991
[d3d10] Create type reflection objects on demand
...
See previous commits for details. Fixes #1507 .
2020-03-12 21:03:31 +01:00
Philip Rebohle
3d81b3eb82
[d3d10] Create variable reflection objects on demand
2020-03-12 21:03:30 +01:00
Philip Rebohle
21fe6a3405
[d3d10] Create constant buffer reflection objects on demand
...
The reported constant buffer count does not necessarily match the
number of constant buffers that can be retrieved from reflection.
2020-03-12 21:03:30 +01:00
Rémi Bernon
14946c599f
[d3d9] Hook WM_NCCALCSIZE to get rid of fullscreen non-client areas.
2020-03-11 17:46:08 +00:00
Joshua Ashton
64e649ae18
[d3d9] Don't check IsNull for depth stencil views
...
We don't need to do this. Depth stencils can never be D3DFMT_NULL.
2020-03-09 01:13:54 +00:00
Joshua Ashton
e33627cfdc
[d3d9] Optimize unnecessary loops in hazard tracking
...
We only want to update specific indices of bitfields at a time, so pass through that information and mask it off.
2020-03-09 01:03:18 +00:00
Joshua Ashton
812a113a85
[d3d9] Avoid multiple tzcnts per loop in hazard tracking
2020-03-09 00:53:50 +00:00
Joshua Ashton
f6b26b302d
[d3d9] Handle depth stencil hazards
...
Track depth stencil textures being used and whether we have any active hazards.
Rebind the framebuffer with VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL if we encounter a depth stencil hazard.
Fixes black squares in Mass Effect and validation errors in some titles.
Closes #1484
2020-03-09 00:53:19 +00:00
Joshua Ashton
102d97db02
[d3d9] Add IsDepthStencil helper to D3D9CommonTexture
2020-03-09 00:24:56 +00:00
Joshua Ashton
a432befa8d
[d3d9] Add RT suffix to current hazard tracking
...
We can have DS hazards...
2020-03-09 00:23:22 +00:00
Joshua Ashton
eaa599bf9a
[d3d9] Implement A2W10V10U10 format via conversion
2020-03-08 23:32:33 +00:00
Joshua Ashton
60ec7e8208
[d3d9] Implement X8L8V8U8 format via conversion
2020-03-08 23:22:52 +00:00
Joshua Ashton
afd4e6e457
[d3d9] Use a common header for cs conversion helpers
2020-03-08 22:29:41 +00:00
Philip Rebohle
304dad2d2e
[dxvk] Fix dumb typo in changeImageLayout
2020-03-08 03:18:34 +01:00
Philip Rebohle
7b760800b4
[d3d11] Fix buffer view compatibility check
2020-03-08 01:28:51 +01:00
Philip Rebohle
2291484696
[d3d11] Fix texture view compatibility check
2020-03-08 01:28:51 +01:00
Joshua Ashton
45c8b09104
[d3d9] Don't update present region in Reset
...
Fixes a regression in A Hat in Time when changing resolutions
2020-03-06 18:23:08 +00:00
Philip Rebohle
245007daba
[d3d9] Don't use m_monitor in GetDisplayModeEx
...
Should fix #1495 .
2020-03-05 15:25:05 +00:00
Philip Rebohle
3a1243b05e
[util] Don't set display mode if the desired mode is already set
...
See #1489 .
Co-authored-by: zvova7890 <zvova7890@gmail.com>
2020-03-04 23:06:15 +00:00
Philip Rebohle
5e41e00456
[d3d9] Use new common monitor functions
2020-03-04 23:06:15 +00:00
Philip Rebohle
a623e8e7d6
[dxgi] Use new common monitor functions
2020-03-04 23:06:15 +00:00
Philip Rebohle
4e16d65bb8
[util] Introduce common functions to set, get and restore display modes
2020-03-04 23:06:15 +00:00
Philip Rebohle
66503aeaa0
[util] Factor out common monitor-related functions
2020-03-04 23:06:15 +00:00
Joshua Ashton
8c68cf1551
[d3d9] Fix alignment of SubresourceData
...
This should match SubresourceType...
2020-03-02 16:11:07 +00:00
Joshua Ashton
27d7af65a1
[d3d9] Consolidate format helper code
2020-03-02 04:37:20 +00:00
Joshua Ashton
1b26fabc6e
[d3d9] Use uniform texel buffers for conversion
2020-03-02 04:37:20 +00:00
Joshua Ashton
077f48b4ef
[d3d9] Flush format converter in device after init
...
Otherwise we can be overwritten if its a new resource we just created by the initializer.
2020-03-02 04:37:20 +00:00
Joshua Ashton
58316ebe4c
[d3d9] Add missing breaks to format helper switch
2020-03-02 04:37:20 +00:00
Joshua Ashton
7743276e1d
[d3d9] Implement L6V5U5 format via conversion
2020-03-02 04:37:20 +00:00
Joshua Ashton
b67f4974be
[d3d9] Fix view formats for conversion formats
2020-03-02 04:03:27 +00:00
Philip Rebohle
1e426cdb08
[meta] Release 1.5.5
2020-02-29 15:45:57 +01:00
Joshua Ashton
36d3e8e83d
[d3d9] Don't InitReturnPtr in CreateQuery
...
Matches native behaviour
Fixes a Wine test
2020-02-28 21:51:34 +00:00
Joshua Ashton
5548493fad
[d3d9] Don't update device state for offset/stride if the buffer is nullptr
...
May also avoid some redundant rebinds here too...
Fixes a Wine test
2020-02-28 21:40:19 +00:00
Joshua Ashton
722520a9f7
[d3d9] Don't rebind user's vertex buffer/indices in DrawPrimitive[Indexed]UP
...
D3D9 doesn't do this, it instead sets them to NULL so we can simplify this logic a fair bit.
Found via a Wine test.
2020-02-28 21:37:00 +00:00
Joshua Ashton
3587bcdb9f
[d3d9] Disallow creating additional swapchains if we are fullscreen
...
From Wine tests...
2020-02-28 01:43:07 +00:00
Joshua Ashton
632812b88f
[d3d9] Disallow additional fullscreen swapchains
...
From Wine tests...
2020-02-28 01:39:52 +00:00
Joshua Ashton
0757097fa0
[d3d9] Initialize return ptr in device's GetBackBuffer
...
The swapchain's function does not do this, but this one does.
2020-02-28 01:37:23 +00:00
Joshua Ashton
528cacca5f
[d3d9] Only have a single implicit swapchain
...
I am naive to think that this API is in any way sane, and that iSwapChains actually does what you would expect.
Swapchains created by CreateAdditionalSwapchain[Ex] are not tracked in that figure... There can only ever be one.
Great API. Very cool.
This also adds and consolidates some missing thread synchronization on the swapchain functions (that should have already had it).
(note: m_implicitSwapchain always exists, so we don't need to lock if that's all we call.)
2020-02-28 01:29:38 +00:00
Joshua Ashton
e41640dcde
[d3d9] Make nullptr/oob checks in GetBackBuffer unlikely
2020-02-28 01:03:34 +00:00
Joshua Ashton
8cfca32c2a
[d3d9] Don't InitReturnPtr in GetBackBuffer
...
Matches native behaviour.
Found via a Wine test.
2020-02-28 01:02:56 +00:00
Joshua Ashton
c07f8c941c
[d3d9] Delegate VCACHE check to QuerySupported
...
Fixes a failing Wine test
2020-02-28 00:59:44 +00:00
Joshua Ashton
3332bb2844
[d3d9] Add some missing synchronization when completely remaking a presenter
2020-02-27 22:55:20 +00:00
Joshua Ashton
33f6add0ff
[d3d9] Fix sampler decision at Present time
2020-02-27 22:54:43 +00:00
Joshua Ashton
b6e1da916a
[d3d9] Fix scissor rect size when presenting
2020-02-27 22:53:14 +00:00
Joshua Ashton
1592e2770b
[d3d9] Remove unnecessary dirty checks in Reset
2020-02-26 22:34:17 +00:00
Joshua Ashton
fbf76e8420
[d3d9] Don't mark unuploaded textures as uploaded
2020-02-25 04:37:01 +00:00
Joshua Ashton
d1dc217d31
[d3d9] Fix readback for evictManagedOnUnlock
2020-02-23 16:59:33 +00:00
Joshua Ashton
0e353895fd
[d3d9] Enumerate adapters by display
...
WPF expects us to return an adapter for every display attached otherwise
it decides to device reset every frame.
Closes #1459
2020-02-21 18:03:57 +00:00
Joshua Ashton
f095f6385e
[d3d9] Initialize all backbuffers in swapchain creation
...
Otherwise they are garbage and undefined layout.
Fixes some validation errors in Lumino City #1462
2020-02-21 06:45:02 +00:00
Joshua Ashton
38838f7428
[d3d9] Synchronize present and wait for idle when invalidating a swapchain
...
Lumino City calls CreateAdditionalSwapchain instead of the regular device reset functions.
We were missing some needed synchronization here to make this work properly for this game.
Impacts #1462
2020-02-21 01:38:58 +00:00
Joshua Ashton
2408b881a2
[dxso] Use SSBOs for vertex constant buffers if we'd be outside of uniform range
...
Impacts #1375
2020-02-20 08:14:58 +01:00
Joshua Ashton
d11a07082c
[d3d9] Remove unnecessary dirty flag change in CreateConstantBuffers
2020-02-20 08:14:58 +01:00
Joshua Ashton
512393e469
[d3d9] Refactor constant buffer creation
2020-02-20 08:14:58 +01:00
Joshua Ashton
f688889b41
[d3d9] Avoid setting cursor position if we are already at that position
...
Avoids an infinite loop where we trigger the cursor move window message which calls SetCursorPos and so on and so forth...
Closes #1400
2020-02-20 01:44:50 +00:00
Joshua Ashton
17166a8aeb
[d3d9] Add equality operator overloads for POINT
2020-02-20 01:39:13 +00:00
Joshua Ashton
261a242486
[d3d9] Disallow GetFrontBufferData for anything but D3DPOOL_SYSTEMMEM
...
Fixes #1464
2020-02-19 18:05:50 +00:00
Joshua Ashton
74d23c22de
[build] Use __CRT_UUID_DECL for uuid definitions
...
Closes #1463
2020-02-18 20:25:05 +01:00
Joshua Ashton
760a163fc5
[util] Disable discard for D&D Temple of Elemental Evil
...
This game uses D3DLOCK_DISCARD incorrectly
2020-02-18 17:01:41 +00:00
Joshua Ashton
8fabc25a38
[d3d9] Implement d3d9.allowDiscard
2020-02-18 16:53:51 +00:00
Joshua Ashton
6b85e6d3f1
Revert "[d3d9] Ignore D3DLOCK_DISCARD when partially locking buffers"
...
This reverts commit 50cf3a465b
.
2020-02-18 16:50:39 +00:00
Joshua Ashton
378bdbdfb0
[d3d9] Remove repeated wrap state setting in Reset
2020-02-17 18:05:45 +00:00
Philip Rebohle
4cf3ef538c
[d3d9] Fix A4R4G4B4 swizzle
2020-02-17 15:32:28 +00:00
Joshua Ashton
4405b51bf3
[dxso] Respect src modifiers in Texcrd for PS 1.4
...
`texcrd r4.xy, t4_dw.xyww`
Cross Racing Championship Extreme 2005 uses a writemask in texcrd as well as the _dw modifier on the src which we weren't respecting previously.
Closes #1450
2020-02-16 23:24:33 +00:00
Joshua Ashton
a6d554615e
[d3d9] Avoid needless swizzle for A4R4G4B4
...
Should fix this d3d9 format working on Intel ANV
Impacts #1455
2020-02-16 22:54:28 +00:00
Joshua Ashton
50cf3a465b
[d3d9] Ignore D3DLOCK_DISCARD when partially locking buffers
...
Fixes #1444
2020-02-15 03:10:00 +00:00
Joshua Ashton
7d3ec74b40
[d3d9] Don't perform clipping in FF if disabled
...
Avoids unnecessary matrix multiplications in the shader, given this isn't as cheap as it is for programmable.
2020-02-14 19:19:22 +00:00
Joshua Ashton
0c16cc7749
[d3d9] Perform FF vertex clipping in world space
...
Previously we were doing this in object space which is incorrect.
Closes #1446
2020-02-14 19:09:02 +00:00
Joshua Ashton
cad3b69e82
[d3d9] Fix likeliness in GetStreamSource
2020-02-14 17:21:52 +00:00
Joshua Ashton
2096a95262
[d3d9] Fix ColorFill using sampler views for partial extents
...
Closes #1434
2020-02-14 06:49:15 +01:00
Joshua Ashton
02c79d892c
[d3d9] Try to create offscreen surfaces with render target usage
2020-02-14 06:49:15 +01:00
Joshua Ashton
1f5ddde411
[d3d9] Remove unused D3D9ViewSet structure
2020-02-14 06:49:15 +01:00
ryester27
dff2a4ea24
[util] Force 16:9 aspect ratio for Hyperdimension Neptunia U: Action Unleashed
2020-02-14 02:50:15 +00:00
Joshua Ashton
582fe899f8
[dxso] Implement TexBemL
2020-02-14 01:15:34 +00:00
Joshua Ashton
c7d5ce1c50
[d3d9] Fix incorrect type for luminance scale and offset in D3DTOP_BUMPENVMAPLUMINANCE
2020-02-14 01:10:26 +00:00
Joshua Ashton
ae68e3a5bc
[d3d9] Defer managed texture uploads until PrepareDraw and when needed
...
This also caches shader masks used for hazard tracking.
2020-02-14 00:51:58 +00:00
Joshua Ashton
0ea510eb9b
[util] Add clearAll helper to bitset
2020-02-14 00:51:58 +00:00
Joshua Ashton
6e9725a124
[d3d9] Use bitsets for bool subresource arrays
...
Also remove lockflag tracking and consolidate that to a bitset
2020-02-14 00:51:58 +00:00
Joshua Ashton
960d2bd158
[util] Add exchange helper to bitset
2020-02-14 00:51:58 +00:00
Joshua Ashton
cf6142e782
[d3d9] Don't expose formats with alpha as adapter formats
...
Impacts #1440
2020-02-14 00:46:14 +00:00
Joshua Ashton
acb3cda1dc
[d3d9] Hold a private reference to FVF-generated vertex decls
...
Otherwise the device will never be able to be destroyed as there will be a circular dependency.
Closes #1417
2020-02-13 18:42:49 +00:00
Philip Rebohle
313d46984d
[dxbc] Fix memory semantics for atomic operations
2020-02-13 01:15:44 +01:00
Philip Rebohle
4aa6800e95
[d3d11] Validate subresource index in copy operations
...
Rocket League tries to copy five subresources of a texture that only
has one single array layer and one single mip map, which causes GPU
hangs on Nvidia drivers.
2020-02-13 00:39:55 +01:00
Philip Rebohle
f12ddfa4d3
[dxbc] Fix line tessellation factor ordering
2020-02-12 12:00:46 +01:00
Joshua Ashton
51903d8348
[d3d9] Genericise video format conversion
2020-02-10 18:27:35 +00:00
Philip Rebohle
7567486668
[d3d9] Handle invalid alpha ref correctly
2020-02-10 15:20:13 +00:00
Philip Rebohle
bf03fd8732
[d3d9] Implment fixed-function clipping
2020-02-10 07:32:22 +01:00
Joshua Ashton
ba8dad3958
[d3d9] Fix multiplication order in D3D9StateBlock::MultiplyStateTransform
2020-02-10 06:22:58 +00:00
Joshua Ashton
c42d44a4c3
[d3d9] Mark vertex blend dirty in MultiplyTransform if needed
2020-02-10 06:17:05 +00:00
Joshua Ashton
14203761d9
[d3d9] Reverse multiplication order in MultiplyTransform
...
Closes https://github.com/Joshua-Ashton/d9vk/issues/295
2020-02-10 06:16:12 +00:00
Joshua Ashton
afeb4814c7
[d3d9] Remove SRGB variant from Q8W8V8U8
2020-02-10 04:57:45 +00:00
Philip Rebohle
07fee4a0e5
[util] Disable VR for Subnautica
2020-02-09 09:05:52 +01:00
Joshua Ashton
310ab6da64
[d3d9] Implement D3DTOP_BUMPENVMAPLUMINANCE
2020-02-08 23:08:48 +00:00
Joshua Ashton
302aed256b
[d3d9] Implement D3DTOP_BUMPENVMAP
2020-02-08 23:00:57 +00:00
Joshua Ashton
4291bc9dfb
[d3d9] Reupload fixed func ps data if stage constant changes
...
Closes #1420
2020-02-08 16:33:47 +00:00
Philip Rebohle
4738d12d73
[util] Enable forced TGSM barriers for F1 2019
...
Fixes visual issues on RADV.
2020-02-08 00:48:45 +01:00
Philip Rebohle
76a6f6eab9
[dxbc] Add option to force memory barriers after shared memory stores
2020-02-08 00:48:42 +01:00
Joshua Ashton
2f8fbf9114
[d3d9] Use linear sampler for upscaling if extents don't match on Present
2020-02-07 18:53:47 +00:00
Philip Rebohle
c780ed5da3
[util] Enable invariant position for Saint's Row III / IV
2020-02-07 17:40:55 +01:00