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

Should support VK_EXT_attachment_feedback_loop_layout #16327

Open
hrydgard opened this issue Nov 3, 2022 · 2 comments
Open

Should support VK_EXT_attachment_feedback_loop_layout #16327

hrydgard opened this issue Nov 3, 2022 · 2 comments
Labels
Milestone

Comments

@hrydgard
Copy link
Owner

hrydgard commented Nov 3, 2022

This fairly new Vulkan extension allows you to bind the same image as render target and texture, with defined behavior as long as the area you're texturing from does not overlap the area you're rendering to.

This will allow us to avoid a bunch of image copies, that we otherwise use to work around this problem. Especially prominently, it'll allow us to entirely disable the speedhack we're doing in Killzone where we split the main framebuffer in two to work around this problem. GoW should also benefit somewhat as it does a bloom effect with a similar technique, as do several other games.

So far it's mostly available on desktop drivers, but it is becoming available in the Qualcomm driver, slowly, too.

Games that do in-the-same-framebuffer rendering tricks that may benefit:

  • Killzone (menu glow effect, color ramp effect)
  • Dante's Inferno (bloom)
  • God of War (bloom in both games)
  • Jackass? (though should be able to handle this one by other means)

A while ago I started to implement this but it is not easy, tricky renderpass management needed.

@hrydgard
Copy link
Owner Author

hrydgard commented Jan 1, 2023

So I got another idea for slightly more efficient implementation of self-render effects. When this happens, we can allow two copies of the render target to exist at the same address and same attributes etc, and then for each draw we'll just end up texturing from the previously changed one, rendering to the other. This will eliminate copies but still require starting a lot of renderpasses though, and can still be enhanced further by smarter rectangle tracking as mentioned in #16638 (comment).

@unknownbrackets
Copy link
Collaborator

At least some self-renders are for blurring, and rely on the previous contents being there too. Will have to detect carefully...

But some indeed are just resizing down or recoloring and could juggle back and forth.

-[Unknown]

@hrydgard hrydgard modified the milestones: v1.15.0, v1.16.0 Jan 31, 2023
@hrydgard hrydgard modified the milestones: v1.16.0, v1.17.0 Jul 6, 2023
@hrydgard hrydgard modified the milestones: v1.17.0, Future-Prio Dec 9, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants