Commit Graph

1798 Commits

Author SHA1 Message Date
Philip Rebohle 6dd82dfe03
[dxbc] Clamp written depth value to (0.0, 1.0)
Fixes shadow issue in Overwatch (#738).
2018-11-23 12:00:23 +01:00
Philip Rebohle 0418c02ac3
[dxbc] Use clustered subgroup operations on supported hardware 2018-11-21 11:17:09 +01:00
Philip Rebohle ab17c49c4e
[dxbc] Fix compiler warning about uninitialized values 2018-11-21 11:17:09 +01:00
Philip Rebohle 94b0058e0d
[tests] Enable subgroup ops for DXBC compiler app 2018-11-21 11:17:09 +01:00
Philip Rebohle 4f76b89941
[dxbc] Use subgroup operations for early discard
Can improve performance in some complex fragment shaders.
2018-11-21 11:17:09 +01:00
Philip Rebohle a574829bb6
[dxbc] Remove DeferKill flag
This behaviour is correct, and needs to be enabled by default.
2018-11-21 11:17:09 +01:00
Philip Rebohle 968a085f1e
[dxvk] Query device subgroup properties
Also query the device properites for this extension as well
as support for subgroup operations on this device.
2018-11-21 11:17:09 +01:00
Philip Rebohle 67e10246cb
[dxvk] Request Vulkan 1.1 instance
Falls back to a regular 1.0 instance on old drivers.
We need to do this in order to legally use SPIR-V 1.3.
2018-11-21 11:17:09 +01:00
Philip Rebohle 59d0ad4413
[spirv] Add non-uniform group instructions 2018-11-21 11:17:09 +01:00
Philip Rebohle c8e44085c5
[meta] Update SPIR-V headers 2018-11-21 11:17:06 +01:00
Philip Rebohle dbd7db3328
[dxvk] Fix typo around dual-src blending
Fixes e744117042
2018-11-20 19:55:08 +01:00
Philip Rebohle bcd5a9235c
[dxvk] Make use of VK_AMD_memory_overallocation_behavior
Currently only supported on AMDVLK. Enforces memory limits on a driver
level unless the corresponding dxvk.allowMemoryOvercommit option is enabled.
2018-11-20 15:50:41 +01:00
Philip Rebohle 99f6953e89
[dxvk] Store DXVK options directly with the instance object 2018-11-20 15:50:01 +01:00
Philip Rebohle 7738d2f353
[meta] Update Vulkan headers 2018-11-20 15:36:36 +01:00
Philip Rebohle 81765de35b
[util] Remove default options that spoof AMD GPUs
This is no longer necessary due to the nvapi workaround.
2018-11-20 13:17:36 +01:00
Philip Rebohle 5d49644cdc
[dxgi] Hack: Report Nvidia cards as AMD cards by default
Prevents UE4 games from repeatedly trying to load nvapi.dll
on a performance-critical code path.
2018-11-20 13:15:39 +01:00
Philip Rebohle bfb7e54218
[d3d11] Rename dcMapSpeedHack to dcSingleUseMode 2018-11-20 11:37:48 +01:00
Philip Rebohle ad5688764c
[d3d11] Use single-use submission mode for CS chunks where possible 2018-11-20 10:44:04 +01:00
Philip Rebohle c61200d35f
[dxvk] Introduce single-use mode for CS chunks
This allows us to reset the CS chunk immediately while executing it,
which can reduce the overhead of the reset operation and may lead to
resources being released earlier.
2018-11-20 10:35:23 +01:00
Philip Rebohle e744117042
[dxvk] Patch fragment shader for dual-source blending 2018-11-19 17:07:05 +01:00
Philip Rebohle f69c5e4c4e
[dxbc] Emit Index decoration for pixel shader outputs
Simplifies shader patching when dual-source blending is used.
2018-11-19 16:57:11 +01:00
Philip Rebohle 3e3c31f365
[spirv] Add support for Index decoration
Needed for dual-source blending
2018-11-19 16:57:08 +01:00
Philip Rebohle 5aad615aef
[dxvk] Unbind graphics pipeline when spilling render pass
Otherwise we may in some very rare cases continue using an incorrect
pipeline in subsequent render passes if the same shaders are used for
drawing.
2018-11-19 01:35:41 +01:00
Philip Rebohle 85f0fe729c
[dxvk] Move DxvkEventTracker to dxvk_event.{h,cpp}
The upcoming new event and query classes will follow this design.
Reduces the number of files around these small classes.
2018-11-17 01:17:03 +01:00
Andrew Eikum aea4162198 [dxgi] MultiByteToWideChar counts length in characters 2018-11-16 19:53:37 +01:00
Philip Rebohle e4d3357e55
[dxgi] Query window size before creating presenter
Otherwise we may pass a size of zero to the presenter.
2018-11-16 15:03:09 +01:00
Derek Lesho 66bcc4b3d8 Use std::string for util::getEnvVar input
This allows cleaner code when implementing DXVK as a native library
2018-11-16 06:43:45 +01:00
Philip Rebohle 037f2038f0
[meta] Update README 2018-11-15 19:31:25 +01:00
Philip Rebohle c25483e856
[dxgi] Implement IDXGISwapChain3
- Stub IDXGISwapChain3::ResizeBuffers1
2018-11-15 18:02:27 +01:00
Philip Rebohle 81bb561c75
[dxgi] Implement IDXGIAdapter3 2018-11-15 18:02:21 +01:00
Philip Rebohle 171251bc83
[dxgi] Implement IDXGIFactory4
Do not support WARP adapters for the moment.
2018-11-15 17:08:36 +01:00
Philip Rebohle 0b7e114cb0
[dxgi] Implement IDXGIDevice3 2018-11-15 17:08:36 +01:00
Philip Rebohle 23ac9b5277
[dxgi] Implement IDXGISwapChain2 stubs
Most of the additions are stubs for now, but we should be
able to implement most of the functionality at a later time.

None of the backends implement this yet, but this should be
relatively easy to do.
2018-11-15 17:08:35 +01:00
Philip Rebohle a849ffc56c
[dxgi] Implement IDXGIOutput3 2018-11-15 17:08:35 +01:00
Philip Rebohle 9af842801c
[dxgi] Implement IDXGIFactory3 2018-11-15 17:08:35 +01:00
Philip Rebohle f03d87b918
[dxgi] Implement IDXGIOutput1
Required for DXGI 1.2.
2018-11-15 17:08:35 +01:00
Philip Rebohle f7b2194e0b
[dxgi] Include DXGI 1.4 headers 2018-11-15 17:08:27 +01:00
Philip Rebohle 1af96347e1
[dxvk] Forward memory allocation statistics to the adapter 2018-11-15 17:08:05 +01:00
Philip Rebohle d49de734b7
[dxvk] Set low thread priority for pipeline compiler threads
This currently does not have any effect when using regular wine, but
if it ever gets supported then these background jobs should have less
of an influence on the game's performance when they kick in.
2018-11-15 12:19:24 +01:00
Philip Rebohle 305168d2bb
[util] Add method to set thread priority 2018-11-15 12:17:18 +01:00
Philip Rebohle 6adf534589
[dxvk] Add option to set number of pipeline compiler threads 2018-11-15 09:24:11 +01:00
Philip Rebohle 4db5c21ec5
[dxvk] Use ticket lock to synchronize access to query objects
Lowers overhead in the uncontested case compared to std::mutex, and
prevents the main rendering thread from blocking updates for too long.
2018-11-13 17:05:37 +01:00
Philip Rebohle 63d42073b8
[util] Add ticket lock implementation 2018-11-13 17:05:06 +01:00
Philip Rebohle 1724d51079
[dxgi] Refactor presenter creation
This change is needed to support non-D3D11 presenters in our DXGI code.
2018-11-12 11:39:34 +01:00
Philip Rebohle 8d2f8fca64
[meta] Release v0.92 2018-11-11 16:16:01 +01:00
Philip Rebohle 6f28ce5809
[dxvk] Do not require GL_EXT_samplerless_texture_functions
Ubuntu ships a version of the GLSL compiler that does not support
this extension yet, so building DXVK fails on those systems.
Closes #760.
2018-11-11 15:48:07 +01:00
Philip Rebohle a971370524
[dxbc] Implement Dmovc instruction
Fixes some mandelbrot demo mentioned in #216.
2018-11-10 23:27:56 +01:00
Philip Rebohle 0cfa5b16d3
[d3d11] Support R11G11B10 format in ClearUnorderedAccessViewUint
Silences an error message in Shadow of the Tomb Raider. Does not have
any consequences for this game because it initializes the view to 0.
2018-11-10 18:48:44 +01:00
Philip Rebohle 05856e836b
[d3d11] Don't enable StorageImageReadWithoutFormat feature for FL11_0
We don't really need this, although it might be useful in the future.
2018-11-10 11:34:23 +01:00
Philip Rebohle 504de3994b
[dxvk] Inline DxvkBufferView::updateView method
Most of the time the condition is false, so we should help
the compiler where we can to optimize for the common case.
2018-11-09 11:40:44 +01:00