Skip to content

freedreno/a6xx: The Walking Dead (and probably other telltale games) LRZ fix

Rob Clark requested to merge robclark/mesa:fd/walkingdead-fix into main

Fixes incorrect rendering in "The Walking Dead: Season 1" by invalidating LRZ on draws that write depth with blend enabled.

Writing depth with blend enabled means we need to invalidate LRZ, because the written depth value could mean that a later draw with blend enabled (where we would otherwise write LRZ) could have fragments which don't pass the depth test due to this draw. For example, consider this sequence of draws, with depth mode GREATER:

  draw A:
    z=0.1, fragments pass
  draw B:
    z=0.4, fragments pass
    blend enabled (LRZ write disabled)
    depth write enabled
  draw C:
    z=0.2, fragments don't pass
    blend disabled
    depth write enabled

Normally looking at the state in draw C, we'd assume we could enable LRZ write. But this would cause early-z/lrz to discard fragments from draw A which should be visible due to draw B.


Note that there are a couple games in my collection of traces, which render correctly, that are hurt by a few percent. I may follow-up with a driconf allowlist to enable the previous behavior of disabling LRZ write but not invalidating LRZ, since the problematic pattern of draws seems pretty rare.

Merge request reports