Mesa (staging/21.1): pan/decode: Allow frame shader DCDs to be in another BO than the FBD

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sun Apr 25 14:58:12 UTC 2021


Module: Mesa
Branch: staging/21.1
Commit: 975ab701d77739a9434d6d5fa7a9b0721a1ff951
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=975ab701d77739a9434d6d5fa7a9b0721a1ff951

Author: Icecream95 <ixn at disroot.org>
Date:   Thu Apr 22 11:08:49 2021 +1200

pan/decode: Allow frame shader DCDs to be in another BO than the FBD

Fixes: 96b71a59c0a ("panfrost: Decode pre/post frame DCDs")
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10422>
(cherry picked from commit 1cc9b28a768d6e88034a888dd3c91ec7e0816d83)

---

 .pick_status.json         |  2 +-
 src/panfrost/lib/decode.c | 10 +++++++---
 2 files changed, 8 insertions(+), 4 deletions(-)

diff --git a/.pick_status.json b/.pick_status.json
index 2c77c17ef5c..24d97ec0db6 100644
--- a/.pick_status.json
+++ b/.pick_status.json
@@ -202,7 +202,7 @@
         "description": "pan/decode: Allow frame shader DCDs to be in another BO than the FBD",
         "nominated": true,
         "nomination_type": 1,
-        "resolution": 0,
+        "resolution": 1,
         "master_sha": null,
         "because_sha": "96b71a59c0ae6e3fb336608a10b1c27de11db922"
     },
diff --git a/src/panfrost/lib/decode.c b/src/panfrost/lib/decode.c
index ca61fbd63db..a5fc745ee93 100644
--- a/src/panfrost/lib/decode.c
+++ b/src/panfrost/lib/decode.c
@@ -287,24 +287,28 @@ pandecode_mfbd_bfr(uint64_t gpu_va, int job_no, bool is_fragment, bool is_bifros
 
         if (is_bifrost) {
                 pandecode_sample_locations(fb, job_no);
+
                 pan_section_unpack(fb, MULTI_TARGET_FRAMEBUFFER, BIFROST_PARAMETERS, bparams);
                 unsigned dcd_size = MALI_DRAW_LENGTH + MALI_DRAW_PADDING_LENGTH;
+                struct pandecode_mapped_memory *dcdmem =
+                        pandecode_find_mapped_gpu_mem_containing(bparams.frame_shader_dcds);
+
                 if (bparams.pre_frame_0 != MALI_PRE_POST_FRAME_SHADER_MODE_NEVER) {
-                        const void *PANDECODE_PTR_VAR(dcd, mem, bparams.frame_shader_dcds + (0 * dcd_size));
+                        const void *PANDECODE_PTR_VAR(dcd, dcdmem, bparams.frame_shader_dcds + (0 * dcd_size));
                         pan_unpack(dcd, DRAW, draw);
                         pandecode_log("Pre frame 0:\n");
                         pandecode_dcd(&draw, job_no, MALI_JOB_TYPE_FRAGMENT, "", true, gpu_id);
                 }
 
                 if (bparams.pre_frame_1 != MALI_PRE_POST_FRAME_SHADER_MODE_NEVER) {
-                        const void *PANDECODE_PTR_VAR(dcd, mem, bparams.frame_shader_dcds + (1 * dcd_size));
+                        const void *PANDECODE_PTR_VAR(dcd, dcdmem, bparams.frame_shader_dcds + (1 * dcd_size));
                         pan_unpack(dcd, DRAW, draw);
                         pandecode_log("Pre frame 1:\n");
                         pandecode_dcd(&draw, job_no, MALI_JOB_TYPE_FRAGMENT, "", true, gpu_id);
                 }
 
                 if (bparams.post_frame != MALI_PRE_POST_FRAME_SHADER_MODE_NEVER) {
-                        const void *PANDECODE_PTR_VAR(dcd, mem, bparams.frame_shader_dcds + (2 * dcd_size));
+                        const void *PANDECODE_PTR_VAR(dcd, dcdmem, bparams.frame_shader_dcds + (2 * dcd_size));
                         pan_unpack(dcd, DRAW, draw);
                         pandecode_log("Post frame:\n");
                         pandecode_dcd(&draw, job_no, MALI_JOB_TYPE_FRAGMENT, "", true, gpu_id);



More information about the mesa-commit mailing list