SPIRV-REMAP(1)

NAME
spirv-remap - a utility to compress of SPIR-V binary files

SYNOPSIS
spirv-remap [OPTION]...

DESCRIPTION
spirv-remap is a utility to improve compression of SPIR-V binary files via entropy reduction, plus optional stripping of debug information and load/store optimization. It transforms SPIR-V to SPIR-V, remapping IDs. The resulting modules have an increased ID range (IDs are not as tightly packed around zero), but will compress better when multiple modules are compressed together, since compressor's dictionary can find better cross module commonality.

Remapping is accomplished via canonicalization. Thus, modules can be compressed one at a time with no loss of quality relative to operating on many modules at once. The command line tool operates on multiple modules only in the trivial repetition sense, for ease of use. The remapper API only accepts a single module at a time.

spirv-remap is currently in an alpha state. Although there are no known remapping defects, it has only been exercised on one real world game shader workload.

OPTIONS

-? --help
    shows help

-V --version
    shows version

-v -vv ... --verbose [int]
    sets verbosity. With no verbosity, the command is silent.

-i --input file1 [file2...]
    files to process

-o --output DESTDIR
    output directory

-s --strip-all --strip all
    strips all debug info

--map (all|types|names|funcs)
    canonicalizes type IDs / named data / function bodies

--dce (all|types|funcs)
    removes dead types / functions

--opt (all|loadstore)
    optimizes unneeded loads/stores

--do-everything
    Synonym for --map all --dce all --opt all --strip all

RETURNS
0 on success

a positive integer error on failure.

EXAMPLES

spirv-remap -v --map all --input *.spv --output /tmp/out_dir
    Perform ID remapping on all shaders in "*.spv", writing new files with the same basenames to /tmp/out_dir.

spirv-remap-linux-64 -v --do-everything --input *.spv --output /tmp/out_dir
    Perform all possible size reductions

    Note that

ALSO SEE
https://github.com/KhronosGroup/glslang