Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Multi-Frame Rendering #1

Open
Wunkolo opened this issue Jun 21, 2022 · 0 comments · May be fixed by #2
Open

Multi-Frame Rendering #1

Wunkolo opened this issue Jun 21, 2022 · 0 comments · May be fixed by #2
Assignees
Labels
enhancement New feature or request

Comments

@Wunkolo
Copy link
Owner

Wunkolo commented Jun 21, 2022

Basalt plugins have a pretty good pattern of MFR rendering on top of vulkan, but I want vulkanator to ultimately use something better.

The easiest way to have MFR implemented is to give each SmartRender context its own: CommandPool, DescriptorPool, DescriptorSet, and DeviceMemory for both the Input and Output and Uniforms. This is likely what "version 1" will have.

The improved pattern will utilize a pool of each type that is recycled and protected using a global VK_KHR_timeline_semaphore(Core in Vulkan 1.2) to indicate when a particular entry in each pool is available for re-use or not and allocating a new element in the case that all entries are in-use. This allows for resource allocation to scale with the amount of data that can be processed and acts as a sort of swapchain of GPU resources, scaling only by as fast as the system can let go of resources. A faster processor and GPU will have wide resource-pools. A slower and more serial processor and GPU will have narrower slots.

MoltenVK supports VK_KHR_timeline_semaphore KhronosGroup/MoltenVK#1124 and can safely utilize this pattern as well.

@Wunkolo Wunkolo added the enhancement New feature or request label Jun 21, 2022
@Wunkolo Wunkolo self-assigned this Jun 21, 2022
@Wunkolo Wunkolo linked a pull request Jun 22, 2022 that will close this issue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant