1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-06 13:46:19 +01:00
Commit Graph

331 Commits

Author SHA1 Message Date
Joshua Ashton
e8fc7ea23a
[d3d9] Add d3d9.allowImplicitDiscard option 2021-02-27 20:08:57 +00:00
Joshua Ashton
50d223e614
[d3d9] Add option to use device local memory for constant buffers
Useful for testing performance.
2021-02-27 19:29:52 +00:00
Robin Kertels
eec4481ca0 [d3d9] Fix various issues in UpdateTexture
- Skip copies for empty or invalid rects
- align up the extent
- use util functions to slightly clean up the code
2021-02-27 17:31:15 +00:00
Philip Rebohle
12693b17f9 [d3d9] Use DxvkSwapchainBlitter for presentation 2021-02-27 14:54:14 +00:00
Philip Rebohle
dcf4599c98 [d3d9] Use ATTACHMENT_OPTIMAL layout for render targets
Significantly improves GPU-bound performance on RADV in a number of games.
2021-02-26 05:02:32 +00:00
Philip Rebohle
73a06aea72
[d3d9] Manually discard swap chain image view on present 2021-02-21 02:18:55 +01:00
Joshua Ashton
59816a71b9
Revert "[d3d9] Don't minimise in WM_ACTIVATEAPP"
Not needed as this was an FSHack bug.

This reverts commit d87200c4d9.
2021-02-19 03:14:56 +00:00
Joshua Ashton
d87200c4d9
[d3d9] Don't minimise in WM_ACTIVATEAPP
Sometimes mode-setting jank can occur and technically we'd need to re-set the mode on the next present if the game gets actually minimised.
2021-02-15 17:29:45 +00:00
Robin Kertels
ec5c324643 [d3d9] Mark generated mip maps as dirty 2021-02-14 23:55:00 +00:00
Robin Kertels
021ffe7350 [d3d9] Regenerate auto mip gen textures in UpdateTexture
.. instead of copying them
2021-02-14 23:55:00 +00:00
Robin Kertels
338f6dfb0e [d3d9] Track dirty regions for UpdateTexture 2021-02-14 23:55:00 +00:00
Philip Rebohle
4f184b3424 [d3d9] Mark images as shared if necessary 2021-02-14 04:00:02 +01:00
Joshua Ashton
fcaab6aa46
[d3d9] Expose adapter/backbuffer formats properly
Matches native behaviour in my testing.
2021-02-06 08:57:32 +00:00
Joshua Ashton
58d6f018bb
[d3d9] Allow A2R10G10B10 backbuffer format in Windowed 2021-02-06 08:43:37 +00:00
Philip Rebohle
01a511aa99
[dxvk,dxgi,d3d9] Fix shader spec constant IDs
These changed after changing the render target output swizzle stuff.
2021-01-29 16:46:01 +01:00
Joshua Ashton
0eec95843f
[d3d9] Fix warnings with query caching 2021-01-08 13:49:38 +00:00
Gabriel Ivăncescu
83f6400a07 d3d9: Send necessary messages for full-screen windows during WM_ACTIVATEAPP. 2021-01-08 13:40:34 +00:00
Robin Kertels
60a2aeb6ef [d3d9] End query before the stall heuristic flush 2021-01-07 21:19:28 +00:00
Robin Kertels
0f933fee8b [d3d9] Extend query stall tracking to other query types 2021-01-07 21:19:28 +00:00
Robin Kertels
6554ca8f9e [d3d9] Cache query data 2021-01-07 21:19:28 +00:00
Robin Kertels
6a54d86f25 [d3d9] Implement apitraceMode option 2020-12-14 16:51:19 +00:00
Robin Kertels
4b6632764f Revert "[d3d9] Only use DEVICE_LOCAL memory for small dynamic buffers"
This reverts commit f3a82a0bcc.

Apparently this makes other games slower. We need a different solution for TR: Legend.
2020-12-14 16:51:19 +00:00
Joshua Ashton
65635b23c1 [d3d9] Always slightly bias viewport, regardless of size
Since we got TRUNC_COORD on RADV, we always need to bias this now.

Closes: #1854
2020-12-14 03:51:49 +00:00
Joshua Ashton
09043ddd16 [dxso] Implement option for alpha test wiggle room 2020-11-26 12:15:03 +00:00
Joshua Ashton
6a63f4af56 [d3d9] Enable null descriptors for D3D9 2020-11-24 16:17:36 +00:00
Joshua Ashton
c3fdc768cf [d3d9] Only define the push constants we use
Fixes #1742
2020-09-26 06:39:52 +01:00
Joshua Ashton
753fcd5649 [d3d9] Only read point scale push constant in fixed function
Otherwise it doesn't exist and we're reading garbage/non-existant data.

