Mesa (master): panfrost: Implement linear Z/S for SFBD

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Nov 13 19:14:23 UTC 2020


Module: Mesa
Branch: master
Commit: 826969ee0269f8e65a2ae2a436c6c6879727a645
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=826969ee0269f8e65a2ae2a436c6c6879727a645

Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date:   Wed Nov 11 13:17:43 2020 -0500

panfrost: Implement linear Z/S for SFBD

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Reviewed-by: Boris Brezillon <boris.brezillon at collabora.com>
Tested-by: Robin Murphy <robin.murphy at arm.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/7557>

---

 src/gallium/drivers/panfrost/pan_sfbd.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/src/gallium/drivers/panfrost/pan_sfbd.c b/src/gallium/drivers/panfrost/pan_sfbd.c
index f8de6334191..8bfeee1d594 100644
--- a/src/gallium/drivers/panfrost/pan_sfbd.c
+++ b/src/gallium/drivers/panfrost/pan_sfbd.c
@@ -115,12 +115,19 @@ panfrost_sfbd_set_zsbuf(
         unsigned level = surf->u.tex.level;
         assert(surf->u.tex.first_layer == 0);
 
-        if (rsrc->modifier != DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED)
-                unreachable("Invalid render modifier.");
-
-        fb->zs_block_format = MALI_BLOCK_FORMAT_TILED_U_INTERLEAVED;
         fb->zs_writeback.base = rsrc->bo->ptr.gpu + rsrc->slices[level].offset;
-        fb->zs_writeback.row_stride = rsrc->slices[level].stride * 16;
+        fb->zs_writeback.row_stride = rsrc->slices[level].stride;
+
+        if (rsrc->modifier == DRM_FORMAT_MOD_LINEAR)
+                fb->zs_block_format = MALI_BLOCK_FORMAT_LINEAR;
+        else if (rsrc->modifier == DRM_FORMAT_MOD_ARM_16X16_BLOCK_U_INTERLEAVED) {
+                fb->zs_block_format = MALI_BLOCK_FORMAT_TILED_U_INTERLEAVED;
+                fb->zs_writeback.row_stride *= 16;
+        } else {
+                fprintf(stderr, "Invalid render modifier\n");
+                assert(0);
+        }
+
         switch (surf->format) {
         case PIPE_FORMAT_Z16_UNORM:
                 fb->zs_format = MALI_ZS_FORMAT_D16;



More information about the mesa-commit mailing list