panfrost: Use pack for general varying
[mesa.git] / src / gallium / drivers / panfrost / pan_cmdstream.c
index 34568a46506b01ba5e2e5e46330847c0397bfca1..376705fc844ceec6963debf1d2bb978dce500165 100644 (file)
@@ -1715,14 +1715,12 @@ pan_emit_vary(struct mali_attribute_packed *out,
                         panfrost_get_default_swizzle(nr_channels) :
                         panfrost_bifrost_swizzle(nr_channels);
 
-        struct mali_attr_meta meta = {
-                .index = pan_varying_index(present, buf),
-                .unknown1 = quirks & IS_BIFROST ? 0x0 : 0x2,
-                .format = (format << 12) | swizzle,
-                .src_offset = offset
-        };
-
-        memcpy(out, &meta, sizeof(meta));
+        pan_pack(out, ATTRIBUTE, cfg) {
+                cfg.buffer_index = pan_varying_index(present, buf);
+                cfg.unknown = quirks & IS_BIFROST ? 0x0 : 0x1;
+                cfg.format = (format << 12) | swizzle;
+                cfg.offset = offset;
+        }
 }
 
 /* General varying that is unused */
@@ -1779,23 +1777,18 @@ pan_emit_vary_xfb(struct mali_attribute_packed *out,
                         panfrost_get_default_swizzle(o.num_components) :
                         panfrost_bifrost_swizzle(o.num_components);
 
-        /* Otherwise construct a record for it */
-        struct mali_attr_meta meta = {
+        pan_pack(out, ATTRIBUTE, cfg) {
                 /* XFB buffers come after everything else */
-                .index = pan_xfb_base(present) + o.output_buffer,
-
-                /* As usual unknown bit */
-                .unknown1 = quirks & IS_BIFROST ? 0x0 : 0x2,
+                cfg.buffer_index = pan_xfb_base(present) + o.output_buffer;
+                cfg.unknown = quirks & IS_BIFROST ? 0x0 : 0x1;
 
                 /* Override number of channels and precision to highp */
-                .format = (pan_xfb_format(format, o.num_components) << 12) | swizzle,
+                cfg.format = (pan_xfb_format(format, o.num_components) << 12) | swizzle;
 
                 /* Apply given offsets together */
-                .src_offset = (o.dst_offset * 4) /* dwords */
-                        + streamout_offsets[o.output_buffer]
-        };
-
-        memcpy(out, &meta, sizeof(meta));
+                cfg.offset = (o.dst_offset * 4) /* dwords */
+                        + streamout_offsets[o.output_buffer];
+        }
 }
 
 /* Determine if we should capture a varying for XFB. This requires actually