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

Render pass dependencies #124

Merged
merged 22 commits into from
Feb 9, 2024
Merged

Render pass dependencies #124

merged 22 commits into from
Feb 9, 2024

Conversation

crud89
Copy link
Owner

@crud89 crud89 commented Feb 9, 2024

Describe the pull request

This PR improves handling of render pass dependencies, effectively serving as a bare-bone render graph (albeit without support for non render-target dependencies, e.g. resources coming from compute passes, transfers or ray-tracing pipelines, etc.). To achieve this a bit of refactoring has been done:

  • Input attachment mappings have been renamed to RenderPassDependency, which appears more meaningful.
  • Dependencies now store a binding point, removing some implicit assumptions about where input attachments are mapped to. Note that it is still not possible to have different binding points for different pipelines in the same render pass (although this appears as a minor limitation).
  • In a similar fashion, a binding point for the sampler that samples input attachments can now be specified. This removes the requirement of having to specify a root signature just to support a static sampler whenever render passes should be used. Note that the default sampler is opaque to the application (as Vulkan does not need a sampler anyway), but it is also no longer a static sampler (thus requiring the allocation of one sampler descriptor per pipeline instance).
  • Render passes can now be configured with render areas different from the swap chain more easily.
  • Render pass dependencies cause resize events to be propagated to render passes automatically, if no explicit render area is specified. This removes the requirement of having to manually resize frame buffers for render passes.
  • Render pass dependencies also cause resize event propagation to dependent pipelines, which is used to automatically update input attachment bindings.
  • On that same note, render pipelines now manage descriptors for binding input attachments on their own. It is no longer required to manage or bind them manually.

@crud89 crud89 added Vulkan 🌋 The issue involves the Vulkan backend. DX12 ❎ The issue involves the DX12 backend. labels Feb 9, 2024
@crud89 crud89 added this to the Alpha #04 milestone Feb 9, 2024
@crud89 crud89 self-assigned this Feb 9, 2024
@crud89 crud89 marked this pull request as ready for review February 9, 2024 18:20
@crud89 crud89 merged commit 95afd04 into main Feb 9, 2024
2 checks passed
@crud89 crud89 deleted the render-pass-dependencies branch February 9, 2024 18:35
@crud89 crud89 mentioned this pull request Feb 19, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
DX12 ❎ The issue involves the DX12 backend. Vulkan 🌋 The issue involves the Vulkan backend.
Projects
Status: v0.4.1
Development

Successfully merging this pull request may close these issues.

1 participant