From 8560c7613d4e87bbfec2b590efcd7a955c675486 Mon Sep 17 00:00:00 2001 From: David Heidelberg Date: Fri, 9 Dec 2022 12:06:39 +0100 Subject: [PATCH] panfrost: Handle resources without depth in batch_to_fb_info Prevent preloading data from resources which doesn't exist. Signed-off-by: David Heidelberg Reviewed-by: Alyssa Rosenzweig Tested-by: Aleksey Komarov Part-of: --- src/gallium/drivers/panfrost/pan_job.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/gallium/drivers/panfrost/pan_job.c b/src/gallium/drivers/panfrost/pan_job.c index 75408594735..15c14c57c2d 100644 --- a/src/gallium/drivers/panfrost/pan_job.c +++ b/src/gallium/drivers/panfrost/pan_job.c @@ -604,22 +604,22 @@ panfrost_batch_to_fb_info(const struct panfrost_batch *batch, fb->zs.discard.z = !reserve && !(batch->resolve & PIPE_CLEAR_DEPTH); fb->zs.discard.s = !reserve && !(batch->resolve & PIPE_CLEAR_STENCIL); - if (!fb->zs.clear.z && + if (!fb->zs.clear.z && z_rsrc && ((batch->read & PIPE_CLEAR_DEPTH) || ((batch->draws & PIPE_CLEAR_DEPTH) && - z_rsrc && BITSET_TEST(z_rsrc->valid.data, z_view->first_level)))) + BITSET_TEST(z_rsrc->valid.data, z_view->first_level)))) fb->zs.preload.z = true; - if (!fb->zs.clear.s && + if (!fb->zs.clear.s && s_rsrc && ((batch->read & PIPE_CLEAR_STENCIL) || ((batch->draws & PIPE_CLEAR_STENCIL) && - s_rsrc && BITSET_TEST(s_rsrc->valid.data, s_view->first_level)))) + BITSET_TEST(s_rsrc->valid.data, s_view->first_level)))) fb->zs.preload.s = true; /* Preserve both component if we have a combined ZS view and * one component needs to be preserved. */ - if (s_view == z_view && fb->zs.discard.z != fb->zs.discard.s) { + if (z_view && z_view == s_view && fb->zs.discard.z != fb->zs.discard.s) { bool valid = BITSET_TEST(z_rsrc->valid.data, z_view->first_level); fb->zs.discard.z = false;