Philip Rebohle
dbd7db3328
[dxvk] Fix typo around dual-src blending
...
Fixes e74411704277009169a31f0bc34951b9f67be9c2
2018-11-20 19:55:08 +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
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
8bcd47d6dc
[dxvk] Simplify pipeline object locking
...
Any more complex approach is not very useful at the moment
because we have to put a lock around the actual compile
function anyway.
2018-09-25 18:22:58 +02:00
Philip Rebohle
a950872c7c
[dxvk] Check whether the vertex binding / attribute count is valid
2018-09-24 16:22:12 +02:00
Philip Rebohle
4a72cae1e6
[dxvk] Enable state cache
2018-09-23 14:41:43 +02:00
Philip Rebohle
d6742e38c5
[dxvk] Lock pipeline object while compiling one pipeline
...
This prevents us from compiling the exact same pipeline twice
at the same time, which for some reason crashes RADV.
2018-09-22 12:04:06 +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
cb274e040d
[dxvk] Add spec constants for pixel shader output mapping
2018-09-01 17:59:50 +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
18b39d8239
[dxvk] Fix base pipeline assignment when compipling new pipelines
...
We might otherwise end up destroying our base pipeline.
2018-08-10 23:29:45 +02:00
Philip Rebohle
656cb2e4aa
[dxvk] Refactor Vulkan extension management
...
Adding an extension will now require an additional step, but
this evolved version of the extension list code is more sane
and the structures can be more easily copied around.
2018-07-23 20:07:21 +02:00
Philip Rebohle
336b3858c9
[dxvk] Relax VK_EXT_vertex_attribute_divisor requirement
...
Nvidia 396.45 still does not support this. Nvidia, please, we need it.
2018-07-19 23:10:12 +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
f8650c1c9f
[dxvk] Require VK_KHR_maintenance2 and VK_EXT_vertex_attribute_divisor
...
Wine 3.10 added support for these extensions, so we should use them.
2018-06-11 21:09:52 +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
a2d9874b26
[dxvk] Use new spec constant structure for pipeline compilation
2018-05-26 14:54:29 +02:00
Philip Rebohle
f42f7cc743
[dxvk] Make use of the asynchronous pipeline compiler optional
...
Users can enable this by setting DXVK_USE_PIPECOMPILER=1.
2018-05-13 16:02:23 +02:00
Philip Rebohle
368eea7310
[dxvk] Use derivative pipelines again
2018-05-13 15:37:18 +02:00
Philip Rebohle
b805560340
[dxvk] Do not log invalid pipeline state
...
Fixes some log spam in case games attempt to render geometry
with an invalid pipeline state vector.
2018-05-10 21:59:57 +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
ae0e5bccdd
[dxvk] Make shader accessible from shader module
2018-05-03 23:56:28 +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
d68d62f837
[dxvk] Removed on-disk pipeline cache
...
Drivers from both major vendors implement their own shader cache
already, and storing a cache per game causes more issues than it
solves. Should fix #261 .
2018-04-09 19:38:32 +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
108bf2194f
[dxvk] Time pipeline creation in debug mode
2018-03-29 12:06:53 +02:00
Philip Rebohle
5c2144b55d
[dxvk] Move tess state validation to validatePipelineState
2018-03-21 15:22:18 +01:00
Philip Rebohle
ec161823e5
[dxvk] Check whether renderpass is null before creating pipeline
2018-03-21 15:09:34 +01:00