Skip to content

Conversation

@doitsujin
Copy link
Owner

@doitsujin doitsujin commented Jan 19, 2026

Based on #5453 and I still need to figure out a way to not destroy tilers with potentially suboptimal barriers, hence the draft.

TL;DR this allows post-processing render passes to overlap with each other and with compute work, as long as there are no data hazards:
Bildschirmfoto-1298

Previously, we'd issue full barriers around render passes to avoid having to track all resources used during rendering for hazard detection, but that leads to a lot of over-synchronization (and thus, bad GPU utilization) in some games. I'm seeing around a ~2% improvement in Dirt Rally 2 and Monster Hunter World on both my 6900XT and RTX 4070.

Downside is that this costs some CPU cycles, but there's a heuristic in place that should filter out expensive render passes so it shouldn't be too bad.

Only affects hardware that can't use unified layouts.

We no longer avoid transitions to TRANSFER_* layouts anyway, so there
is no good reason to avoid SHADER_READ_ONLY_OPTIMAL.
Previously, access to images with multiple mips could be oversynchronized
in some cases. Fix this by computing the proper ending address of the
last subresource accessed.
Fixes feedback loops on unified layouts and allows RDNA2 to
hit the happy path in more cases.
The idea here is to allow small full-screen render passes to overlap
with unrelated work, such as copies, compute shaders and even other
render passes that do not access the same set of resources. In some
games and on some hardware, this can improve performance somewhat
significantly.

This commit only implements the synchronization and barrier tracking
part for unsynchronized passes, heuristics to enable the feature will
be added separately.
Should make RGP captures more readable by default.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants