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
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
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
4d8940957c
[d3d11] Add option to enforce mailbox present mode
2020-04-12 20:28:33 +02:00
Philip Rebohle
a9b6421f60
[d3d11] Support signaling event in Flush1
2020-03-19 23:38:28 +01: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
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
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
74d23c22de
[build] Use __CRT_UUID_DECL for uuid definitions
...
Closes #1463
2020-02-18 20:25:05 +01:00
Philip Rebohle
4aa6800e95
[d3d11] Validate subresource index in copy operations
...
Rocket League tries to copy five subresources of a texture that only
has one single array layer and one single mip map, which causes GPU
hangs on Nvidia drivers.
2020-02-13 00:39:55 +01:00
Philip Rebohle
76a6f6eab9
[dxbc] Add option to force memory barriers after shared memory stores
2020-02-08 00:48:42 +01:00
Philip Rebohle
c560ec44b5
[d3d11] Re-introduce client API HUD item
2020-01-28 16:32:58 +00:00
Philip Rebohle
be16da37d7
[d3d11] Introduce COM interface to set and get API version
...
Allows us to identify DirectX 10 applications correctly.
2020-01-28 16:32:58 +00:00
Philip Rebohle
588beb5b2f
[hud] Don't initialize client API HUD item by default
...
Removes the client API property from the DXVK device as well.
Instead, client APIs should create the HUD item manually.
2020-01-28 16:32:58 +00:00
Philip Rebohle
3beca254e2
[dxvk] Move UMA check to backend
2020-01-28 16:31:34 +00:00
Philip Rebohle
9721938e57
[d3d11] Introduce d3d11.invariantPosition option
...
Apparently it's better to make app profiles than risk tanking
performance for all applications. Invariance rules in D3D11 are
undocumented so it's not clear what the correct solution is.
2020-01-23 01:28:19 +01:00
Philip Rebohle
a57dc75247
[d3d11] Implicitly begin scoped queries in End if necessary
...
Matches (undocumented) D3D11 behaviour. Warriors Orochi 4 runs into
this because it does not begin some of its timestamp disjoint queries
before ending them and retrieving data.
2020-01-22 04:17:13 +01:00
Philip Rebohle
4923bc20f7
[dxvk] Don't enable VK_KHR_shader_draw_parameters
...
Core in Vulkan 1.1.
2020-01-17 17:46:59 +01:00
Philip Rebohle
073669b7e7
[dxvk] Don't enable VK_KHR_maintenance1, VK_KHR_maintenance2
...
Core in Vulkan 1.1.
2020-01-17 17:46:59 +01:00
Philip Rebohle
18450f4643
[d3d11] Lock immediate context when submitting presentation commands
...
Otherwise, a race condition occurs if a game submits rendering commands
at the same time as presenting the swap chain image. Only works if
multithreaded protection is enabled, but according to MSDN, it is
illegal to use DXGI commands and the immediate context in parallel.
Fixes stability issues in Tales of Vesperia.
2020-01-15 23:48:58 +01:00
Joshua Ashton
3cfc16ea34
[d3d11] Move shader stage and buffer slot calc to inside lambda
...
Take advantage of the fact that template permutations transfer into lambdas inside of them.
Removes some unnecessary captures.
2020-01-08 23:09:53 +01:00
Philip Rebohle
ae01bd8bd4
[dxgi] Ignore sync interval if PRESENT_TEST is used
...
Otherwise, the following sequence leads to the Vulkan
swap chain being recreated once per frame:
swapchain->Present(0, DXGI_PRESENT_TEST);
swapchain->Present(1, 0);
Found while investigating #1314 .
2020-01-04 11:18:51 +01:00
Philip Rebohle
3db00a0f40
[d3d11] Increment transfer command counter when initializing UAV counter
...
Otherwise, we won't clear the counter before it is being used if there are
no other transfer commands recorded to the initializer command buffer.
2020-01-03 13:44:23 +01:00
Philip Rebohle
aa40decc23
[d3d11] Don't present if the presenter has no swap chain.
...
Also fixes DXGI_PRESENT_TEST handling for zero-sized windows.
2019-12-15 11:38:57 +01:00
Philip Rebohle
ae7189f9a4
[d3d11] Update HUD on CS thread
...
Otherwise, we may end up reading some bollocks since the CS thread
might not have finished processing the entire frame yet.
2019-12-13 15:02:45 +01:00
Philip Rebohle
2689204d74
[hud] Enable manual sRGB conversion for non-sRGB swap chains
...
We still blend in the wrong color space, but text should be a bit
more readable in some games now.
2019-12-13 14:03:00 +01:00
Philip Rebohle
945a64252d
[d3d11] Determine exclusive fullscreen mode based on swap chain flags
2019-12-05 13:11:06 +01:00
Philip Rebohle
575a267f07
[vulkan] Support exclusive fullscreen control in presenter
2019-12-05 13:10:11 +01:00
Philip Rebohle
9c26fad40e
[vulkan] Add feature bit for exclusive fullscreen control
2019-12-05 13:05:54 +01:00
Philip Rebohle
07c2de62be
[d3d11] Silence some errors about invalid API usage on deferred contexts
...
Halo MCC apparently spams calls to GetData on deferred contexts, which
is obviously illegal.
2019-12-04 20:18:51 +01:00
Philip Rebohle
27ea176295
[d3d11] Remove d3d11.strictDivision option
2019-11-30 20:39:32 +01:00
Philip Rebohle
3b030d9569
[dxbc] Implement workaround to replace NaN render target outputs by zero
2019-11-30 20:39:32 +01:00
Philip Rebohle
c9c6b1886b
[d3d11] Synchronize presentation when destroying swap chain
...
Otherwise, we might destroy the presenter before the CS thread
actually issues the present operation, and the waitForIdle has
not the desired effect.
2019-11-26 23:51:31 +01:00
Philip Rebohle
9785fba66e
[dxgi] Implement IDXGISwapChain2::GetFrameLatencyWaitableObject
2019-11-26 16:54:52 +01:00
Philip Rebohle
65cc8c2b31
[d3d11] Create frame latency event for swap chain
...
Needed in order to support the DXGI 1.3 frame latency API.
2019-11-26 16:54:52 +01:00
Philip Rebohle
ef37b5fed6
[dxgi] Implement IDXGISwapChain2::SetFrameLatency
2019-11-26 16:11:46 +01:00
Philip Rebohle
2d1fb52b2f
[util] Reimplement Signal
...
The new implementation is more akin to D3D12 fences or timeline
semaphores, and should make implementing similar concepts easier.
2019-11-26 16:11:46 +01:00
Philip Rebohle
69bad7bf8c
[d3d11] Move frame latency handling into D3D11SwapChain
2019-11-26 16:11:46 +01:00
Joshua Ashton
7e3142b2ed
[d3d11] Hook up platform-specific clock
...
See 89dfa2bc22
2019-11-26 01:52:58 +01:00
Philip Rebohle
25a1e0d355
[d3d11] Actually fix subresources discarded by DiscardView1
2019-11-24 00:34:15 +01:00
Philip Rebohle
53fca5143f
[d3d11] Ignore D3D11_COPY_DISCARD
...
Various truck simulations are broken and set this on every
CopySubresourceRegion call, which, if we were to implement
DiscardBuffer for non-mappable resources again, would break
them. This flag seemingly has no effect on native D3D11.
2019-11-24 00:08:06 +01:00
Philip Rebohle
a7c21a617c
[d3d11] Overhaul DiscardResource and DiscardView implementations
...
For host-visible resources, these behave like MAP_DISCARD.
Euro Truck Simulator 2 and friends relies on this (see #1250 ).
2019-11-23 23:57:07 +01:00
Philip Rebohle
6b3d60ab25
[dxvk] Enable asynchronous presentation on all hardware
...
...and remove the dxvk.asyncPresent option.
2019-11-19 23:34:24 +01:00