Robin Kertels
7d9864c077
[d3d9] Only enable ATOC when rendering to MS RT
2024-01-26 17:48:21 +00:00
Tatsuyuki Ishi
89267b62ad
[build] Remove declspec UUID annotations
...
MIDL_INTERFACE already implies struct DECLSPEC_UUID.
2024-01-23 15:44:47 +01:00
Joshua Ashton
1568c263fb
[d3d9] Only add unique modes to mode list
2024-01-19 16:28:22 +00:00
Joshua Ashton
0cd4165658
[d3d9] Add D3DDISPLAYMODEEX operator
2024-01-19 16:28:22 +00:00
Joshua Ashton
4b8e8bed6e
[d3d9] Move operators out of dxvk namespace
2024-01-19 16:28:22 +00:00
Robin Kertels
9cde0b5798
[d3d9] Fix off-by-one when copying shader defined constants
2023-12-25 14:51:02 +00:00
Philip Rebohle
ea3149801f
[d3d9] Return empty buffer slice for out-of-bounds offsets
...
Fixes #3715 .
2023-11-14 10:54:54 -08:00
Philip Rebohle
a427d22cde
[dxvk] Add Vulkan instance flag for D3D9 apps
2023-10-31 16:05:58 +01:00
WinterSnowfall
4d974685c9
[d3d9] Mark presenter for recreation on device reset with deferSurfaceCreation
2023-10-06 14:05:39 +02:00
Robin Kertels
494f7fd38d
[d3d9] Only set initial NeedsUpload for D3DPOOL_MANAGED textures
2023-09-19 13:25:12 -07:00
WinterSnowfall
0632da1935
[d3d9] Add a device compatibility mode for d3d8
2023-09-19 09:19:55 -07:00
Robin Kertels
9e26964a96
[d3d9] Divide projected textures by w if ProjectedCount is 0
2023-09-03 18:08:47 -07:00
Robin Kertels
740ebec7ee
[d3d9+dxso] Consider DMAP sampler in bit masks
2023-08-20 10:21:16 -07:00
Robin Kertels
bcaaac4ad7
[d3d9] Handle sampling from DS_READONLY properly
2023-08-18 18:59:53 -07:00
Robin Kertels
295a58afdf
[d3d9] Check depth bounds test when deciding to bind DSV
2023-08-13 20:32:20 +01:00
Robin Kertels
0746a3b91a
[d3d9] Don't resolve an image with 1 sample
2023-08-10 13:45:40 +02:00
Georg Lehmann
549bd86f03
[d3d9] use strict float emulation for nvk
...
nvk supports nir_op_fmulz/ffmaz
2023-08-06 11:01:03 +01:00
WinterSnowfall
b0b46fd075
[d3d9] Don't show/hide a software cursor
2023-08-02 01:51:19 +01:00
Joshua Ashton
a62117cd13
build: Disable stdcall alias-ing and use kill-at
...
Disable stdcall aliasing and enable kill-at to ensure our exported
functions don't have the @8, @40, etc suffixes.
This still keeps `--enable-stdcall-fixup` as otherwise the linker can
get confused trying to find exports from the .def. This does not result
in aliases being added, just for them to be found to add to the export
table.
This also switches d3d11 to use the MinGW provided dxgi.lib for linking
and d3d10 to use the MinGW provided d3d11.lib for linking.
Unfortunately the .a's we output seem to still have the @blah that we
killed so we cannot use them for internal linkage since using kill-at.
Tested that what we get out of MinGW now is what we want with dllexp.
Supercedes: #3590
Exports
```
➜ build git:(master) ✗ winedump -j export src/dxgi/dxgi.dll
Contents of src/dxgi/dxgi.dll: 129505860 bytes
Name: DXGI.DLL
Characteristics: 00000000
TimeDateStamp: 64C97A2D Tue Aug 1 22:33:33 2023
Version: 0.00
Ordinal base: 9
# of functions: 9
# of Names: 5
Addresses of functions: 00423028
Addresses of name ordinals: 00423060
Addresses of names: 0042304C
Entry Pt Ordn Name
00007C17 9 CreateDXGIFactory
00007BF3 10 CreateDXGIFactory1
00007B62 11 CreateDXGIFactory2
00007C3B 16 DXGIDeclareAdapterRemovalSupport
00007CD8 17 DXGIGetDebugInterface1
Done dumping src/dxgi/dxgi.dll
```
```
➜ build git:(fix-stdcall-32-bit) winedump -j export src/d3d11/d3d11.dll
Contents of src/d3d11/d3d11.dll: 263021637 bytes
Name: D3D11.DLL
Characteristics: 00000000
TimeDateStamp: 64C97A2E Tue Aug 1 22:33:34 2023
Version: 0.00
Ordinal base: 18
# of functions: 7
# of Names: 4
Addresses of functions: 005E3028
Addresses of name ordinals: 005E3054
Addresses of names: 005E3044
Entry Pt Ordn Name
00020045 18 D3D11CoreCreateDevice
000200AA 22 D3D11CreateDevice
0002010E 23 D3D11CreateDeviceAndSwapChain
0002025F 24 D3D11On12CreateDevice
Done dumping src/d3d11/d3d11.dll
```
Import of DXGI in D3D11
```
offset 005e1014 dxgi.dll
Hint/Name Table: 005E408C
TimeDateStamp: 00000000 (Thu Jan 1 01:00:00 1970)
ForwarderChain: 00000000
First thunk RVA: 005E4300
Thunk Ordn Name
005e4300 4 CreateDXGIFactory1
```
2023-08-01 23:35:09 +01:00
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
Philip Rebohle
494e01b353
[d3d9] Avoid querying environment variables on shader creation
2022-10-24 18:01:48 +02:00
Philip Rebohle
859de7e828
[dxvk] Always enable depth clip feature if supported
2022-10-24 16:39:24 +02:00
Joshua Ashton
1d3decf100
[build] Add version scripts for native builds
...
FEX would like clean symbols for experimenting with making thunks down the line.
We also just shouldn't be exporting a bunch of random crap -- sadly -fvisibility=hidden doesn't help with a bunch of stuff :(
For reference, RADV also does this.
2022-10-15 19:10:57 +02:00
Joshua Ashton
25798f6fe1
[build] Set name_prefix to libdxvk_
for native builds
...
Less rude and nicer than just d3d9.so.
Matches old DXVK native behaviour too.
2022-10-15 19:10:57 +02:00
Robin Kertels
4bcabe8d46
[d3d9] Return 0 if any vertex decl element can't be represented as fvf
2022-10-12 23:07:23 +01:00
Robin Kertels
7090105573
[d3d9] Remove declaration fvf mapping log spam
2022-10-12 23:07:23 +01:00
Robin Kertels
2b964f0c67
[d3d9] Make MapD3DDeclToFvf more readable
...
All branches return, so we might as well
give it a bit more room to breath.
2022-10-12 23:07:23 +01:00
Adam Jereczek
b2ad25755a
[d3d9] Fix for missing restriction check in ProcessVertices
...
Co-authored-by: aroztkow <aneta.roztkowska@intel.com>
2022-09-28 12:10:41 -02:30
Joshua Ashton
49854dbfba
[d3d9] Saturate viewport depth range
...
Viewport depth range in D3D9 is clamped at 0-1, same as OpenGL.
Drivers like RADV, etc support VK_EXT_depth_range_unrestricted,
which makes the regular UB of this actually work -- which isn't what
we want.
We also don't enable VK_EXT_depth_range_unrestricted, so we shouldn't
be setting depth ranges outside of the 0-1 bounds anyway.
Closes : #2960
2022-09-27 18:58:40 -02:30
Georg Lehmann
50857537d6
[d3d9] Use D32 not D32_S8 when upgrading formats without stencil aspect.
2022-09-27 18:58:32 +01:00
Georg Lehmann
a9bdea72e9
[d3d9] Clamp Dref to [0.0, 1.0] if the texture is emulated UNORM
2022-09-26 21:39:51 +01:00
Georg Lehmann
6fe96d7d82
[dxso] Support clamping Dref.
2022-09-26 21:39:51 +01:00
Georg Lehmann
5684e29718
[d3d9] Track if a texture is upgraded to D32f
2022-09-26 21:39:51 +01:00
Georg Lehmann
6188ffa23a
[d3d9] Add a config option for D24 -> D32
2022-09-26 21:39:51 +01:00
Joshua Ashton
f2950953e0
[d3d9] Avoid depth degenerate viewports
2022-09-23 13:26:50 +01:00
Joshua Ashton
d221bb7a9c
[d3d9] Add ID3D9VkInteropDevice
...
Provides access to the device and instance handles
as well as the queue that is used for rendering.
2022-09-22 17:58:54 +01:00
Joshua Ashton
e976218e17
[d3d9] Make GetDXVKDevice return a const Rc reference
...
Avoids some useless reffing.
2022-09-22 17:58:54 +01:00
Joshua Ashton
ac13112619
[d3d9] Add ID3D9VkInteropTexture
...
Provides access to the backing resource of a D3D9 texture.
2022-09-22 17:58:54 +01:00
Joshua Ashton
ae2465079e
[d3d9] Add ID3D9VkInteropInterface
...
Allows getting the VkInstance handle from a IDirect3D9 interface,
as well as VkPhysicalDevices from adapter ordinals.
2022-09-22 17:58:54 +01:00
Joshie
1451032b83
[d3d9] Minor cleanups in vertex declaration code ( #2950 )
2022-09-22 09:46:51 +00:00
Krzysztof Dobrowolski
1e1ef8f1bd
[d3d9] Fix for missing mapping of VertexElements declarations to FVF bits
...
When Vertex declaration is created by CreateVertexDeclaration
and SetFVF is not called then GetFVF returns 0.
This code change implements mapping of D3D declarations to FVF mask
and sets it if FVF was not set previously.
2022-09-22 08:41:40 +00: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
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
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
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
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
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
Joshua Ashton
c49b1ee390
[d3d9] Use SetStateTexture in Reset
...
Fixes m_activeTextures not getting updated
2022-08-29 10:16:21 +00: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
2329c71b6f
[dxvk] Implement sampler reduction mode
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
3ee808afd6
[dxvk] Make memory object of an image publicly accessible
2022-08-26 05:53:03 +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
23c3960f65
[dxvk] Store WSI semaphore pair directly with the command list
2022-08-22 00:07:15 +02:00
Joshua Ashton
968bdccbef
[d3d9] Include win32 compat headers where applicable
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
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
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
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
ea4e0bc470
[d3d9,d3d11] Require shaderDemoteToHelperInvocation feature
2022-08-19 13:36:54 +00:00
Philip Rebohle
85cc87e42a
[d3d9] Fix invalid shader in fixed-function alpha test
2022-08-18 17:08:59 +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
80fc1d8b25
[d3d9] Use new format support queries
2022-08-17 15:39:03 +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
Joshua Ashton
084969135b
[d3d9] Only set feedback loop usage on textures, not plain surfaces
2022-08-16 12:33:17 +00: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
9bd0040a90
[d3d9] Request high-priority shader compiles as necessary
2022-08-11 12:39:28 +02:00
Robin Kertels
b5b74116fa
[d3d9] Fix rare hang when waiting for staging buffer markers
2022-08-11 12:37:28 +02:00
Philip Rebohle
02f653fdd2
[d3d9] Limit amount of staging memory in flight
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
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
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