Mesa (master): pan/bi: Parametrize intrinsic immediate limits

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Mon Jan 11 22:43:59 UTC 2021


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

Author: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Date:   Mon Jan 11 14:02:38 2021 -0500

pan/bi: Parametrize intrinsic immediate limits

Fixes issues on:

dEQP-GLES3.functional.transform_feedback.array_element.separate.points.lowp_mat2x3

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig at collabora.com>
Tested-by: Maciej Matuszczyk <maccraft123mc at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8427>

---

 src/panfrost/bifrost/bifrost_compile.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/panfrost/bifrost/bifrost_compile.c b/src/panfrost/bifrost/bifrost_compile.c
index f2306c5bc68..ee9c2a76bdf 100644
--- a/src/panfrost/bifrost/bifrost_compile.c
+++ b/src/panfrost/bifrost/bifrost_compile.c
@@ -145,7 +145,7 @@ bi_reg_fmt_for_nir(nir_alu_type T)
  * immediate to be used (which applies even if _IMM can't be used) */
 
 static bool
-bi_is_intr_immediate(nir_intrinsic_instr *instr, unsigned *immediate)
+bi_is_intr_immediate(nir_intrinsic_instr *instr, unsigned *immediate, unsigned max)
 {
         nir_src *offset = nir_get_io_offset_src(instr);
 
@@ -153,7 +153,7 @@ bi_is_intr_immediate(nir_intrinsic_instr *instr, unsigned *immediate)
                 return false;
 
         *immediate = nir_intrinsic_base(instr) + nir_src_as_uint(*offset);
-        return (*immediate) < 20;
+        return (*immediate) < max;
 }
 
 static void
@@ -165,7 +165,7 @@ bi_emit_load_attr(bi_builder *b, nir_intrinsic_instr *instr)
         unsigned imm_index = 0;
         unsigned base = nir_intrinsic_base(instr);
         bool constant = nir_src_is_const(*offset);
-        bool immediate = bi_is_intr_immediate(instr, &imm_index);
+        bool immediate = bi_is_intr_immediate(instr, &imm_index, 16);
 
         if (immediate) {
                 bi_ld_attr_imm_to(b, bi_dest_index(&instr->dest),
@@ -213,7 +213,7 @@ bi_emit_load_vary(bi_builder *b, nir_intrinsic_instr *instr)
 
         nir_src *offset = nir_get_io_offset_src(instr);
         unsigned imm_index = 0;
-        bool immediate = bi_is_intr_immediate(instr, &imm_index);
+        bool immediate = bi_is_intr_immediate(instr, &imm_index, 20);
 
         if (immediate && smooth) {
                 bi_ld_var_imm_to(b, bi_dest_index(&instr->dest),
@@ -426,7 +426,7 @@ bi_emit_store_vary(bi_builder *b, nir_intrinsic_instr *instr)
 
         nir_src *offset = nir_get_io_offset_src(instr);
         unsigned imm_index = 0;
-        bool immediate = bi_is_intr_immediate(instr, &imm_index);
+        bool immediate = bi_is_intr_immediate(instr, &imm_index, 16);
 
         bi_index address = immediate ?
                 bi_lea_attr_imm(b,



More information about the mesa-commit mailing list