Even though this gets spec-constanted away via an opSelect, some drivers don't like this
2020-09-26 06:39:52 +01:00
Joshua Ashton
e4bca7a42f [d3d9] Handle specular fog factor for fixed function
Also handle POSITION_T shenanigans

Closes #1771
2020-09-26 06:06:06 +01:00
Joshua Ashton
dc392f7cfa [d3d9] Fix typo declaring fixed func fog inputs 2020-09-26 04:03:11 +01:00
Joshua Ashton
3e65c2bb87 [d3d9] Reduce copying around of shader metadata at Create time 2020-09-11 21:49:14 +01:00
ishitatsuyuki
bb85a4caa8 Handle non-ASCII characters properly in paths 2020-09-10 15:56:38 +02:00
Joshua Ashton
743f309253 [d3d9] Implement YV12 video format
Needed for #1726 otherwise it will upload dump that upload garbage in a YUV2 texture.
2020-08-17 22:32:30 +01:00
Robin Kertels
89d36e1d7f [d3d9] Handle edge cases around implicit discard 2020-08-15 05:45:01 +01:00
Joshua Ashton
d92660923a
[d3d9] Use VK_FORMAT_A4R4G4B4_UNORM_PACK16_EXT 2020-08-10 09:45:49 +02:00
Robin Kertels
b28a7353bb [d3d9] Do implicit discard when locking system memory resources 2020-08-10 00:09:29 +01:00
Joshua Ashton
98c7da805b [d3d9] Rename BT.703 to BT.709
Don't know how this typo got introduced.

Thanks to Ryao for finding the matrix and pointing this out.
2020-08-07 20:54:45 +01:00
Joshua Ashton
e2a26f2bc5 [d3d9] Optimize NV12 conversion to use a macropixel of [2, 1] 2020-08-07 10:56:26 +01:00
Joshua Ashton
9fe1b9d03f [d3d9] Replace macropixel size with plane count 2020-08-07 10:56:26 +01:00
Joshua Ashton
2bf9f298af [d3d9] Implement NV12 format conversion 2020-08-07 10:56:26 +01:00
Joshua Ashton
2cfd219024 [d3d9] Move some YUV helpers to common and cleanup YUY2 shader 2020-08-07 10:56:26 +01:00
Joshua Ashton
ad6b91d84a [d3d9] Flush and synchronize to cs before format conversion
Fixes a race when DISCARD is used
2020-08-07 10:56:26 +01:00
Joshua Ashton
f1aa80dab9 [d3d9] Don't private reference additional swapchains 2020-08-07 10:56:26 +01:00
Biswapriyo Nath
3b52cad243 fix clang errors
File changes:
    * meson.build: add -Wno-unused-private-field and -Wno-microsoft-exception-spec
                   option to suppress clang compiler warnings
    * d3d9/d3d9_swvp_emu.h: include unordered_map for std::unordered_map
2020-07-21 11:41:28 +02:00
Robin Kertels
f3a82a0bcc [d3d9] Only use DEVICE_LOCAL memory for small dynamic buffers
Tomb Raider Legend writes to multiple 128KB dynamic buffers
and one 512KB one every frame.
2020-07-20 18:36:20 +01:00
Robin Kertels
2714cb952d [d3d9] Extend dirty tracking to render targets
Ensures we copy a dynamic default pool texture to its
mapping buffer after the device renders to it.
2020-07-20 18:36:20 +01:00
Robin Kertels
291f7e05bc [d3d9] Fix uninitialized BufferHandle when discarding mapped buffer
Co-authored-by: Christopher Egert <cme3000@gmail.com>
2020-06-15 03:26:47 +01:00
Joshua Ashton
9525f53d00 [d3d9] Only enable FETCH4 when POINT sampling
Closes #1660
2020-06-14 00:38:36 +01:00
Joshua Ashton
67f01631fa [d3d9] Clear dirty range when discarding buffers 2020-06-11 05:58:17 +01:00
Robin Kertels
7389da29be [d3d9] Discard mapped buffer if it's currently in use 2020-06-11 05:53:33 +01:00
Robin Kertels
5d5ec2aa77 [d3d9] Remove IsUploading from CommonTexture
This was always true on subsequent Lock calls.
The first lock was handled by the 'freshly allocated fast path' anyway.
2020-06-11 05:53:33 +01:00
Joshua Ashton
e6ed8dab63 [d3d9] Perform tracking for preloaded managed resources 2020-06-11 05:53:33 +01:00
Joshua Ashton
7e72010302 [d3d9] Upload managed resource if needed before mip gen 2020-06-11 05:53:33 +01:00
Joshua Ashton
04397e5a7b [d3d9] Mark mips as dirty when the filter changes 2020-06-11 05:53:33 +01:00
Joshua Ashton
f537474fe4 [d3d9] Add missing locks to mipmap auto gen 2020-06-11 05:53:33 +01:00
Joshua Ashton
b1bd3597a4 [d3d9] Implement PreLoad for buffers + textures 2020-06-11 05:53:33 +01:00
Joshua Ashton
68ae3f4376 [d3d9] Return D3D_OK when unlocking not locked textures
Matches D3D9 behaviour
2020-06-05 23:46:33 +01:00
Joshua Ashton
124023bac5 [d3d9] Add read-only check to uploading managed textures on Lock 2020-06-05 23:33:00 +01:00
Joshua Ashton
ed5cbb99b6 [d3d9] Mark managed for upload in Lock rather than Unlock
Fixes Nekopara properly.

Also refactor some locking checks
2020-06-05 23:29:23 +01:00
Joshua Ashton
86e8315416 [d3d9] Revert Nekopara hacks 2020-06-05 23:15:10 +01:00
Joshua Ashton
fa988be4aa [d3d9] Improve MarkAllForUpload implementation
Only mark the bits we are actually using.
2020-06-05 02:40:41 +01:00
Joshua Ashton
d39cf31189 [d3d9] Implement uploadAllManagedSubresources option
Nekopara locks mip 1, then unlocks mip 0 and expects it to upload all the mips.
2020-06-05 02:34:44 +01:00
Joshua Ashton
5558460853 [d3d9] Don't mark lock on DONOTWAIT path
Fixes some issues in some games using this feature.
2020-06-01 15:52:25 +01:00
Joshua Ashton
c03eaf2de7 [d3d9] Hook up auto gen mip filter 2020-05-27 10:12:43 +02:00
Joshua Ashton
7cd46e72e9 [dxvk] Add filter type to generateMipmaps 2020-05-27 10:12:43 +02:00
Joshua Ashton
3825d16a31 [d3d9] Move mip filter into common texture 2020-05-27 10:12:43 +02:00
Joshua Ashton
561254b51d [d3d9] Support RENDERTARGET and AUTOGENMIPMAP together
Fixes funky water in Trackmania
Closes #1642
2020-05-27 09:03:58 +01:00
Joshua Ashton
d8381dab8d [d3d9] Fix a typo when unmarking autogen mips 2020-05-26 18:57:28 +01:00
Joshua Ashton
1a920f44ea [d3d9] Rename GenerateMips to EmitGenerateMips 2020-05-26 18:50:34 +01:00
Joshua Ashton
fabe7b5d59 [d3d9] Check if needs mip gen in GenerateTextureMips
There could be duplicate indices!
2020-05-26 18:49:17 +01:00
Joshua Ashton
6c030afc95 [d3d9] Update device tracking when manually autogenning mips
Avoids some needless generations potentially.
2020-05-26 18:48:42 +01:00
Joshua Ashton
e57aea5749 [d3d9] Track and defer mipmap generations
Turns out we need to track this crap and generate at draw time and handle a bunch of other wacky cases for it...

Bah.

Fixes #1642
(The funky water.)
2020-05-26 18:42:53 +01:00
Joshua Ashton
b958473cc9 [d3d9] Move pLockedBox/Rect checks to subresource 2020-05-26 13:14:58 +01:00
Joshua Ashton
4c1deabcd3 [d3d9] Don't expose surfaces for autogenned mips 2020-05-26 13:11:24 +01:00
Joshua Ashton
a35df1c3b1 [d3d9] Fix AUTOGENMIPMAP not working in some instances
Closes #1642
2020-05-26 12:46:55 +01:00
Christopher Egert
67b1ee4f9b [d3d9] Only allow ColorFill on surfaces in D3DPOOL_DEFAULT
Both nine and native nvidia d3d9 seems to do this,
this fixes a crash in spacemail by xplsv.
2020-05-25 13:33:12 +01:00
Joshua Ashton
4d70d59ea4 [d3d9] Use base texture for subresource refs
Fixes a crash when running d3d9-triangle
2020-05-25 13:29:56 +01:00
Joshua Ashton
4e1ee5bf39 [d3d9] Normalize projection spec constant further
Only include those used in the pixel shader and are bound.
2020-05-25 06:13:21 +01:00
Joshua Ashton
8fdf9e67d3 [d3d9, dxso] Implement FETCH4 2020-05-25 06:13:21 +01:00
Joshua Ashton
8e7df31878 [d3d9] Correct resolve offset regions for intermediate StretchRect resolves
We don't want to use the dst info for these, given the blit will do that.

