Commit Graph

3142 Commits

Author SHA1 Message Date
Philip Rebohle bbd5762d3d
[dxvk] Add initializeImage helper
Allows us to use TOP_OF_PIPE -> xxx barriers more often.
2020-05-02 20:10:19 +02:00
Philip Rebohle a208f45fe4
[dxvk] Actually reinitialize image if necessary 2020-05-02 19:27:45 +02:00
Philip Rebohle 651646ca7f
[dxvk] Fix acquire barrier in clearCompressedColorImage 2020-05-02 19:06:22 +02:00
Philip Rebohle dcc38c98e7
[dxvk] Fix acquire barriers in resolveImageHw 2020-05-02 18:58:38 +02:00
Philip Rebohle b370d13743
[dxvk] Fix acquire barrier in updateImage 2020-05-02 18:52:35 +02:00
Philip Rebohle 8921be81bd
[dxvk] Fix blit acquire barriers 2020-05-02 18:49:58 +02:00
Philip Rebohle 85db84a1b3
[dxvk] Fix access mask in clearImageViewFb
VK_ATTACHMENT_LOAD_OP_LOAD requires the read flags to be set.
2020-05-02 18:48:59 +02:00
Philip Rebohle 5bab5ae7a5
[dxvk] Fix acquire barriers in copyImageHw 2020-05-02 18:46:35 +02:00
Philip Rebohle c1fcc3fc98
[dxvk] Simplify barriers around meta copy operations 2020-05-02 18:46:21 +02:00
Philip Rebohle f6007e4f1a
[dxvk] Emit graphics barriers upon spilling render pass
We actually need to do this now since we no longer set
all the access flags in the render pass barrier.
2020-05-02 11:36:32 +02:00
Philip Rebohle 0245273ab7
[dxvk] Remove store op from render pass ops
This is always going to be VK_ATTACHMENT_STORE_OP_STORE anyway.
2020-05-02 11:36:32 +02:00
Philip Rebohle c0f72940dd
[dxvk] Optimize regular render pass barriers
Only applies the depth/color attachment stage and access mask
if necessary, and removes a bunch of pointless read-only flags.
2020-05-02 11:36:32 +02:00
Philip Rebohle 94077ed42b
[dxvk] Reintroduce EXTERNAL->0 subpass dependency
Ensures that the layout transition happens at the right time, and
otherwise relaxes the barrier since it is assumed that the backend
will emit barriers with the appropriate as necessary.
2020-05-02 11:36:32 +02:00
Philip Rebohle 2089426420
[dxvk] Simplify render pass barriers after clears
This wasn't really doing what we intended.
2020-05-02 11:36:32 +02:00
Philip Rebohle b9c56e3e97
[dxvk] Improve deferred clear logic
Ignores currently bound render targets until we actually begin a
render pass. This allows us to use LOAD_OP_CLEAR in more situations,
including when games clear their RTs before binding them.
2020-05-02 11:36:32 +02:00
Philip Rebohle 3cbd109020
[dxvk] Remove redundant null pointer check for framebuffer
Not necessary because we're *always* calling updateFramebuffer
before startRenderPass.
2020-05-02 11:36:31 +02:00
Philip Rebohle 2967f567d8
[dxvk] Introduce performClear helper 2020-05-02 11:36:31 +02:00
Philip Rebohle 46f860f93e
[dxvk] Don't flush memory in changeImageLayout 2020-05-02 11:36:28 +02:00
DadSchoorse 9b602ef850
[util] Rework tearFree as a Tristate
PR #1606.
2020-05-02 10:18:13 +02:00
Philip Rebohle c9dde91760
[d3d11] Disable null descriptors again
Breaks ELEX due to incorrect image query results.
2020-05-02 01:02:46 +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
Philip Rebohle 6face8a1dc [d3d11] Enable new robustness features if available 2020-04-30 16:36:59 +02:00
Philip Rebohle 80009831d4 [d3d11] Use explicit spec constant for gamma texture
With null descriptors, the "bound" spec constants would always be 1.
2020-04-30 16:36:59 +02:00
Philip Rebohle 7b8a65589e [dxvk] Use null descriptors for unbound resources
This way we won't have to recompile pipelines any time the app
unbinds a resource.
2020-04-30 16:36:59 +02:00
Philip Rebohle 6ea9d83f94 [dxvk] Enable VK_EXT_robustness2 if available 2020-04-30 16:36:59 +02:00
Philip Rebohle 2a25e3f899 [dxvk] Skip draws if no index buffer is bound
It doesn't make much sense to bind the null buffer here, as we'd
just draw the same vertex over and over again.
2020-04-30 16:36:59 +02:00
Philip Rebohle ca59d8e74b
[dxgi] Implement DXGIDeclareAdapterRemovalSupport 2020-04-28 15:20:43 +02:00
Philip Rebohle 5d0efd87c2
[dxgi] Implement IDXGIOutput6 2020-04-28 15:00:57 +02:00
Philip Rebohle 15f5efe4c3
[dxgi] Implement IDXGIAdapter4 2020-04-28 14:50:36 +02:00
Philip Rebohle 26ea12b18e
[dxgi] Include DXGI 1.6 headers 2020-04-28 14:44:20 +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
Philip Rebohle 6d5f5580fb
[dxvk] Use correct size to clear zero buffer 2020-04-23 20:49:59 +02:00
Philip Rebohle 9a76645228
[d3d11] Simplify ClearView implementation
Removes some code duplication for the no-clear-rect case.
2020-04-22 22:32:53 +02:00
Philip Rebohle b3c19ba5e8
[d3d11] Optimize ClearView for render target and depth-only views
We should use clearRenderTarget whenever we clear the entire view.
The Talos Principle uses ClearView to clear its render targets for
some reason, and we were hitting a slow path there.
2020-04-22 21:02:46 +02:00
Philip Rebohle bea16263e4
[dxvk] Use GPU-local buffer in clearCompressedColorImage
Saves VA space in applications that do not initialize their textures..
2020-04-21 18:10:09 +02:00
Philip Rebohle 436357e280
[meta] Remove support for winelib builds
Untested, unmaintained, and constantly causing issues on various
setups for no apparent reason. Time to get rid of it for good.

Closes #1584.
2020-04-20 17:35:08 +02:00
Philip Rebohle dbc9f40aa1
[meta] Release 1.6.1 2020-04-19 21:43:03 +02:00
Philip Rebohle b0503b54ce
[dxvk] Don't pad dedicated image allocations
Fixes validation errors on Nvidia.
2020-04-19 17:19:06 +02: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
Christian Sturm 97cd91885d [util] Enable constant buffer range check for Secret World Legends 2020-04-18 21:53:21 +02:00
Robin Kertels d6e1c19fec [d3d11] Ignore buffer usage for the single use mapping hack
The usage doesn't matter as we swap out the entire backing slice anyway.
2020-04-18 17:15:48 +02:00
Philip Rebohle 8c68236f70
[d3d11] Check return value of Map in UpdateSubresource1
And fall back to a GPU-side copy if necessary.
2020-04-18 17:04:16 +02:00
Philip Rebohle 487ecd861c
[util] Enable constant buffer range check for Blue Reflection
Fixes #1574.
2020-04-18 14:00:04 +02: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
Philip Rebohle 4d8940957c
[d3d11] Add option to enforce mailbox present mode 2020-04-12 20:28:33 +02:00
Philip Rebohle 7f03f45301
[util] Support encapsulated strings in configuration files
Fixes #1567.
2020-04-10 21:16:29 +02: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 6b431851da [util] Enable d3d9.invariantPosition for Battlefield 2
Closes #1558 for good
2020-04-09 14:00:26 +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 f549586331 [util] Set d3d9.longMad to True for Battlefield 2 2020-04-08 23:23:21 +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
Georg Lehmann e95e4ca225 [hud] remove unused texture 2020-04-08 20:11:02 +02:00
Joshua Ashton 3f4ffdfba8 [d3d9] Fix MinGW compilation
MSVC doesn't care about static.
2020-04-06 20:35:30 +01:00
Joshua Ashton 46329689ba [d3d9] Handle WM_DESTROY event 2020-04-06 20:16:17 +01:00
Joshua Ashton 18b46e5c22 [d3d9] Move HookWindowProc out of swapchain class 2020-04-06 20:15:49 +01:00
Joshua Ashton a340cd4dd3 [d3d9] Add CallCharsetFunction helper 2020-04-06 20:06:45 +01:00
Joshua Ashton 6cf052b3f2 [d3d9] Cleanup ResetWindowProc 2020-04-06 19:45:15 +01:00
Joshua Ashton 135d246610 [d3d9] Cleanup and formatting for window proc hook 2020-04-06 19:42:48 +01:00
Joshua Ashton 47ddd8466a [d3d9] Re-look up wnd proc iterator
Avoids a potential issue where this could change address during this time.
2020-04-06 19:40:25 +01:00
Joshua Ashton a80eea926a [d3d9] Filter out window messages we cause
Closes #1517
2020-04-06 19:38:26 +01:00
Joshua Ashton 83e03ac9d8 [d3d9] Make COPM render state unlikely
This is only ever called once per game and we don't support it anyway
2020-04-05 06:27:14 +01:00
Joshua Ashton 92031a7bac [d3d9] Fix dumb typo in ATOC handling 2020-04-03 21:13:15 +01:00
Philip Rebohle 00d371d78d [util] Spoof AMD GPU for GTA IV 2020-04-03 16:39:29 +01:00
Joshua Ashton bbe681d9ca [dxvk] Fix incorrect logic in resolveDepthStencilImage
This fallbath check path should be triggered if we aren't currently using the fb.

