docs/freedreno: Add documentation on A7XX LRZ

Signed-off-by: Mark Collins <mark@igalia.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/29453>
This commit is contained in:
Mark Collins
2024-05-30 04:55:37 +00:00
committed by Marge Bot
parent a6f08fd69d
commit f57f1f70cf

View File

@@ -21,8 +21,6 @@ Citing official Adreno documentation:
is then used during the rendering pass to reject pixels efficiently before testing
against the full resolution Z-buffer.
TODO: a7xx
Limitations
-----------
@@ -63,6 +61,21 @@ stored in the buffer. If not, LRZ is disabled. This is necessary
because depth buffer may have several layers and mip levels, while the
LRZ buffer represents only a single layer + mip level.
A7XX
-------------
A7XX introduces the concept of bidirectional LRZ where there are two LRZ
buffers, one for each direction. This way LRZ doesn't need to be disabled
when the direction changes, by default, this behavior is disabled but the
LRZ buffers have to be allocated with this space in mind as fast clears
will always write metadata for both.
Additionally, there are now two seperate LRZ buffers (on top of one for
each direction, a total of four) - due to concurrent binning, one can be
used for binning and the other for rendering concurrently. These can be
flipped between via the `LRZ_FLIP_BUFFER` event which can be put inside
a conditional block for either the BV or BR.
LRZ Fast-Clear
--------------
@@ -79,6 +92,9 @@ written the LRZ block which corresponds to a single fast-clear bit is cleared:
This way it's always valid to fast-clear.
On A7XX, the original depth clear value can be specified exactly allowing for
fast-clear to any value rather than just ``1.0`` or ``0.0``.
LRZ Precision
-------------