Multipass rendering & triple buffering memory consumption


I have a simple question regarding memory consumption when using triple buffering. Namely, so far what I’ve been doing in my code is to allocate three times as much memory for any “dynamic” resource that I use, be it a streaming buffer (e.g. point positions from a physics simulation) or a streaming texture (e.g. CPU-raytraced blocks of an image). These resources can then update themselves safely depending on the current frame and command buffer that is not in use by modifying appropriate memory region. The only time I wait on the CPU side is either on a fence to get a free command buffer or when acquiring a new image from the swapchain.

However, it appears that I have to do the same (allocate 3x memory) for all the render targets of basically any pass that I want to read from in an input attachment or use as a sampled image later on.

Is this the correct approach when doing triple buffering and are there ways to reduce memory consumption (other than downsampling some passes, e.g. SSAO or blurs)?

Note that my target application is not a fully-fledged game or game engine, just a collection of scenes that show-case some technical demos, but I’d still like to do things efficiently if possible.