From: Alyssa Rosenzweig Date: Wed, 11 Nov 2020 18:17:43 +0000 (-0500) Subject: panfrost: Implement linear Z/S for SFBD X-Git-Tag: upstream/21.0.0~2604 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=826969ee0269f8e65a2ae2a436c6c6879727a645;p=platform%2Fupstream%2Fmesa.git panfrost: Implement linear Z/S for SFBD Signed-off-by: Alyssa Rosenzweig Reviewed-by: Boris Brezillon Tested-by: Robin Murphy Part-of: --- diff --git a/src/gallium/drivers/panfrost/pan_sfbd.c b/src/gallium/drivers/panfrost/pan_sfbd.c index f8de633..8bfeee1 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;