Impacts #1537
2020-04-03 11:20:21 +02:00
Joshua Ashton 457c0c3021 [d3d9] Fix state sometimes not being set in SetRenderState
Previously this prevented us disabling AlphaToCoverage once the application enabled it.
2020-04-03 07:52:35 +01:00
Philip Rebohle 5c3d0c6836
[util] Enable d3d11.relaxedBarriers option for Resident Evil 3 2020-04-03 02:58:59 +02:00
Philip Rebohle 4d6f47640f
[dxgi] Name adapter event thread 2020-04-03 02:09:06 +02:00
Philip Rebohle 079cda1c0c
[dxgi] Implement RegisterVideoMemoryBudgetChangeNotificationEvent
Closes #1544.
2020-04-03 02:05:23 +02:00
Joshua Ashton 904d3e6c90 [d3d9] Don't declspec dllexport on MinGW builds
Fixes ordinal exporting on MinGW, which was causing a crash in CSGO due to it querying a fixed ordinal for a D3D9On12 hack.
2020-04-02 02:00:42 +01:00
Philip Rebohle 5750a7d85c
[dxbc] Fix the udiv crap again 2020-03-26 17:17:01 +01:00
Joshua Ashton 62c2c9cd15 [dxbc] Handle 0 divisors in UDiv
UDiv is defined as having 0xffffffff as both the quotient and remainder value when the divisor is 0

This fixes vertex corruption on the water bottles in Half-Life: Alyx
https://github.com/ValveSoftware/Proton/issues/3681

https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/udiv--sm4---asm-
2020-03-26 10:49:42 +01:00
Samuel Pitoiset 649c3805d9 [util] fix typo for Yooka-Laylee executable name 2020-03-25 14:29:28 +01:00
Joshua Ashton bb2e88ee06 [d3d9] Fix crash when calling ColorFill with NULL format
Impacts #1528
2020-03-25 07:23:17 +00:00
Joshua Ashton 5ff7cad77d [d3d9] Fix formatting in D3D9WindowProc 2020-03-25 07:14:35 +00:00
Samuel Pitoiset f6a79c366a [util] Set enableRtOutputNaNFixup for Super Monkey and Yooka-Laylee
Both games output NaNs that introduce glitches with RADV and
AMDVLK.
2020-03-22 15:38:24 +01:00
Philip Rebohle 3104192af7
[d3d11] Fix winelib build
Closes #1521.
2020-03-20 17:01:46 +01:00
Philip Rebohle 9c7945d936
[meta] Release 1.6 2020-03-20 16:07:25 +01:00
Joshua Ashton a9339ae832 [d3d9] Fix depth hazard case for write + read
Closes #1519
2020-03-20 14:23:29 +01:00
Philip Rebohle 1150121606 [d3d9] Fix depth-stencil layouts
Otherwise we're always using GENERAL for depth buffers.
2020-03-20 04:04:53 +00:00
Philip Rebohle a9b6421f60
[d3d11] Support signaling event in Flush1 2020-03-19 23:38:28 +01:00
Philip Rebohle 76fd9013d4
[util] Add missing include 2020-03-19 23:22:13 +01:00
Philip Rebohle 3697583f71
[d3d10] Separate d3d10core from d3d10
This way we skip compiling and linking unnecessary garbage
into the core library.
2020-03-18 22:01:11 +01:00
Joshua Ashton 7a134e49be
[d3d10] Implement D3D10[Core]GetVersion and D3D10[Core]RegisterLayers 2020-03-18 20:49:17 +01:00
Joshua Ashton 021c593ad8 [d3d9] Use all heaps when determining initial texture memory
Matches behaviour on Windows 10

