pan/bi: Extend LD_TILE with a register format
authorAlyssa Rosenzweig <alyssa@collabora.com>
Fri, 28 Jan 2022 23:15:47 +0000 (18:15 -0500)
committerMarge Bot <emma+marge@anholt.net>
Thu, 3 Mar 2022 00:41:44 +0000 (00:41 +0000)
Required for Valhall. NIR has the information anyway, pass it along.

Signed-off-by: Alyssa Rosenzweig <alyssa@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/15216>

src/panfrost/bifrost/ISA.xml
src/panfrost/bifrost/bifrost_compile.c

index 08471a8..4e3ae16 100644 (file)
       <opt>v3</opt>
       <opt>v4</opt>
     </mod>
+    <mod name="register_format" size="3" pseudo="true">
+      <opt>f32</opt>
+      <opt>f16</opt>
+      <opt>u32</opt>
+      <opt>s32</opt>
+    </mod>
   </ins>
 
   <ins name="+LD_VAR" staging="w=vecsize" message="varying">
index 788e38c..0428147 100644 (file)
@@ -1139,6 +1139,8 @@ bi_emit_load_frag_coord(bi_builder *b, nir_intrinsic_instr *instr)
 static void
 bi_emit_ld_tile(bi_builder *b, nir_intrinsic_instr *instr)
 {
+        nir_alu_type T = nir_intrinsic_dest_type(instr);
+        enum bi_register_format regfmt = bi_reg_fmt_for_nir(T);
         unsigned rt = b->shader->inputs->blend.rt;
         unsigned size = nir_dest_bit_size(instr->dest);
 
@@ -1159,7 +1161,8 @@ bi_emit_ld_tile(bi_builder *b, nir_intrinsic_instr *instr)
                 bi_load_sysval(b, PAN_SYSVAL(RT_CONVERSION, rt | (size << 4)), 1, 0);
 
         bi_ld_tile_to(b, bi_dest_index(&instr->dest), bi_pixel_indices(b, rt),
-                        bi_register(60), desc, (instr->num_components - 1));
+                        bi_register(60), desc, regfmt,
+                        (instr->num_components - 1));
 }
 
 static void