Philip Rebohle
9532126f7c
[dxvk] Enable VK_EXT_fragment_shader_interlock
2022-09-19 15:44:23 +02:00
Philip Rebohle
0bb0c1e646
[util] Enable ignoreGraphicsBarriers for FFXV
...
Massively improves performance when VXAO is enabled.
2022-09-19 15:43:45 +02:00
Philip Rebohle
2a7706ba53
[dxbc] Do not enable SPV_KHR_shader_float_controls
...
This is core in Vulkan 1.2 and SPIR-V 1.5.
2022-09-18 02:27:03 +02:00
Philip Rebohle
9fa587e13c
[dxgi] Always use swap chain-local present count for frame statistics
...
Doesn't appear to match Windows behaviour, but there may be scenarios
when we can't query the current monitor. Statistics still need to be
consistent in this case.
See #2933 .
2022-09-17 05:01:36 +02:00
Philip Rebohle
5b6b9923ab
[dxbc] Write point size in vertex shaders
...
Silences some validation errors when point rendering is enabled.
2022-09-17 01:52:19 +02:00
Philip Rebohle
d93568f1a9
[dxbc] Don't emit built-in position as a block variable
...
This is no longer needed for interface matching.
2022-09-17 01:52:19 +02:00
xpander69
07094ac4f9
[util] Remove fps cap from Warhammer Online
...
This is a bit embarrassing. Added this config few days ago to counter the animation breakages, but now Return of Reckoning devs patched the executable on their side to cap the framerate by default. So the workaround is not needed anymore.
2022-09-16 21:32:49 +01:00
Philip Rebohle
4fb6c200d7
[d3d9] Use precise matrix-vector operations to compute vertex position
2022-09-16 20:04:01 +01:00
Philip Rebohle
b56ec10deb
[d3d9] Add helpers for precise matrix-vector products
2022-09-16 20:04:01 +01:00
Philip Rebohle
3a63c7cb31
[dxvk] Hide some more format compatibility validation errors
2022-09-16 17:24:33 +02:00
Philip Rebohle
67bd2b5e76
[dxgi] Report swap chain frame statistics
2022-09-16 12:49:42 +02:00
Philip Rebohle
fe3fc82d8e
[dxgi] Handle mode changes for frame statistics
2022-09-16 12:49:42 +02:00
Philip Rebohle
faaa6bf1df
[dxgi] Promote output stored in swap chain to IDXGIOutput1
2022-09-16 12:49:42 +02:00
Philip Rebohle
57af9e8760
[dxgi] Estimate vblank count for frame statistics
2022-09-16 12:49:42 +02:00
Philip Rebohle
c56a9b5a3f
[dxgi] Implement WaitForVBlank using new sleep helper
...
Not very accurate, but probably good enough if the display
refresh rate is known.
2022-09-16 12:49:42 +02:00
Philip Rebohle
3543673c5c
[util] Add helper to compute display refresh related stuff
2022-09-16 12:49:42 +02:00
Philip Rebohle
e019edc8c3
[util] Add helper to get time point from raw counter value
2022-09-16 12:49:42 +02:00
Philip Rebohle
c1ab09a048
[util] Move platform-specific sleep code to dedicated helper class
2022-09-16 12:49:42 +02:00
Joshua Ashton
000a647c56
[d3d11] Store D3D11DeviceContextState as private ref
...
Avoids a circular dependency
2022-09-16 12:49:10 +02:00
Joshua Ashton
a69c65265a
[d3d11] Store context predication query as private ref
2022-09-16 12:49:10 +02:00
Joshua Ashton
9e4877be81
[d3d11] Store SoTarget buffer as a private ref
2022-09-16 12:49:10 +02:00
Joshua Ashton
b40935a48d
[d3d11] Store context state ID buffers as private refs
2022-09-16 12:49:10 +02:00
Joshua Ashton
ca38cebe0b
[d3d11] Store private refs for IA layout
2022-09-16 12:49:10 +02:00
Joshua Ashton
9545281542
[d3d11] Store private refs for VB + IB bindings
2022-09-16 12:49:10 +02:00
Joshua Ashton
9bfe46ac50
[d3d11] Store private refs for srv and rtv bindings
2022-09-16 12:49:10 +02:00
Joshua Ashton
2419226456
[d3d11] Store private refs for constant buffer bindings
2022-09-16 12:49:10 +02:00
Joshua Ashton
8758bcedae
[d3d11] Store private refs to context shaders
2022-09-16 12:49:10 +02:00
Joshua Ashton
699d56e35d
[d3d11] Handle nullptr RasterizerState in ApplyRasterizerSampleCount
...
This broke as of a637134c56
is causing a crash in the BGFX d3d11 samples.
2022-09-16 11:40:36 +02:00
Joshua Ashton
3a6f8fa413
[d3d11] Assign ForcedSampleCount to correct value in ApplyRasterizerSampleCount
...
ForcedSampleCount was never being respected as it would always be replaced with 1 as it was being assigned to the wrong variable.
This was also probably causing a bunch of redundant CS work as it was changing state that was dirty checked.
2022-09-16 11:40:36 +02:00
Philip Rebohle
1c33d8be1f
[dxgi] Fix return value of ChangeDisplayMode
2022-09-15 15:35:54 +02:00
Paul Gofman
10d6e15646
[d3d9] Do not set window size and position when restoring from fullscreen state
...
Closes #2920 .
2022-09-15 09:33:24 +01:00
Krzysztof Dobrowolski
19b76825d0
[d3d9] Fix for missing restriction check in UpdateSurface.
...
The spec of IDirect3DDevice9::UpdateSurface contains the following restriction:
- Neither surface can be created with multisampling.
The only valid flag for both surfaces is D3DMULTISAMPLE_NONE.
This commit adds this check and returns D3DERR_INVALIDCALL
when source or destination surfaces are multisampled.
2022-09-15 09:32:31 +01:00
Georg Lehmann
18a801de84
[dxso] Use a * (y - x) + x for lerp.
...
Fixes Alice: Madness Returns.
2022-09-13 23:10:11 +01:00
Rhys Perry
63ca34bb29
[dxbc] Fix forceVolatileTgsmAccess for stores
...
Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
2022-09-13 21:41:59 +02:00
Joshua Ashton
68c528d345
[util] Implement bitmask iterator on non-x86 platforms
2022-09-13 20:11:17 +01:00
Joshua Ashton
2218462ff2
[util] Implement spin on ARM64
2022-09-13 20:11:17 +01:00
Joshua Ashton
57cee691b3
[util] Implement replaceNaN for non-x86 platforms
2022-09-13 20:11:17 +01:00
Joshua Ashton
2d8e14fcf4
[util] Implement bcmpeq for non-x86 platforms
2022-09-13 20:11:17 +01:00
Joshua Ashton
c3093b546e
[util] Implement tzcnt for non-x86 platforms
2022-09-13 20:11:17 +01:00
Joshua Ashton
466026632d
[util] Only include x86 intrinsics headers on x86
2022-09-13 20:11:17 +01:00
Joshua Ashton
736f91fad1
[util] Add macro to determine CPU arch
2022-09-13 20:11:17 +01:00
Philip Rebohle
21a521361e
[spirv] Remove OpKill helper
...
This is deprecated, so make sure we never accidentally
use it in the future.
2022-09-13 15:30:13 +02:00
Philip Rebohle
af208ceb9e
[dxbc] Optimize write pattern for TGSM initialization
...
Reduces bank conflicts.
2022-09-12 22:33:40 +02:00
Philip Rebohle
05f36fd97b
[dxbc] Only use workgroup scope in compute shaders
...
Turns out that global barriers can be used in graphics shaders.
2022-09-12 22:05:39 +02:00
Philip Rebohle
0502a0464f
[dxbc] Fix broken barrier around TGSM init code
2022-09-12 22:05:39 +02:00
Philip Rebohle
944a945822
[dxvk] Fix validation error on FS resolve path
2022-09-12 18:59:58 +02:00
Philip Rebohle
d9466eb2b9
[dxvk] Get rid of immutable sampler for resolve operations
2022-09-12 18:59:58 +02:00
Riesi
26c8f46b6b
[util] Limit King Of Fighters XIII to 60 FPS
...
Game speed is tied to FPS
fixes #2647
2022-09-12 18:53:42 +02:00
Blisto91
e05e063df0
[util] Enable memoryTrackTest for SiN Episodes Emergence
2022-09-12 18:37:30 +02:00
Philip Rebohle
eda366662c
[dxbc] Handle workgroup-coherent UAVs more efficiently
...
Some drivers don't handle the workgroup scope on stores and loads properly,
so let's just do the availability and visibility operation on barriers.
2022-09-12 18:19:02 +02:00
Philip Rebohle
8842af2ad6
[dxvk] Get rid of sampler for pack operations
2022-09-12 14:20:30 +02:00
Philip Rebohle
8dc9400045
[d3d11] Report D3D11_FORMAT_SUPPORT2_SHAREABLE appropriately
2022-09-11 16:40:02 +02:00
Philip Rebohle
299fc4c4cf
[d3d11] Determine shared resources tier more accurately
2022-09-11 16:40:02 +02:00
Philip Rebohle
443cb658f7
[dxvk] Clean up DxvkImage::canShareImage
2022-09-11 16:40:02 +02:00
Philip Rebohle
0123e844b2
[dxvk] Move getFormatLimits back to DxvkAdapter
2022-09-11 16:40:02 +02:00
Philip Rebohle
c0fdf1449c
[dxvk] Allow querying external memory features for image formats
2022-09-11 16:40:02 +02:00
Philip Rebohle
3a636f6094
[dxvk] Introduce DxvkFormatQuery
2022-09-11 16:40:02 +02:00
Joshua Ashton
10bb285f2e
[d3d9] Remove unused dstExtent + friends in GetRenderTargetData
2022-09-10 21:46:07 +00:00
Joshua Ashton
935541bcb0
[util] Make math types have implicit copy assignments
...
We define implicit copy constructors, should also define implicit copy assignments.
2022-09-10 21:46:07 +00:00
Joshua Ashton
99e01d64f7
[dxso] Make fallthrough for extra params explicit
2022-09-10 21:46:07 +00:00
Joshua Ashton
9adc6f2d3e
[d3d11] Remove unused this capture in UnbindResources
2022-09-10 21:46:07 +00:00
Joshua Ashton
a3727ebd42
[d3d11] Fix UNKNOWN enum in video view dimension switch cases
2022-09-10 21:46:07 +00:00
Joshua Ashton
64d88c684d
[dxbc] Explicitly cast down to VkAccessFlags when assinging binding.access
...
Otherwise both halves of the terniary are differing types causing a warning.
2022-09-10 21:27:04 +00:00
Joshua Ashton
aa06e71dee
[d3d11] Remove useless const qualifiers on IsYCbCr and NeedsCopy return values
2022-09-10 21:27:04 +00:00
Joshua Ashton
ce5e7ad427
[d3d11] Remove MaxAnisotropy < 0 check
...
This type is unsigned, this is impossible.
2022-09-10 21:27:04 +00:00
Joshua Ashton
b0ac267fd5
[d3d9] Explicitly cast to D3DRENDERSTATETYPE in ColorWriteIndex
...
Need this to silence warnings after doing some arithmetic on an enum.
2022-09-10 21:27:04 +00:00
Joshua Ashton
f42df87937
[dxvk] Remove useless const qualifier on getColorAttachmentIndex return type
...
This does nothing.
2022-09-10 21:27:04 +00:00
Joshua Ashton
ec6ad90f22
[dxvk] Fix value type in QueueItem
...
This was being truncated from uint64_t -> uint32_t then stored in a uint64_t which seems unintentional...
2022-09-10 22:55:58 +02:00
Philip Rebohle
ccfb986e72
[dxbc] Rework TGSM workaround
2022-09-10 14:27:13 +02:00
Philip Rebohle
8176101228
[dxbc] Enable Vulkan memory model
2022-09-10 14:27:13 +02:00
Philip Rebohle
68cfc84329
[dxvk] Enable vulkanMemoryModel feature
2022-09-10 14:27:13 +02:00
Philip Rebohle
0b891a93b2
[spirv] Add support for memory operands on load/store operations
2022-09-10 14:27:13 +02:00
Philip Rebohle
d564be68d6
[spirv] Handle availability and visibility image operands
2022-09-10 14:27:13 +02:00
Philip Rebohle
0f9a042952
[d3d11] Report Tiled Resources Tier 3 again
...
Partially reverts df5756c9a5
.
Turns out that WARP does this, so we might as well expose it too.
2022-09-10 14:26:50 +02:00
xpander69
2ec25f588f
Cap Warhammer Online to 100 FPS
...
Animations break with 100+ FPS. Engine Limitation. WAR-64.exe is affected by this. WAR.exe is capped to 100 by default.
2022-09-10 13:02:47 +02:00
Georg Lehmann
bd5d9d90c9
[d3d9] Use xor to swap bit in depth mask.
2022-09-10 04:16:30 +00:00
Georg Lehmann
1bc6f9660a
[d3d9] Force D3DTADDRESS_CLAMP for cubes.
2022-09-10 04:16:30 +00:00
Philip Rebohle
5babb29922
[d3d11] Set host stage and access bits for staging resources
...
We don't need this for resources that we'll never read back from.
2022-09-08 19:26:55 +02:00
Philip Rebohle
4b8387c9b1
[d3d9] Set host stage and access bits for image staging buffers
...
This is already being done for buffers.
2022-09-08 19:26:55 +02:00
Philip Rebohle
044e2e9dff
[dxvk] Defer host barriers until the end of the current command buffer
2022-09-08 19:26:55 +02:00
Philip Rebohle
72de8a1dc1
[dxvk] Destroy command list fences
...
Fixes a validation error.
2022-09-08 19:26:33 +02:00
Robin Kertels
2b16134b64
[util] Enable d3d9.memoryTrackTest for The Ship
2022-09-07 21:05:48 +02:00
Joshua Ashton
1ea48558e5
[wsi] Fix return value of setMonitorDisplayMode
2022-09-07 21:05:20 +02:00
Joshua Ashton
846db795f8
[dxvk] Link against dl for native builds
...
Fixes build under Steam Runtime Sniper
2022-09-07 17:02:54 +01:00
Philip Rebohle
9964e4a632
[d3d11] Clean up resource validation around tiled resources
2022-09-05 07:51:08 +02:00
Philip Rebohle
df5756c9a5
[d3d11] Do not report Tiled Resources Tier 3
...
Neither Nvidia nor AMD drivers report Tier 3 support on Windows,
so this is likely a D3D11 runtime limitation, even though the
API could technically support it.
2022-09-05 07:51:08 +02:00
Philip Rebohle
b12e4fc59f
[dxvk] Check whether SparseResidency capability is used in a shader
2022-09-05 07:51:08 +02:00
Philip Rebohle
02600706fe
[d3d11] Enable Conservative Rasterization Tier 3
...
Mostly to bring this in line with vkd3d-proton.
2022-09-05 07:27:00 +02:00
Philip Rebohle
d14d70af05
[dxvk] Check whether FragmentFullyCoveredEXT capability is used in a shader
2022-09-05 07:26:23 +02:00
Philip Rebohle
3401964ee2
[dxbc] Implement support for SV_InnerCoverage
2022-09-05 07:21:47 +02:00
Philip Rebohle
bd912212b5
[d3d11] Adjust preferred mapping modes for default images
2022-09-05 05:52:55 +02:00
Philip Rebohle
fdcbdeb28f
[d3d11] Implement dirty trackig for default-mapped images
...
Avoids GPU synchronization when using WriteToSubresource,
and also reduces bandwidth.
2022-09-05 05:52:55 +02:00
Philip Rebohle
40ffac72d9
[d3d11] Introduce methods for dirty region tracking for mapped images
2022-09-05 05:52:55 +02:00
Philip Rebohle
1bed39f266
[d3d11] Rework ReadFromSubresource and WriteToSubresource
...
Mainly changes the code to use existing helpers where possible, and
adds support for planar images, which was previously completely broken
for these functions.
2022-09-05 04:32:01 +02:00
Philip Rebohle
ca833082b5
[d3d11] Fix broken image readback for mapped default images
2022-09-05 04:31:13 +02:00
Philip Rebohle
e9851bee86
[dxvk] Introduce per-aspect version of computeImageDataSize
2022-09-05 04:31:13 +02:00
Philip Rebohle
957d99ed8d
[dxvk] Fix broken layer handling in packImageData
2022-09-05 03:39:23 +02:00
Philip Rebohle
e8c1a8e734
[dxbc] Clean up support check for R32 reads without format
2022-09-04 18:28:27 +02:00
Philip Rebohle
6d9353f4e9
[d3d11] Don't depend on variableMultisampleRate feature
2022-09-04 18:28:27 +02:00
Philip Rebohle
882072e134
[d3d11] Move maximum feature level check to D3D11DeviceFeatures
2022-09-04 18:28:27 +02:00
Philip Rebohle
c082e7f0a9
[d3d11] Add convenience query for Conservative Rasterization tier
2022-09-04 18:28:27 +02:00
Philip Rebohle
59dd2d54cd
[d3d11] Add convenience query for Tiled Resources tier
2022-09-04 18:28:27 +02:00
Philip Rebohle
0e70398d4e
[d3d11] Use D3D11DeviceFeatures in CheckFeatureSupport
2022-09-04 18:28:27 +02:00
Philip Rebohle
71d6e8f849
[d3d11] Introduce D3D11DeviceFeatures
2022-09-04 18:28:27 +02:00
Philip Rebohle
5490aa936b
[d3d11] Rework D3D11 feature enablement
...
Rather than enabling based on requested feature levels, always enable
all supported features that we might use, and report the maximum
feature level based on that.
This fixes an issue in CreateDeviceContextState which may raise the
device feature level, and another issue wherein the feature level
override is ignored if tiled resources are not supported.
2022-09-04 18:28:27 +02:00
Philip Rebohle
c4516c5b04
[dxvk] Improve behaviour when variableMultisampleRate is not supported
2022-09-04 18:28:27 +02:00
Philip Rebohle
8d9d9912ff
[dxvk] Remove extension info from DXVK device
2022-09-04 18:28:27 +02:00
Philip Rebohle
ff6a6e2d37
[d3d11] Use new pseudo-features where applicable
2022-09-04 18:28:27 +02:00
Philip Rebohle
51e0a56243
[dxvk] Use new pseudo-features where applicable
2022-09-04 18:28:27 +02:00
Philip Rebohle
019ebeeaf7
[dxvk] Introduce pseudo-features for extensions with no feature struct
...
Makes it easier to keep track of supported extensions.
2022-09-04 18:28:27 +02:00
Philip Rebohle
1b66b8c9f3
[dxvk] Go back to fence-based command list synchronization
...
Timeline semaphores are too unreliable on 32-bit Proton builds.
2022-09-04 18:23:11 +02:00
Philip Rebohle
439043ddb4
[d3d11] Do not implicitly stall waitable swap chains
2022-09-02 14:33:11 +02:00
Philip Rebohle
17320776f0
[dxgi] Duplicate frame latency handle
...
Apps can call CloseHandle on this.
2022-09-02 14:25:12 +02:00
Philip Rebohle
11ef172c79
[util] Add stubs for DuplicateHandle and GetCurrentProcess
2022-09-02 14:25:12 +02:00
Philip Rebohle
fa743f162b
[dxvk] Don't create queues with QUEUE_FAMILY_IGNORED
...
We accidentally broke drivers which don't support sparse.
Closes #2891 .
Closes #2890 .
Reported-by: mykhailo.skorokhodov@globallogic.com
2022-09-02 11:07:09 +02:00
Joshua Ashton
36f523bbf5
[vulkan] Fix loading libvulkan natively
2022-09-01 04:37:43 +02:00
Joshua Ashton
b05ae33273
[util] Return null if HMODULE is nullptr in GetProcAddress compat
...
dlsym with NULL will try to find the symbol from anything currently
loaded.
2022-09-01 04:37:43 +02:00
Philip Rebohle
735349bf1b
[dxvk] Fix barrier typo
2022-09-01 03:35:58 +02:00
Philip Rebohle
097d3edd05
[dxvk] Create debug messenger if DXVK_DEBUG=validation is set
2022-09-01 00:25:10 +02:00
Philip Rebohle
2f39ae792a
[dxvk] Change DXVK_PERF_EVENTS environment variable to DXVK_DEBUG
2022-09-01 00:25:10 +02:00
Philip Rebohle
f8781e1c4c
[vulkan] Add missing VK_EXT_debug_utils entry points
2022-09-01 00:25:10 +02:00
Philip Rebohle
321338af00
[dxvk] Remove unused m_device member from DxvkBuffer
2022-09-01 00:07:23 +02:00
Philip Rebohle
7b4925dc45
[dxvk] Fix potential sparse allocator lifetime issues
2022-08-31 23:48:46 +02:00
Philip Rebohle
c3c6dbf669
[dxvk] Fix potential buffer lifetime issues
2022-08-31 23:48:34 +02:00
Philip Rebohle
a11fb568b9
[tests] Remove D3D9 tests
2022-08-31 17:01:22 +02:00
Philip Rebohle
e882a7f8ba
[d3d11] Implement extended shader interface
2022-08-31 16:25:44 +02:00
Philip Rebohle
610472e658
[d3d11] Introduce ID3D11VkExtShader
2022-08-31 16:25:44 +02:00
Philip Rebohle
354b88d178
[dxvk] Add shader method to retrieve raw code
2022-08-31 16:25:44 +02:00
WinterSnowfall
3e0031cefe
[util] Add a maxAvailableMemory limit for Heroes of Annihilated Empires
2022-08-30 13:21:29 +02:00
Philip Rebohle
c72c6ec6ed
[d3d10] Remove d3d10.dll and d3d10_1.dll
...
These are incomplete and are already not being used anyway,
so just drop them.
2022-08-30 02:42:03 +02:00
Joshua Ashton
c49b1ee390
[d3d9] Use SetStateTexture in Reset
...
Fixes m_activeTextures not getting updated
2022-08-29 10:16:21 +00:00
Joshua Ashton
86efa46fcf
[dxvk] Throw DxvkError if we failed to load vulkan library
2022-08-27 19:32:03 +02:00
Joshua Ashton
286ab017da
[vulkan] Add valid method to LibraryLoader
2022-08-27 19:32:03 +02:00
Joshua Ashton
482a7e433b
[vulkan] Make LibraryLoader dynamically load vulkan-1
...
This makes LibraryLoader actually load the library and moves ownership
of GetInstanceProcAddr into it, which means we pass through the
loaders into their parents to grab stuff.
2022-08-27 19:32:03 +02:00
Joshua Ashton
f6fcbb7127
[util] Rename CloseLibrary to FreeLibrary in win32 compat headers
...
Typo...
2022-08-27 19:32:03 +02:00
Robin Kertels
bfd47ec876
[d3d9] Try to match either top or bottom mips in UpdateTexture
2022-08-26 20:56:42 +01:00
Philip Rebohle
91bdc8d06c
[d3d11] Expose feature level 12_0
2022-08-26 05:53:03 +02:00
Philip Rebohle
91ff6d68e1
[d3d11] Expose support for tiled resources
2022-08-26 05:53:03 +02:00
Philip Rebohle
790da79512
[d3d11] Implement min/max filters
2022-08-26 05:53:03 +02:00
Philip Rebohle
0a222aaaf0
[d3d11] Implement CopyTiles and UpdateTiles
2022-08-26 05:53:03 +02:00
Philip Rebohle
ca41bb4ea4
[d3d11] Implement CopyTileMappings
2022-08-26 05:53:03 +02:00
Philip Rebohle
ff2ff37696
[d3d11] Implement UpdateTileMappings
2022-08-26 05:53:03 +02:00
Philip Rebohle
5130638ebe
[d3d11] Implement ResizeTilePool
2022-08-26 05:53:03 +02:00
Philip Rebohle
e8f59bfd7c
[d3d11] Implement tile pool creation
2022-08-26 05:53:03 +02:00
Philip Rebohle
0cd67cb98a
[d3d11] Implement tiled image creation
2022-08-26 05:53:03 +02:00
Philip Rebohle
0637fdf82e
[d3d11] Implement tiled buffer creation
2022-08-26 05:53:03 +02:00
Philip Rebohle
7f856b545a
[d3d11] Implement format feature check for tiled resources
2022-08-26 05:53:03 +02:00
Philip Rebohle
ca0dedd213
[d3d11] Implement multisampling support check for tiled resources
2022-08-26 05:53:03 +02:00
Philip Rebohle
3f7093325b
[d3d11] Implement GetResourceTiling
2022-08-26 05:53:03 +02:00
Philip Rebohle
f97660e210
[d3d11] Implement TiledResourceBarrier
2022-08-26 05:53:03 +02:00
Philip Rebohle
626ccef43b
[d3d11] Enable sparse features if supported by the device
2022-08-26 05:53:03 +02:00
Philip Rebohle
eaa5d16616
[dxbc] Use texel buffers for raw/structured buffers with sparse feedback
2022-08-26 05:53:03 +02:00
Philip Rebohle
336aafcdf7
[dxbc] Explicitly store whether a resource is a raw SSBO
2022-08-26 05:53:03 +02:00
Philip Rebohle
d6613f50c5
[dxbc] Implement ld for buffers with sparse feedback
2022-08-26 05:53:03 +02:00
Philip Rebohle
e58f9a5e99
[dxbc] Implement ld for images with sparse feedback
2022-08-26 05:53:03 +02:00
Philip Rebohle
db3b2e23fb
[dxbc] Implement ld_uav_typed with sparse feedback
2022-08-26 05:53:03 +02:00
Philip Rebohle
0faba649da
[dxbc] Implement sample operations with sparse feedback
2022-08-26 05:53:03 +02:00
Philip Rebohle
d5b68b3642
[dxbc] Implement gather operations with sparse feedback
2022-08-26 05:53:03 +02:00
Philip Rebohle
614024873d
[dxbc] Implement CheckAccessFullyMapped instruction
2022-08-26 05:53:03 +02:00
Philip Rebohle
eb8a238d6f
[dxbc] Add definitions for sparse feedback instructions
2022-08-26 05:53:03 +02:00
Philip Rebohle
70158fa9cf
[spirv] Add support for sparse image opcodes
2022-08-26 05:53:03 +02:00
Philip Rebohle
2329c71b6f
[dxvk] Implement sampler reduction mode
2022-08-26 05:53:03 +02:00
Philip Rebohle
43b19f773c
[dxvk] Introduce initSparseImage
2022-08-26 05:53:03 +02:00
Philip Rebohle
fc0d952edb
[dxvk] Introduce copySparsePages{To,From}Buffer
2022-08-26 05:53:03 +02:00
Philip Rebohle
d5348a0cf0
[dxvk] Introduce updatePageTable
2022-08-26 05:53:03 +02:00
Philip Rebohle
12d2f8a9d4
[dxvk] Expose sparse binding operations as part of the command list
2022-08-26 05:53:03 +02:00
Philip Rebohle
2615af7664
[dxvk] Submit sparse binding operations alongside command buffers
2022-08-26 05:53:03 +02:00
Philip Rebohle
d3b6502a17
[dxvk] Introduce DxvkSparseBindSubmission
2022-08-26 05:53:03 +02:00
Philip Rebohle
3057f6a51b
[dxvk] Add structures for sparse binding operations
2022-08-26 05:53:03 +02:00
Philip Rebohle
f9db4921e0
[dxvk] Implement sparse memory allocator
2022-08-26 05:53:03 +02:00
Philip Rebohle
6f216f9df4
[dxvk] Do not discard sparse buffers
...
This would only blow up.
2022-08-26 05:53:03 +02:00
Philip Rebohle
dd54de4d97
[dxvk] Introduce DxvkPagedResource
2022-08-26 05:53:03 +02:00
Philip Rebohle
2d124b811b
[dxvk] Implement sparse image creation
2022-08-26 05:53:03 +02:00
Philip Rebohle
f7c255de2a
[dxvk] Implement sparse buffer creation
2022-08-26 05:53:03 +02:00
Philip Rebohle
bc3affc264
[dxvk] Add functionality to query sparse metadata
2022-08-26 05:53:03 +02:00
Philip Rebohle
e923cc5b69
[dxvk] Change emitGraphicsBarrier to specify a dependency
2022-08-26 05:53:03 +02:00
Philip Rebohle
388288114a
[dxvk] Find a sparse binding queue
2022-08-26 05:53:03 +02:00
Philip Rebohle
71c9c4a5cc
[dxvk] Log sparse features
2022-08-26 05:53:03 +02:00
Philip Rebohle
6e6d64b83e
[dxvk] Remove redundant error message
2022-08-26 05:53:03 +02:00
Philip Rebohle
3ee808afd6
[dxvk] Make memory object of an image publicly accessible
2022-08-26 05:53:03 +02:00
Philip Rebohle
edc74f4c8b
[d3d11] Handle D3D11_FEATURE_D3D11_OPTIONS5
2022-08-26 05:15:28 +02:00
Philip Rebohle
9b4e53cee2
[d3d11] Handle D3D11_FEATURE_SHADER_CACHE
2022-08-26 05:15:28 +02:00
Philip Rebohle
9420391dce
[d3d11] Adjust reported resource sharing caps
2022-08-26 05:15:28 +02:00
Philip Rebohle
f521a342d0
[d3d11] Report marker support appropriately
2022-08-26 05:15:28 +02:00
Blisto91
8f24093864
[util] cap MGS V Ground Zeroes vram at 4095
2022-08-26 03:52:02 +02:00
Philip Rebohle
a2a21cb4d3
[dxvk] Clean up internal memory allocation API
2022-08-25 18:23:02 +02:00
Philip Rebohle
5117210c93
[dxvk] Fix fb resolve barriers
...
No idea how that ended up broken *this* badly.
2022-08-25 02:25:23 +02:00
Philip Rebohle
559fa50f54
[d3d11] Introduce d3d11.enableContextLock option
2022-08-24 12:27:02 +02:00
Philip Rebohle
86bdda70b4
[d3d11] Move D3D10Multithread instance to immediate context
...
Deferred contexts do not support this.
2022-08-24 12:15:35 +02:00
Georg Lehmann
87b1f9fa2d
[dxso] Fix write mask for nrm
2022-08-23 00:38:04 +02:00
Philip Rebohle
17959640c3
[dxvk] Work around vkWaitSemaphore incorrectly returning with VK_TIMEOUT
2022-08-22 20:30:16 +02:00
Philip Rebohle
07a1045ffb
[dxvk] Add context methods for submission splitting
2022-08-22 15:44:00 +02:00
Philip Rebohle
6f2ff2562d
[dxvk] Support splitting command lists into multipe submissions
2022-08-22 15:43:23 +02:00
Philip Rebohle
e378be826e
[dxvk] Use DxvkCommandPool
2022-08-22 14:40:41 +02:00
Philip Rebohle
c3a721f562
[dxvk] Introduce DxvkCommandPool
2022-08-22 14:14:25 +02:00
Philip Rebohle
def93fd18b
[dxvk] Introduce DxvkCommandSubmissionInfo
2022-08-22 14:14:25 +02:00
Philip Rebohle
d367fac64e
[dxvk] Rework queue submission helper
...
We want this to be less verbose and smarter about when to perform
submissions for when we introduce the ability to split a command
list into multiple submissions.
2022-08-22 14:14:25 +02:00
Philip Rebohle
f88239719c
[dxvk] Explicitly mark execution command buffer as used
...
We can omit the execution command buffer in some circumstances,
and for the sparse resource changes we need to track this in
order to be able to merge consecutive sparse binding calls.
We only need to do this on action commands with observable side effects
as long as the backend still properly resets those command buffers.
All draw commands are implcitly covered by cmdBeginRendering.
2022-08-22 12:36:59 +02:00
Philip Rebohle
dd0d611d4d
[dxvk] Reintroduce binary semaphore for transfer <-> graphics sync
...
The global timeline semaphore does not work here since we could be
signaling it from two different queues at the same time, or out of
order.
2022-08-22 05:52:28 +02:00
Philip Rebohle
3d6b687e41
[dxbc] Remove useless lambda
2022-08-22 05:21:49 +02:00
Robin Kertels
a8b578b2a2
[d3d9] Fix crash when auto generating mip maps for unmappable textures
2022-08-22 01:48:35 +01:00
Philip Rebohle
3c38bdbd0e
[dxvk] Initialize DxvkSubmitInfo properly
...
We don't use the semaphore value here, but it shouldn't
contain undefined data.
2022-08-22 02:00:10 +02:00
Philip Rebohle
f385b4bb47
[dxvk] Use global timeline semaphore for command list synchronization
...
Replaces the old fence mechanism and also makes it easier to
synchronize across queues.
2022-08-22 00:40:07 +02:00
Philip Rebohle
cff9056915
[dxvk] Always enable timeline semaphore feature
2022-08-22 00:40:07 +02:00
Philip Rebohle
11ef1084d0
[dxvk] Rename semaphore stuff in command list code
2022-08-22 00:08:42 +02:00
Philip Rebohle
23c3960f65
[dxvk] Store WSI semaphore pair directly with the command list
2022-08-22 00:07:15 +02:00
Philip Rebohle
c1448d31fa
[meta] Use SPIRV-Headers repository as a submodule
2022-08-21 22:54:21 +02:00
Joshua Ashton
801d97806d
[d3d11] Stub out OpenSharedResourceGeneric on non-Windows
2022-08-21 22:37:13 +02:00
Joshua Ashton
be33ccbce9
[dxgi] Revert 538b132490
...
This breaks things for 32-bit, but it really shouldn't. My hypothesis currently is that the .lib generated is bogus, but the exports in the actual DLL are correct.
2022-08-21 20:28:40 +00:00
Joshua Ashton
a4261ddd14
[dxgi] Use high_resolution_clock get_counter instead of QPC for SyncQPCTime
...
Abstracts this across platforms
2022-08-21 22:24:06 +02:00
Joshua Ashton
9610e29a65
[util] Implement get_frequency + get_counter on non-Windows platforms
2022-08-21 22:24:06 +02:00
Joshua Ashton
8921f62539
[util] Rename getFrequency, getCounter -> get_frequency, get_counter
...
To be consistent with STL naming conventions
2022-08-21 22:24:06 +02:00
Joshie
1c1dba4624
[util] Implement thread set_priority on non-Windows platforms
2022-08-21 22:17:33 +02:00
Joshua Ashton
97350d6c35
[dxvk] Support for SDL2 WSI
2022-08-21 22:07:18 +02:00
Joshua Ashton
5787d9ee04
[dxvk] Check platform before building openvr + openxr cpps
2022-08-21 22:07:18 +02:00
Joshua Ashton
e6fb3e1509
[wsi] Add SDL2 implementation
2022-08-21 22:07:18 +02:00
Joshua Ashton
191d54e210
[build] Don't build D3D10 on non-Windows platforms
...
Not supported due to d3dcompiler schenanigans
2022-08-21 22:03:45 +02:00
Joshua Ashton
baba2e3c09
[d3d11] Use dxgi_dep instead of lib_dxgi
...
Fixes building on native.
2022-08-21 22:03:45 +02:00
Joshua Ashton
baa88d8cf1
[d3d11] Don't check for apitrace on non-Windows platforms
2022-08-21 22:03:45 +02:00
Joshua Ashton
a5db9d22f1
[dxvk] Disable VrInstance and DxvkXrProvider on native builds
...
If/when we want to support VR on native builds, we can deal with that then.
2022-08-21 22:03:45 +02:00
Joshua Ashton
8b7e0bc2fd
[dxgi] Include win32 compat headers where applicable
2022-08-21 21:40:55 +02:00
Joshua Ashton
968bdccbef
[d3d9] Include win32 compat headers where applicable
2022-08-21 21:40:55 +02:00
Joshua Ashton
a554a6d60d
[d3d11] Include win32 compat headers where applicable
2022-08-21 21:40:55 +02:00
Joshua Ashton
ba8868be24
[util] Add win32 compat header
...
Header of misc. stubs and re-implementations.
2022-08-21 21:40:55 +02:00
Joshua Ashton
ad386305ff
[d3d9] Correct DLLEXPORT for native builds
2022-08-21 21:36:50 +02:00
Joshua Ashton
f0f4258be3
[dxgi] Correct DLLEXPORT for native builds
2022-08-21 21:36:50 +02:00
Joshua Ashton
538b132490
[dxgi] Don't declspec dllexport on MinGW builds
...
Fixes ordinal exporting on MinGW on 32-bit builds.
Mirrors this D3D9 commit here: 904d3e6c90
2022-08-21 21:36:50 +02:00
Joshua Ashton
4a113c39d3
[d3d11] Remove compat definitions for older MinGW
...
These conflict with native builds, and have existed for a long time now.
2022-08-21 21:35:24 +02:00
Joshua Ashton
fad6f764ea
[dxgi] Remove unused DEVMODE variable
2022-08-21 21:35:09 +02:00
Joshua Ashton
e51c196ee9
[dxgi] Remove MonitorEnumProc and MonitorEnumInfo
...
Not used anymore, replaced by WSI abstraction.
2022-08-21 21:35:09 +02:00
Joshua Ashton
915ec4acc2
[dxvk] Remove WIN32 check for handle type in DxvkSharedHandleInfo
...
The initial implementation if-deffed this, but it doesn't need to be.
2022-08-21 21:34:39 +02:00
Joshua Ashton
38cd2f7290
[dxvk] Remove WIN32 check for handle type in DxvkFenceCreateInfo
...
On other platforms we always have a HANDLE and will return through a HANDLE anyway.
When we implement this on Linux, we can just add an `int fd` to the union and it can use that, and return it out as a HANDLE.
2022-08-21 21:34:39 +02:00
Joshua Ashton
0e4e9355cb
[d3d9] Ifdef out code for enumerating adapters by attached displays
2022-08-21 19:29:05 +00:00
Joshua Ashton
bf99127ee3
[d3d9] Stub out cursor code on non-Windows platforms
2022-08-21 19:29:05 +00:00
Joshua Ashton
c6c8acb000
[d3d9] Use wsi's isWindow in LeaveFullscreenMode
2022-08-21 19:29:05 +00:00
Joshua Ashton
5f9df1f6e3
[d3d9] Remove leftover GetWindowRect
...
This is already done for us.
2022-08-21 19:29:05 +00:00
Joshua Ashton
1c679edbfb
[d3d9] Use topath helpers in shader code
2022-08-21 21:28:04 +02:00
Joshua Ashton
0a203095d6
[d3d11] Use topath helper in shader code
2022-08-21 21:28:04 +02:00
Joshua Ashton
9d64982b23
[dxvk] Use path_string for getCacheFileName
2022-08-21 21:28:04 +02:00
Joshua Ashton
9509ec1144
[util] Define platform path_string type
2022-08-21 21:28:04 +02:00
Joshua Ashton
eda3ba6372
[vulkan] Toss obsolete fullscreen exclusive hack
...
Wine never had support for VK_EXT_exclusive_fullscreen and Proton since dropped support for it now that Doom External does not require it.
2022-08-21 21:26:28 +02:00
Joshua Ashton
5c2a748d96
[util] Rename always_inline to force_inline
...
This conflicts with other libraries using the always_inline attribute in GCC as it defines it with the same name.
2022-08-21 21:25:54 +02:00
Joshua Ashton
0dc3200951
[vulkan] Re-enable VK_USE_PLATFORM_WIN32_KHR everywhere
...
My initial idea was to if-def out the other extensions, but that's messy, so we just provide the needed types in the native headers now.
2022-08-21 19:31:33 +01:00
Philip Rebohle
1c35fbb33c
[util] Fix strlcpy compiler warning
2022-08-21 01:48:29 +01:00
Kassin Dornelles
f80347d9a9
[util] Remove RE:REV2 and RE5 workarounds
...
There's no real impact, it doesn't fix stuttering (for non-GPL drivers) and since GPL got merged this is not needed anymore
2022-08-21 01:52:39 +02:00
Joshua Ashton
16ff9b48cd
[dxgi] Enumerate interlaced modes if requested
2022-08-20 20:27:07 +02:00
Joshua Ashton
af802fbff8
[util] Delete util_monitor
...
No longer used, replaced by new wsi interface
2022-08-20 20:27:07 +02:00
Joshua Ashton
f3992658a4
[d3d9] Remove unused util_monitor include
2022-08-20 20:27:07 +02:00
Joshua Ashton
69eba93764
[d3d9] Make window proc code use new wsi interface
2022-08-20 20:27:07 +02:00
Joshua Ashton
9690b2a9e4
[d3d9] Make adapter code use new wsi abstraction
2022-08-20 20:27:07 +02:00
Joshua Ashton
dac7e38f4b
[d3d9] Make swapchain use new wsi abstraction
2022-08-20 20:27:07 +02:00
Joshua Ashton
654b517057
[d3d9] Add helpers for new WSI interface
2022-08-20 20:27:07 +02:00
Joshua Ashton
bc8e75fdfa
[dxgi] Make adapter code use new wsi interface
2022-08-20 20:27:07 +02:00
Joshua Ashton
59b943cf12
[dxgi] Remove unused util_monitor include
2022-08-20 20:27:07 +02:00
Joshua Ashton
21744198e0
[dxgi] Make swapchain use new wsi interface
2022-08-20 20:27:07 +02:00
Joshua Ashton
e13a9f9cf6
[dxgi] Make output code use new wsi interface
2022-08-20 20:27:07 +02:00
Joshua Ashton
71a630801e
[dxgi] Add helpers for new wsi interface
2022-08-20 20:27:07 +02:00
Joshua Ashton
9f9c93dcbd
[d3d11] Use new wsi interface
2022-08-20 20:27:07 +02:00
Joshua Ashton
4f80ffd830
[vulkan] Use surface creation from wsi interface
2022-08-20 20:27:07 +02:00
Joshua Ashton
86b603b8f9
[dxvk] Link against new wsi lib
2022-08-20 20:27:07 +02:00
Joshua Ashton
b875d49c85
[wsi] Move DxvkWindowState to wsi platform header
2022-08-20 20:27:07 +02:00
Joshua Ashton
efa6523e3e
[wsi] Implement wsi interface for Windows
2022-08-20 20:27:07 +02:00
Joshua Ashton
050e5b327c
[wsi] Define wsi interface
2022-08-20 20:27:07 +02:00
Philip Rebohle
76ee76d6da
[d3d9,dxso] Use DemoteToHelperInvocation for alpha test
...
May enable additional compiler optimizations.
2022-08-19 14:49:18 +00:00
Philip Rebohle
2d92679cd1
[dxso] Remove fallback path for discards
2022-08-19 13:36:54 +00:00
Philip Rebohle
165648017e
[dxbc] Remove fallback path for discards
2022-08-19 13:36:54 +00:00
Philip Rebohle
ea4e0bc470
[d3d9,d3d11] Require shaderDemoteToHelperInvocation feature
2022-08-19 13:36:54 +00:00
Georg Lehmann
155944c2b4
[dxso] normalize 0 to 0 with strict float emulation
2022-08-19 13:36:14 +00:00
Philip Rebohle
85cc87e42a
[d3d9] Fix invalid shader in fixed-function alpha test
2022-08-18 17:08:59 +02:00
Philip Rebohle
658d824ddd
[d3d11] Silence log spam for invalid image operations
2022-08-18 14:48:29 +02:00
Philip Rebohle
4869b0defa
[dxvk] Fix race condition requestCompileShader
2022-08-18 02:57:45 +02:00
Philip Rebohle
a695644fea
[d3d9] Remove alphaTestWiggleRoom option
2022-08-18 00:10:39 +02:00
Philip Rebohle
5a3cb5ad3e
[d3d9] Adjust alpha test precision based on render target format
...
More or less matches what Nvidia's D3D9 driver does on Turing.
2022-08-18 00:10:39 +02:00
Philip Rebohle
47fa3824dc
[d3d9] Re-implement alpha test to support configurable accuracy
...
The current implementation always uses 12 bits of accuracy.
2022-08-18 00:10:39 +02:00
Philip Rebohle
2c713a34c9
[d3d9,dxso] Factor out common alpha test code
2022-08-18 00:10:39 +02:00
Philip Rebohle
3806bd44d8
[dxvk] Change descriptor info to take only one shader stage
...
And fix the binding index -> descriptor mapping.
This affects D3D9 since the spec constant change.
2022-08-17 22:40:58 +02:00
Philip Rebohle
3c2fc41e4c
[d3d9] Re-bind framebuffer if RT hazards change
...
Otherwise we never set the feedback loop bits in the backend.
2022-08-17 18:36:30 +00:00
Philip Rebohle
52314ba4fd
[dxvk] Do not log storage image features that we no longer enable
2022-08-17 15:39:03 +02:00
Philip Rebohle
5e394b5554
[dxvk] Remove old format support queries
2022-08-17 15:39:03 +02:00
Philip Rebohle
80fc1d8b25
[d3d9] Use new format support queries
2022-08-17 15:39:03 +02:00
Philip Rebohle
13152088d4
[dxgi] Use new format support queries to initialize format table
2022-08-17 15:39:03 +02:00
Philip Rebohle
4aeb397ba3
[d3d11] Use new format support queries to check D3D11 format support
2022-08-17 15:39:03 +02:00
Philip Rebohle
099c70c2bd
[d3d11] Use new format support queries in resource creation
2022-08-17 15:26:03 +02:00
Philip Rebohle
3717922381
[d3d11,dxbc] Rework check for TypedUAVLoadAdditionalFormats
2022-08-17 15:26:03 +02:00
Philip Rebohle
653a98f01b
[dxvk] Use new format support queries
2022-08-17 15:26:03 +02:00
Philip Rebohle
cc8010fb7c
[dxvk] Add format feature queries to DxvkDevice
2022-08-17 15:20:13 +02:00
Philip Rebohle
61025c0079
[dxvk] Don't disable frame rate limiter if vsync is enabled
...
This only works if we know the actual refresh rate of the display.
However, in a wine virtual desktop or with proton's fshack, this
is often not the case, so we'd see a 60 Hz mode on a high-refresh
rate display and never actually enable the limiter.
2022-08-17 01:53:24 +02:00
Riesi
04bc1bac73
[util] Limit Beyond Good and Evil FPS to 60
...
UI breaks on higher FPS
2022-08-16 19:11:41 +02:00
Philip Rebohle
e0af668f6c
[dxvk] Use DxvkBindingLayoutObjects for set lookup directly
...
Avoids pointer dereferencing on a really hot code path. This is also
safe since there's a 1:1 mapping between the VkPipelineLayout and the
given ovbject type.
2022-08-16 15:35:57 +02:00
Philip Rebohle
9f9324c421
[dxvk] Use existing bit mask iterator for descriptor set allocation
2022-08-16 15:24:39 +02:00
Joshua Ashton
084969135b
[d3d9] Only set feedback loop usage on textures, not plain surfaces
2022-08-16 12:33:17 +00:00
Joshua Ashton
cf9e217e7b
[util] Support for fps limiter on non-Windows platforms
...
Defaults to a sleep granularity of 0.5ms, which is slightly on the cautious side.
Calls through to std::this_thread::sleep_for directly, which calls through to nanosleep.
2022-08-16 14:32:07 +02:00
Joshua Ashton
d1e2b89282
[util] Use chrono literal for ms in fps limiter
2022-08-16 14:32:07 +02:00
Joshua Ashton
5fcc9a1bd1
[util] Move platform specific sleep to own function in fps limiter
2022-08-16 14:32:07 +02:00
Joshua Ashton
05a5b82f59
[util] Move sleep granularity getting to own function
2022-08-16 14:32:07 +02:00
Joshua Ashton
b885883e06
[util] Rename NtTimerDuration to TimerDuration
2022-08-16 14:32:07 +02:00
Joshua Ashton
a78aab147e
[d3d9] Add feedback loop usage for DS
2022-08-16 10:39:06 +00:00
Joshua Ashton
870dd18f92
[d3d9] Set VK_IMAGE_USAGE_ATTACHMENT_FEEDBACK_LOOP_BIT_EXT for render targets
...
Closes : #2825
2022-08-16 08:43:52 +00:00
Joshua Ashton
6baaa3a5f2
[d3d9] New window proc code on multiple platforms
2022-08-14 17:22:58 +00:00
Joshua Ashton
7506f65801
[d3d9] Move window proc handling code to own file
2022-08-14 17:18:10 +00:00
Robin Kertels
de8d2b37bb
[d3d9] FF: Don't change flatShadingMask for outputs
2022-08-13 14:38:57 +01:00
Robin Kertels
46cb05ce45
[d3d9+util] Always ignore D3DLOCK_DONOTWAIT
...
We only ever stall when locking a texture that was
previously used with GetRenderTargetData or
GetFrontBufferData. Games are known to break
if locking those textures doesn't succeed.
2022-08-12 14:18:13 +01:00
Philip Rebohle
0d33d063ca
[dxvk] Remove device LUID workaround
...
winevulkan properly supports this now.
2022-08-11 16:01:53 +02:00
Philip Rebohle
673797c36a
[dxvk] Fix hang on exit with high priority queue
...
No idea why I'm not seeing hangs on my end, but this is definitely a bug.
2022-08-11 14:00:57 +02:00
Philip Rebohle
715b5119e6
[dxvk] Fix check in DxvkShaderPipelineLibrary::compilePipeline
...
Since we destroy pipelines on 32-bit we should just make sure this
doesn't get executed unnecessarily.
2022-08-11 13:43:38 +02:00
Philip Rebohle
a4848201f8
[dxvk] Update buffer views in commitGraphicsBarriers
...
Otherwise we might end up accessing stale buffer slices, since this
happens before descriptor updates. This is not needed for compute.
Also fix weird indentation while we're at it.
2022-08-11 13:13:02 +02:00
Philip Rebohle
9bd0040a90
[d3d9] Request high-priority shader compiles as necessary
2022-08-11 12:39:28 +02:00
Philip Rebohle
d3ab905621
[d3d11] Request high-priority shader compiles as necessary
...
This can reduce stutter in case shaders are needed immediately while
background threads are still busy compiling a different set of shaders.
2022-08-11 12:39:28 +02:00
Philip Rebohle
c3a53127d7
[dxvk] Add high-priority queue for shader compiles
...
As well as an API to queue shaders as high priority.
2022-08-11 12:39:28 +02:00
Philip Rebohle
f09f11aad0
[dxvk] Track pipeline library compile for each shader
2022-08-11 12:39:25 +02:00
Robin Kertels
b5b74116fa
[d3d9] Fix rare hang when waiting for staging buffer markers
2022-08-11 12:37:28 +02:00
Robin Kertels
5cdee45387
[util] Disable direct buffer mapping for GHWT
...
The game ends up discarding a 11MB buffer which causes it
to run out of address space and crash. Disabling direct buffer
mapping makes it use staging buffers and the staging buffer
limit saves the day.
2022-08-11 04:36:01 +01:00
Philip Rebohle
85c278f515
[dxvk] Don't try to merge buffer ranges in barrier list
...
Too slow, doesn't work most of the time anyway.
2022-08-11 00:38:49 +02:00
Philip Rebohle
4c7da80c14
[dxvk] Simplify barrier image and buffer slice implementations
...
Pre-process the given ranges so that compare and merge
operations become both simpler and faster.
2022-08-11 00:29:31 +02:00
Philip Rebohle
8aae9c85bb
[dxvk] Optimize barrier hash table lookup
...
Using a prime as the table size is technically better, but that
integer division kind of hurts when we're spamming look-ups.
2022-08-10 23:08:28 +02:00
Philip Rebohle
ad020c23f9
[dxvk] Optimize barrier logic
...
The is*Dirty methods can exit early if the resource to check
is only used for reading. Only call get*Access to check for
write-after-write scenarios.
2022-08-10 20:47:52 +02:00
Philip Rebohle
11fbcd3131
[dxvk] Rework compute barrier handling to use common functions
...
Cleans up code a bit and should technically even make things a bit
more efficient.
2022-08-10 19:28:35 +02:00
Philip Rebohle
01014c1a2b
[dxvk] Rework checkGfx*Barrier methods
2022-08-10 19:28:35 +02:00
Philip Rebohle
9a6c378f3d
[dxvk] Only use one descriptor set for compute shaders
...
Simplifies things a bit and avoids redundant sets in the pipeline layout.
2022-08-10 19:28:32 +02:00
Philip Rebohle
02f653fdd2
[d3d9] Limit amount of staging memory in flight
2022-08-10 17:31:55 +02:00
Robin Kertels
9d981ec1a8
[dxvk] Introduce DxvkMarker
...
Co-authored-by: Philip Rebohle <philip.rebohle@tu-dortmund.de>
2022-08-10 17:31:55 +02:00
Robin Kertels
8feabc653e
[d3d9] Do implicit flush after uploading textures or buffers
2022-08-10 17:31:55 +02:00
Robin Kertels
f031ce44cf
[util] Set lower memory limits for Guitar Hero WT
2022-08-10 17:31:55 +02:00
Philip Rebohle
67f937111d
[dxvk] Remove shrinkNvidiaHVVHeap workaround
...
No longer needed.
2022-08-10 16:39:58 +02:00
Philip Rebohle
3edb0ef114
[d3d11] Ensure that all required inputs are defined by input layout
2022-08-10 14:12:39 +02:00
Philip Rebohle
5540df955c
[dxbc] Rework semantic name matching
2022-08-10 14:11:47 +02:00
Philip Rebohle
ec0c377cf8
[dxvk] Disable maintenance4 feature
...
We don't *really* need it (although some of the guarantees are nice to
have). For some reason, this completely destroys GPU-bound performance
on AMDVLK and AMD's Windows driver.
2022-08-10 01:04:38 +02:00
Paul Gofman
59441b1ff5
[dxgi] Also support use after free in IDXGISwapChain::SetFullscreenState()
2022-08-09 23:10:50 +02:00
Joshua Ashton
8580bb32ca
[vulkan] Only define VK_USE_PLATFORM_WIN32_KHR on Windows
2022-08-09 14:16:50 +01:00
Joshua Ashton
50018de483
[util] Use topath helper for fstreams
2022-08-09 14:16:50 +01:00
Joshua Ashton
5de058e14a
[util] Introduce topath helper
...
Manages converting strings to the right type for paths per-platform
2022-08-09 14:16:50 +01:00
Joshua Ashton
d9000485ea
[util] Add stubs for shared resources on other platforms
2022-08-09 14:16:50 +01:00
Joshua Ashton
8c3a44cac4
[util] Add stubs for GDI functions on other platforms
2022-08-09 14:16:50 +01:00
Philip Rebohle
ab1d629961
[dxvk] Implement lifetime tracking for graphics pipelines
2022-08-09 13:40:58 +02:00
Philip Rebohle
764de6ff82
[dxvk] Add use counter to pipeline libraries
...
And destroy Vulkan pipeline objects once the counter reaches zero.
2022-08-09 13:40:58 +02:00
Philip Rebohle
1f9db49727
[dxvk] Change member order in pipeline manager
...
Ensures that pipelines are destroyed before pipeline libraries.
2022-08-09 13:40:58 +02:00
Philip Rebohle
b97dba3712
[dxvk] Use shader module identifier for subsequent pipeline libary compiles
...
Should further reduce the hit we take from destroying pipeline libraries.
2022-08-09 13:40:58 +02:00
Philip Rebohle
4bc2d713fb
[dxvk] Destroy shader pipeline libraries after initial compile on 32-bit
...
This alone saves ~700 MiB of address space in the Resident Evil 6 main
menu on Nvidia.
2022-08-09 13:40:58 +02:00
Philip Rebohle
915b03ba7b
[dxvk] Add option to control pipeline lifetime tracking
2022-08-09 13:40:58 +02:00
Philip Rebohle
eddbe73ba4
[dxbc] Fix off-by-one error for primitive vertex counts
...
Not sure if it's even possible to use this, but this was clearly a bug.
2022-08-09 03:19:59 +02:00
Philip Rebohle
d6253aeae6
[dxvk] Order descriptors by type and binding
...
Reduces the number of unique descriptor set layouts further,
which may help with descriptor pool usage, and also makes
branching more predictable for the CPU.
2022-08-09 03:19:59 +02:00
Robin Kertels
1fcd5dc0af
[d3d9] Unmap stored shader bytecode
2022-08-08 23:15:21 +01:00
Robin Kertels
49e9ba2ca7
[d3d9] Move d3d9 bytecode into D3D9Shader
...
This reduces the amount of times we copy the bytecode
and actually frees it when the game frees the associated shader.
2022-08-08 23:15:21 +01:00
Robin Kertels
1628b9e63a
[d3d9] Add 64bit implementation for D3D9MemoryAllocator
...
This just uses malloc & free but allows us to use
the same code for D3D9 shader bytecode on 64 bit builds.
2022-08-08 23:15:21 +01:00
Robin Kertels
01fb40423d
[d3d9] Remove some dead debug code
...
Oops.
2022-08-08 23:15:21 +01:00
Robin Kertels
36d8bb77a5
[d3d9] Fix synchronization in UpdateTextureFromBuffer
2022-08-08 23:14:30 +01:00
Robin Kertels
ac1e44f120
[d3d9] Fix typo
2022-08-08 23:14:30 +01:00
Derek Lesho
57dcf73a54
d3d11: Fix shared textures that export both NT and KMT handles.
...
We should always create the DxvkImage with the KMT handle type, so that the call later to openKmtHandle succeeds. Also, don't free sharedHandle when exporting an NT handle.
2022-08-08 23:31:01 +02:00
Philip Rebohle
0ad7a08c49
[dxvk] Get rid of some old debug code for compute pipelines
2022-08-08 18:58:22 +02:00
Philip Rebohle
c392308e6f
[dxvk] Fix spec constant selector test for compute shaders
...
This isn't supported on compute.
2022-08-08 18:54:11 +02:00
Philip Rebohle
7789fd53ff
[d3d9] Use new flat shading state for fixed-function pipelines
2022-08-08 13:34:59 +02:00
Philip Rebohle
8f1024c094
[d3d9] Use new flat shading state for DXSO shaders
2022-08-08 13:34:59 +02:00
Philip Rebohle
dfdb729476
[dxvk] Add SPIR-V pass to decorate variables as flat on demand
2022-08-08 13:34:59 +02:00
Philip Rebohle
a84beae112
[dxvk] Add flat shading field to pipeline state
2022-08-08 13:34:59 +02:00
Philip Rebohle
0adf64f085
[dxvk] Add flat shading parameter to rasterizer state
2022-08-08 13:34:59 +02:00
Joshua Ashton
4f0c217633
[d3d9] Fix recording MultiplyTransform
2022-08-08 03:53:25 +01:00
Philip Rebohle
43df6cfa45
[dxvk] Fix indentation
...
Thanks, VSCode.
2022-08-08 04:50:50 +02:00
Philip Rebohle
2b2c44aa99
[dxvk] Move image view cookie to DxvkResource
2022-08-07 21:24:57 +02:00
Philip Rebohle
4831909656
[d3d9] Enable apitrace mode for The Witcher
2022-08-07 20:04:37 +02:00
Philip Rebohle
a74f8da7b7
[d3d11] Use bindVertexBufferRange whenever possible
2022-08-07 19:03:51 +02:00
Philip Rebohle
97f0d1dfb8
[d3d11] Use bindIndexBufferRange whenever possible
2022-08-07 19:03:51 +02:00
Philip Rebohle
35dde3e1b9
[d3d11] Change how resourece binding treats null resources
2022-08-07 19:03:51 +02:00
Philip Rebohle
897e7816f0
[d3d11] Don't return undefined slices from GetBufferSlice
...
Instead, return a slice with length zero.
2022-08-07 19:03:51 +02:00
Philip Rebohle
08b9b0eb44
[dxvk] Introduce bindVertexBufferRange and bindIndexBufferRange
2022-08-07 19:03:51 +02:00
Philip Rebohle
26d46e7f80
[dxvk] Handle bound buffers with zero size in the backend
2022-08-07 18:45:17 +02:00
Philip Rebohle
d314bee86d
[d3d11] Fix bad signature of various BindToContext methods
2022-08-07 18:44:47 +02:00
Philip Rebohle
45a1587b88
[d3d11] Fix some possible constant buffer binding bugs
2022-08-07 18:44:47 +02:00
Philip Rebohle
2e6a2f1be3
[dxvk] Make shader stage parameter in bindShader a template parameter
2022-08-07 18:44:44 +02:00
Philip Rebohle
29a2cb9a5e
[d3d9,d3d11] Make GetShaderStage functions constexpr
2022-08-07 18:44:44 +02:00
Philip Rebohle
12c2d24d5c
[dxvk] Remove bindResourceView method
2022-08-07 17:59:20 +02:00
Philip Rebohle
69b15b7fe6
[dxvk] Use new resource view binding methods in swapchain blitter
2022-08-07 17:59:20 +02:00
Philip Rebohle
eebcfcf973
[hud] Use new resource view binding methods
2022-08-07 17:59:20 +02:00
Philip Rebohle
1c1958be44
[d3d9] Use new resource view binding methods
2022-08-07 17:59:20 +02:00
Philip Rebohle
28ecf8268d
[d3d11] Use new resource view binding methods
2022-08-07 17:59:20 +02:00
Philip Rebohle
317850e16f
[dxvk] Introduce bindResourceImageView and bindResourceBufferView methods
2022-08-07 17:59:20 +02:00
Philip Rebohle
88bdf2b592
[dxvk] Use vertex extent from vertex binding info
...
Computing this at runtime is fairly expensive, so try to avoid.
2022-08-07 17:58:19 +02:00
Philip Rebohle
6bcb0a0d61
[d3d11] Compute vertex extent in CreateInputLayout
2022-08-07 17:58:19 +02:00
Philip Rebohle
64169316e6
[d3d9] Compute vertex extent in BindInputLayout
2022-08-07 17:58:19 +02:00
Philip Rebohle
bb8a87196f
[dxvk] Add vertex extent to vertex binding info
2022-08-07 17:58:19 +02:00
Robin Kertels
ddb528cc8e
[d3d9] Change texture before updating fetch4
2022-08-07 00:56:38 +01:00
Blisto91
7b28bbae11
[util] Disable unmapping for Saints Row 2
2022-08-06 21:13:32 +01:00
Georg Lehmann
135b8a0e53
[dxso] Setup spec ubo for pixel shaders
2022-08-06 12:35:23 +02:00
Georg Lehmann
6589966fce
[d3d9] Fix FF VS fog with GPL
2022-08-06 12:35:23 +02:00
Joshua Ashton
65da0da954
[d3d9] Support for graphics pipeline libraries
2022-08-06 01:20:22 +00:00
Joshua Ashton
9108f8c76c
[d3d9] Clean up fetch4 handling
2022-08-06 01:35:43 +01:00
Joshua Ashton
8c9601b4cd
[d3d9] Remove generalHazards option
...
Move everything into MarkRenderHazard.
We are doing a big bump for driver support anyway, no reason to keep this around. Old drivers can take the perf penalty.
2022-08-06 01:33:30 +01:00
Joshua Ashton
63d582a6e7
[d3d9] Use VK_IMAGE_LAYOUT_ATTACHMENT_FEEDBACK_LOOP_EXT for hazards if available
2022-08-06 01:33:30 +01:00
Joshua Ashton
90abd993d4
[d3d9] Pass feedback loop aspect mask to backend
2022-08-06 01:33:30 +01:00
Joshua Ashton
8d070e54a1
[d3d9] Enable extAttachmentFeedbackLoopLayout feature if available
2022-08-06 01:33:30 +01:00
Joshua Ashton
31d17efb48
[dxvk] Add feedback loop aspect flags to bindRenderTargets
2022-08-06 01:33:30 +01:00
Joshua Ashton
dff514c924
[dxvk] Add hazard tracking to fragment output state
...
We need this to set the right pipeline bits for supporting attachment feedback loops on some vendors.
2022-08-06 01:33:30 +01:00
Joshua Ashton
43f53f3c0e
[dxvk] Enable VK_EXT_attachment_feedback_loop_layout if available
2022-08-06 01:33:30 +01:00
Joshua Ashton
49b76fdd07
[dxvk] Support feedback loop layout in pickLayout
2022-08-06 01:33:30 +01:00
Joshua Ashton
9cf5c648d3
[vulkan] Add feedback loop layout to getWritableAspectsForLayout
2022-08-06 01:33:30 +01:00
Philip Rebohle
e7b7299ec1
[dxvk] Also consider built-ins declared via OpMemberDecorate
...
Otherwise we'll miss D3D11 shaders. Oops...
2022-08-06 02:28:39 +02:00
Philip Rebohle
4d9c09b5e7
[dxvk] Don't use pipeline libraries for VS that doesn't export position
2022-08-06 02:09:55 +02:00
Philip Rebohle
3aa786fb6f
[dxvk] Get rid of MaxNumActiveBindings
...
This only existed due to the binding mask, which we removed with
the null descriptor rework. We can basically support an unlimited
number of descriptors now.
2022-08-06 01:53:08 +02:00
Philip Rebohle
b950102233
[dxvk] Don't use MaxNumActiveBindings for descriptor updates
2022-08-06 01:44:56 +02:00
Philip Rebohle
6fba4c47fe
[dxvk] Don't use MaxNumActiveBindings when creating descriptor set layouts
2022-08-06 01:37:17 +02:00
Philip Rebohle
2fe61675bf
[dxvk] Use existing bit mask iterator when updating descriptor sets
...
And clean up the code a little.
2022-08-05 21:43:11 +02:00
Robin Kertels
9e1ecec79f
[d3d9] Disable fetch4 when binding an incompatible texture
...
Fixes lighting in Spider-Man: Shattered Dimensions.
2022-08-05 19:33:32 +01:00
Philip Rebohle
d498551a23
[dxso] Add bit selectors to D3D9ShaderSpecConstantManager
...
Avoids doing double bitfield extractions which isn't
optimized right now.
2022-08-05 19:31:02 +01:00
Joshua Ashton
9619377723
[dxso] Convert opIEqual 1 -> opINotEqual 0
...
Better chance of getting optimized
2022-08-05 19:31:02 +01:00
Joshua Ashton
b2cbf198e4
[d3d9, dxso] Refactor spec constants to use a bitfield layout
...
This allows us to use the same information to dump into a push constant for unoptimized pipelines.
2022-08-05 19:31:02 +01:00
Joshua Ashton
438ae5cdfc
[dxso] Fix getting sampler type of vertex textures
...
Fixes: c7afe0dd23
2022-08-05 19:31:02 +01:00
Philip Rebohle
7e237b33b7
[d3d11] Track highest bound unordered access view
2022-08-05 14:13:25 +02:00
Philip Rebohle
934caa3fd7
[d3d11] Track highest bound vertex buffer
2022-08-05 14:13:25 +02:00
Philip Rebohle
3dbd9d8659
[d3d11] Track highest bound sampler
2022-08-05 14:13:25 +02:00
Philip Rebohle
6c372e40f6
[d3d11] Track highest bound shader resource
2022-08-05 14:13:24 +02:00
Philip Rebohle
5dd2b20940
[d3d11] Track highest bound constant buffer
2022-08-05 14:13:24 +02:00
Philip Rebohle
18c4ca8e92
[d3d11] Introduce D3D11MaxUsedBindings
...
And use it in ResetCommandListState, in order to avoid redundant state changes.
2022-08-05 14:13:24 +02:00
Philip Rebohle
ebbb77518a
[d3d11] Clean up after performing video blit
...
Otherwise, with the upcoming clear/restore optimizations,
we'd possibly leave some resources bound.
2022-08-05 14:13:24 +02:00
Philip Rebohle
9f07bc6532
[d3d11] Refactor shader state
2022-08-05 14:13:24 +02:00
Philip Rebohle
95ab1465ab
[d3d11] Add reset method to more context state
2022-08-05 14:13:24 +02:00
Philip Rebohle
4e1f6e5efd
[d3d11] Refactor unordered access view and output merger state
2022-08-05 14:13:24 +02:00
Philip Rebohle
8383423fbe
[d3d11] Refactor sampler state
2022-08-05 14:13:24 +02:00
Philip Rebohle
1b4cb66dc3
[d3d11] Refactor shader resource state
2022-08-05 14:13:24 +02:00
Philip Rebohle
33e169e85f
[d3d11] Refactor constant buffer state
2022-08-05 14:13:24 +02:00
Philip Rebohle
7685a86494
[d3d11] Change state restoring behaviour in SwapDeviceContextState
2022-08-05 14:13:24 +02:00
Philip Rebohle
c7d9201303
[d3d11] Change state clearing behaviour around deferred contexts
...
Resetting command list state at the end of each D3D11 command list,
as well as before ExecuteCommandList, will allow us to track which
state needs to be reset, which may save us a significant amount of
CPU work.
2022-08-05 14:13:24 +02:00
Philip Rebohle
91fc0a8688
[d3d11] Rename and factor out some state clearing methods
2022-08-05 14:13:21 +02:00
Philip Rebohle
211ad0efcc
[dxvk] Always use init barrier set for initial transition in initImage
...
This allows us to batch image initialization barriers better.
2022-08-05 12:46:41 +02:00
Philip Rebohle
0f94971193
[d3d11,d3d9] Lock context/device in EndFrame
...
Fixes #2787 .
2022-08-05 12:10:03 +02:00
Philip Rebohle
37a2b02558
[d3d11] Fix compiler error on GCC 10.3
2022-08-04 18:42:13 +02:00
Philip Rebohle
67c11e63e6
[dxvk] Remove old resource binding methods
2022-08-04 13:43:36 +02:00
Philip Rebohle
37337dd4a6
[dxvk] Use new binding methods for swapchain blitter
2022-08-04 13:43:36 +02:00
Philip Rebohle
77e7c7c6b8
[hud] Use new binding methods for HUD rendering
2022-08-04 13:43:36 +02:00
Philip Rebohle
9d967f2fed
[d3d11] Use new binding methods in video context
2022-08-04 13:43:36 +02:00
Philip Rebohle
e49524fcb0
[d3d11] Move GetType and GetContextFlags to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
1d2d712dfb
[d3d11] Move d3d11_context_common.* -> d3d11_context.*
2022-08-04 13:43:36 +02:00
Philip Rebohle
30b1cac0ae
[d3d11] Remove old D3D11DeviceContext class
2022-08-04 13:43:36 +02:00
Philip Rebohle
20df9fc899
[d3d11] Move all remaining context code to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
a3ed84c0c1
[d3d11] Move remaining D3D11DeviceContext members to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
b20bfe763e
[d3d11] Move D3D10Multithread instance to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
9a2d8878ef
[d3d11] Move Track*SequenceNumber methods to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
532b3a6add
[d3d11] Move EmitCs and related methods to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
e0ea272c0d
[d3d11] Move misc methods to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
9e916edef9
[d3d11] Move Draw* and Dispatch* methods to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
1d87af062c
[d3d11] Move ResolveSubresource to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
17c318864e
[d3d11] Move Apply* methods to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
7c82ed35b2
[d3d11] Move internal resource update methods to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
956bad5e84
[d3d11] Move GenerateMips to D3D11CommonContext
2022-08-04 13:43:36 +02:00
Philip Rebohle
751d7467df
[d3d11] Move Clear* methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
50942cd2d9
[d3d11] Move Copy* methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
163af1309d
[d3d11] Move SetPredication to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
b8b5662461
[d3d11] Move Discard* methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
efea51c254
[d3d11] Move SO* methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
4d498851a8
[d3d11] Move RS* methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
1ef9d5389b
[d3d11] Move ClearState and RestoreState to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
f664e87749
[d3d11] Move CSSetUnorderedAccessViews to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
159eed825f
[d3d11] Move *SetSamplers methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
3af5b3ba7b
[d3d11] Move *SetShaderResources methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
bfaa21dccc
[d3d11] Move *SetConstantBuffers methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
26ac57f688
[d3d11] Move *SetShader methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
e0ee06a279
[d3d11] Move IA* functions to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
77c032da5c
[d3d11] Move OM* functions to D3D11CommonContext
...
We can get rid of the immediate context overload as well
since we can just directly call FlushImplicit here.
2022-08-04 13:43:35 +02:00
Philip Rebohle
5a45677a39
[d3d11] Add hazard tracking methods to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
43661abbfc
[d3d11] Add binding methods to D3D11CommonContext
...
Uses mutable lambdas to avoid redundant ref counting on immediate contexts.
2022-08-04 13:43:35 +02:00
Philip Rebohle
a7c25a01f2
[d3d11] Move D3D11DeviceContextExt to D3D11CommonContext
...
Will be needed for both EmitCs and TrackSequenceNumber functions.
2022-08-04 13:43:35 +02:00
Philip Rebohle
3f5f731c42
[d3d11] Move D3D11UserDefinedAnnotation member to D3D11CommonContext
...
This needs to be temlpated because we'll be moving EmitCs to the
common implementation as well, and make EmitCsChunk non-virtual.
2022-08-04 13:43:35 +02:00
Philip Rebohle
10345d0063
[d3d11] Move QueryInterface to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
4af974768a
[d3d11] Refactor D3D11UserDefinedAnnotation
2022-08-04 13:43:35 +02:00
Philip Rebohle
3ead348b82
[d3d11] Move UpdateSubresource code to D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
e4204f76e6
[d3d11] Introduce D3D11CommonContext
2022-08-04 13:43:35 +02:00
Philip Rebohle
0315997fcd
[d3d9] Use mutable lambdas to avoid some redundant ref counting
2022-08-04 13:43:35 +02:00
Philip Rebohle
f10be7bc85
[dxvk] Add binding methods that take rvalue references
...
The goal here is to replace the old methods entirely.
2022-08-04 13:43:32 +02:00
Georg Lehmann
8e37949a71
[util] Use raw tzcnt for BitMask iterator
...
Dereferencing an end iterator is UB, so we don't have to care about the 0
case.
2022-08-03 22:34:21 +02:00
Philip Rebohle
fc7e934854
[util] Always inline Rc::decRef and Rc::incRef
...
GCC feels the need to generate functions with two instructions for some
reason. Doesn't meaningfully change performance, but makes profiling a
lot easier in some instances.
2022-08-03 15:15:11 +02:00
Joshua Ashton
ac2d3e952d
[util] Set m_size in small_vector::resize
...
Turns out this has been broken since it was added, meaning
isViewCompatible has always returned false putting us down slow paths
for UAV clears + copies for the past two years.
2022-08-02 23:54:23 +02:00
Philip Rebohle
c1cb4d9d18
[dxvk] Add feature check for external semaphores
2022-08-02 14:37:31 +02:00
Rosen Penev
08424ccb2e
[d3d9] Add missing vector header
...
Fixes compilation under MSYS2's clang backend.
2022-08-02 13:10:12 +02:00
Joshua Ashton
715493cd75
[d3d10] Mark D3D10ShaderReflection classes as final
...
Fixes warnings about calling delete on non-final inherited objects.
2022-08-02 13:09:34 +02:00
Philip Rebohle
5256d5e2f6
[dxvk] Fix minor edge cases when parsing floats in config file
2022-08-01 20:24:31 +02:00
Philip Rebohle
727fd7ac33
[d3d11] Add option to control sampler LOD bias
2022-08-01 13:15:09 +02:00
Philip Rebohle
9671055538
[util] Support parsing floating point arguments
2022-08-01 12:05:43 +02:00
pchome
8db2eb51fa
[d3d9] fix ordinal values in the DEF file
2022-07-31 14:57:58 +01:00
Philip Rebohle
54f989b2e6
[dxso] Introduce getSpecConstantBufferSlot
2022-07-31 02:10:37 +01:00
Philip Rebohle
a2ef99b95c
[d3d9] Generalize D3D9ConstantBuffer constructor
2022-07-31 02:10:37 +01:00
Philip Rebohle
00eaec1619
[dxvk] Use normalized state to look up optimized graphics pipelines
...
We can't normalize all state at the time it is bound, e.g. disabling
unused blend state before render targets are known. By looking up
pipelines using normalized state we ensure that our VkPipelines are
actually unique.
Based on my testing this only affects a small number of pipelines in
most games (anywhere from 0 to a couple dozen), with some outliers
like The Witcher 1, where a third of the pipelines are redundant due
to stale render state.
2022-07-31 02:53:20 +02:00
Philip Rebohle
db786cda6c
[dxvk] Remove old code to process specialization constants
...
We barely use spec constants anymore, so a much simpler solution will do.
2022-07-31 02:53:20 +02:00
Philip Rebohle
b2969f628f
[dxvk] Introduce DxvkGraphicsPipelineDynamicState
2022-07-31 02:53:20 +02:00
Philip Rebohle
63420c0cd7
[dxvk] Introduce DxvkGraphicsPipelineShaderState
...
And factor out a bunch of related code.
2022-07-31 02:53:20 +02:00
Philip Rebohle
30fa9df868
[dxvk] Introduce DxvkGraphicsPipelineSpecConstantState
2022-07-31 02:53:20 +02:00
Philip Rebohle
32c2d91961
[dxvk] Make DxvkShaderModuleCreateInfo usable with lookup tables
2022-07-31 02:53:20 +02:00
Philip Rebohle
9cb0d6d610
[dxvk] Make fragment shader state usable with lookup tables
2022-07-31 02:53:20 +02:00
Philip Rebohle
97ab6a313b
[dxvk] Make pre-rasterization state usable with lookup tables
2022-07-31 02:53:20 +02:00
Philip Rebohle
0a15146746
[dxvk] Use unordered map to look up base pipelines
...
No reason to use a linear list here. The object is always locked
when we access this list, so we don't need the lock-free one here.
2022-07-31 02:53:20 +02:00
Philip Rebohle
0eaad2eb5b
[dxso] Don't create shader object for redundant PS permutations
2022-07-30 22:15:41 +01:00
Joshua Ashton
297759be4e
[build] Initial reworkings for non-Windows platform support in Meson
2022-07-30 21:28:09 +02:00
Philip Rebohle
8d72b8e820
[dxvk] Reject pipelines that set unused spec constants
2022-07-30 21:24:15 +02:00
Philip Rebohle
54f9eaf13c
[dxvk] Don't spam log messages when pipeline state validation fails
2022-07-30 21:17:21 +02:00
Philip Rebohle
4d8b75c8fb
[d3d9] Fix spec constant derp
2022-07-30 20:38:58 +02:00
Philip Rebohle
10e6d0ef8a
[dxvk] Don't redundantly reset spec constant values
...
No longer needed.
2022-07-30 20:38:04 +02:00
Philip Rebohle
ec7de66419
[util] Use transcodeString in tows and fromws helpers
2022-07-30 20:30:32 +02:00
Philip Rebohle
1c08725acd
[util] Use transcodeString in createDirectory function
2022-07-30 20:30:32 +02:00
Philip Rebohle
65070bd765
[util] Use transcodeString in setThreadName function
2022-07-30 20:30:32 +02:00
Philip Rebohle
bb3c0b9707
[dxgi] Use transcodeString to convert adapter name
2022-07-30 20:30:32 +02:00
Philip Rebohle
200df73ba7
[util] Implement utility functions for string conversion
2022-07-30 20:30:32 +02:00
Robin Kertels
bad7d4690b
[d3d9] Handle very large Up draws
2022-07-30 20:29:31 +02:00
Philip Rebohle
2782afaf8a
[dxvk] Inline pushConstants method
...
No reason not to.
2022-07-30 17:52:55 +02:00
Philip Rebohle
94ca65d587
[dxvk] Ignore spec constants that are not used by the current pipeline
...
May reduce the number of pipeline permutations.
2022-07-30 17:42:46 +02:00
Philip Rebohle
47794b661e
[dxvk] Only pass requried spec constants when compiling compute pipelines
2022-07-30 16:00:28 +02:00
Philip Rebohle
b90f8819c6
[dxvk] Only pass required spec constants when compiling graphics pipelines
2022-07-30 15:54:38 +02:00
Philip Rebohle
80a58f000a
[dxvk] Generate bit mask of used spec constants in DxvkShader
...
This way we can more accurately track which constants are used, and not
pass any unnecessary data at compile time. We can extend this in the
future to also skip unused constants for pipeline lookups.
Also, any spec constant with the ID of MaxNumSpecConstants will be treated
as a spec constant selector. If the shader uses this constant, it is assumed
that it does not access any other spec constants if the value of this constant
is 0. This will allow shaders with spec constants to be used with pipeline
libraries.
2022-07-30 15:46:47 +02:00
Joshua Ashton
753aede1fc
[d3d9] Correct comment about ProjectionType
2022-07-30 12:34:18 +00:00
Joshua Ashton
1d1f0c7e7e
[d3d9] Document D3D9SpecConstantId
2022-07-30 12:30:33 +00:00
Robin Kertels
ea76bfd019
[d3d9] Unmap unused resources
2022-07-29 13:14:33 +01:00
Robin Kertels
b4f432f1de
[util] Implement LRU list
2022-07-29 13:14:33 +01:00
Robin Kertels
6ca6554452
[d3d9] Use memory mapped files for textures
2022-07-29 13:14:33 +01:00
Robin Kertels
d598fd3156
[d3d9] Add HUD item for unmappable memory
2022-07-29 13:14:33 +01:00
Robin Kertels
c3dbb6429f
[d3d9] Implement memory allocator for memory mapped files
2022-07-29 13:14:33 +01:00
Robin Kertels
08ad6583ea
[d3d9] Only set upload bit for managed textures
...
Otherwise D3DPOOL_DEFAULT can hit the draw time late
upload path.
2022-07-29 13:14:33 +01:00
Robin Kertels
ba4d95c5fc
[d3d9] Remove direct upload path
...
And remove some tracking that will no longer be necessary.
2022-07-29 13:14:33 +01:00
Robin Kertels
45c1d7911e
[d3d9] Remove evictManagedOnUnlock
...
This is annoying to maintain and hopefully won't be necessary anymore.
2022-07-29 13:14:33 +01:00
Robin Kertels
116feca6af
[d3d9] Handle unbound textures in fixed function shaders
2022-07-28 14:56:28 +00:00
Philip Rebohle
6c5f73ac26
[dxvk] Reintroduce VkPhysicalDeviceIDProperties
...
We need this to get the device LUID. Wine does not fill in the
LUID properties in VkPhysicalDeviceVulkan11Properties right now.
Fixes DLSS not working, as well as other potential issues.
2022-07-26 22:38:33 +02:00
Philip Rebohle
5fe04eb6ac
[dxvk] Fix weird indentation
...
how did this happen
2022-07-26 02:40:30 +02:00
Blisto91
b06140af47
[util] set maxFrameLatency to 1 for YS Origin
2022-07-25 16:20:28 +02:00
Philip Rebohle
08da6d8ca4
[dxbc] Bound-check mip level for resinfo instruction
2022-07-25 15:58:55 +02:00
Krzysztof Dobrowolski
abf5ed154f
[dxvk] Add Direct3D9ForceHybridEnumeration empty export function.
2022-07-25 12:04:27 +00:00
Philip Rebohle
b67d5c8c1d
[util] Correctly mark flag register as clobbered
2022-07-24 17:30:54 +02:00
Philip Rebohle
41ec5d2c52
[dxvk] Avoid bsf instruction
...
It's very slow compared to tzcnt on some CPUs, and we have a working fallback.
2022-07-24 15:24:00 +02:00
Philip Rebohle
9cd0473544
[util] Set ignoreGraphicsBarriers option for Stray
2022-07-23 21:21:22 +02:00
Philip Rebohle
9d8484f2e9
[dxvk] Use synchronization2 functions for timestamp queries
...
Again not really making use of the new stage flags, but might as well
call the function. Oversight from earlier changes.
2022-07-23 15:32:59 +02:00
Blisto91
cb291f29a1
[util] enable alphaTestWiggleRoom for Ninja Blade
2022-07-23 13:02:53 +00:00
Blisto91
f2d4455cdf
[util] enable dialog mode for NFS 3 modern patch
2022-07-22 19:47:44 +02:00
Derek Lesho
8fefb099d7
[d3d11] Add support for shared ID3D11Fence resources
2022-07-21 23:39:31 +02:00
Derek Lesho
a3548f8043
[dxvk] Add shared handle access to DxvkFence
2022-07-21 23:39:31 +02:00
Derek Lesho
a8e573b9b8
[dxvk] Enable VK_KHR_external_semaphore_win32 if available
2022-07-21 23:39:31 +02:00
Philip Rebohle
dcd2c4847b
[d3d11] Implement ID3D11Fence
...
No interop support just yet.
Co-authored-by: Derek Lesho <dlesho@codeweavers.com>
2022-07-21 02:15:16 +02:00
Philip Rebohle
05a827703b
[dxvk] Add fence support to command list
...
Co-authored-by: Derek Lesho <dlesho@codeweavers.com>
2022-07-21 02:14:59 +02:00
Philip Rebohle
4167e1b887
[dxvk] Refactor queue submission info
...
Co-authored-by: Derek Lesho <dlesho@codeweavers.com>
2022-07-21 02:14:59 +02:00
Philip Rebohle
446ec07f3b
[dxvk] Add DxvkFence
...
Co-authored-by: Derek Lesho <dlesho@codeweavers.com>
2022-07-21 02:14:59 +02:00
Philip Rebohle
a40724aaf8
[dxvk] Add timeline semaphore entry points
...
Co-authored-by: Derek Lesho <dlesho@codeweavers.com>
2022-07-21 02:14:53 +02:00
Philip Rebohle
ec813e036c
[dxbc] Fix UAV write test
...
We broke this during the null descriptor refactor. Also make it so that
we don't generate conditionals when there's nothing to test.
2022-07-20 22:56:32 +02:00
Philip Rebohle
779f8b39cd
[spirv] Track currently active block ID
2022-07-20 22:38:03 +02:00
Philip Rebohle
a178c57aea
[dxvk] Remove barrier argument from render target transition functions
...
We're always using the same barrier set anyway.
2022-07-20 16:57:27 +02:00
Philip Rebohle
16eae7adde
[dxvk] Allow resetting the state cache using the DXVK_STATE_CACHE env var
2022-07-20 13:58:50 +02:00
Kassin Dornelles
75d0b1af96
[util] Remove Resident Evil 6 workaround
...
It's actually making things worse, so better use the default path
2022-07-20 12:00:13 +02:00
Philip Rebohle
2d93760002
[dxvk] Clarify feature enablement
...
And fall back to robustImageAccess if robustImageAccess2 is not supported.
Not what we want, but better than nothing.
2022-07-19 19:08:58 +02:00
Philip Rebohle
fc796abede
[dxvk] Bump engine version reported to the Vulkan driver
...
Might help with Fossilize stuff.
2022-07-19 15:27:18 +02:00
Philip Rebohle
0ba741b7d2
[dxvk] Use copy_commands2 functions for buffer <-> image copies
2022-07-19 15:16:54 +02:00
Philip Rebohle
23846ad577
[dxvk] Use copy_commands2 functions for image copies
2022-07-19 15:16:54 +02:00
Philip Rebohle
dc1d82deff
[dxvk] Use copy_commands2 functions for buffer copies
2022-07-19 15:16:54 +02:00
Philip Rebohle
f39d49772d
[dxvk] Use copy_commands2 functions for image resolves
...
Same idea as with blits, don't expose VkImageResolve2.
2022-07-19 14:10:47 +02:00
Philip Rebohle
ff81323228
[dxvk] Use copy_commands2 functions for image blits
...
Don't expose VkImageBlit2 to client APIs since we can't easily
support pNext chains, so just convert the struct internally.
2022-07-19 13:53:28 +02:00
Philip Rebohle
563b1d7801
[dxvk] Add entry points for copy_commands2
2022-07-19 13:49:01 +02:00
Philip Rebohle
330ff8fa48
[dxvk] Use synchronization2 functions for queue submissions
2022-07-19 02:27:31 +02:00
Philip Rebohle
0c79882e84
[dxvk] Use synchronization2 functions for events
2022-07-19 02:27:31 +02:00
Philip Rebohle
adb906b18c
[dxvk] Use synchronization2 functions for barriers
...
We don't really use the new stage/access flags yet, and I'm not sure
whether we will move to them since the benefits seem rather limited.
However, using the functions means we can bypass a lot of internal
translation inside some Vulkan drivers.
2022-07-19 02:27:31 +02:00
Philip Rebohle
0d65142136
[dxvk] Add entry points for new synchronization API
2022-07-18 22:49:49 +02:00
Philip Rebohle
17205f5353
[dxvk] Fix formatting in barrier function
2022-07-18 22:49:47 +02:00
Blisto91
e28b268351
[util] Enable disableMsaa option for Mary Skelter 2
2022-07-18 22:17:13 +02:00
Philip Rebohle
e6df48fa3e
[dxvk] Fix a derp
2022-07-18 14:53:29 +02:00
Philip Rebohle
a76b5693f3
[dxvk] Clean up remaining object creation code
2022-07-18 14:52:12 +02:00
Philip Rebohle
9ebeb8e502
[dxvk] Clean up instance creation code a bit
2022-07-18 14:51:40 +02:00
Philip Rebohle
a1ace8ef21
[dxvk] Clean up misc. code
2022-07-18 14:51:26 +02:00
Philip Rebohle
37f31ae1e7
[dxvk] Clean up more code around object creation in meta passes
2022-07-18 14:50:29 +02:00
Philip Rebohle
fc461d0e27
[dxvk] Clean up some swapchain creation code
2022-07-18 14:49:28 +02:00
Philip Rebohle
04f43f0d2c
[dxvk] Clean up sampler creation code
2022-07-18 14:36:08 +02:00
Philip Rebohle
6276d5503c
[ðxvk] Clean up some device creation code
2022-07-18 14:31:09 +02:00
Philip Rebohle
d29d403c67
[dxvk] Clean up buffer and buffer view creation code
2022-07-18 14:21:23 +02:00
Philip Rebohle
0b11995dea
[dxvk] Clean up image and image view creation code
...
Someone was dunk while setting pNext to VK_NULL_HANDLE instead of nullptr.
2022-07-18 14:19:06 +02:00
Philip Rebohle
8d1b9eca5d
[dxvk] Fix blending with A8 render targets
2022-07-17 17:06:42 +02:00
Philip Rebohle
f15466a2c5
[dxvk] Remove remaining built-in specialization constants
2022-07-17 17:06:42 +02:00
Philip Rebohle
0f16a8f70d
[dxbc] Remove output mapping code
2022-07-17 17:06:42 +02:00
Philip Rebohle
568aae8667
[dxvk] Use SPIR-V pass to swizzle FS outputs instead of spec constants
2022-07-17 17:06:42 +02:00
Philip Rebohle
c401167161
[dxvk] Introduce SPIR-V pass to inject render target swizzles
2022-07-17 17:06:40 +02:00
Leopard1907
48ac9b27e4
eveonline-dx12_workaround
...
Launcher probes feature level 12_1, if it fails to probe it DX12 option in launcher stays greyed out, doesn't let user enable DX12.
2022-07-17 13:51:40 +02:00
Philip Rebohle
d898eff3be
[dxvk] Don't remove private inpurs from interface list in SPIR-V 1.4+
...
And if we have to, exit after one iteration since otherwise our iterator
gets invalidated.
2022-07-17 03:57:05 +02:00
Philip Rebohle
ff39819086
[dxvk] Merge methods to bind a compute pipeline
...
There is no workload in practice where the same shader will be used
multiple times with different spec constants, so there is no good
reason to have two dirty flags or to split lookup and binding.
2022-07-17 00:09:30 +02:00
Philip Rebohle
a1c3df7750
[dxvk] Always pre-compile compute shaders
...
We didn't initially do this because the pipeline library code
unconditionally used pNext chains to pass shader code. However,
shader module creation has since been refactored, and now there
is no good reason not to compile compute shaders immediately.
Also fix the stat counter while we're at it.
2022-07-16 23:42:46 +02:00
Philip Rebohle
8747c0f105
[dxvk] Remove unused method from graphics pipeline code
2022-07-16 23:17:06 +02:00
Philip Rebohle
6e8598846d
[dxvk] Allow mutable commands to be recorded into CS chunks
2022-07-16 20:19:46 +02:00
Philip Rebohle
39dd25e972
[dxvk] Unconditionally call updateDynamicState
...
And optimize that instead. The previous check would always succeed anyway
since we'd set unused dynamic states to dirty, which is necessary for us
to update that state once it's actually used by a pipeline.
2022-07-16 14:47:54 +02:00
Philip Rebohle
dadc1bc8ff
[dxvk] Add dirty tracking for dynamic depth-stencil state
...
Significantly reduces the number of API calls and potentially
context rolls when switching between different base pipelines.
2022-07-16 13:27:55 +02:00
Philip Rebohle
2fabc90f46
[dxvk] Add fast path for rasterizer state comparison
2022-07-16 13:21:58 +02:00
Philip Rebohle
e2340d7224
[dxvk] Fix dual-source blending with multiple bound render targets
...
We can't write to more than one render target, so zero out the write
mask. Also, normalize blend state for disabled render targets for
good measure.
2022-07-15 23:51:04 +02:00
Philip Rebohle
9e7b93b55b
[dxvk] Fix infinite recursion caused by rebase derp
2022-07-15 19:32:03 +02:00
Philip Rebohle
661a8cd258
[dxvk] Be consistent about enabling dynamic blend constants
2022-07-15 17:25:39 +02:00
Philip Rebohle
46a596dd84
[dxvk] Normalize vertex input state using vertex shader input mask
...
Filters out unused bindings and attributes when creating Vulkan pipelines.
2022-07-15 17:25:39 +02:00
Philip Rebohle
2fee959515
[dxvk] Bump state cache format to v15
2022-07-15 17:25:39 +02:00
Philip Rebohle
35fad0aa6c
[dxvk] Use dynamic vertex strides whenever possible
...
May reduce the number of pipeline permutations, as well as the overhead
of the bindVertexBuffer call.
2022-07-15 17:25:39 +02:00
Philip Rebohle
fc525d5b70
[dxvk] Optimize format lookup for simple formats
2022-07-15 17:25:34 +02:00
Philip Rebohle
cdf22a4086
[dxvk] Rename imageFormatInfo -> lookupFormatInfo
2022-07-15 17:25:13 +02:00
Philip Rebohle
5c4b44c97c
[dxvk] Correctly detect viewport index or layer exports in DxvkShader
2022-07-15 16:12:03 +02:00
Philip Rebohle
c3af42356f
[dxbc] Enable SPIR-V 1.6
2022-07-15 16:10:16 +02:00
Philip Rebohle
e5c45d4ce0
[dxbc] Use StorageBuffer storage class instead of BufferBlock
2022-07-15 16:10:16 +02:00
Philip Rebohle
320534cb34
[spirv] Automatically track interface variables
2022-07-15 16:10:16 +02:00
Philip Rebohle
686df3ec1b
[dxvk] Don't set scissor and viewport count for meta pipelines
...
Oversight from when we changed these to be unconditionally dynamic.
Fixes a bunch of validation errors.
2022-07-15 16:07:31 +02:00
Philip Rebohle
b59571ab22
[dxvk] Explicitly initialize null descriptor structs
...
There's a weird rule that requires null buffer descriptors to specify
VK_WHOLE_SIZE. Silences a bunch of validation errors in God of War.
2022-07-15 15:59:54 +02:00
Philip Rebohle
0f6ba59f16
[dxvk] Normalize dynamic depth-stencil state based on bound attachment
...
We already do the same for monolothic pipelines. SpellForce 3 tries
to write depth with a read-only layout, which is a bad idea.
2022-07-14 22:25:59 +02:00
Philip Rebohle
b00d7f35f5
[dxvk] Mark more pipeline state as dynamic for base pipelines
...
Otherwise we might never set depth bias and friends.
2022-07-14 21:51:57 +02:00
Philip Rebohle
70a71237cf
[dxvk] Always initialize dynamic depth/stencil state
...
Spec says we must set any dynamic state before making a draw call, there
doesn't seem to be an exception if we don't enable depth or stencil tests.
2022-07-14 21:45:22 +02:00
Philip Rebohle
0b59af996a
[dxvk] Use dynamic depth bias enable for base pipelines
...
This is always supported in Vulkan 1.3.
2022-07-14 21:35:28 +02:00
Philip Rebohle
d6d7d5137b
[dxvk] Drop VK_EXT_4444_formats
...
These formats are core in Vulkan 1.3 and all relevant drivers support them.
2022-07-14 21:21:34 +02:00
Philip Rebohle
f60bdcbcbf
[dxvk] Replace VK_EXT_shader_demote_to_helper_invocation with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
13425eb39b
[dxvk] Replace VK_EXT_pipeline_creation_cache_control with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
7677db3371
[dxvk] Replace VK_EXT_extended_dynamic_state with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
3cfc3e7714
[dxvk] Replace VK_KHR_dynamic_rendering with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
e79a2e8dfa
[dxvk] Enable Vulkan 1.3 feature structs
2022-07-14 21:21:34 +02:00
Philip Rebohle
1dd3f24b43
[dxbc] Drop workarounds for unsupported drivers
2022-07-14 21:21:34 +02:00
Philip Rebohle
223a4fd186
[d3d9] Always assume RADV has fast mulz support
...
All supported Mesa version support this.
2022-07-14 21:21:34 +02:00
Philip Rebohle
81b89cf31d
[dxvk] Simplify Nvidia HVV workaround
...
We no longer support 465 series drivers, so the check was obsolete.
2022-07-14 21:21:34 +02:00
Philip Rebohle
131af0d677
[dxvk] Replace VK_KHR_driver_properties with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
78c5ef88bc
[dxvk] Replace VK_KHR_shader_float_controls with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
000e3cb960
[dxvk] Replace VK_KHR_image_format_list with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
956f293a69
[dxvk] Replace VK_KHR_depth_stencil_resolve with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
b701dd497f
[dxvk] Drop VK_KHR_create_renderpass2
2022-07-14 21:21:34 +02:00
Philip Rebohle
d657a526ae
[dxvk] Replace VK_EXT_shader_viewport_index_layer with core features
...
And enable them optionally in the backend, since we use this for meta
operations.
2022-07-14 21:21:34 +02:00
Philip Rebohle
afdaba6caf
[dxvk] Replace VK_KHR_buffer_device_address with core feature
2022-07-14 21:21:34 +02:00
Philip Rebohle
0b47297b7d
[dxvk] Replace VK_EXT_host_query_reset with core feature
...
And make it a hard requirement in the backend. We no longer support
the old fallback path for queries anyway.
2022-07-14 21:21:34 +02:00
Philip Rebohle
f07ba07ad8
[dxvk] Replace VK_KHR_draw_indirect_count with core feature
...
And enable it optionally in the backend, since we provide the functionality.
2022-07-14 21:21:34 +02:00
Philip Rebohle
eee4ac1e91
[dxvk] Replace VK_KHR_sampler_mirror_clamp_to_edge with core features
...
And make it a hard requirement. We're not checking for feature support
anyway and all relevant drivers support this feature anyway.
2022-07-14 21:21:34 +02:00
Philip Rebohle
73f313f904
[dxvk] Enable Vulkan 1.2 feature structs
2022-07-14 21:21:34 +02:00
Philip Rebohle
2774a04195
[dxvk] Use VkPhysicalDeviceVulkan11{Features,Properties} where appropriate
2022-07-14 21:21:34 +02:00
Philip Rebohle
fd15795a0b
[dxvk] Require Vulkan 1.3 adapter
2022-07-14 21:21:34 +02:00
Philip Rebohle
6ac5ca3bff
[d3d9] Use existing staging buffer implementation for managed uploads
2022-07-14 18:22:23 +02:00
Philip Rebohle
f07a6e160c
[d3d9] Rework UP buffer allocation
2022-07-14 18:22:23 +02:00
Joshua Ashton
e884413c49
[dxvk] Don't synchronize device if going for DLL shutdown
...
All our other threads have been destroyed and we can no longer synchronize with them properly.
Co-authored-by: Paul Gofman <pgofman@codeweavers.com>
2022-07-14 17:04:52 +02:00
Georg Lehmann
5ae5476d71
[d3d9] Make reported sample counts consistent with DecodeMultiSampleType behavior.
2022-07-14 15:32:42 +01:00
Philip Rebohle
9e110cd3e5
[d3d9] Fix up unsupported sample counts
2022-07-14 14:58:58 +01:00
Philip Rebohle
74a8bfb774
[d3d9] Remove CreateConstantBuffer method
2022-07-14 15:55:08 +02:00
Philip Rebohle
4635c72e95
[d3d9] Use generic constant buffers for SWVP
2022-07-14 15:55:08 +02:00
Philip Rebohle
08c3c45853
[d3d9] Use generic constant buffer implementation
2022-07-14 15:55:08 +02:00
Philip Rebohle
e8d5ce94ea
[d3d9] Introduce D3D9ConstantBuffer
2022-07-14 15:55:08 +02:00
Philip Rebohle
bcd2be0698
[d3d11] Fix subtle bug in constant buffer rebinding
...
Previously, if the app called SetConstantBuffers1 with a non-zero
offset and a full UBO range, and then SetConstantBuffers with the
same buffer, we would not rebind that buffer at offset zero.
2022-07-14 15:14:25 +02:00
Philip Rebohle
aef2eb14df
[dxvk] Use BindConstantBufferRange for SetConstantBuffers1 if possible
...
Reduces ref counting overhead in the few games that use this.
2022-07-14 15:14:21 +02:00
Philip Rebohle
ce3eae59a9
[dxvk] Introduce bindResourceBufferRange
2022-07-14 14:56:13 +02:00
Philip Rebohle
57445227ac
[d3d11] Fix render target validation (again)
...
This behaviour is rather obscure and undocumented, but testing shows
that DSV <-> RTV mismatches are allowed under some circumstances.
Fixes #2555 .
2022-07-14 12:39:14 +02:00
Robin Kertels
ce48b57f94
[d3d9] Allow POOL_SCRATCH targets in GetFrontBufferData
2022-07-13 14:01:12 +02:00
Blisto91
64d2260656
[d3d9] add D3DFMT_UNKNOWN to windowed BackBufferFormat
2022-07-13 13:03:05 +02:00
Philip Rebohle
95995041b0
[d3d9] Explicitly check for Unknown in CheckDeviceFormatConversion
2022-07-13 12:35:33 +02:00
Robin Kertels
10b174b52c
[d3d9] Fix barriers with staging buffers
2022-07-12 21:16:32 +01:00
Philip Rebohle
bd68f05c9b
[dxvk] Make emitRenderTargetReadbackBarrier more generic
...
And also remove the redundant pipeline barrier.
2022-07-12 17:29:11 +02:00
Philip Rebohle
5ff6f3a2ca
[dxvk] Fix graphics UAV barriers
...
We broke this when replacing gfxBarriers with execBarriers,
since starting a render pass instance clears queued up barriers.
2022-07-12 14:26:52 +02:00
Philip Rebohle
59475fb053
[dxvk] Remove cull mode and front face from pipeline state
...
And bump state cache version to v14.
2022-07-12 12:07:25 +02:00
Philip Rebohle
d3c8d21047
[dxvk] Make cull mode and front face dynamic state
2022-07-12 12:03:05 +02:00
Philip Rebohle
18d4a87333
[dxvk] Add pipeline flag for rasterizer discard
2022-07-12 11:42:24 +02:00
Philip Rebohle
77891d71db
[d3d11] Fix unused variable warning
2022-07-12 11:39:56 +02:00
Philip Rebohle
f99a833f51
[d3d11] Remove d3d11.constantBufferRangeCheck option
2022-07-12 02:11:39 +02:00
Philip Rebohle
e8f48c71ab
[dxvk] Always enable robustBufferAccess2 feature
...
And respect the required alignments when creating buffers.
2022-07-12 02:11:32 +02:00
Philip Rebohle
6f5ae58ccc
[dxvk] Remove dummy resources that are no longer needed
2022-07-12 01:54:22 +02:00
Philip Rebohle
6482898167
[dxvk] Mark VK_KHR_create_renderpass_2 as required
...
Dependency of VK_KHR_dynamic_rendering.
2022-07-12 00:54:24 +02:00
Philip Rebohle
379c2e545e
[util] Work around silly compiler warnings on GCC 12.1
...
No, we're not actually reading 64 bytes from a 1-byte area.
2022-07-11 19:24:09 +02:00
Philip Rebohle
52038b2f83
[dxvk] Ignore state cache for pipelines that can be fast linked
2022-07-11 16:23:14 +02:00
Philip Rebohle
ca52c5a67f
[dxvk] Don't read or create state cache file if state cache is disabled
2022-07-11 01:19:09 +02:00
Philip Rebohle
00cfee9d17
[d3d11] Ignore OMSetRenderTargets calls with incompatible view sizes
...
Fixes #2701 .
2022-07-10 15:17:00 +02:00
Matej Dian
1b89394aa0
[util] Enable cached dynamic resources for DayZ ( #2709 )
2022-07-09 15:51:04 +02:00
Philip Rebohle
2832083fe5
[dxvk] Properly log pipeline state on error
2022-07-09 13:53:20 +02:00
Philip Rebohle
c6168179bd
[dxvk] Re-add render target format validation
...
This was lost during the state cache and render target state rework.
2022-07-09 13:44:52 +02:00
Philip Rebohle
021aff1fc0
[dxvk] Support fomatting more Vulkan enum names
2022-07-09 13:41:07 +02:00
Philip Rebohle
02aa1736f5
[dxvk] Try to create cached optimized pipeline whenever possible
2022-07-09 13:41:07 +02:00
Philip Rebohle
df1908f7bf
[dxvk] Support creating shader stage infos with module identifiers
2022-07-09 13:41:07 +02:00
Philip Rebohle
52cc0a366e
[dxvk] Query shader module identifiers from shader pipeline libraries
2022-07-09 13:41:07 +02:00
Philip Rebohle
331c790592
[dxvk] Enable VK_EXT_shader_module_identifier if supported
2022-07-09 13:41:07 +02:00
Philip Rebohle
04545ab00a
[dxvk] Enable VK_EXT_pipeline_creation_cache_control if supported
2022-07-09 13:41:07 +02:00
Philip Rebohle
f4fd8c6c65
[dxvk] Remove in-memory pipeline cache
...
Doesn't really do much and only prevents Nvidia's disk cache
from working on 515.49.06 drivers.
2022-07-09 13:41:07 +02:00
Philip Rebohle
645886db8d
[hud] Display pipeline library count in HUD
2022-07-09 13:41:07 +02:00
Philip Rebohle
3552983084
[dxvk] Add stat counter for pipeline libraries
2022-07-09 13:41:07 +02:00
Philip Rebohle
4535fdc336
[dxvk] Pass pipeline manager to pipeline library constructor
2022-07-09 13:41:07 +02:00
Philip Rebohle
498444f1a8
[dxvk] Reuse linked base pipelines if possible
...
No reason to create identical pipelines multiple times.
2022-07-09 13:41:07 +02:00
Philip Rebohle
5562ff4472
[dxvk] Remove pipeline compile timing
...
Meaningless now.
2022-07-09 13:41:07 +02:00
Philip Rebohle
5d340e48b4
[dxvk] Improve pipeline state logging
2022-07-09 13:41:07 +02:00
Philip Rebohle
5e1569593a
[dxvk] Create full pipeline layout with INDEPENDENT_SETS_BIT
...
And use it to link pipelines as well as descriptor binding.
Should fix issues related to descriptors.
2022-07-09 13:41:07 +02:00
Philip Rebohle
b51d7a3cc0
[dxvk] Update descriptor sets after binding pipeline
2022-07-09 13:41:07 +02:00
Philip Rebohle
6256ab2a19
[dxvk] Use pipeline libraries to link base pipelines if possible
2022-07-09 13:41:07 +02:00
Philip Rebohle
7f9a04fd59
[dxvk] Don't keep pipeline locked when building optimized variant
...
Only lock when creating base variant, otherwise we'll have stutter.
2022-07-09 01:53:52 +02:00
Philip Rebohle
cc1575e8b7
[dxvk] Compile optimized graphics pipelines on worker threads if necessary
2022-07-09 01:53:52 +02:00
Philip Rebohle
b50ed2ceca
[dxvk] Deal with multiple pipeline handles for graphics pipeline instances
...
Also make the handles atomic since worker threads may access them when
compiling optimized pipeline variants.
2022-07-09 01:53:51 +02:00
Philip Rebohle
90454438b2
[dxvk] Introduce distinction between base and optimized pipelines
...
We need to know what kind of pipeline we're binding in order to apply
the correct dynamic state.
2022-07-09 01:53:51 +02:00
Philip Rebohle
e01ffc02a8
[dxvk] Add more dynamic state to DxvkCommandList
2022-07-09 01:53:51 +02:00
Philip Rebohle
a683ecd525
[dxvk] Create pipeline library for null shader
2022-07-09 01:53:51 +02:00
Philip Rebohle
a0d1ef7f61
[dxvk] Handle null shader in DxvkShaderPipelineLibrary
2022-07-09 01:53:51 +02:00
Philip Rebohle
2cb9ceba1d
[dxvk] Simplify pipeline instance data
2022-07-09 01:53:51 +02:00
Philip Rebohle
a72bf02374
[dxvk] Pass VS and FS libraries to graphics pipelines
2022-07-09 01:53:51 +02:00
Philip Rebohle
cb56e16a4b
[dxvk] Use precompiled compute pipelines whenever possible
2022-07-09 01:53:51 +02:00
Philip Rebohle
6265b5b809
[dxvk] Use new shader stage info objects in DxvkShaderPipelineLibrary
...
Avoids crashing on drivers which do not support NULL modules for compute
pipelines and just reduces the amount of code by a small amount.
2022-07-09 01:53:51 +02:00
Philip Rebohle
e6470b6d10
[dxvk] Rework DxvkShaderModule into DxvkShaderStageInfo
...
Separates the whole thing from DxvkShader instances so that we
can use this in other places too. Only creates a shader module
if necessary for the given pipeline or device.
2022-07-09 01:53:51 +02:00
Philip Rebohle
5019ce4b9c
[dxvk] Compile pipeline libraries in registerShader if supported
2022-07-09 01:53:51 +02:00
Philip Rebohle
a49333cd87
[dxvk] Add pass to check whether a shader has spec constants
...
Pipeline libraries cannot be used for shaders with user spec constants.
2022-07-09 01:53:51 +02:00
Philip Rebohle
a6b0783a51
[dxvk] Add config option for graphics pipeline library enablement
2022-07-09 01:53:51 +02:00
Philip Rebohle
06c084616f
[dxvk] Clean up graphics and compute pipeline constructors
2022-07-09 01:53:51 +02:00
Philip Rebohle
f2f1f86500
[dxvk] Use new worker thread system in state cache
2022-07-09 01:53:51 +02:00
Philip Rebohle
02e6a212bb
[dxvk] Introduce new pipeline manager worker thread system
2022-07-09 01:53:51 +02:00
Philip Rebohle
1c573a7fd5
[dxvk] Rework state cache object creation
2022-07-09 01:53:51 +02:00
Philip Rebohle
8b645f8563
[dxvk] Rework DxvkPipelineCache
2022-07-09 01:53:51 +02:00
Philip Rebohle
dbcd0333d9
[dxvk] Implement shader-based pipeline libraries
2022-07-09 01:53:51 +02:00
Philip Rebohle
30c25ee1f0
[dxvk] Add way to create partial pipeline layouts
2022-07-09 01:53:51 +02:00
Philip Rebohle
3b10efbc30
[dxvk] Implement fragment output pipeline libraries
2022-07-09 01:53:51 +02:00
Philip Rebohle
578c136239
[dxvk] Implement vertex input pipeline libraries
2022-07-09 01:53:51 +02:00
Philip Rebohle
47ac5f49cb
[dxvk] Factor out fragment shader state setup
2022-07-09 01:53:51 +02:00
Philip Rebohle
33067f2a23
[dxvk] Factor out pre-rasterization state setup
2022-07-09 01:53:51 +02:00
Philip Rebohle
08e0e4181b
[dxvk] Factor out fragment output state setup
2022-07-09 01:53:51 +02:00
Philip Rebohle
1e56f2b7a0
[dxvk] Factor out vertex input state setup
2022-07-09 01:53:51 +02:00
Philip Rebohle
6c756c2dbe
[dxvk] Add check whether graphics pipeline libraries can be used
2022-07-09 01:53:51 +02:00
Philip Rebohle
d6afe36592
[dxvk] Enable VK_EXT_graphics_pipeline_library if supported
2022-07-09 01:53:51 +02:00
Joshua Ashton
2bd062f9d6
[util] Implement LUID helpers for non-Windows platforms Initial commit
2022-07-09 01:14:18 +02:00
Blisto91
3733590756
[util] disable allowDoNotWait for Port Royale 3 ( #2668 )
2022-07-09 01:00:21 +02:00
Philip Rebohle
21ca9b91d0
[dxvk] Mark VK_EXT_extended_dynamic_state as required
...
The device feature is already required anyway.
2022-07-08 23:44:05 +02:00
Philip Rebohle
fcadaec129
[dxvk] Store clear values inside render pass ops
...
The previous model was designed around vkCmdBeginRenderPass, which was
somewhat clunky regarding attachment clears. This is no longer needed.
2022-07-07 16:16:51 +02:00
Philip Rebohle
d71e85785c
[dxvk] Drop barrier before renderPassBindFramebuffer
...
Not necessary since that function emits barriers anyway.
2022-07-07 16:16:51 +02:00
Philip Rebohle
0c5773dbb9
[dxvk] Emit smarter post-renderpass barriers
...
Allows folding the old post-renderpass barrier into the same pipeline
barrier call as layout transitions from prepareImage or from starting
another render pass, thus reducing the overall number of pipeline
barriers. Also no longer uses VK_PIPELINE_STAGE_ALL_COMMANDS_BIT.
2022-07-07 16:16:50 +02:00
Philip Rebohle
67d35ecc8d
[dxvk] Introduce DxvkGlobalPipelineBarrier
2022-07-07 16:16:50 +02:00
Philip Rebohle
95f7aae3e6
[dxvk] Remove viewport state from graphics pipelines
...
And bump state cache version to v13.
2022-07-07 16:16:50 +02:00
Philip Rebohle
4b82a05e05
[dxvk] Enable and use dynamic viewport and scissor rect count
2022-07-07 16:16:50 +02:00
Philip Rebohle
b34421b055
[dxvk] Always enable extendedDynamicState feature
2022-07-07 16:16:50 +02:00
Philip Rebohle
f19607c11e
[dxvk] Use dynamic rendering directly for partial image view clears
2022-07-07 16:16:50 +02:00
Philip Rebohle
f57a6d485b
[dxvk] Use dynamic rendering directly for render target clears
2022-07-07 16:16:50 +02:00
Philip Rebohle
605fef10b4
[dxvk] Fix render target readback barrier
...
Dynamic rendering does not allow barriers within a render
pass instance, so we have to actually stop rendering.
2022-07-07 16:16:50 +02:00
Philip Rebohle
e8f3d9b040
[dxvk] Remove render pass and framebuffer objects
2022-07-07 16:16:50 +02:00
Philip Rebohle
e3a63d4faa
[dxvk] Bump state cache version to v12
...
And remove its reliance on the old render pass format struct.
2022-07-07 16:16:50 +02:00
Philip Rebohle
39a2b1cb7a
[dxvk] Remove support for state cache versions older than v8
...
We could technically keep supporting this with Dynamic Rendering, but
it's a huge amount of work and there's no good reason to do so.
2022-07-07 16:16:50 +02:00
Philip Rebohle
343eba693d
[dxvk] Use dynamic rendering for regular graphics pipelines
...
For now, just do whatever we were previously doing for render passes,
but explicitly.
2022-07-07 16:16:50 +02:00
Philip Rebohle
5b6a598ed6
[dxvk] Use dynamic rendering for resolve operations
2022-07-07 16:16:50 +02:00
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