Merges #1436
2020-03-18 19:40:01 +00:00
Florian Will ba41a5219a [util] Disable explicit frontbuffer for ZUSI 3
Fixes flickering when parts of the screen are not redrawn in a frame.

Closes #1368
Merges #1437
2020-03-18 19:32:45 +00:00
Florian Will 1a4b15a82d [d3d9] Add option to disable the explicit frontbuffer
The Vulkan swapchain is unaffected by this, but we don't create an
"internal" frontbuffer in D3D9SwapChainEx if this option is set. This
breaks GetFrontBufferData (which returns backbuffer data if the option
is enabled), but it disables front/backbuffer flipping.

Most windows drivers apparently always use the same backbuffer for all
frames in windowed mode. At least one game (ZUSI 3) seems to rely on
this behavior, and only redraws dirty regions for each frame instead of
redrawing everything. With buffer flips, this leads to flickering. When
enabling this new noExplicitFrontBuffer option, the flickering
disappears.
2020-03-18 19:31:00 +00:00
Joshua Ashton 6a8933cf31 [d3d9] Allow arbitrary backbuffer/adapter formats
It seems these aren't linked in the way the docs made out, this fixes a crash when starting some titles.

Closes #1508
2020-03-18 06:00:28 +00:00
Joshua Ashton a9040c5cce [d3d9] Allow multisampled depth stencil resolves in StretchRect
Fixes a crash in some Source 2 titles
2020-03-18 04:59:27 +00:00
Philip Rebohle bf480ce659
[d3d11] Initialize all D3D11ContextState members
Otherwise, SwapDeviceContextState may swap in some uninitialized data.
Closes #1512.

Reported-by: Danylo Piliaiev <danylo.piliaiev@globallogic.com>
2020-03-16 18:42:57 +01:00
Philip Rebohle 26798eb312 [util] Use SwitchToThread for yield
According to MSDN, this doesn't interfere with scheduling of other threads,
unlike Sleep(0).
2020-03-15 03:43:04 +01:00
Philip Rebohle ba213c1fa0 [dxvk] Factor out waiting for resource to become idle
And use the new generic spin function to reduce syscall spam.
2020-03-15 03:43:04 +01:00
Philip Rebohle da506f5932 [util] Add generic recursive spinlock 2020-03-15 03:43:04 +01:00
Philip Rebohle 55e3240479 [util] Add generic spin function 2020-03-15 03:43:04 +01:00
Philip Rebohle 33b0d4c991
[d3d10] Create type reflection objects on demand
See previous commits for details. Fixes #1507.
2020-03-12 21:03:31 +01:00
Philip Rebohle 3d81b3eb82
[d3d10] Create variable reflection objects on demand 2020-03-12 21:03:30 +01:00
Philip Rebohle 21fe6a3405
[d3d10] Create constant buffer reflection objects on demand
The reported constant buffer count does not necessarily match the
number of constant buffers that can be retrieved from reflection.
2020-03-12 21:03:30 +01:00
Rémi Bernon 14946c599f [d3d9] Hook WM_NCCALCSIZE to get rid of fullscreen non-client areas. 2020-03-11 17:46:08 +00:00
Joshua Ashton 64e649ae18 [d3d9] Don't check IsNull for depth stencil views
We don't need to do this. Depth stencils can never be D3DFMT_NULL.
2020-03-09 01:13:54 +00:00
Joshua Ashton e33627cfdc [d3d9] Optimize unnecessary loops in hazard tracking
We only want to update specific indices of bitfields at a time, so pass through that information and mask it off.
2020-03-09 01:03:18 +00:00
Joshua Ashton 812a113a85 [d3d9] Avoid multiple tzcnts per loop in hazard tracking 2020-03-09 00:53:50 +00:00
Joshua Ashton f6b26b302d [d3d9] Handle depth stencil hazards
Track depth stencil textures being used and whether we have any active hazards.

