1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00

57 Commits

Author SHA1 Message Date
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
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
Philip Rebohle
c936709aec [dxvk] Moved context flags out of context state object 2017-12-01 10:27:33 +01:00
Philip Rebohle
ae0c186f26 [dxvk] Implemented constant state objects 2017-11-20 13:21:27 +01:00