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