1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-13 07:08:50 +01:00
Commit Graph

4341 Commits

Author SHA1 Message Date
Philip Rebohle
96e102beff
[dxvk] Use dynamic rendering for copies
Significantly reworks framebuffer copies as well. We'll no longer
create dummy samplers to work around glslang versions not supporting
texture descriptors without samplers, and copyImageFb was cleaned
up to factor out the part where a temporary image is created.
2022-07-07 16:16:50 +02:00
Philip Rebohle
a450c88c72
[dxvk] Use dynamic rendering for blits and mip generation 2022-07-07 16:16:50 +02:00
Philip Rebohle
d5cc50f73f
[dxvk] Add dynamic rendering commands to DxvkCommandList 2022-07-07 16:16:50 +02:00
Philip Rebohle
38cf16a5be
[dxvk] Enable and require VK_KHR_dynamic_rendering 2022-07-07 16:16:44 +02:00
Trevonn
4a0a9d6286 [util] Limit Dead Space to 60fps and fix vsync
https://www.pcgamingwiki.com/wiki/Dead_Space#Issues_fixed

The game has mouse acceleration and physics issues above 60 FPS.

Also the game locks to 30 FPS using the built-in vsync. 
Setting presentInterval to 1 blocks this and the game continues to run at 60 FPS
2022-07-07 14:19:20 +01:00
Georg Lehmann
913129d3b6 [d3d9] Add an config option to disable non seamless cube maps. 2022-07-07 14:18:49 +01:00
Georg Lehmann
cd8e2360f4 [d3d9] Use non seamless samplers if supported. 2022-07-07 14:18:49 +01:00
Georg Lehmann
0015a34498 [dxvk] Enable VK_EXT_non_seamless_cube_map if requested. 2022-07-07 14:18:49 +01:00
Georg Lehmann
f2b1805d7e [dxvk] Allow non seamless samplers. 2022-07-07 14:18:49 +01:00
WinterSnowfall
03ac577577 [util] Add workaround to fix missing sun & light shafts in Beyond Good And Evil 2022-07-07 14:17:52 +01:00
Philip Rebohle
593c6e3fe8
[dxvk] Remove spec constant ID mapping from pipeline layouts
No longer needed.
2022-07-05 13:03:18 +02:00
Philip Rebohle
8d413e2d09
[dxvk] Fix opening state cache files for writing
operator bool() only checks if errors have occured in previous writes,
so we'd be missing out on the first cache entry written.
2022-07-03 15:38:42 +02:00
Philip Rebohle
7c4d602863
[dxvk] Change spec constant IDs
We no longer support per-resource spec constants, so there is no good
reason not to use a 1:1 mapping for user-defined constants.
2022-07-03 13:41:06 +02:00
Philip Rebohle
2e73e46799
[dxvk] Do not remap spec constant IDs when compiling shaders
No longer needed since we don't emit per-binding constants anymore.
2022-07-03 13:41:06 +02:00
Philip Rebohle
a637134c56
[d3d11,dxbc] Use push constant instead of spec constant for rasterizer sample count 2022-07-03 13:41:06 +02:00
Philip Rebohle
87e2d70448
[dxbc] Remove bound spec constants from shader code 2022-07-03 13:41:06 +02:00
Philip Rebohle
8abb5ffc77
[dxvk] Remove binding mask from pipeline state 2022-07-03 13:41:06 +02:00
Philip Rebohle
54eaa444a2
[dxvk] Use null descriptors for unbound resources 2022-07-03 13:41:06 +02:00
Philip Rebohle
3349f2d80e
[dxvk] Use custom spec constant for swap chain blitter 2022-07-03 13:41:06 +02:00
Philip Rebohle
185331df9c
[d3d11] Don't use spec constants for video blitter
Store required info in the UBO instead.
2022-07-03 13:41:06 +02:00
Philip Rebohle
c7afe0dd23
[dxso] Use new bit mask spec constant to determine whether textures are bound 2022-07-03 13:41:06 +02:00
Philip Rebohle
735e741681
[d3d9] Add spec constant for null samplers
And rework the way spec constants are updated.
2022-07-03 13:41:06 +02:00
Philip Rebohle
186dc29384
[d3d9] Remove bound spec constants from fixed-function shaders
Texture stages are disabled anyway when textures are unbound,
so we will never hit the unbound case.
2022-07-03 13:41:06 +02:00
Philip Rebohle
8f03c3a419
[dxvk] Don't check binding mask when processing barriers 2022-07-03 13:41:06 +02:00
Philip Rebohle
2e7e9eac7a
[dxvk] Require EXT_robustness2 and the null descriptor feature 2022-07-03 13:41:03 +02:00
Blisto91
f95f541852
[util] Limit Bionic Commando to 60fps (#2685) 2022-07-02 16:51:04 +02:00
Blisto91
98dcd722ea
[util] Add workaround for Garden Warfare 2 (#2700) 2022-07-02 16:50:12 +02:00
Philip Rebohle
e406484b84
[d3d9] Don't use VK_RESOLVE_MODE_AVERAGE_BIT_KHR for stencil resolves
Doesn't work, always write sample zero instead.
2022-07-02 16:48:10 +02:00
Philip Rebohle
76ba03398d
[d3d9,dxso] Fix push constant validation errors
Derp.
2022-07-01 18:06:47 +02:00
Philip Rebohle
e81094533b
[dxvk] Fix gamma texture bind point 2022-06-30 20:49:43 +02:00
Philip Rebohle
1296890083
[dxvk] Remove error logging from updateResourceBindings
It's not super useful to emit log messages in the hottest code path, and
for some reason GCC compiles some stringstream initialization code into
those parts of the function that are unconditionally executed.
2022-06-28 14:35:58 +02:00
Philip Rebohle
0e38b11569
[dxvk] Rework DxvkResource lifetime tracking
Reduces the number of atomic operations required for lifetime tracking by
using a single 64-bit integer for usage tracking and reference counting.
2022-06-28 14:35:58 +02:00
Philip Rebohle
8d1d3d66e0
[dxvk] Optimize descriptor set binding further 2022-06-28 14:35:58 +02:00
Philip Rebohle
db07861518
[dxvk] Remove old pipeline layout implementation 2022-06-28 14:35:58 +02:00
Philip Rebohle
c67481b904
[hud] Add HUD item for descriptor stats 2022-06-28 14:35:58 +02:00
Philip Rebohle
d4a3b823a2
[dxvk] Add stat counters for descriptor sets and pools 2022-06-28 14:35:58 +02:00
Philip Rebohle
758ba5a80d
[dxvk] Inline all frequently-used binding methods 2022-06-28 14:35:58 +02:00
Philip Rebohle
d4d87123b4
[dxvk] Add safety mechanism to submit large descriptor pools 2022-06-28 14:35:58 +02:00
Philip Rebohle
cfc06405d2
[dxvk] Recycle Vulkan descriptor pools as well
Reduces the number of expensive reallocations when large descriptor
pools get reset and repopulated.
2022-06-28 14:35:58 +02:00
Philip Rebohle
eea5c9f0da
[dxvk] Rename new descriptor pool implementation to DxvkDescriptorPool 2022-06-28 14:35:58 +02:00
Philip Rebohle
6aeed40af2
[dxvk] Remove old descriptor pool implementation 2022-06-28 14:35:58 +02:00
Philip Rebohle
af418dcffd
[dxvk] Fix pipeline invalidation
We need to update descriptors and other graphics state when changing
between compute and graphics. This happened to work by chance since
any real-world app binds a new set of shaders around mode switches
anyway, but it could theoretically happen that we wouldn't update
descriptor sets on the first draw after a dispatch.
2022-06-28 14:35:58 +02:00
Philip Rebohle
a27448bc76
[dxvk] Bind consecutive descriptor sets in one go
Most of the time we'll be able to bind all sets in one iteration. Binding
sets is expected to be cheap in the driver, but we should avoid unnecessary
function call overhead for this frequently called function.
2022-06-28 14:35:58 +02:00
Philip Rebohle
e2b7522034
[dxvk] Use persistent descriptor pool for regular descriptor sets 2022-06-28 14:35:57 +02:00
Philip Rebohle
f4e9b76515
[dxvk] Add descriptor pool tracking to command list 2022-06-28 14:35:57 +02:00
Philip Rebohle
9b0b1edf74
[dxvk] Introduce persistent descriptor pool 2022-06-28 14:35:57 +02:00
Philip Rebohle
7e42939a4a
[d3d11] Call endFrame at the end of each frame 2022-06-28 14:35:57 +02:00
Philip Rebohle
acf70501d2
[d3d9] Call endFrame at the end of each frame 2022-06-28 14:35:57 +02:00
Philip Rebohle
5610b3a742
[dxvk] Introduce endFrame method 2022-06-28 14:35:57 +02:00
Philip Rebohle
ab0c15ea54
[dxvk] Introduce DxvkContextType 2022-06-28 14:35:57 +02:00
Philip Rebohle
8dde72da06
[dxvk] Do not allocate descriptor set space for dynamic UBOs 2022-06-28 14:35:57 +02:00
Philip Rebohle
f34d1c886a
[dxvk] Only use descriptor update templates in 32-bit builds 2022-06-28 14:35:57 +02:00
Philip Rebohle
15cf130369
[dxvk] Optimize descriptor set binding further 2022-06-28 14:35:57 +02:00
Philip Rebohle
f9e6d8e23a
[dxvk] Remove old resource update code 2022-06-28 14:35:57 +02:00
Philip Rebohle
219853aa9f
[dxvk] Rework dirty descriptor state tracking 2022-06-28 14:35:57 +02:00
Philip Rebohle
db85de8c91
[dxvk] Add method to query shader stages that can access a buffer 2022-06-28 14:35:45 +02:00
Philip Rebohle
893183a7cc
[dxvk] Remove old pipeline layout from pipeline objects 2022-06-28 14:34:09 +02:00
Philip Rebohle
9be454fd3e
[dxvk] Use new pipeline layout for barrier tracking and other things 2022-06-28 14:34:07 +02:00
Philip Rebohle
d5e53d3271
[dxvk] Add resource binding code using new pipeline layouts 2022-06-28 14:32:31 +02:00
Philip Rebohle
ef55a7c2a0
[dxvk] Add method to create shader module using new binding layout 2022-06-28 14:32:31 +02:00
Philip Rebohle
d65ceb82cf
[dxvk] Rework binding ID patching 2022-06-28 14:32:31 +02:00
Philip Rebohle
955e0cca62
[dxvk] Use native integer size for DxvkBindingSet
May make things a tad faster in 64-bit applications.
2022-06-28 14:32:31 +02:00
Philip Rebohle
16eba45987
[dxvk] Implement 64-bit tzcnt 2022-06-28 14:32:31 +02:00
Philip Rebohle
038ee0416d
[dxvk] Add setRange method to DxvkBindingSet 2022-06-28 14:32:31 +02:00
Philip Rebohle
ec5ea71174
[dxvk] Store and create pipeline layout objects in pipeline manager
This should help avoid a lot of duplication.
2022-06-28 14:32:31 +02:00
Philip Rebohle
79ecd4e94a
[dxbc] Pass new binding info struct to shaders 2022-06-28 14:32:31 +02:00
Philip Rebohle
cb57c2f7fb
[d3d11] Pass new binding info struct to video processor shader 2022-06-28 14:32:31 +02:00
Philip Rebohle
e795f3f33a
[dxso] Pass new binding info struct to shaders 2022-06-28 14:32:31 +02:00
Philip Rebohle
ecbada30f5
[d3d9] Pass new binding info struct to fixed-function shaders 2022-06-28 14:32:31 +02:00
Philip Rebohle
5edd8e92a8
[d3d9] Pass new binding info struct to various helper shaders 2022-06-28 14:32:31 +02:00
Philip Rebohle
7b8b50bca6
[hud] Pass new shader binding info struct to HUD shaders 2022-06-28 14:32:31 +02:00
Philip Rebohle
89dadc8453
[dxvk] Pass new shader binding info struct to swapchain blit shaders 2022-06-28 14:32:31 +02:00
Philip Rebohle
70a95d9085
[dxvk] Add DxvkBindingLayout to DxvkShader class
Supposed to replace the old descriptor model eventually.
2022-06-28 14:32:31 +02:00
Philip Rebohle
53519e2bd5
[dxvk] Remove old resource binding methods 2022-06-28 14:32:30 +02:00
Philip Rebohle
4cc559d690
[d3d9] Pass shader stage when binding shader resources 2022-06-28 14:32:30 +02:00
Philip Rebohle
0fb1227792
[d3d9] Pass shader stage when binding format conversion resources 2022-06-28 14:32:30 +02:00
Philip Rebohle
d05864cbcb
[d3d11] Pass shader stage for binding video processor resources 2022-06-28 14:32:30 +02:00
Philip Rebohle
a1bbc77c04
[d3d11] Pass shader stage for binding resources in context methods 2022-06-28 14:32:30 +02:00
Philip Rebohle
ce0a2f08f0
[hud] Pass shader stage when binding HUD shader resources 2022-06-28 14:32:30 +02:00
Philip Rebohle
fe03327ecd
[dxvk] Pass shader stage when binding HUD resources 2022-06-28 14:32:30 +02:00
Philip Rebohle
10eabb34da
[dxvk] Add shader stage parameter to binding methods 2022-06-28 14:32:30 +02:00
Philip Rebohle
3751edbe0c
[dxvk] Introduce DxvkBindingLayout and related classes
This is intended to replace the legacy DxvkPipelineLayout, and can support
multiple descriptor sets.
2022-06-28 14:32:30 +02:00
Philip Rebohle
67d03aabd0
[dxvk] Make recycler a ring buffer
Ensures that recycled objects actually get reused soon. Somewhat
important for memory efficiency in descriptor pools.
2022-06-28 14:32:30 +02:00
Philip Rebohle
384a665700
[dxvk] Optimize util::pipelineStages 2022-06-28 14:31:52 +02:00
Justin Kim
972de7c9fb
converting flags from VkShaderStageFlags to VkPipelineStageFlags in commitGraphicsBarriers (#2696) 2022-06-28 13:09:14 +02:00
Federico Dossena
dee36be20d
Added config for A Way Out (#2694) 2022-06-25 11:17:42 +02:00
pchome
27163a6a29 [util] Fix built-in config options loging 2022-06-22 18:21:31 +02:00
Blisto91
661f8b5b56 [util] Add Forged Alliance Forever to Supreme Commander 2022-06-20 11:59:40 +01:00
Robin Kertels
bd29fbd95d [util] Enable sampler type spec constants for SWTOR
Co-authored-by: Blisto91 <47954800+Blisto91@users.noreply.github.com>
2022-06-13 21:34:28 +01:00
Blisto91
968f0cdbc3 [util] Strict float emulation for Supreme Commander 2022-06-12 20:16:56 +01:00
Robin Kertels
4f56e72d56 [util] Enable strict float emulation for Sonic Adventure 2 2022-06-11 01:31:48 +02:00
Georg Lehmann
2e4caa4c14 [util] Stop using deprecated std::iterator. 2022-06-09 22:07:52 +02:00
Philip Rebohle
9e5c61bf88
[dxvk] Create state cache threads on demand 2022-06-07 11:46:06 +02:00
Andrew Eikum
279b4b7ec2 [d3d9] Defer surface creation if no HWND is given to device
Planetary Annihilation: TITANS creates a device with a NULL HWND and
requires it to succeed.
2022-06-03 13:07:43 +00:00
Philip Rebohle
c596738205
[hud] Fix incorrect array length for VS resources 2022-06-02 19:57:22 +02:00
Blisto91
1862e4dc8d [util] Report Nvidia VendorId for Myst V
Game was made before ATI Technologies was bought by AMD and so doesn't recognize AMD as a GPU vendor, which for some reason makes it bug out.
It also works when it sees the word "Radeon" in the device description, which is why this issue doesn't show on amdvlk or wined3d.
2022-06-02 15:11:17 +02:00
Mike Lothian
de0f81fcdc [spirv] Add utility include
This fixes a compile issue with GCC 12.1

FAILED: src/spirv/libspirv.a.p/spirv_compression.cpp.obj
i686-w64-mingw32-g++ -Isrc/spirv/libspirv.a.p -Isrc/spirv -I../dxvk-9999/src/spirv -I../dxvk-9999/include -fdiagnostics-color=always -D_FILE_OFFSET_BITS=64 -Wall -Winvalid-pch -Wnon-virtual-dtor -std=c++17 -O0 -DNOMINMAX -D_WIN32_WINNT=0xa00 -msse -msse2 -msse3 -mfpmath=sse -Wimplicit-fallthrough -O3 -march=native -pipe -flto=16 -mno-avx -MD -MQ src/spirv/libspirv.a.p/spirv_compression.cpp.obj -MF src/spirv/libspirv.a.p/spirv_compression.cpp.obj.d -o src/spirv/libspirv.a.p/spirv_compression.cpp.obj -c ../dxvk-9999/src/spirv/spirv_compression.cpp
In file included from ../dxvk-9999/src/spirv/../util/util_flags.h:5,
                 from ../dxvk-9999/src/spirv/spirv_include.h:7,
                 from ../dxvk-9999/src/spirv/spirv_instruction.h:6,
                 from ../dxvk-9999/src/spirv/spirv_code_buffer.h:8,
                 from ../dxvk-9999/src/spirv/spirv_compression.h:5,
                 from ../dxvk-9999/src/spirv/spirv_compression.cpp:1:
../dxvk-9999/src/spirv/../util/util_bit.h:300:33: warning: ‘template<class _Category, class _Tp, class _Distance, class _Pointer, class _Reference> struct std::iterator’ is deprecated [-Wdeprecated-declarations]
  300 |     class iterator: public std::iterator<std::input_iterator_tag,
      |                                 ^~~~~~~~
In file included from /usr/lib/gcc/i686-w64-mingw32/12.1.0/include/g++-v12/bits/stl_algobase.h:65,
                 from /usr/lib/gcc/i686-w64-mingw32/12.1.0/include/g++-v12/vector:60,
                 from ../dxvk-9999/src/spirv/spirv_compression.h:3:
/usr/lib/gcc/i686-w64-mingw32/12.1.0/include/g++-v12/bits/stl_iterator_base_types.h:127:34: note: declared here
  127 |     struct _GLIBCXX17_DEPRECATED iterator
      |                                  ^~~~~~~~
../dxvk-9999/src/spirv/spirv_code_buffer.h: In member function ‘size_t dxvk::SpirvCodeBuffer::endInsertion()’:
../dxvk-9999/src/spirv/spirv_code_buffer.h:214:19: error: ‘exchange’ is not a member of ‘std’
  214 |       return std::exchange(m_ptr, m_code.size());
      |                   ^~~~~~~~

Signed-off-by: Mike Lothian <mike@fireburn.co.uk>
2022-06-02 15:10:53 +02:00
Philip Rebohle
5d0273f520
[dxvk] Remove interpolation decorations for replaced shader inputs 2022-06-01 14:11:09 +02:00
Philip Rebohle
6d3ba1b7d7
[dxvk] Perform validation on render pass formats read from state cache 2022-06-01 14:11:09 +02:00
Philip Rebohle
80e125a130
[dxvk] Perform more extensive validation on pipeline state vectors 2022-06-01 14:11:06 +02:00
Blisto91
4ff7687dea [util] Force SM1 for the Halo CE SPV3 launcher 2022-05-31 15:45:23 +02:00
Robin Kertels
7bcf3e1062
[util] Force SM1 for the Warhammer ROR Launcher (#2579)
Co-authored-by: Philip Rebohle <25567304+doitsujin@users.noreply.github.com>
2022-05-31 15:19:30 +02:00
Winter Snowfall
8c96830752
Add d3d9.deferSurfaceCreation workaround for Scrapland (Remastered) (#2574) 2022-05-31 15:17:31 +02:00
noneistaken
93eb86aa3e Blend HUD text shadow and center correctly
This fixes incorrect blending between HUD text, which would cause a narrow transparent gap between the text center and border/shadow that is visible at large text sizes.
2022-05-30 18:23:19 +02:00
Zhiyi Zhang
8147844aef [dxgi] Return DXGI_ERROR_INVALID_CALL for invalid IDXGIAdapter3::RegisterVideoMemoryBudgetChangeNotificationEvent() parameters
According to wine tests 14237e321b

Signed-off-by: Zhiyi Zhang <zzhang@codeweavers.com>
2022-05-25 18:44:20 +02:00
WinterSnowfall
51e56c0420 [util] Enforce a maxAvailableMemory limit for Majesty 2 2022-05-23 07:54:37 +00:00
Paul Gofman
cc11bb8240 [d3d9] Don't adjust window position and size in windowed mode. 2022-05-23 07:53:13 +00:00
Paul Gofman
cde0fbe7b0 [util] Enable d3d9.deferSurfaceCreation for Small Radios Big Televisions 2022-05-19 02:51:41 +00:00
Joshua Ashton
5b7406fed5 [d3d9] Fix crash when using StretchRect with NULL rts 2022-05-10 02:02:35 +01:00
Philip Rebohle
6ddd0cfe0a
[d3d11] Do not add UINT formats to all UAV format lists
Analogous to vkd3d-proton changes. Allows drivers to use compression more
frequently.
2022-04-25 17:37:10 +02:00
Philip Rebohle
a85f7c48a5
[d3d11] Make ClearUnorderedAccessViewUINT fallback more generic 2022-04-25 17:34:45 +02:00
Philip Rebohle
304d0549d5
[dxbc] Implement range check for private array reads
We already do this for stores.
2022-04-21 18:06:41 +02:00
Robin Kertels
3004026db8 [d3d9] Only bind RT if we actually write to it
The alternative render path for shadow maps in Dead Space relies on this.
2022-04-20 00:58:17 +01:00
Robin Kertels
bdafa16e39 [d3d9] Only bind depth buffer if the depth or stencil test is enabled 2022-04-20 00:58:17 +01:00
Joshua Ashton
d6cbd99141 [util] Add missing include to thread.h 2022-04-19 18:14:58 +01:00
Joshua Ashton
08e2ec6c98 [util] Implement env helpers on non-Windows platforms 2022-04-19 17:08:17 +01:00
Joshua Ashton
147f3738f9 [d3d9] Use strlcpy helper 2022-04-19 17:08:17 +01:00
Joshua Ashton
dc6b7fa4a7 [util] Add strlcpy helper
strncpy is not safe.
2022-04-19 17:08:17 +01:00
Joshua Ashton
9ee0f51870 [util] Implement thread helpers on non-Windows platforms 2022-04-19 17:08:06 +01:00
Robin Kertels
9302d33ac7 [d3d9+util] Enable invariant position by default 2022-04-18 12:40:46 +01:00
Philip Rebohle
35e8f4676b [dxvk] Remove old shader creation code 2022-04-18 13:20:16 +02:00
Philip Rebohle
a731f5daae [d3d11] Use new DxvkShader constructor for video shaders 2022-04-18 13:20:16 +02:00
Philip Rebohle
69817a84dc [d3d11] Use new DxvkShaderCreateInfo struct to retrieve shader info 2022-04-18 13:20:16 +02:00
Philip Rebohle
427f51eda7 [d3d9] Use new DxvkShader constructor for format conversion 2022-04-18 13:20:16 +02:00
Philip Rebohle
98ec79f6fa [d3d9] Use new DxvkShader constructor for SWVP emulation 2022-04-18 13:20:16 +02:00
Philip Rebohle
ab95b61e44 [d3d9] Use new DxvkShader constructor for fixed-function shaders 2022-04-18 13:20:16 +02:00
Philip Rebohle
10bab0c182 [dxso] Use new DxvkShader constructor 2022-04-18 13:20:16 +02:00
Philip Rebohle
8993560cde [dxbc] Use new DxvkShader constructor 2022-04-18 13:20:16 +02:00
Philip Rebohle
81d88a484d [dxvk] Use new DxvkShader constructor for HUD shaders 2022-04-18 13:20:16 +02:00
Philip Rebohle
62e706a6bb [dxvk] Use new DxvkShader constructor for swap chain shaders 2022-04-18 13:20:16 +02:00
Philip Rebohle
d0b52f3ac5 [dxvk] Use new DxvkShaderCreateInfo struct to retrieve shader info 2022-04-18 13:20:16 +02:00
Philip Rebohle
b0db58f098 [dxvk] Introduce new way to create DxvkShader objects 2022-04-18 13:20:16 +02:00
Philip Rebohle
736f743ae4
[spirv] Implement faster in-memory compression for shaders
Seems to be anything up to 3x as fast to decode than the previous code,
with the compression ratio being slightly worse. Encoding seems faster
as well.
2022-04-11 02:55:12 +02:00
Blisto91
3672375bc1 [util] Use cached constant buffers for Armored Warfare 2022-04-09 15:19:49 +02:00
Robin Kertels
42c66c410e [d3d9] Calculate slice alignment when uploading straight from the mapping buffer 2022-04-06 18:52:58 +00:00
Paul Gofman
957a305ca8 [d3d9] Ignore multiple app activation window messages. 2022-04-06 18:51:50 +00:00
Paul Gofman
b0ed9e30ce [d3d9] Filter window messages when processing WM_ACTIVATEAPP. 2022-04-06 18:51:50 +00:00
Robin Kertels
ce87bec412 [util] Force sampler type spec const for Star Wars TFU2
The game tries to binda  2D texture to a slot that is declared
as a 3D texture in the shader. This causes one particle effect
to be completely black because DXVK does not bind the texture
2022-04-05 22:37:04 +00:00
Philip Rebohle
95a3413949
[util] Fix typo in app profiles
Accidentally broke everything.
2022-03-31 18:01:52 +02:00
Philip Rebohle
e07157fe72
[d3d11] Only apply anisotropy override to linear samplers
Mirrors D3D9, more or less.
2022-03-30 14:37:33 +02:00
Philip Rebohle
e7e7fa231c
[dxvk] GPU query reset path
Require VK_EXT_host_query_reset instead. This fallback path is
untested nowadays and too slow to be useful.
2022-03-30 13:32:18 +02:00
Georg Lehmann
f0ccd8fe2e [util] Limit Limbo to 60 fps
Fixes: #2564
2022-03-28 21:39:28 +02:00
Derek Lesho
d11f0ac77b [d3d11] Always export correct shared handle type from ::GetSharedHandle and ::CreateSharedHandle
Before we just assumed that the calls here would match the corresponding flag value (D3D11_RESOURCE_MISC_SHARED -> ::GetSharedHandle, D3D11_RESOURCE_MISC_SHARED_NTHANDLE -> ::CreateSharedHandle), but it turns out that its possible to set both flags and use both methods.  Now we always tell Vulkan to export a KMT handle if D3D11_RESOURCE_MISC_SHARED is present, and use openKmtHandle to get an NT handle when needed.
2022-03-28 21:38:42 +02:00
Philip Rebohle
1c3736da8c
[dxvk] Filter out unnecessary access flags when recording barriers
Rationale is as follows:
- srcAccess never needs to contain read flags, since any memory being
  read must have been made visible before by a write operation
- dstAccess is only relevant if srcAccess contains a write, because
  reads alone cannot modify memory and thus do not require making the
  same memory available again. An exception are layout transitions.

Doesn't really change performance in anything as far as I can tell, but
we avoid some unnecessary UBO cache flushes in compute-heavy scenarios.
2022-03-28 10:45:29 +02:00
Philip Rebohle
ebdaf90fdc
[util] Enable d3d9.deferSurfaceCreation for Atelier Sophie 2
2022 and K-T are still using D3D9 for video stuff.
2022-03-28 04:37:02 +02:00
Philip Rebohle
a72463c5af
[meta] Release 1.10.1 2022-03-26 12:44:25 +01:00
Philip Rebohle
b4efaa4ef0
[util] Enable cached constant buffers for Frostpunk
Massively improves CPU-bound performance.
2022-03-26 12:44:25 +01:00
Robin Kertels
4e34c29c56 [d3d9] Disable culling when the app passes an invalid value 2022-03-25 17:13:12 +01:00
Philip Rebohle
991a11617a
[util] Enable d3d9.deferSurfaceCreation for Stranger of Paradise FFO
Reportedly required for VRR to work. Game still doesn't work here.
2022-03-25 16:36:17 +01:00
Philip Rebohle
0db26a0456
[dxbc] Actually do the skip range check thing properly
Turns out the first attempt only worked because my test case didn't
do any dynamically indexed stores at all, but broke everything else.
Oops.
2022-03-24 12:53:29 +01:00
Philip Rebohle
3ecd13cec2
[dxbc] Only emit temp array range check for dynamically indexed stores
Generates less code and makes things slightly more readable.
2022-03-24 12:47:40 +01:00
Philip Rebohle
c590736fec
[dxbc] Generate smallest possible vectors for local arrays
FXC is buggy and always emits vec4 in the array declaration,
so we'll have to analyze the used components ourselves.
2022-03-24 12:47:40 +01:00
Robin Kertels
b2f22d5719 [d3d9] UpdateTexture: Handle automatic mip gen properly 2022-03-24 02:31:42 +00:00
Philip Rebohle
119c1ececb
[util] Set frame latency to 1 for God of War
Frame pacing is horrible otherwise, as of the 1.0.9 update.
2022-03-24 03:05:29 +01:00
Philip Rebohle
6b8e8afd5b
[dxvk] Zero-initialize newly allocated buffer slices on creation
Fixes random flicker in God of War. Since patch 1.0.9, the game's lighting
system relies on MAP_DISCARD returning a zero-initialized memory slices for
its constant buffers, or some lights would get skipped in various compute
passes. Changing the memset to e.g. write 0xFF instead of 0 shows this issue.
2022-03-24 02:46:25 +01:00
Philip Rebohle
e440fa26ab
[dxbc] Handle fallthrough around default properly 2022-03-23 15:32:45 +01:00
Philip Rebohle
8823e4bb3d
[dxgi] Work around swapchain use-after-free bugs
Affects Divinity: Original Sin Enhanced Edition. Requires Wine hack to
delay memory deallocation to not crash during resolution changes.
2022-03-23 15:09:39 +01:00
Philip Rebohle
586948df1e
[d3d11] Get strong reference to swap chain in swap chain back buffers 2022-03-22 19:48:13 +01:00
Philip Rebohle
42edb62df8
[d3d11] Use smart pointer for swap chain back buffer 2022-03-22 19:28:49 +01:00
Philip Rebohle
b015cf0bb2
[dxbc] Support switch-case fallthrough
Apparently this is a thing in Shader Model 4, although FXC cannot emit it.
2022-03-22 17:32:43 +01:00
Philip Rebohle
0d54f7161c
[util] Enable cached dynamic resources for AC3 and AC4
Without it, AC3 chugs along at 40 FPS on my 5950X.
2022-03-19 20:12:20 +01:00
Oleg Kuznetsov
b36ca2c758 [d3d9] Fix Visual Studio build to resolve 'operator !=' is ambiguous error for RECT 2022-03-17 11:35:19 +01:00
Oleg Kuznetsov
5156994440 [dxvk] Add a config option to enable debug utils in addition to DXVK_PERF_EVENTS=1 2022-03-17 11:35:19 +01:00
Joshua Ashton
cf1cee04b8 [d3d11] Register annotation interfaces with D3D9
Some apps try use the D3DPERF_ functions for debug markers/annotations.

This utilizes the DXVK_RegisterAnnotation hidden functions to share the interfaces.

Co-authored-by: Oleg Kuznetsov <okouznetsov@nvidia.com>
2022-03-17 11:35:19 +01:00
Joshua Ashton
937a60c882 [d3d9] Add hidden exports for registering annotations
Adds DXVK_RegisterAnnotation at ordinal 28257 and DXVK_UnRegisterAnnotation at ordinal 28258.
2022-03-17 11:35:19 +01:00
Joshua Ashton
787a979514 [d3d9] Implement D3D9UserDefinedAnnotation 2022-03-17 11:35:19 +01:00
Joshua Ashton
47b1ab52ce [d3d9] Implement D3D9GlobalAnnotationList 2022-03-17 11:35:19 +01:00
Joshua Ashton
5d54d79865 [d3d11] Use IDXVKUserDefinedAnnotation 2022-03-17 11:35:19 +01:00
Joshua Ashton
a010397f34 [util] Move DecodeD3DColor to util
This will be used in the D3D11UserDefinedAnnotation implementation to handle PIX calls which contain a color.
2022-03-17 11:35:19 +01:00
Joshua Ashton
d5d5c1a8bc [dxvk] Define IDXVKUserDefinedAnnotation
Something common to share for perf markers between D3D9 and D3D11.

Inherits from the public D3D11 interface.
2022-03-17 11:35:19 +01:00
Joshua Ashton
0bc972697b [d3d11] Fix D3D11UserDefinedAnnotation declaration
Mark it as final too.
2022-03-17 11:35:19 +01:00
Georg Lehmann
2550cff149 [build] Cleanup build system.
No changes except dropping support for msvc before 15.3.
2022-03-17 01:38:58 +00:00
Georg Lehmann
f1efc9dc9f [dxso] Emit spirv OpCross if we can. 2022-03-16 19:13:09 +00:00
Georg Lehmann
630fee59fc [dxso] Implement zerowins for Lerp.
Fixes #2545.
2022-03-16 19:13:09 +00:00
Joshua Ashton
1f88ee595f [d3d9] Don't expose D32 format
Not supported anywhere except REF device it seems... *sigh*

Supercedes: #2547
2022-03-16 19:11:16 +00:00
Philip Rebohle
4f8da62c34
[dxvk] Fix color write mask normalization
Previously we'd set too many bits by accident here. Also, we should
not modify partial write masks to include unnecessary bits. Only do
this if we can actually promote to a full write mask for consistency.
2022-03-16 19:31:37 +01:00
Liam Middlebrook
f92c6ae859 [dxgi] Add DXVK_ENABLE_NVAPI envvar
Add a new environment variable DXVK_ENABLE_NVAPI as an environment-level
override for 'nvapiHack'. This will allow for DLSS (and other
NvAPI-backed features) to be available without the user manually writing
a configuration file, allowing for more seamless integration with
Proton's launch script.
2022-03-16 13:06:25 +01:00
Robin Kertels
115385d1d9 [d3d9] Update buffer seq number in FlushBuffer
How did I miss this?!
2022-03-15 01:24:54 +00:00
Robin Kertels
5f4fc56226 [d3d9] Update texture sequence number AFTER using it 2022-03-13 17:13:00 +00:00
Robin Kertels
a6357a254d [d3d9] Fix CS thread synchronization for directly mapped buffers 2022-03-13 17:13:00 +00:00
Philip Rebohle
9eb2393d44
[dxvk] Normalize color write masks for non-RGBA formats 2022-03-13 16:24:53 +01:00
Philip Rebohle
4c429f044f
[util] Add another weeb game to the list of workarounds
Sophie is apparently D3D9 an we already have Lydie and Suelle in there,
so it's just this on missing from that series.
2022-03-13 05:38:06 +01:00
Philip Rebohle
caa83247d9
[d3d9] Mark backend image as shared for shared resources
Otherwise, the backend may not transition the image to the correct
layout after each submission.
2022-03-13 02:32:56 +01:00
Robin Kertels
bd1a2aa5a1 [dxvk] Force dedicated allocation for exportable images
The Nvidia driver does not set prefers-/requiresDedicatedAllocation
for exportable images on its own.

This makes DXVK ignore the dedicated allocation struct ptr
which also contains VkExportMemoryAllocateInfo or
VkImportMemoryWin32HandleInfoKHR.
2022-03-13 00:43:41 +01:00
Philip Rebohle
59e3c96976
[d3d9] Fix texture formats that can be exported 2022-03-12 22:24:05 +01:00
Derek Lesho
1d1d8adee6
[d3d9] Fix shared handle check for exporting images
Co-authored-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2022-03-12 21:35:42 +01:00
Philip Rebohle
c87660480d
[d3d11] Reimplement R11G11B10 UAV clears without R32 views 2022-03-12 16:23:42 +01:00
Philip Rebohle
ee28f145dc
[d3d11] Explicitly handle R32-compatible UAV formats 2022-03-12 16:23:39 +01:00
Derek Lesho
6640cc350c
[d3d9] Add support for shared IDirect3DTexture9 resources. 2022-03-12 16:23:06 +01:00
Derek Lesho
48046e009c
[d3d11] Add support for shared ID3D11Texture2D resources. 2022-03-12 16:23:06 +01:00
Derek Lesho
f9d94c82a5
[util] Add helpers for shared resource metadata access. 2022-03-12 16:23:06 +01:00
Derek Lesho
02d3e0d31f
[dxvk] Add shared handle access to DxvkImage memory.
Based off preliminary work from Josh.
2022-03-12 16:23:06 +01:00
Derek Lesho
b5014401e7
[dxvk] Enable VK_KHR_EXTERNAL_MEMORY_WIN32 if available. 2022-03-12 16:23:03 +01:00
Philip Rebohle
5d4c8a6b51 [dxso] Fix ExpP instruction on Shader Model 2+ 2022-03-11 22:44:18 +00:00
Joshua Ashton
7151fbd598 [dxvk] Use new [[fallthrough]] attribute 2022-03-10 00:47:38 +01:00
Joshua Ashton
b96f65be31 [dxbc] Use new [[fallthrough]] attribute 2022-03-10 00:47:38 +01:00
Joshua Ashton
63bd41f785 [d3d11] Add fallthrough comment to PickFormats
Silences a warning
2022-03-10 00:47:38 +01:00
Joshua Ashton
dc6c350cf2 [d3d9] Add fallthrough comment to SetRenderState
Silences a warning
2022-03-10 00:47:38 +01:00
Joshua Ashton
f4ab14cafa [dxso] Fix potential fallthrough in RasterizerOut 2022-03-10 00:47:38 +01:00
Joshua Ashton
a5b0f2898a [dxso] Fix ExpP fallthrough 2022-03-10 00:47:38 +01:00
Joshua Ashton
b2d96ee087 [d3d9] Fix fallthroughs in PickFormats 2022-03-10 00:47:38 +01:00
Joshua Ashton
53b9a723ac [d3d9] Set initial dirty state flags
We had a bug where initial state values caused the data to not get sent to the backend.

Let's fix that going forward and dirty everything we possibly can on device creation.
2022-03-09 23:33:12 +00:00
Joshua Ashton
d4d4f0ca18 [d3d9] Fix default initialization of some state values
If we end up being the same as what we are, we don't dirty initially.
2022-03-09 23:33:08 +00:00
Philip Rebohle
89b1f025eb
[d3d10] Forward OpenSharedResource to D3D11 implementation
Trivial since the requested IID is passed by the application.
2022-03-04 19:13:30 +01:00
Philip Rebohle
23eead9e99
[meta] Release 1.10 2022-03-04 17:15:51 +01:00
Oschowa
bb178baaf1 [util] Enable cached vertex and index buffers for The Evil Within
Large performance win.
2022-03-04 02:19:17 +01:00
Philip Rebohle
f14bccc8c3
[util] Use CPU-cached constant buffers for Anno 1800
Sigh.
2022-03-03 17:33:14 +01:00
Philip Rebohle
1b196c24a4
[dxvk] Invalidate buffer in clearBuffer if possible 2022-03-01 21:39:35 +01:00
Philip Rebohle
5822a8de9f
[util] Enable cached vertex and index buffers for FFXIV
Fixes some weird performance issues on the Garlemald map. Doesn't seem
to affect performance in other areas.
2022-02-28 23:33:27 +01:00
Philip Rebohle
2bceeff5f2
[d3d11] Replace apitrace mode option with something more granular
And enable it only for vertex and index buffers in Nier Replicant.
2022-02-28 22:44:10 +01:00
Robin Kertels
b42c07253e [d3d9] Fix sysmem readback 2022-02-24 07:49:55 +00:00
Robin Kertels
a81c653b42 [d3d9] Fix synchronization after readback 2022-02-22 21:49:28 +00:00
Philip Rebohle
a37cd46491
[util] Set maxDynamicImageBufferSize for Total War: Warhammer III
Massively increases performance since the game otherwise keeps
uploading a huge 48 MiB texture in every frame.
2022-02-22 05:48:25 +01:00
Philip Rebohle
dbd4dad095
[d3d11] Introduce d3d11.maxDynamicImageBufferSize option 2022-02-22 05:31:27 +01:00
Philip Rebohle
33cf522647
[d3d11] Use appropriate memory types for directly mapped images 2022-02-22 05:31:20 +01:00
Philip Rebohle
177e70949c
[d3d11] Apply apitrace mode to image upload buffers 2022-02-22 01:30:43 +01:00
Robin Kertels
29d8812709 [d3d9] Don't set NeedsReadback for POOL_SYSMEM textures
... or in SetRenderTarget because we always do readback for render targets.
2022-02-21 13:43:04 +00:00
Robin Kertels
b163a99bde [d3d9] Clean up texture locking
We had two code paths that largely did the same.
2022-02-21 00:08:41 +00:00
Robin Kertels
dde83717f1 [d3d9] Rename WrittenByGPU to NeedsReadback 2022-02-21 00:08:41 +00:00
Robin Kertels
40444c1f50 [d3d9] Unify texture uploads 2022-02-21 00:08:41 +00:00
Robin Kertels
8b9db26536 [util] Add computeMipLevelOffset 2022-02-21 00:08:41 +00:00
Philip Rebohle
49e5357a87
[hud] Greatly simplify frame time graph rendering 2022-02-20 15:58:29 +01:00
Philip Rebohle
0709c5f5c7
[hud] Greatly simplify text rendering in the HUD 2022-02-20 15:58:29 +01:00
Philip Rebohle
8ce83cabca
[dxvk] Only mark transfer buffers as transient
Otherwise we may accidentally catch things like uniform buffers as well.
2022-02-20 15:58:26 +01:00
Robin Kertels
fd23dcef64 [d3d9] Disable direct buffer mapping for RE games 2022-02-20 03:30:03 +00:00
Robin Kertels
cf4c5c3422 [d3d9] Add option to disable direct buffer mapping 2022-02-20 03:30:03 +00:00
Robin Kertels
6d71eea516 [d3d9] Store buffer map mode in D3D9CommonBuffer 2022-02-20 03:30:03 +00:00
Robin Kertels
97ae14b6a0 [d3d9] Synchronize only to given sequence number in WaitForResources 2022-02-20 03:29:31 +00:00
Robin Kertels
917a8d00a2 [d3d9] Track last staging resource usage with a sequence number 2022-02-20 03:29:31 +00:00
Robin Kertels
c12cd1952c [d3d9] Handle different mip chain lengths in UpdateTexture 2022-02-20 03:29:04 +00:00
Philip Rebohle
80f744549f
[dxvk] Get rid of spinlock when allocating GPU events
This is not performance-critical
2022-02-20 01:16:04 +01:00
Philip Rebohle
0ade12dc83
[dxvk] Use lock-free list for render pass instances
And replace the spin lock with a regular mutex.
2022-02-20 00:04:06 +01:00
Philip Rebohle
477cb617ac
[dxvk] Use lock-free list for compute pipeline lookup 2022-02-19 17:36:42 +01:00
Philip Rebohle
67e2ee1b26
[dxvk] Use lock-free list for graphics pipeline lookup
And use a proper mutex if we do have to synchronize,
so that we can avoid busy-waits.
2022-02-19 17:36:42 +01:00
Philip Rebohle
a4fe43462c
[dxvk] Introduce lock-free list 2022-02-19 17:36:39 +01:00
Philip Rebohle
c9750f6657
[dxvk] Don't use spinlocks for CS chunk pool
No reason to anymore since SRWLocks are fast enough here.
2022-02-19 16:57:09 +01:00
Philip Rebohle
520d62903a
[dxvk] Remove null check when setting vertex stride
Move the responsibility to the front-end instead.
2022-02-19 13:29:59 +01:00
Philip Rebohle
8e11630370
[d3d11] Set zero stride when binding null vertex buffer 2022-02-19 13:20:36 +01:00
Philip Rebohle
146fbd492f
[dxvk] Free existing staging buffer before creating a new one 2022-02-18 18:13:28 +01:00
Philip Rebohle
17a1b0ad44
[d3d11] Consider empty CS chunks when tracking resources
Avoids deadlocks if we track multiple resources and flush in between.
2022-02-18 14:21:53 +01:00
Philip Rebohle
9af3dce304
[dxvk] Track buffer as used in initBuffer
Git ate my commit when I was testing something...
2022-02-17 23:42:31 +01:00
Philip Rebohle
6ae5488157
[d3d9] Use initBuffer method 2022-02-17 20:58:31 +01:00
Philip Rebohle
18a960a1e1
[d3d11] Use initBuffer method 2022-02-17 20:58:31 +01:00
Philip Rebohle
080aa1a989
[dxvk] Add initBuffer method 2022-02-17 20:58:31 +01:00
Philip Rebohle
f7e021f791
[dxvk] Add command buffer parameter to cmdFillBuffer 2022-02-17 20:58:31 +01:00
Philip Rebohle
102bceb30c
[dxvk] Remove unused clear methods 2022-02-17 20:58:31 +01:00
Philip Rebohle
752f98cf00
[d3d9] Use initImage to clear uninitialized image resources 2022-02-17 20:58:31 +01:00
Philip Rebohle
6d0e5dfd21
[d3d11] Use initImage to clear uninitialized image resources 2022-02-17 20:58:31 +01:00
Philip Rebohle
464c6810b3
[dxvk] Repurpose initImage method
This is now supposed to clear images of any type, and only to be
used for resource initialization after creation.
2022-02-17 20:58:31 +01:00
Philip Rebohle
34fd16b8f2
[d3d11] Add implicit flush after tracking sequence numbers
Flushing early when using a tracked resource may reduce stalls.
2022-02-16 20:49:00 +01:00
Philip Rebohle
2dfdc5ac3b
[d3d11] Enable stall tracking for timestamp queries
Because games are dumb and don't understand that the GPU doesn't
work synchronously with the render thread.
2022-02-16 19:59:11 +01:00
Philip Rebohle
d45f5a8d79
[d3d11] Handle subresource field in copy/move operations
Derp.
2022-02-15 13:00:10 +01:00
Philip Rebohle
e70f9f92a6
[util] Enable apitrace mode for Nier Replicant
Game is broken and reads back dynamic vertex/index buffers over PCI-E.
2022-02-14 09:20:41 +01:00
Philip Rebohle
4e464327ef
[util] Bump maxImplicitDiscardSize for Quantum Break
Otherwise we're synchronizing and frame times are garbage.
2022-02-14 04:21:46 +01:00
Philip Rebohle
e1b3bc45ce
[d3d11] Add d3d11.maxImplicitDiscardSize option 2022-02-14 04:17:56 +01:00
Philip Rebohle
63bf928ab5
[hud] Display GPU synchronization in HUD 2022-02-14 03:28:45 +01:00
Philip Rebohle
4d9b464f7c
[d3d9] Use new waitForResource method 2022-02-14 03:15:47 +01:00
Philip Rebohle
2f80f8847e
[d3d11] Use new waitForResource method 2022-02-14 03:15:47 +01:00
Philip Rebohle
0c99b17081
[dxvk] Introduce DxvkDevice::waitForResource
Blocks on the queue thread's condition variable instead of busy-waiting,
and tracks synchronization with new stat counters. Cleanup is rearranged
to minimize delays before signals and resources are notified.
2022-02-14 03:15:47 +01:00
Philip Rebohle
25ebf94873
[dxvk] Display barrier count in draw call HUD item 2022-02-14 01:10:15 +01:00
Philip Rebohle
316e252a27
[dxvk] Add stat counter for pipeline barriers 2022-02-14 01:08:55 +01:00
Philip Rebohle
b5078a7ec0
[dxvk] Reduce context staging buffer size to 4 MiB
Same idea as before, just create a temporary buffer for larger resources.

This can avoid frequent Vulkan memory allocations and deallocations since
many small buffers are more likely to fit into a single memory chunk than
a small number of large buffers, thus reducing the overall memory footprint.
2022-02-14 01:01:34 +01:00
Philip Rebohle
08ecd49c66
[dxvk] Don't suballocate large staging buffer allocations
Otherwise we'll risk wasting almost half the staging buffer memory.
Creating a temporary buffer is cheap enough, so just do that.
2022-02-14 01:00:48 +01:00
Philip Rebohle
b9201db554
[dxvk] Remove unused trimStagingBuffers method 2022-02-13 02:08:20 +01:00
Philip Rebohle
95b7e6c030
[dxvk] Rework HUD font texture initialization
We really shouldn't need a separate context for this.
2022-02-13 02:08:20 +01:00
Philip Rebohle
425fce9200
[dxvk] Introduce transient memory flag for staging buffers
Potentially reduces fragmentation by putting short-lived staging buffers
and sysmem resources created by the application into different memory pools.
2022-02-13 02:08:20 +01:00
Philip Rebohle
9d4be00fa7
[dxvk] Allow large sysmem allocations on 64-bit platforms again
Since we frequently discard staging buffers now, having larger chunks
is actually beneficial again.
2022-02-13 02:08:20 +01:00
Philip Rebohle
d262bebd90
[dxvk] Remove DxvkStagingDataAlloc
Unused and overly clunky.
2022-02-13 02:08:20 +01:00
Philip Rebohle
8518572d13
[dxvk] Use DxvkStagingBuffer in DxvkContext 2022-02-13 02:08:20 +01:00
Philip Rebohle
1b88bc624a
[dxvk] Remove unused updateImage function 2022-02-13 02:08:20 +01:00
Philip Rebohle
3b833988fe
[dxvk] Use staging buffer for gamma ramp uploads 2022-02-13 02:08:19 +01:00
Philip Rebohle
80c5b61e26
[d3d11] Use DxvkStagingBuffer in D3D11DeviceContext 2022-02-13 02:08:19 +01:00
Philip Rebohle
0bc19472e8
[dxvk] Introduce DxvkStagingBuffer 2022-02-13 02:08:19 +01:00
Philip Rebohle
82518de4b4
[dxvk] Discard buffer slice in copyBuffer if possible 2022-02-13 02:08:19 +01:00
Philip Rebohle
5e763853e5
[dxvk] Introduce tryInvalidateDeviceLocalBuffer 2022-02-13 02:08:19 +01:00
Philip Rebohle
6a3de28f94
[dxvk] Repurpose updateBuffer
Only allow it for very small updates where scheduling a copy command would
likely be slower. Some drivers have special paths for tiny updates.
2022-02-13 02:08:19 +01:00
Philip Rebohle
a03c038f03
[d3d9] Exit early in ProcessVertices if the vertex count is 0
We don't want to pass a zero-sized copy to the backend.
2022-02-13 02:08:19 +01:00
Philip Rebohle
26381fd5df
[d3d11] Only use updateBuffer for very small buffer updates
Otherwise we may end up with significant copy overhead on the CS thread.
2022-02-13 02:08:19 +01:00
Philip Rebohle
ac9ed96457
[hud] Add HUD item to show CS thread stats 2022-02-13 02:07:48 +01:00
Philip Rebohle
b02496a8f4
[dxvk] Add CS thread stat counters 2022-02-13 02:07:48 +01:00
Philip Rebohle
d96c5a1076
[dxvk] Store DXVK device inside DxvkCsThread object 2022-02-13 02:07:48 +01:00
Philip Rebohle
52666a33c6
[dxvk] Expose a way to increment stat counters
In case the counters come from external sources.
2022-02-13 02:07:45 +01:00
Philip Rebohle
b6121c84aa
[d3d11] Avoid GPU synchronization on mapping images when possible 2022-02-11 18:17:35 +01:00
Philip Rebohle
3f16de157b
[d3d11] Avoid GPU synchronization on mapping buffers when possible 2022-02-11 18:17:35 +01:00
Philip Rebohle
c82b504e52
[d3d11] Further simplify D3D11DeferredContextMapEntry
And no longer create a strong reference to the given resource.
2022-02-11 18:17:35 +01:00
Philip Rebohle
2dcdd20517
[d3d11] Change D3D11ResourceRef constructor to be more useful 2022-02-11 18:17:35 +01:00
Philip Rebohle
0364a79eb0
[d3d11] Optimize Unmap on immediate contexts 2022-02-11 18:17:35 +01:00
Philip Rebohle
5a6711ed1d
[d3d11] Synchronize only to given sequence number in WaitForResources
Avoids costly thread synchronization when mapping staging resources
for reading, as well as some other scenarios.
2022-02-11 18:17:35 +01:00
Philip Rebohle
afe1840c74
[d3d11] Track resources when dispatching Cubin shaders as well 2022-02-11 18:17:35 +01:00
Philip Rebohle
bb16734a43
[d3d11] Implement sequence number tracking on deferred contexts 2022-02-11 18:17:35 +01:00
Philip Rebohle
2eeb7295c8
[d3d11] Increment sequence number when submitting command lists
This does not do any tracking on deferred contexts just yet.
2022-02-11 18:17:35 +01:00
Philip Rebohle
d33dac569c
[d3d11] Track last staging resource usage with a sequence number 2022-02-11 18:17:35 +01:00
Philip Rebohle
55a6b80919
[d3d11] Add method to query D3D11 resource dimension from texture 2022-02-11 18:17:35 +01:00
Philip Rebohle
d870b6ff38
[d3d11] Store ID3D11Resource interface in D3D11CommonTexture
Going full circle here, but it's actually useful now.
2022-02-11 18:17:35 +01:00
Philip Rebohle
9c32beccdc
[d3d11] Store buffer map mode in D3D11Buffer
Matches what we do for textures, and makes it so that we don't
have to dereference the resource pointer to figure this out.
2022-02-11 18:17:35 +01:00
Philip Rebohle
2db56fa160
[d3d11] Add D3D11ResourceRef
Implements private ref counting for arbitrary resource types.
2022-02-11 18:17:35 +01:00
Philip Rebohle
391c9e13ca
[d3d11] Add ResourceAddRef/ReleasePrivate with known resource type 2022-02-11 18:17:35 +01:00
Philip Rebohle
6b91b87dba
[dxvk] Reorganize DxvkBuffer data structure
Should hopefully reduce CPU cache conflicts.
2022-02-11 18:17:34 +01:00
Philip Rebohle
37f3d9208b
[dxvk] Introduce sequence numbers for CS submissions 2022-02-11 18:17:34 +01:00
Philip Rebohle
bc137fdf37
[util] Enable apitrace mode for AoE2 Definitive Edition
Fixes #2491.
2022-02-11 18:15:46 +01:00
Philip Rebohle
6c862b63a2
[d3d11] Optimize UpdateSubresource for small buffer updates
Some games use UpdateSubresource to upload constant buffers in
between draws, so this path should be as fast as possible.

Also fixes a potential issue when using D3D11_COPY_NO_OVERWRITE
on deferred contexts, since the Map requirements don't hold here.
2022-02-07 16:14:02 +01:00
Philip Rebohle
b746e1352b
[d3d11] Implement suballocation from staging buffer for small updates 2022-02-07 16:14:01 +01:00
Philip Rebohle
7cf78a2c75
[d3d11] Fix confusing code in deferred context Map
This did work, but we shouldn't use an object that was already moved.
2022-02-07 16:14:01 +01:00
Philip Rebohle
e4dbd1e337
[d3d11] Remove unused parameters from deferred context Map functions 2022-02-07 16:13:58 +01:00
Krzysztof Bogacki
b5d7b42e65 [d3d11] Add D3D11On12CreateDevice stub 2022-02-07 03:21:43 +01:00
Philip Rebohle
2673d74270
[dxvk] Add version fixup for proprietary Intel drivers 2022-02-02 14:56:59 +01:00
Philip Rebohle
badc53b1bb
[dxvk] Rework driver version fixup to use driver ID instead of vendor ID 2022-02-02 14:56:55 +01:00
Georg Lehmann
58909e4582 [dxvk] Fix MSVC build. 2022-02-01 18:50:00 +00:00
Robin Kertels
b220c8989b [d3d9] Only enable FETCH4 for single channel formats 2022-01-28 21:34:18 +00:00
Robin Kertels
5b39f0307e [d3d11] Add FL12+ enum names 2022-01-27 19:42:14 +01:00
Philip Rebohle
1216466be7
[meta] Release 1.9.4 2022-01-24 15:08:49 +01:00
Philip Rebohle
b4e4eca99f
[dxvk] Remove options to disable OpenVR/XR support
No longer needed since we no longer load vrclient.so into the game's
process just to query extensions.
2022-01-24 14:50:04 +01:00
Georg Lehmann
4e6db51230 [d3d9] Fix float emulation detection.
ffs
2022-01-21 16:08:00 +01:00
Georg Lehmann
14df2f7251 [d3d9] Enable strict float emulation by default for new radv. 2022-01-20 23:47:41 +00:00
Philip Rebohle
a268de51e3
[dxvk] Don't shrink HVV heap if it's the main video memory heap
May fix issues on RBAR-enabled Nvidia systems.
2022-01-16 02:47:51 +01:00
Philip Rebohle
703cc78cc0
[util] Disable NVAPI hack for God of War
Needed for DLSS support.
2022-01-14 15:21:49 +01:00
Philip Rebohle
42c06ceb51
[util] Enable performance options for God of War 2022-01-14 13:16:06 +01:00
Philip Rebohle
08c7bab431
[dxvk] Reduce maximum size of multi-slice buffers 2022-01-13 18:40:27 +01:00
Philip Rebohle
71e7faef69
[dxvk] Reduce size up to which device-local buffers can be invalidated 2022-01-13 18:39:31 +01:00
Philip Rebohle
db2e32ede6
[dxvk] Be smarter about which chunks to free
Freeing all empty chunks immediately may cause issues if an app constantly
allocates and frees a small number of resources that don't fit into any
existing chunk, so try to keep one around. Aggressively free everything
under memory pressure if necessary.
2022-01-13 18:39:31 +01:00
Philip Rebohle
15ab07ab94
[dxvk] Replace allocation priority with allocation flags 2022-01-13 18:39:31 +01:00
Philip Rebohle
d34bbdb58e
[dxvk] Free empty memory chunks 2022-01-13 18:22:44 +01:00
Philip Rebohle
e6442d64be
[dxvk] Display allocated memory in HUD again 2022-01-13 18:22:44 +01:00
Philip Rebohle
a70a35406e
[meta] Release 1.9.3 2022-01-11 13:28:28 +01:00
Georg Lehmann
f5744284eb [d3d9] Dirty FF vertex shader if any D3D9VertexDeclFlags change.
The vertex shader depends on all of these in some way.
2022-01-10 22:06:15 +00:00
Christopher Egert
b1a6cbad7f [d3d9] Update FFVS when D3DFVF_PSIZE is specified.
This fixes #2387
2022-01-10 20:05:41 +00:00
Robin Kertels
4cdee69bc9 [d3d9] Always upload all managed texture mips after AddDirtyBox call
Co-authored-by: Paul Gofman <gofmanp@gmail.com>
2022-01-10 18:55:08 +00:00
Philip Rebohle
b53c3057e1
[dxgi] Fix refresh rate filtering in FindClosestMatchingMode
We need to operate on the pre-filtered list, or otherwise we may run into
problems where not all refresh rates are supported for all display modes.
2022-01-10 14:45:19 +01:00
dosse91
55c4aba4d0 Added config for James Cameron's Avatar (DX9) 2022-01-10 14:40:53 +01:00
Joshua Ashton
ecd7b67069 [d3d11] Lock context before EmitCs for annotations 2021-12-21 03:09:08 +01:00
Philip Rebohle
3bfad1e70e
[dxvk] Explicitly intiialize framebuffer info 2021-12-20 23:47:50 +01:00
Supreeeme
34774f4ea4 Enabled strict float emulation for BlazBlue Centralfiction 2021-12-15 09:44:22 +00:00
Robin Kertels
c13395db97 [util] Enable strict float emulation for a bunch of games
... that are known to be broken without it.
2021-12-05 16:49:19 +00:00
Robin Kertels
6c17b8801c [d3d9] Add strict option to float emulation setting 2021-12-05 16:49:19 +00:00
Robin Kertels
eb9dfcedbd [util] Move toLower transform to function 2021-12-05 16:49:19 +00:00
Philip Rebohle
11f8b8ba44 [dxso] Handle multiplication by zero when emitting clip distances 2021-12-05 16:49:19 +00:00
Philip Rebohle
337360cdc6 [dxso] Handle multiplication by zero in TexM*Tex instructions 2021-12-05 16:49:19 +00:00
Philip Rebohle
a9515d3530 [dxso] Handle multiplication by zero in matrix ALU instructions 2021-12-05 16:49:19 +00:00
Philip Rebohle
8063e27c08 [dxso] Handle multiplication by zero in cross product 2021-12-05 16:49:19 +00:00
Philip Rebohle
7b2b8ceff3 [dxso] Handle multiplication by zero in dst instruction 2021-12-05 16:49:19 +00:00
Philip Rebohle
ebc5326ed5 [dxso] Correctly handle multiplication by zero 2021-12-05 16:49:19 +00:00
Robin Kertels
804eca9cad [d3d9] Respect shader defined constants for HWVP/PS buffer binding range 2021-11-30 01:57:22 +00:00
Robin Kertels
ce1c66d7dc [dxso] Omit relative constant range check when possible
We can just rely on robustness2 when it's supported.
2021-11-30 01:57:22 +00:00
Robin Kertels
0061139652 [d3d9] Copy shader defined constants into SWVP UBO
Co-authored-by: Christopher Egert <cme3000@gmail.com>
Co-authored-by: Georg Lehmann <dadschoorse@gmail.com>
2021-11-30 01:57:22 +00:00
Robin Kertels
39039f9ac8 [dxso+d3d9] Clean up texture slots 2021-11-30 01:57:22 +00:00
Paul Gofman
b672c07a93 [d3d9] Send WM_ACTIVATEAPP messsage on WM_SIZE. 2021-11-30 01:48:24 +00:00
Philip Rebohle
1abd205216
[d3d11] Compute image data layout for unmapped textures
We sometimes need this information when uploading image data. Fixes #2380.
2021-11-29 16:55:35 +01:00
Philip Rebohle
b6cd6aaecc
[d3d11] Fix depth aspect not being applied to some D16_UNORM views 2021-11-29 15:39:41 +01:00
Georg Lehmann
97f03127e9 [dxso] Remove empty dxso_helpers.h 2021-11-25 21:50:59 +00:00
Georg Lehmann
c2a66c043a [dxvk] Remove empty dxvk_main 2021-11-25 21:50:59 +00:00