Quick answer: SubViewport → render_target_update_mode = UPDATE_ALWAYS. Or UPDATE_ONCE for static.

Custom mini-map SubViewport. Output texture is black. Update mode disabled by default.

The Fix

SubViewport node:
  Render Target:
    Update Mode:    UPDATE_ALWAYS     # continuous
    Clear Mode:     CLEAR_ALWAYS
  Size:             Vector2i(256, 256)

Children:
  Camera2D / Camera3D
  Visible scene content

# Display
$DisplaySprite.texture = $SubViewport.get_texture()

UPDATE_ALWAYS keeps the texture fresh per frame. Use UPDATE_ONCE for one-shot snapshots (e.g. character avatar).

Verifying

Mini-map sprite shows scene. Disabling update mode: stays black.

“Update mode set. Texture lives.”

Related Issues

For SCREEN_TEXTURE banding, see SCREEN_TEXTURE. For shader UV flip, see UV flip.

Update mode. Texture refreshes.