midgard: Handle FB fetch from non-vec4 output variables.
authorJason Ekstrand <jason.ekstrand@collabora.com>
Mon, 9 May 2022 20:24:46 +0000 (15:24 -0500)
committerMarge Bot <emma+marge@anholt.net>
Wed, 11 May 2022 14:47:33 +0000 (14:47 +0000)
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16309>

src/panfrost/util/pan_lower_framebuffer.c

index 7f0de06..80a88f6 100644 (file)
@@ -489,7 +489,9 @@ pan_lower_fb_store(nir_shader *shader,
                 bool reorder_comps)
 {
         /* For stores, add conversion before */
-        nir_ssa_def *unpacked = nir_ssa_for_src(b, intr->src[1], 4);
+        nir_ssa_def *unpacked =
+                nir_ssa_for_src(b, intr->src[1], intr->num_components);
+        unpacked = nir_pad_vec4(b, unpacked);
 
         /* Re-order the components */
         if (reorder_comps)
@@ -539,7 +541,7 @@ pan_lower_fb_load(nir_shader *shader,
                         pan_unpacked_type_for_format(desc));
 
         unpacked = nir_convert_to_bit_size(b, unpacked, src_type, bits);
-        unpacked = nir_pad_vector(b, unpacked, nir_dest_num_components(intr->dest));
+        unpacked = nir_resize_vector(b, unpacked, intr->dest.ssa.num_components);
 
         /* Reorder the components */
         if (reorder_comps)