METAL-PACK(1) Metal METAL-PACK(1)

metal-pack - Metal binary optimizing packer

metal-pack [filenames...] [options]

metal-pack combines a list of metallibs, machos, or universal binaries into a single output file.

The format of the output file depends on the input files. If all input files share the same architecture, a thin binary is generated. Otherwise a universal binary is emitted.

Inputs files can contain different kinds of resources: metallibs, descriptors, and reflections. How to optimize each kind of resource can be controlled using the -pack-metallibs, -pack-descriptors, and -pack-reflections options.

There are three different packing policies.

The none policy just copies the resources from the input files into the output file. If a referenced resource is not directly stored into the input file -- e.g. a temporary file -- just the reference to the resource is copied -- e.g. the path to the temporary file.

The internal policy embeds each resource referenced by each slice into the slice itself. So, for instance, if the foo.airp descriptor is referenced by the amdgpu_gfx600 slice, the descriptors is inlined into the amdgpu_gfx600 slice itself. If the same descriptor is referenced by multiple slices, it will be stored multiple times into each slice.

The external policy is an experimental policy where common resources referenced by multiple slices are stored in a common slice in the output file.

metal-pack supports the following options:

Display usage information and exit.

Display the version of this program.

Set the metallibs packing policy to none, internal, or external.

Set the descriptors packing policy to none, internal, or external.

Set the reflections packing policy to none, internal, or external.

Set the output file name.

Perform optimization using n threads.

Display statistics about packed inputs.

To report bugs, please visit <https://developer.apple.com/bug-reporting/>.

Metal Shading Language Specification: <https://developer.apple.com/metal/Metal-Shading-Language-Specification.pdf>

2014-2023, The Metal Team

July 5, 2023 15