Mesa (master): panfrost: Fix RSD emission on Bifrost v6

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Apr 20 12:41:42 UTC 2021


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

Author: Boris Brezillon <boris.brezillon at collabora.com>
Date:   Mon Apr 19 11:54:46 2021 +0200

panfrost: Fix RSD emission on Bifrost v6

Bifrost v6 doesn't have wait dependency fields.
Fixes some dEQP-GLES3.functional.shaders.fragdepth tests on G72.

Signed-off-by: Boris Brezillon <boris.brezillon at collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa at collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10314>

---

 src/panfrost/lib/pan_shader.h | 11 +++++++----
 1 file changed, 7 insertions(+), 4 deletions(-)

diff --git a/src/panfrost/lib/pan_shader.h b/src/panfrost/lib/pan_shader.h
index 29aef698a53..33f331a4fb1 100644
--- a/src/panfrost/lib/pan_shader.h
+++ b/src/panfrost/lib/pan_shader.h
@@ -104,7 +104,8 @@ pan_shader_classify_pixel_kill_coverage(const struct pan_shader_info *info,
 #undef SET_PIXEL_KILL
 
 static inline void
-pan_shader_prepare_bifrost_rsd(const struct pan_shader_info *info,
+pan_shader_prepare_bifrost_rsd(const struct panfrost_device *dev,
+                               const struct pan_shader_info *info,
                                struct MALI_RENDERER_STATE *rsd)
 {
         unsigned fau_count = DIV_ROUND_UP(info->push.count, 2);
@@ -121,8 +122,10 @@ pan_shader_prepare_bifrost_rsd(const struct pan_shader_info *info,
         case MESA_SHADER_FRAGMENT:
                 pan_shader_classify_pixel_kill_coverage(info, rsd);
 
-                rsd->properties.bifrost.shader_wait_dependency_6 = info->bifrost.wait_6;
-                rsd->properties.bifrost.shader_wait_dependency_7 = info->bifrost.wait_7;
+                if (dev->arch > 6) {
+                        rsd->properties.bifrost.shader_wait_dependency_6 = info->bifrost.wait_6;
+                        rsd->properties.bifrost.shader_wait_dependency_7 = info->bifrost.wait_7;
+                }
 
                 rsd->preload.fragment.fragment_position = info->fs.reads_frag_coord;
                 rsd->preload.fragment.coverage = true;
@@ -188,7 +191,7 @@ pan_shader_prepare_rsd(const struct panfrost_device *dev,
         }
 
         if (pan_is_bifrost(dev))
-                pan_shader_prepare_bifrost_rsd(shader_info, rsd);
+                pan_shader_prepare_bifrost_rsd(dev, shader_info, rsd);
         else
                 pan_shader_prepare_midgard_rsd(shader_info, rsd);
 }



More information about the mesa-commit mailing list