summaryrefslogtreecommitdiffstats
path: root/src/video_core/renderer_vulkan/vk_scheduler.cpp (follow)
Commit message (Collapse)AuthorAgeFilesLines
* vk_state_tracker: Initial implementationReinUsesLisp2020-02-281-9/+12
| | | | Add support for render targets and viewports.
* vk_query_cache: Implement generic query cache on VulkanReinUsesLisp2020-02-141-0/+8
|
* vk_scheduler: Delegate commands to a worker thread and state trackReinUsesLisp2019-12-131-12/+138
| | | | | | | | | | | | Introduce a worker thread approach for delegating Vulkan work derived from dxvk's approach. https://github.com/doitsujin/dxvk Now that the scheduler is what handles all Vulkan work related to command streaming, store state tracking in itself. This way we can know when to reupload Vulkan dynamic state to the queue (since this one is invalidated between command buffers unlike NVN). We can also store the renderpass state and graphics pipeline bound to avoid redundant binds and renderpass begins/ends.
* vk_scheduler: Drop execution context in favor of viewsReinUsesLisp2019-07-071-10/+6
| | | | | | | | | | | | | | Instead of passing by copy an execution context through out the whole Vulkan call hierarchy, use a command buffer view and fence view approach. This internally dereferences the command buffer or fence forcing the user to be unable to use an outdated version of it on normal usage. It is still possible to keep store an outdated if it is casted to VKFence& or vk::CommandBuffer. While changing this file, add an extra parameter for Flush and Finish to allow releasing the fence from this calls.
* vk_scheduler: Implement a schedulerReinUsesLisp2019-02-221-0/+60
The scheduler abstracts command buffer and fence management with an interface that's able to do OpenGL-like operations on Vulkan command buffers. It returns by value a command buffer and fence that have to be used for subsequent operations until Flush or Finish is executed, after that the current execution context (the pair of command buffers and fences) gets invalidated a new one must be fetched. Thankfully validation layers will quickly detect if this is skipped throwing an error due to modifications to a sent command buffer.