Philip Rebohle
0ce5dd8b03
[dxvk] Remove conditional rendering from backend
...
Was disabled anyway due to being broken on various drivers,
so let's get rid of it.
2020-11-30 19:18:26 +01:00
Philip Rebohle
9ba99eba93
[dxvk] Add feature bit for extended dynamic state
2020-07-10 16:59:20 +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
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
63cc8cdd35
[dxvk] Move descriptor set updates to updateShaderResources
...
Saves two state flags and allows us to move the descriptor info
array into the function itself.
2019-10-10 22:48:06 +02:00
Philip Rebohle
51f1d7725c
[dxvk] Store context flags as a 32-bit integer
...
Might improve code generation for 32-bit builds. We currently
have 31 flags and don't expect any new ones to be added.
2019-09-23 23:34:04 +02:00
Philip Rebohle
eaa41eb76c
[dxvk] Don't use reference counting for pipeline objects
...
Again not necessary since these objects are persistent.
Eliminates refcount overhead of pipeline lookups entirely.
2019-07-23 13:15:06 +02:00
Philip Rebohle
8cd13cc5bd
[dxvk] Use shader key structs directly for pipeline lookups
...
Removes some overhead and unnecessary ref count changes on shaders.
2019-07-23 13:00:04 +02:00
Philip Rebohle
b3f61936d2
[dxvk] Don't align pushg constant data to 64 bytes
...
Causes binaries compiled with GCC 6.3 to crash on device creation.
2019-05-15 03:07:05 +02:00
Philip Rebohle
644f33a82b
[dxvk] Optimize unbound vertex buffer handling
...
We can actually just set the stride to 0 when binding a null
buffer, so that we can avoid all the runtime tracking.
2019-05-08 00:52:30 +02:00
Philip Rebohle
02768182f1
[dxvk] Implement push constant API
2019-05-07 20:51:27 +02:00
Philip Rebohle
8a3044a342
[dxvk] Implement depth bounds test in backend
2019-05-06 00:08:57 +02:00
Philip Rebohle
bacb1f7c60
[dxvk] Implement indirct draw commands with indirect count
2019-05-06 00:08:57 +02:00
Philip Rebohle
acdb989cfa
[dxvk] Implement conditional rendering
2019-03-28 10:02:11 +01:00
Philip Rebohle
9165f8c072
[dxvk] Add type and context method to set barrier control flags
2019-02-07 19:39:05 +01:00
Philip Rebohle
7e975bbdfc
[dxvk] Move blend constants and stencil ref state to DxvkDynamicState
...
For consistency with how depth bias is being stored.
2019-01-17 22:26:27 +01:00
Philip Rebohle
95815a075b
[dxvk] Move depth bias out of rasterizer state
...
While the previous model corresponded to D3D11, it does
not reflect that the backend treats it the same way as
e.g. blend constants.
2019-01-17 22:25:21 +01:00
Philip Rebohle
422198952a
[dxvk] Use minimal set of dynamic state
...
We don't need to enable blend constants for pipelines that don't
have blending enabled, etc. This helps reduce the number of API
calls slightly and may help the driver work more efficiently.
2019-01-16 20:55:41 +01:00
Philip Rebohle
fd52022fff
[dxvk] Spill render pass after draws with storage resources
2018-10-29 12:12:34 +01:00
Philip Rebohle
76d917df20
[dxvk] Add xfb counter write -> xfb counter read barrier
...
- Update xfb counter barrier
2018-10-10 13:05:37 +02:00
Philip Rebohle
52e1671167
[dxvk] Add Xfb context state
2018-10-10 13:05:37 +02:00
Philip Rebohle
781ee00f5c
[dxvk] Refactor indirect draw/dispatch commands
...
Introduces an OpenGL-style bind point for the argument buffer, which
means we can avoid a lot of unnecessary reference tracking in games
that do a lot of indirect draw calls.
Reduces CPU overhead in Assassin's Creed Odyssey.
2018-10-08 10:23:18 +02:00
Philip Rebohle
826b1245a1
[dxvk] Add context state flags for descriptor set and offset updates
2018-06-22 00:31:56 +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
f77392a264
[dxvk] Apply dynamic state at draw time
...
Changes to the viewport, stencil reference and blend constants are often
coupled with a pipeline state update, so it makes sense to update it later.
2018-05-29 05:03:27 +02:00
Philip Rebohle
5d5be87402
[dxvk] Oprimize render target clear operations
...
We can save one image layout transition when clearing a render
target by delaying clears until vkCmdBeginRenderPass is called.
2018-04-30 17:04:13 +02:00
Philip Rebohle
1bbfe77013
[dxvk] Refactor DxvkFramebuffer and DxvkRenderpass
2018-04-30 15:47:29 +02:00
Philip Rebohle
1075990dbe
[dxvk] Apply render target bindings at draw time
...
This should help reduce the number of redundant render pass spills,
especially in games which use deferred contexts for rendering. This
optimization mostly helps in GPU-bound scenarios.
2018-04-26 14:47:55 +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
0c2058e8c4
[dxvk] Introduced DxvkComputePipelineStateInfo
...
Will be used to re-compile compute pipelines against the current
state, just like graphics pipelines. May fix GPU lockups etc.
2018-02-14 17:54:35 +01:00
Philip Rebohle
b31ebbb690
[d3d11] Add support for DSV read-only flags
...
Games need this in order to use the depth buffer as both
a framebuffer attachment and a shader resource.
2018-02-06 17:31:23 +01:00
Philip Rebohle
14d5054893
[dxvk] Initial work on instance data fetch rates
...
Adds a pipeline flag to indicate that instanced
draw calls need to be emulated.
2018-02-01 20:15:25 +01:00
Philip Rebohle
d4a0581f8f
[dxvk] Bind dummy resource for unbound vertex and index buffers
...
Allows GTA V to run, although heavy rendering artifacts remain.
2018-02-01 13:29:57 +01:00
Philip Rebohle
9fbddf57df
[dxvk] Emit dynamic state after binding a graphics pipeline
...
Fixes issues with stencil references becoming undefined under
certain circumstances. This issue was encountered in Heroes
of the Storm.
2018-01-29 20:01:49 +01:00
Philip Rebohle
2dd24a14d2
[dxvk] Refactored blend constants
...
This will make things a little less painful when capturing
blend constants in a lambda function, as required for CSMT.
2018-01-20 15:41:06 +01:00
Philip Rebohle
9c90c1ac00
[dxvk] Optimized pipeline state updates
2018-01-10 20:40:10 +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
40241e0b22
[dxvk] DxvkBufferBinding -> DxvkBufferSlice
2017-12-14 15:24:43 +01:00
Philip Rebohle
50b7293b8f
[d3d11] Implemented blend state and depth-stencil state binding
2017-12-11 14:11:18 +01:00
Philip Rebohle
4144e3229a
[d3d11] Implemented blend state creation
2017-12-11 13:03:07 +01:00
Philip Rebohle
b49815657e
[dxvk] Refactored blend state
2017-12-08 01:06:48 +01:00
Philip Rebohle
6a9743ead7
[dxvk] Refactored blend state
2017-12-08 00:51:20 +01:00
Philip Rebohle
84605a1310
[dxvk] Refactored input layout state
2017-12-08 00:44:58 +01:00
Philip Rebohle
385c92db5a
[dxvk] Refactoring of most constant state objects
2017-12-08 00:02:43 +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
ade00add8d
[dxvk] Removed buffer stride stuff for now, we need a better solution
2017-12-07 19:28:54 +01:00
Philip Rebohle
a901a85401
[dxvk] Added support for vertex index types
2017-12-07 14:01:17 +01:00
Philip Rebohle
f33acf7334
[dxvk] Modified interface to accept dynamic vertex buffer strides
2017-12-07 11:39:59 +01:00
Philip Rebohle
93c719cadf
[dxvk] Reintroduced dirty pipeline state flag
2017-12-07 09:44:45 +01:00
Philip Rebohle
19851c8432
[dxvk] Re-implemented pipeline creation within the backend
2017-12-07 09:38:31 +01:00