AO: single-pass depth pyramid + cheaper GTAO tier for Pascal (AO is 4.9 ms at 4K on a GTX 1080) #828
Labels
No labels
amd
avatars
bug
builder
cannot-reproduce
crash
epic
feature
from-viewer
gl-removal
known-limitation
monitoring
parity
perf
platform
priority
critical
priority
high
priority
low
priority
medium
provenance
rendering
rt
status
in-progress
status
testing
status
up-next
triage
ui
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sky_line/Slipstream#828
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The AO pass costs far more on Pascal than its work warrants.
Measured (GTX 1080, 4K, high settings, async queue):
q_ao4.9 ms. Of that, the depth mip pyramid (g_ao_depthmip) is 2.05 ms, the half-resolution GTAO kernel (g_gtao_half) 1.73 ms, plus blur. A depth mip chain should cost a small fraction of a millisecond even at 4K.Plan
clean_ao_depth.comp, recorded before theg_ao_depthmipmark inllcleanrenderervk.cpp) with a single-dispatch downsample in the style of AMD's SPD (FidelityFX SPD is already in the tree for FSR). Use workgroup shared memory and one global atomic for the tail levels, building only the levels the AO kernel actually reads. Check what format and resolution it builds today. If it starts from full-resolution depth when the kernel runs at half resolution, start at half.Measure
Serial A/B (async + overlaps off) on the GTX 1080 at 4K, high settings:
g_ao_depthmip, the AO kernel, and the frame total. Also the RTX 5090. Expected 1.5-2.5 ms at high on Pascal.Merged (
72511743b5). Measured on GTX 1080, 4K: no measurable change, and the ticket's premise was wrong.The changes are harmless (fewer groups / barriers, no per-tap size queries) and stay in. Related: on the 1080, async compute gives nothing at high (async 30.8 / 31.6 vs serial 29.9 / 31.8), so it is worth considering async off for Pascal in #824.
Fixed in Slipstream 1.3.0 (stable): https://git.slipstreamviewer.org/sky_line/Slipstream/releases/tag/v1.3.0
If you still see this on 1.3.0, reply here and we'll reopen it.