1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-01-18 20:52:10 +01:00

425 Commits

Author SHA1 Message Date
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
Joshua Ashton
4699d4162a [d3d9] Implement swapchain containers for surfaces
Fixes a crash in L.A. Noire.

Closes #1564
2020-04-13 01:42:30 +01:00
Joshua Ashton
6e5e50c359 [d3d9] Optimize hazard tracking in the SetTexture case
We don't need to perform DS/RT hazard tracking updates if the texture we replaced and ourselves do not have those usages.
2020-04-09 15:29:41 +01:00
Joshua Ashton
9b4cd8aa87 [d3d9] Remove texMask from UpdateActiveHazardsRT
This is an invalid optimization and leads to render hazards being dropped

Our hazard tracking for render targets is done in render target indices as opposed to texture indices for depth stencil tracking so `texMask` doesn't work for that reason, and the fact that even if it did, there is no relationship to an individual texture and a render target index that has a hazard.
2020-04-09 15:29:41 +01:00
Joshua Ashton
ecb3e05cb9 [d3d9] Ignore adapter type for CheckDepthStencilMatch and CheckDeviceType when windowed 2020-04-09 02:35:35 +01:00
Joshua Ashton
c3cff09c4f [d3d9] Implement d3d9.longMad option 2020-04-08 23:20:57 +01:00
Joshua Ashton
93b4427a13 [d3d9] Add and use D3D9WindowMessageFilter helper
Stops us forgetting to reset the message filter

Previously when the device was intially created with fullscreen, filter would always be enabled
2020-04-08 20:20:01 +01:00