From 4b2c7f286ff0ba27013c21a186954d518a5be94d Mon Sep 17 00:00:00 2001 From: Boris Brezillon Date: Mon, 19 Apr 2021 11:54:46 +0200 Subject: [PATCH] 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 Reviewed-by: Alyssa Rosenzweig Part-of: --- 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); }