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

Device States and Backend Switching #66

Merged
merged 122 commits into from
Jul 28, 2022
Merged

Device States and Backend Switching #66

merged 122 commits into from
Jul 28, 2022

Conversation

crud89
Copy link
Owner

@crud89 crud89 commented Jul 27, 2022

Describe the pull request

This PR introduces several API improvements:

  • DeviceState allows to let the device manage resources, namely render passes, pipelines, buffers, images, samplers and descriptor sets.
  • Apps can now be configured with multiple backends per backend type. Using device states help to manage resources over multiple backends.
  • The builder interface has been improved and is now less intrusive, as well as more compatible. This also helps when creating states for multiple backends from a single (template) method.

Device state resources also can be assigned a name now, which is also a preparation for #15.

Related issues

ToDo

Currently, it is not possible to switch from DX12 back to Vulkan, since D3D12 only supports flip-model based swap chains and there is no way to reset the window afterwards. To fix this, the Vulkan swap chain should interop the DXGI swap chain if the DX12 backend is available. This should also improve performance for Vulkan, since it does not rely on legacy GDI bitblt anymore.

Also the readme and documentation should be adapted before merging.

Also rename `getType` member.
@crud89 crud89 marked this pull request as ready for review July 28, 2022 18:22
@crud89 crud89 merged commit 849f2ff into main Jul 28, 2022
@crud89 crud89 deleted the backend-states branch July 28, 2022 18:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Module: DX12 ❎ The issue involves the DX12 backend. Module: Vulkan 🌋 The issue involves the Vulkan backend. Priority: High A high priority issue. Type: Requirement An implementation is required before the next release.
Projects
Status: v0.3.1
Development

Successfully merging this pull request may close these issues.

Interop DXGI swap chain in Vulkan, if DX12 backend is enabled. Support back-end switching.
1 participant