Rebind the framebuffer with VK_IMAGE_LAYOUT_DEPTH_STENCIL_READ_ONLY_OPTIMAL if we encounter a depth stencil hazard.

Fixes black squares in Mass Effect and validation errors in some titles.

Closes #1484
2020-03-09 00:53:19 +00:00
Joshua Ashton 102d97db02 [d3d9] Add IsDepthStencil helper to D3D9CommonTexture 2020-03-09 00:24:56 +00:00
Joshua Ashton a432befa8d [d3d9] Add RT suffix to current hazard tracking
We can have DS hazards...
2020-03-09 00:23:22 +00:00
Joshua Ashton eaa599bf9a [d3d9] Implement A2W10V10U10 format via conversion 2020-03-08 23:32:33 +00:00
Joshua Ashton 60ec7e8208 [d3d9] Implement X8L8V8U8 format via conversion 2020-03-08 23:22:52 +00:00
Joshua Ashton afd4e6e457 [d3d9] Use a common header for cs conversion helpers 2020-03-08 22:29:41 +00:00
Philip Rebohle 304dad2d2e
[dxvk] Fix dumb typo in changeImageLayout 2020-03-08 03:18:34 +01:00
Philip Rebohle 7b760800b4
[d3d11] Fix buffer view compatibility check 2020-03-08 01:28:51 +01:00
Philip Rebohle 2291484696
[d3d11] Fix texture view compatibility check 2020-03-08 01:28:51 +01:00
Joshua Ashton 45c8b09104 [d3d9] Don't update present region in Reset
Fixes a regression in A Hat in Time when changing resolutions
2020-03-06 18:23:08 +00:00
Philip Rebohle 245007daba [d3d9] Don't use m_monitor in GetDisplayModeEx
Should fix #1495.
2020-03-05 15:25:05 +00:00
Philip Rebohle 3a1243b05e [util] Don't set display mode if the desired mode is already set
See #1489.

Co-authored-by: zvova7890 <zvova7890@gmail.com>
2020-03-04 23:06:15 +00:00
Philip Rebohle 5e41e00456 [d3d9] Use new common monitor functions 2020-03-04 23:06:15 +00:00
Philip Rebohle a623e8e7d6 [dxgi] Use new common monitor functions 2020-03-04 23:06:15 +00:00
Philip Rebohle 4e16d65bb8 [util] Introduce common functions to set, get and restore display modes 2020-03-04 23:06:15 +00:00
Philip Rebohle 66503aeaa0 [util] Factor out common monitor-related functions 2020-03-04 23:06:15 +00:00
Joshua Ashton 8c68cf1551 [d3d9] Fix alignment of SubresourceData
This should match SubresourceType...
2020-03-02 16:11:07 +00:00
Joshua Ashton 27d7af65a1 [d3d9] Consolidate format helper code 2020-03-02 04:37:20 +00:00
Joshua Ashton 1b26fabc6e [d3d9] Use uniform texel buffers for conversion 2020-03-02 04:37:20 +00:00
Joshua Ashton 077f48b4ef [d3d9] Flush format converter in device after init
Otherwise we can be overwritten if its a new resource we just created by the initializer.
2020-03-02 04:37:20 +00:00
Joshua Ashton 58316ebe4c [d3d9] Add missing breaks to format helper switch 2020-03-02 04:37:20 +00:00
Joshua Ashton 7743276e1d [d3d9] Implement L6V5U5 format via conversion 2020-03-02 04:37:20 +00:00
Joshua Ashton b67f4974be [d3d9] Fix view formats for conversion formats 2020-03-02 04:03:27 +00:00
Philip Rebohle 1e426cdb08
[meta] Release 1.5.5 2020-02-29 15:45:57 +01:00
Joshua Ashton 36d3e8e83d [d3d9] Don't InitReturnPtr in CreateQuery
Matches native behaviour

