Joshua Ashton
2f72115f91
[d3d9] Keep 1 presenter per swapchain window
...
Some apps such as level editors such as Hammer World Editor, some GUI apps/launchers etc use window overrides in presentation.
Previously we'd remake a new surface every time, which was incredibly slow making these apps basically unusable.
Now we keep one surface + swapchain + image views around per window/window override we have, along with the frame latency objs + frame counter.
(Obviously an app may present to multiple windows in a frame, so for frame latency purposes we track that per-window.
2023-07-04 16:44:31 +02:00
Philip Rebohle
ccb87d5ea9
[d3d9] Port flush heuristic from D3D11
2023-06-26 01:37:46 +01:00
Alpyne
022bf1d134
[d3d9] Allow changing API name for d3d8
2023-06-24 18:18:38 +01:00
Alpyne
d6e7e3e780
[d3d9] Add DxvkD3D8Bridge for d3d8 interop
2023-06-24 17:58:49 +01:00
Joshua Ashton
3b3ebc9350
[d3d9] Rename some members to be clearer
2023-06-24 04:09:04 +01:00
Joshua Ashton
00ae118655
[d3d9] Don't use m_activeRTs in SetPixelShader
...
These are just textures, not surfaces.
2023-06-24 04:07:19 +01:00
Joshua Ashton
55be12daa5
Revert "[d3d9] Use m_activeRTs in BindFramebuffer"
...
This is only textures. Oops.
This reverts commit ff65599dba
.
2023-06-24 04:06:24 +01:00
Joshua Ashton
0e36a07a93
[d3d9] Don't mark DS as hazardous if depth write is disabled
2023-06-24 03:55:16 +01:00
Joshua Ashton
ff65599dba
[d3d9] Use m_activeRTs in BindFramebuffer
...
Can roll in the anyColorWrites this way.
2023-06-24 03:42:54 +01:00
Joshua Ashton
6b60de2d31
[d3d9] Fix unbinding RTs
...
Fixes a regression with 8560efa3c7
in ND1.
Also more optimized.
2023-06-24 03:41:31 +01:00
Joshua Ashton
362743c1d6
[d3d9] Update DS hazards when PS shader masks change
2023-06-24 02:55:38 +01:00
Joshua Ashton
7f302fc350
[d3d9] Don't mark DS hazards if not used by shader
2023-06-24 02:53:14 +01:00
Joshua Ashton
80b27f95bc
[d3d9] Fix active hazards RT only being 4 bits
2023-06-22 16:37:09 +01:00
Joshua Ashton
a791493d14
[d3d9] Don't rebind AlphaTest when changing RT if not necessary
2023-06-22 16:37:09 +01:00
Joshua Ashton
c768196251
[d3d9] Compress hazard state going into CS
...
This can potentially happen per-draw so make it as small as possible.
2023-06-22 16:37:09 +01:00
Joshua Ashton
3625c5d481
[d3d9] Optimize DS active hazard check
...
There can only be one DS, so no need to loop over.
2023-06-22 16:37:09 +01:00
Robin Kertels
60b6e98529
[d3d9] Transition DS too if there's a feedback loop
2023-06-21 15:16:43 +01:00
Robin Kertels
a20869fb93
[d3d9] Track textures in m_activeHazardsRT instead of RT
...
There's 21 textures and only 4 RTs.
Tracking the textures allows us to mask off the active texture bitfield
instead of the active render target one, potentially resulting in fewer iterations.
2023-06-21 15:16:43 +01:00
Philip Rebohle
7dbe4abb48
[d3d9] Use new presenter signal mechanism for frame pacing
2023-06-21 15:16:37 +02:00
Philip Rebohle
5d1196733b
[dxvk] Implement waiting for specific present requests
2023-06-21 15:16:37 +02:00
Philip Rebohle
ca3492570c
[dxvk] Add functionality to wait for a given present operation
2023-06-21 15:16:37 +02:00
Robin Kertels
5a1ebfa4ee
Revert "[d3d9] Only use direct buffer mapping for DYNAMIC buffers"
...
This reverts commit 1850819483
.
2023-06-20 23:08:52 +01:00
Joshua Ashton
b30a4f0cc7
[d3d9] Use FLOAT or FORCE_UNORM depth bias representation
2023-06-20 13:31:48 +01:00
Alpyne
0236e780a7
[d3d9] Fix std::hex in D3D9CommonTexture
2023-06-19 21:02:10 +01:00
Alpyne
a79772322b
[d3d9] Initialize m_mapFlags to 0
...
Can sometimes get weird default values in there.
2023-06-19 19:52:03 +01:00
Lilium
3fce9886f5
[d3d9] implement 'clampNegativeLodBias' as a conf option
2023-06-14 20:22:27 +01:00
Lilium
5d134b877a
[d3d9] implement 'samplerLodBias' as a conf option
2023-06-14 20:22:27 +01:00
Robin Kertels
c75ed86909
[d3d9] Reset vertex & index buffer in Reset
2023-06-13 22:47:55 +01:00
Robin Kertels
d1707026f9
[d3d9] Remove uninitialized device present params
2023-06-13 22:47:55 +01:00
Robin Kertels
b8d36eeacc
[d3d9] Fix losing auto depth stencil surface
2023-06-13 22:47:55 +01:00
Robin Kertels
8f740c53b4
[d3d9] Remove IsLosable
...
Redundant.
2023-06-13 22:47:55 +01:00
Robin Kertels
52ac271acb
[d3d9] Reject Reset if there's any remaining DEFAULT resources
2023-06-13 14:15:18 +01:00
Robin Kertels
a1a91dd766
[d3d9] Fix potential race when discarding systemmem textures
2023-06-11 16:57:17 +01:00
Robin Kertels
5fd025c513
[d3d9] Rename apitraceMode
...
It's not just used for apitrace and the new name
is more consistent with the D3D11 equivalent option.
2023-06-11 16:57:17 +01:00
Robin Kertels
d9d6316609
[d3d9] Remove allowDiscard hack
2023-06-11 16:57:17 +01:00
Robin Kertels
2c3f2b9ad1
[d3d9] Ignore DISCARD after device loss
2023-06-11 16:57:17 +01:00
Robin Kertels
1850819483
[d3d9] Only use direct buffer mapping for DYNAMIC buffers
...
Tests show that buffers with just D3DUSAGE_WRITEONLY are uploaded on Unlock.
2023-06-11 16:57:17 +01:00
Robin Kertels
bbaf01d9e6
[d3d9] Force staging buffer mapping for pure SWVP devices
2023-06-11 16:57:17 +01:00
Robin Kertels
4a55047dde
[d3d9] Forbid disabling SWVP on a pure SWVP device
2023-06-11 16:57:17 +01:00
Robin Kertels
52f04ca3d4
[d3d9] FF: Fix using wrong texCoord mask
2023-06-04 17:52:18 +01:00
Philip Rebohle
ab00591297
[dxvk] Introduce dxvk.tearFree option
...
And replace the old frontend-specific options.
2023-06-01 17:48:51 +02:00
Philip Rebohle
e6be0cf996
[dxvk] Rework present mode selection for swap chains
2023-06-01 17:48:51 +02:00
Philip Rebohle
1728d9e89d
[dxvk] Rework presenter creation to take a DxvkDevice
...
This way we can easily query available Vulkan features.
2023-06-01 17:48:51 +02:00
Philip Rebohle
b1b0abdbbf
[dxvk] Move presenter implementation to DXVK module
2023-06-01 17:48:51 +02:00
WinterSnowfall
8b6cbda6de
[d3d9] Properly expose the MaxVertexBlendMatrixIndex capability
2023-05-30 23:56:26 +01:00
Joshua Ashton
e0654977c9
[d3d9] Stub out D3D9On12 interfaces
...
Closes : #3445
2023-05-24 14:36:45 +01:00
Joshua Ashton
b5c18a02ae
[d3d9] Optimize UpdateAnyColorWrites for 0th case
...
This is the most common
2023-05-24 14:21:30 +01:00
Joshua Ashton
cafd104783
[d3d9] Pack RT bitmasks tightly
...
No need to waste a whole 32-bits for each entry here when we only have 4 possible RTs at a time.
2023-05-24 14:10:41 +01:00
Joshua Ashton
269bab2c34
[d3d9] Track if any color writes are enabled for an RT
...
Use this for determining whether to rebind FB and in checks, otherwise we can miss stuff for pure surface RTs
2023-05-24 14:05:13 +01:00
Joshua Ashton
075c0bf203
[d3d9] Use m_boundRTs for COLORWRITEENABLE checks
...
Also allows us to check for NULL RTs with this too and avoid extra work!
2023-05-24 13:42:42 +01:00
Joshua Ashton
8560efa3c7
[d3d9] Unbind RTs which are unwritten by a PS
...
Otherwise we can end up with feedback loops on RTs with a 0 color mask.
Closes : #3447
2023-05-24 13:40:17 +01:00
Robin Kertels
d2759c20ba
[d3d9+d3d11] Remove DEVICE_LOCAL flag when forcing cached memory
...
Otherwise DXVK removes both flags at once
and we may end up with uncached memory.
2023-05-22 23:53:01 +02:00
Joshua Ashton
f2bb1d4b69
[d3d9] Add extended swapchain interfaces
...
Allows for controling colorspace, etc.
2023-05-19 19:26:27 +01:00
Oleksii Bozhenko
80f7d2abd8
[d3d9] fix opCompositeExtract out of bound
...
Closes: https://github.com/doitsujin/dxvk/issues/3293
Signed-by: Oleksii Bozhenko <oleksii.bozhenko@globallogic.com>
2023-05-09 20:39:55 +00:00
Alpyne
2b09932d51
[d3d9] Fix crash if device is freed with bound textures
2023-05-09 00:12:35 +00:00
Robin Kertels
bef2ef69ab
[d3d9] Fix stupid variable name
2023-05-07 14:05:39 +02:00
Robin Kertels
b08665c808
[d3d9] Fix compiler warning in Clear size check
2023-05-06 14:16:54 +01:00
Robin Kertels
96e22e7c67
[d3d9+util] Remove a bunch of redundant config options
2023-05-06 14:16:54 +01:00
Robin Kertels
5443a2f9f5
[d3d9] Don't swap buffers for SWAPEFFECT_COPY & DISCARD with 1 backbuffer
2023-05-06 14:16:54 +01:00
Robin Kertels
242ac20752
[d3d9] Release DC in fallback present path
2023-05-04 18:42:04 +02:00
Robin Kertels
b4366db398
[d3d9] Implement rudimentary device loss
2023-05-03 13:04:00 +01:00
Joshua Ashton
f140d2de0d
[d3d9] Handle swapchain OOM and other errors more gracefully
...
Supercedes: #2964
2023-05-03 12:59:02 +01:00
Robin Kertels
860237e775
[d3d9] Skip 0x0 clears
2023-05-03 13:23:47 +02:00
Robin Kertels
a42643b235
[d3d9] Fall back to GDI blit for partial presents
2023-05-03 12:18:11 +01:00
Robin Kertels
990a720525
[d3d9] Handle a bunch of texture converter edge cases
2023-04-16 09:18:30 +01:00
oltolm
6b779206d9
remove unneeded definitions
2023-04-11 18:30:46 +02:00
Robin Kertels
af0009c5de
[d3d9] Use DxvkFormatInfo for video formats
...
And fix UYUY and YUY2 in the process.
2023-04-08 03:15:44 +01:00
Robin Kertels
d11878e793
[d3d9] Only apply viewport zBias if minZ is below 0.5
...
Fixes Space Marine shadows.
Tests show that Windows D3D9 (Nvidia) works like that.
2023-03-23 03:52:08 +00:00
Philip Rebohle
9bdad71dc6
[d3d11] Implement CreateWrappedResource for D3D12 textures
2023-03-18 00:50:42 +01:00
Philip Rebohle
da32453b42
[dxvk] Add submission feedback to command submissions
2023-03-16 20:59:43 +01:00
WinterSnowfall
243c2f3cf5
[d3d9] remove support for the A1/X1R5G5B5 formats
2023-03-14 13:17:13 +00:00
Robin Kertels
d14dcf5d47
[d3d9] Fix redundant copy of SWVP VS consts
...
Fixes performance regression caused by state block changes.
2023-03-10 03:24:32 +00:00
Joshua Ashton
996acbe3f2
[d3d9] Refactor state blocks to allocate dynamically.
2023-03-07 23:24:01 +00:00
Robin Kertels
1c6fc7b5b8
[d3d9] Clamp stage and type in [G,S]etTextureStageState
...
This is what happens on the Nvidia D3D9 driver.
Dawn of Magic 2 calls SetTextureStageState with a
stage > 7 and expects that to succeed.
2023-03-02 13:41:32 +00:00
Philip Rebohle
4c78964679
[d3d9] Only log QueryInterface errors once
2023-03-01 13:25:56 +01:00
Philip Rebohle
81440340ac
[d3d9,dxvk,util] Actually use dxvk::mutex
2023-03-01 13:03:43 +01:00
Robin Kertels
0d28be4ab8
[d3d9] Fix capturing lights in state block
2023-02-23 13:15:17 +00:00
Philip Rebohle
61d72eebc1
[dxgi,d3d9] Use global singleton for DXVK instances
...
No reason to have multiple of these around, and instance creation
is fairly expensive.
2023-01-23 17:17:56 +01:00
Philip Rebohle
459758c6ff
[d3d9] Don't set storage buffer usage unless necessary
...
This actually matters now to some degree.
2023-01-15 15:36:05 +01:00
Philip Rebohle
d35bf455d9
[dxvk] Rename bindResourceBuffer to bindUniformBuffer
2023-01-15 15:36:05 +01:00
Philip Rebohle
4a30933359
[dxvk] Add UBO set property to descriptor info
...
Used to explicitly propagate storage buffer bindings
to the respective UBO set.
2023-01-15 15:36:05 +01:00
Robin Kertels
97a91c816f
[d3d9] Disable instancing for non-indexed draws
2023-01-13 21:58:41 +00:00
Philip Rebohle
0342a25e61
[d3d9,dxso] Add d3d9.forceSampleRateShading option
2023-01-09 18:35:02 +01:00
Robin Kertels
f94b42f23f
[d3d9] Dont use GenerateDrawInfo in DrawPrimitiveUp
...
This is confusing because it looks like a race condition
at first glance.
2022-12-30 19:29:34 +00:00
Philip Rebohle
b838b65516
[d3d9] Correctly mask alpha reference push constant
...
We accidentally lost this during the rework, since the initial
implementation scaled the alpha ref value on the CPU.
Fixes #3123 .
2022-12-06 21:25:55 +00:00
Robin Kertels
522909b165
[d3d9] Don't set NeedsReadback when dirtying mip maps
...
It's impossible to lock non 0 mips anyway.
2022-12-03 15:18:40 +00:00
Robin Kertels
4796eb0b0d
[d3d9] Implement capturing lights in state blocks
2022-11-21 16:06:49 +00:00
Robin Kertels
d0a10cc9f8
[d3d9] Handle DS texture uploads
2022-11-21 15:59:25 +00:00
Robin Kertels
3393c5f4ff
[d3d9] Only upload mip 0 of managed automipgen textures
2022-11-19 17:34:02 +00:00
Robin Kertels
8a2e4ef481
[d3d9] Allow locking DEFAULT pool based on texture type
2022-11-10 13:37:52 +01:00
Christopher Egert
e30b783505
d3d9: Use a different rvalue for depth bias on NV
2022-11-09 01:15:00 +00:00
Robin Kertels
ecc2302389
[d3d9] Fix query reset counter underflow
2022-11-07 23:34:32 +00:00
Philip Rebohle
03dca539cb
[vulkan,d3d9,d3d11] Move surface creation to swap chain implementation
2022-11-07 14:14:05 +01:00
Robin Kertels
d8933ca175
[d3d9] Only do one allocation for all texture subresources
2022-11-06 19:35:03 +00:00
Robin Kertels
4fb7acc64e
[d3d9] Implement converter for W11V11U10
2022-11-06 02:55:29 +00:00
Adam Jereczek
0462454d2b
Fix for saving vertex shader constants with a StateBlock
...
Co-authored-by: aroztkow <aneta.roztkowska@intel.com>
2022-10-31 18:16:15 +00:00
Robin Kertels
0fc5c84e7b
[d3d9] Don't advertise support for MS INTZ format
2022-10-30 21:50:44 +00:00
Georg Lehmann
bc31ebe151
[d3d9] Fix OptimizeLayout with feedback loop usage.
...
We kind of need dcc on GFX8/9.
2022-10-29 11:21:55 +02:00
Robin Kertels
9c22a58543
[d3d9] Disable locking non-dynamic default textures
2022-10-24 20:55:00 +01:00
Robin Kertels
d771f7cf8f
[d3d9] Remove dead fields
2022-10-24 20:55:00 +01:00