Partially fixes #1637
2020-05-22 11:13:07 +02:00
Joshua Ashton
e2ad3b1b20 [d3d9] Improve sampler anisotropy normalization 2020-05-21 08:58:39 +01:00
Christopher Egert
79feed9d89 [d3d9] Allow D3DFMT_NULL as RenderTargetFormat in CheckDepthStencilMatch
This partially fixes shadows in Timeshift.
2020-05-19 04:12:36 +01:00
Robin Kertels
724d0fc0b2 [d3d9] Set scissor to the viewport if that's smaller
Fixes #1608
2020-05-13 18:53:11 +01:00
Joshua Ashton
774f74cd36 [d3d9] Only dirty ff pixel shader if set texture is in PS binding range 2020-05-07 16:14:11 +01:00
Joshua Ashton
27b9736626 [d3d9] Dirty fixed function pixel shader on texture type change
Fixes #1603
2020-05-07 16:09:58 +01:00
Joshua Ashton
b2f6885e55 [d3d9] Make texture stage state args mask easier to read 2020-05-07 15:37:05 +01:00
Joshua Ashton
a6771daf49 [d3d9] Unbind depth image views on device reset 2020-05-07 15:35:48 +01:00
Joshua Ashton
42deab0d60 [d3d9] Cleanup SetStateTextureStageState dirty flags 2020-05-07 14:50:26 +01:00
Joshua Ashton
f88f424da4 [d3d9] Convert border color to float in CS thread
It's cheaper to look up sampler keys this way
2020-05-07 13:11:59 +01:00
Joshua Ashton
fd75775197 [d3d9] Use unordered comparison opposed to isnan
Results in better codegen
2020-05-07 13:05:36 +01:00
Joshua Ashton
198ce13934 [d3d9] Replace clamp with min in sampler normalization 2020-05-07 13:01:14 +01:00
Philip Rebohle
5fd361757b
[d3d9] Disable old border color hack if custom border colors are supported 2020-05-04 20:18:44 +02:00
Philip Rebohle
263865cf28
[d3d9] Enable custom border color features if available 2020-05-04 19:46:57 +02:00
DadSchoorse
9b602ef850
[util] Rework tearFree as a Tristate
PR #1606.
2020-05-02 10:18:13 +02:00
Philip Rebohle
f1e069568d
[build] Remove .spec files
No longer needed now that we don't support winelib builds anymore.
2020-05-01 00:52:33 +02:00
Joshua Ashton
9f4baf3f55 [d3d9] Fix swapchain surface refs once and for all
The refcounting for d3d9 swapchain surfaces is very funny.
They don't actually hold any form of reference to their parent, unlike the surface->texture relationship.

When a swapchain is destroyed, the surfaces become orphans (like offscreen rendertargets) if they are still reffed.

Calling GetContainer on them when orphaned will return E_NOINTERFACE and nullptr for __uuidof(IDirect3DSwapChain)

Fixes some potential lingering refs on the device.
2020-04-26 13:32:22 +01:00
Joshua Ashton
409eac9d20 [d3d9] Use if/else in GetCommonTexture and TextureRefPrivate
These are the only things it can be, and they all end up calling what the compiler will optimize to the same function so we can avoid a branch here.
2020-04-19 01:11:11 +01:00
Joshua Ashton
3f2b582d5f [d3d9] Avoid prematurely deleting swapchain backbuffers if they are still reffed on reset 2020-04-19 00:59:02 +01:00
Joshua Ashton
837861ffdd [d3d9] Cleanup private ref code for subresources 2020-04-18 21:06:38 +01:00
Joshua Ashton
42089d73c5 [d3d9] Fix ref-counting for swapchain surfaces 2020-04-18 21:06:38 +01:00
Philip Rebohle
ab8ab4052f [d3d9] Fix compiler warnings 2020-04-13 22:05:27 +01:00