Philip Rebohle
70510bab9a
[dxvk] Introduce extra pipeline state
...
Provides extra state that will be passed in via spec constants.
Whether or not this state is used is determined by the shaders.
2019-04-01 02:31:32 +02:00
Philip Rebohle
0d84ebd4c9
[dxvk] DepthClampEnable -> DepthClipEnable
...
There are subtle differences between the two that we
should deal with in the backend at some point.
2019-01-17 01:59:10 +01:00
Philip Rebohle
190f114449
[dxvk] Add methods to check which dynamic states a pipeline uses
2019-01-16 20:01:20 +01:00
Philip Rebohle
e744117042
[dxvk] Patch fragment shader for dual-source blending
2018-11-19 17:07:05 +01:00
Philip Rebohle
e15e693dc4
[dxvk] Spill render pass for pipelines that use vertex stage UAVs
...
We cannot use simple pipeline barriers in this case because of the
extremely strict restrictions surrounding self-dependencies.
2018-10-30 14:43:52 +01:00
Philip Rebohle
fd52022fff
[dxvk] Spill render pass after draws with storage resources
2018-10-29 12:12:34 +01:00
Philip Rebohle
9decfb34b7
[dxvk] Determine whether a graphics pipeline writes to resources
...
- Fix missing test for storage texel buffers
2018-10-29 12:12:34 +01:00
Philip Rebohle
ec8559f40a
[dxvk] Remove unneeded atomic that holds base pipeline handles
...
No longer needed because the full pipeline object gets locked anyway.
2018-10-29 12:11:33 +01:00
Philip Rebohle
a27e440272
[dxvk] Detect Xfb and set rasterized stream index
2018-10-10 13:05:37 +02:00
Philip Rebohle
eff81c7edf
[dxvk] Implement getShader method for graphics pipelines
2018-10-10 10:28:12 +02:00
Philip Rebohle
4a72cae1e6
[dxvk] Enable state cache
2018-09-23 14:41:43 +02:00
Philip Rebohle
83447975ac
[dxvk] Refactor pipeline stat counters
...
The stat counter struct no longer has to be passed to
the pipeline compiler function.
The new implementation uses atomic counters of the pipeline manager
rather than per-command list counters, which removes the need to
pass the counter structure to the compiler function.
2018-09-22 12:02:20 +02:00
Philip Rebohle
5410680401
[dxvk] Refactor pipeline object constructors
...
This way we don't need to pass everything to the pipeline objects.
2018-09-22 11:59:25 +02:00
Philip Rebohle
482930f04a
[dxvk] Implement backend support for D3D11 forced sample count
...
We don't support rasterization with a sample count different from
the framebuffer sample count, but if there are no attachments, any
sample count is allowed.
2018-09-18 13:22:28 +02:00
Philip Rebohle
f42f708f72
[dxvk] Rename DxvkBindingState -> DxvkBindingMask
...
Preparation for some more binding-related work.
2018-09-17 10:45:28 +02:00
Philip Rebohle
c8e0c253ba
[dxvk] Simplify graphics pipeline instance management
2018-09-16 10:07:45 +02:00
Philip Rebohle
364e15d11a
[dxvk] Remove all remaining pipecompiler code
2018-09-14 17:22:56 +02:00
Philip Rebohle
18927dc958
[dxvk] Remove asynchronous pipeline compiler
2018-09-14 16:46:07 +02:00
Philip Rebohle
5c89a68879
[dxvk] Implement render target state tracking for async compilation
...
This ensures that we always render to targets which are only used once.
2018-09-10 19:41:17 +02:00
Philip Rebohle
c3b542878c
[dxvk] Repurpose asynchronous pipeline compiler
...
Removes support for DISABLE_OPTIMIZATION_BIT. Instead, pipelines
will not be made available until compiled by one of the worker
threads.
2018-09-10 17:02:42 +02:00
Philip Rebohle
37a8743dbc
[dxvk] Add output component mask state to graphics pipelines
...
This is required in order to implement swizzled render target views.
We currently use this to remap color write masks as needed.
2018-09-01 17:59:50 +02:00
Philip Rebohle
4f28d57352
[dxvk] Remove unused rasterizer discard state flag
2018-06-25 16:56:52 +02:00
Philip Rebohle
db7a7fa4bc
[dxvk] Use dynamic offsets for both graphics and compute pipelines
2018-06-22 00:33:47 +02:00
Philip Rebohle
e8ac81fe8a
[dxvk] Removed support for depth bounds test
...
This feature is not used in D3D11, so we don't need backend support.
2018-06-06 13:11:09 +02:00
Philip Rebohle
8b4852be16
[dxvk] Make depth bias a dynamic state
...
Works around an issue with some games not setting the D3D11 depth
bias state correctly, which can result in an excessive number of
pipelines being compiled.
2018-06-06 12:45:45 +02:00
Philip Rebohle
368eea7310
[dxvk] Use derivative pipelines again
2018-05-13 15:37:18 +02:00
Philip Rebohle
cfb4791872
[dxvk] Use VK_PIPELINE_CREATE_DISABLE_OPTIMIZATION_BIT
...
Optimized versions of the pipelines will be compiled asynchronously.
2018-05-10 14:54:44 +02:00
Philip Rebohle
3b132196d3
[dxvk] Add ability to hold two pipeline handles to pipeline instances
2018-05-10 14:15:47 +02:00
Philip Rebohle
010fc6ad49
[dxvk] Implement DxvkGraphicsPipelineInstance
...
This should come in handy when compiling an optimized version of
a pipeline asynchronously. This can be extended to hold multiple
pipeline handles, i.e. one optimized one and one without opts.
Collateral damage: We're not using derivative pipelines anymore,
needs to be re-added at a later point.
2018-05-09 22:23:50 +02:00
Philip Rebohle
3a3b1eda59
[dxvk] Move render pass out of pipeline state vector
2018-05-03 23:48:45 +02:00
Philip Rebohle
d201a1f7c6
[dxvk] Made pipe manager and pipeline classes thread-safe
2018-05-01 16:45:28 +02:00
Philip Rebohle
9a8263f465
[dxvk] Implement vertex binding divisors
...
Uses VK_EXT_vertex_attribute_divisor when available.
2018-04-17 17:24:16 +02:00
Philip Rebohle
687ef77860
[dxvk] Enable sample rate shading if needed
2018-04-08 21:49:30 +02:00
Philip Rebohle
4d28f765df
[dxvk] Remove support for VK_AMD_rasterization_order
...
RADV will be doing this by default when it makes sense.
2018-04-04 15:09:24 +02:00
Philip Rebohle
9ef4168867
[dxvk] Added support for pipeline-related stat counters
2018-04-03 15:52:39 +02:00
Philip Rebohle
097eb89cfb
[dxvk] Log pipeline state when pipeline compilation fails
2018-04-02 19:05:41 +02:00
Philip Rebohle
05e0f3d52d
[dxvk] Remove mutex from Dxvk(Graphics|Compute)Pipeline
...
Not needed anymore because the pipe manager itself won't be
accessed by multiple threads any longer.
2018-03-29 16:36:31 +02:00
Philip Rebohle
ad6c45d6b1
[dxvk] Improve debuggability of shader compiler issues
...
When using DXVK_LOG_LEVEL=debug, the graphics pipeline manager now
prints the names of the shaders used by the pipeline. This shall
help debug driver crashes in vkCreate*Pipelines.
2018-02-07 16:44:30 +01:00
Philip Rebohle
52e8918b57
[d3d11] Added support for tessellation patch primitives
2018-01-29 11:31:00 +01:00
Philip Rebohle
a1a7bb9092
[dxvk] DxvkBindingLayout -> DxvkPipelineLayout
2018-01-23 17:40:36 +01:00
Philip Rebohle
d3f84688cc
[dxvk] Make use of VK_AMD_rasterization_order
...
May slightly improve GPU performance in some scenarios.
2018-01-16 15:00:19 +01:00
Philip Rebohle
c1f16d36bd
[dxvk] Implemented local pipeline cache
2018-01-13 22:18:32 +01:00
Philip Rebohle
5dd9fea011
[dxvk] Implemented input layout validation
...
Checks whether all input slots consumed by the vertex shader
are provided by the input layout, and disables rendering in
case the state validation fails. This should hopefully fix
GPU lockups in Nier:Automata.
2018-01-12 14:25:26 +01:00
Philip Rebohle
8bccbbccc8
[dxvk] Using derivative graphics pipelines
2018-01-10 22:54:00 +01:00
Philip Rebohle
ed642a57a7
[dxvk] Simplified state-based pipeline lookup
2018-01-10 21:28:20 +01:00
Philip Rebohle
c64103c73f
[dxvk] Implementing unbound resource handling (1/4)
...
In order to emulate D3D11 behaviour when a resource is not bound,
we use specialization constants. This requires further changes in
the shader compiler.
2018-01-10 11:44:40 +01:00
Philip Rebohle
796c200e32
[dxvk] Major refactoring of graphics pipeline state lookup in order to support more dynamic state
2017-12-07 21:47:38 +01:00
Philip Rebohle
19851c8432
[dxvk] Re-implemented pipeline creation within the backend
2017-12-07 09:38:31 +01:00
Philip Rebohle
b5d068366d
[dxvk] Implemented shader resource binding
2017-12-03 20:23:26 +01:00
Philip Rebohle
a6bf7659b0
[dxvk] Refactored shader binding, client APIs must now create pipelines and pipeline layouts
2017-12-03 00:40:58 +01:00