Fixes a Wine test
2020-02-28 21:51:34 +00:00
Joshua Ashton 5548493fad [d3d9] Don't update device state for offset/stride if the buffer is nullptr
May also avoid some redundant rebinds here too...

Fixes a Wine test
2020-02-28 21:40:19 +00:00
Joshua Ashton 722520a9f7 [d3d9] Don't rebind user's vertex buffer/indices in DrawPrimitive[Indexed]UP
D3D9 doesn't do this, it instead sets them to NULL so we can simplify this logic a fair bit.

Found via a Wine test.
2020-02-28 21:37:00 +00:00
Joshua Ashton 3587bcdb9f [d3d9] Disallow creating additional swapchains if we are fullscreen
From Wine tests...
2020-02-28 01:43:07 +00:00
Joshua Ashton 632812b88f [d3d9] Disallow additional fullscreen swapchains
From Wine tests...
2020-02-28 01:39:52 +00:00
Joshua Ashton 0757097fa0 [d3d9] Initialize return ptr in device's GetBackBuffer
The swapchain's function does not do this, but this one does.
2020-02-28 01:37:23 +00:00
Joshua Ashton 528cacca5f [d3d9] Only have a single implicit swapchain
I am naive to think that this API is in any way sane, and that iSwapChains actually does what you would expect.

Swapchains created by CreateAdditionalSwapchain[Ex] are not tracked in that figure... There can only ever be one.

Great API. Very cool.

This also adds and consolidates some missing thread synchronization on the swapchain functions (that should have already had it).

(note: m_implicitSwapchain always exists, so we don't need to lock if that's all we call.)
2020-02-28 01:29:38 +00:00
Joshua Ashton e41640dcde [d3d9] Make nullptr/oob checks in GetBackBuffer unlikely 2020-02-28 01:03:34 +00:00
Joshua Ashton 8cfca32c2a [d3d9] Don't InitReturnPtr in GetBackBuffer
Matches native behaviour.

Found via a Wine test.
2020-02-28 01:02:56 +00:00
Joshua Ashton c07f8c941c [d3d9] Delegate VCACHE check to QuerySupported
Fixes a failing Wine test
2020-02-28 00:59:44 +00:00
Joshua Ashton 3332bb2844 [d3d9] Add some missing synchronization when completely remaking a presenter 2020-02-27 22:55:20 +00:00
Joshua Ashton 33f6add0ff [d3d9] Fix sampler decision at Present time 2020-02-27 22:54:43 +00:00
Joshua Ashton b6e1da916a [d3d9] Fix scissor rect size when presenting 2020-02-27 22:53:14 +00:00
Joshua Ashton 1592e2770b [d3d9] Remove unnecessary dirty checks in Reset 2020-02-26 22:34:17 +00:00
Joshua Ashton fbf76e8420 [d3d9] Don't mark unuploaded textures as uploaded 2020-02-25 04:37:01 +00:00
Joshua Ashton d1dc217d31 [d3d9] Fix readback for evictManagedOnUnlock 2020-02-23 16:59:33 +00:00
Joshua Ashton 0e353895fd [d3d9] Enumerate adapters by display
WPF expects us to return an adapter for every display attached otherwise
it decides to device reset every frame.

Closes #1459
2020-02-21 18:03:57 +00:00
Joshua Ashton f095f6385e [d3d9] Initialize all backbuffers in swapchain creation
Otherwise they are garbage and undefined layout.

Fixes some validation errors in Lumino City #1462
2020-02-21 06:45:02 +00:00
Joshua Ashton 38838f7428 [d3d9] Synchronize present and wait for idle when invalidating a swapchain
Lumino City calls CreateAdditionalSwapchain instead of the regular device reset functions.

We were missing some needed synchronization here to make this work properly for this game.

Impacts #1462
2020-02-21 01:38:58 +00:00
Joshua Ashton 2408b881a2 [dxso] Use SSBOs for vertex constant buffers if we'd be outside of uniform range
Impacts #1375
2020-02-20 08:14:58 +01:00