XB-BOX - VAE解码(原版优化)
The 'ROCm' VAE decoder that secretly tiles everything
- samples
- vae
- IMAGE
Two names in this node's title are quietly misleading, and understanding that is most of the battle. First, "ROCm" is legacy - this is not an AMD-only node, it's a renamed alias that exists so old XB_ToolBox workflows keep loading. Second, despite saying just "VAE decode," this node always runs a tiled decode under the hood. It's the pack's old AMD-era name for what is effectively VAEDecodeTiled with a cleanup dropdown.
Here's the actual mechanism. The node hands your latent to ComfyUI's official VAEDecodeTiled - the one that chops a big latent into overlapping tiles, decodes each chunk, then stitches them back together - so a huge latent never exists in VRAM all at once. The wrapper's job is just parameter translation (the old node used tile, the official one uses tile_size) plus the shared four-level cleanup option.
Inputs that matter
- samples - the LATENT to decode, straight from your sampler.
- vae - your VAE.
- tile - spatial tile size. Default 0 means "let the wrapper pick 512." Bigger tiles = fewer seams but more VRAM; this is the knob to turn when a decode OOMs.
- overlap - pixels of overlap between tiles, to hide seams. 0 is fine for many models; bump it if you see tile boundaries.
- cleanup - no cleanup / cache purge / unload models to RAM / full unload.
Output is a single IMAGE - batch of decoded frames - which you can wire into a Preview, Save, or VAE-Video-Combine.
Why this is the right tool for small cards
Decoding is where a lot of "it generated fine then died" failures actually happen: the VAE wants the whole latent in memory at once, and on a 16GB card a 1080p+ video latent is exactly the kind of tensor that tips it over. Tiled decoding is the standard community answer for this - the "what tile settings are you using for 16GB" question is practically a rite of passage. If your run OOMs at the decode step, this node (or any tiled decode) is the fix, and the tile input is your dial.
Gotchas
Because it's a compatibility alias, the parameter names are the old ones (tile, overlap) rather than the current ComfyUI names (tile_size, overlap). Don't fight it - they map over internally. One genuinely useful detail in the wrapper: if your ComfyUI build doesn't support the temporal decode parameters, the node detects that via signature inspection and silently drops them, so it won't hard-crash on slightly older installs.
Install is the standard pack routine:
cd ComfyUI/custom_nodes
git clone https://github.com/wjluoxiao/XB_ToolBox.git
Restart, and it's under "XB_ToolBox/原版优化". No extra pip packages for this node. The straightforward advice: if you're on a new workflow, just use ComfyUI's own VAEDecodeTiled - this one exists for old-workflow compatibility and the convenience of having the cleanup dropdown. But if you pulled it in from a shared workflow, it will decode your image fine.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| samples | LATENT | — | |
| vae | VAE | — | |
| tile | INT | 00–4096 | — |
| overlap | INT | 00–256 | — |
| cleanup | COMBO | 不做任何清理 | 4 options: 不做任何清理, 单次缓存清理, 卸载显存模型, 卸载全量模型 |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |