1
0
Fork 0
forked from suyu/suyu
suyu/src/video_core/shader
ReinUsesLisp 58b0ae84b5 renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore
This reworks how host<->device synchronization works on the Vulkan
backend. Instead of "protecting" resources with a fence and signalling
these as free when the fence is known to be signalled by the host GPU,
use timeline semaphores.

Vulkan timeline semaphores allow use to work on a subset of D3D12
fences. As far as we are concerned, timeline semaphores are a value set
by the host or the device that can be waited by either of them.

Taking advantange of this, we can have a monolithically increasing
atomic value for each submission to the graphics queue. Instead of
protecting resources with a fence, we simply store the current logical
tick (the atomic value stored in CPU memory). When we want to know if a
resource is free, it can be compared to the current GPU tick.

This greatly simplifies resource management code and the free status of
resources should have less false negatives.

To workaround bugs in validation layers, when these are attached there's
a thread waiting for timeline semaphores.
2020-09-19 01:46:37 -03:00
..
decode video_core: Enforce -Werror=switch 2020-09-16 17:48:01 -03:00
ast.cpp Shader_IR: Implement Fast BRX and allow multi-branches in the CFG. 2019-10-25 09:01:31 -04:00
ast.h shader: Remove curly braces initializers on shared pointers 2020-02-01 22:52:10 -03:00
async_shaders.cpp async_shaders: Mark getters as const member functions 2020-08-24 01:15:50 -04:00
async_shaders.h renderer_vulkan: Make unconditional use of VK_KHR_timeline_semaphore 2020-09-19 01:46:37 -03:00
compiler_settings.cpp Shader_Ir: Refactor Decompilation process and allow multiple decompilation modes. 2019-10-04 18:52:50 -04:00
compiler_settings.h Shader_IR: allow else derivation to be optional. 2019-10-04 18:52:52 -04:00
control_flow.cpp General: Tidy up clang-format warnings part 2 2020-08-13 14:19:08 -04:00
control_flow.h video_core: Rename "const buffer locker" to "registry" 2020-03-09 18:40:06 -03:00
decode.cpp shader_ir: Separate float-point comparisons in ordered and unordered 2020-05-09 04:55:15 -03:00
expr.cpp video_core/expr: Supply operator!= along with operator== 2019-10-05 09:14:26 -04:00
expr.h Shader_IR: Address Feedback. 2019-10-26 15:38:30 -04:00
memory_util.cpp video_core: Remove all Core::System references in renderer 2020-09-06 05:28:48 -03:00
memory_util.h video_core: Remove all Core::System references in renderer 2020-09-06 05:28:48 -03:00
node.h shader/texture: Join separate image and sampler pairs offline 2020-06-05 00:24:51 -03:00
node_helper.cpp shader_decode: ATOM/ATOMS: add function to avoid code repetition 2020-03-30 18:47:50 +07:00
node_helper.h shader/texture: Join separate image and sampler pairs offline 2020-06-05 00:24:51 -03:00
registry.cpp shader/texture: Join separate image and sampler pairs offline 2020-06-05 00:24:51 -03:00
registry.h shader/texture: Join separate image and sampler pairs offline 2020-06-05 00:24:51 -03:00
shader_ir.cpp video_core: Allow copy elision to take place where applicable 2020-07-21 00:36:13 -04:00
shader_ir.h shader/texture: Join separate image and sampler pairs offline 2020-06-05 00:24:51 -03:00
track.cpp shader/texture: Join separate image and sampler pairs offline 2020-06-05 00:24:51 -03:00
transform_feedback.cpp shader/transform_feedback: Expose buffer stride 2020-03-13 18:33:05 -03:00
transform_feedback.h shader/transform_feedback: Expose buffer stride 2020-03-13 18:33:05 -03:00