# “Unexpected” Allocations

#### VRAM Memory Pool

- \[Applicable for platforms Traveo, Traveo II, RH850\]
- Why in the VRAM 4 buffers are allocated for render buffers of a single Render Target?
- What happens:  
    
    - During a transition first scene is unloaded, next scene is loaded
    - In case of startup, the first scene is the only one existing
    - Default Behavior of Courier:   
        
        - when the last View on a Render Target is unloaded, the Render Target is also unloaded
    - The VramAllocator does never immediately free the memory, because the GPU might still write to it (Note: GPU runs
    - asynchronously to the CPU)
    - -&gt; New 2 buffers are allocated when the second scene is loaded
- How to fix it?
- Send on startup a ViewPlaceholderReqMsg  
    
    - increases the reference counter on Render target.
    - The message has two parameters
    - ViewId: this is a "reference" view which is used to determine the render target object
    - Load: true means to increase the reference count, false would decrease it (removes this placeholder from the internal list)
- Alternatively, you can also use a dummy scene with just a camera  
    
    - This view would be always active and never unloaded.

#### Asset Cache

- From the Memory Pool Analysis Sheet:

**16384**  
C:\\CGI-Studio\_3.10\\cgi\_studio\_candera\\src\\CanderaAssetLoader\\AssetLoaderBase\\AssetCache.cpp(38)

- -&gt; This is the cache used by the Asset Loader when copying images from flash to RAM
- Most or all images are directly rendered from flash
- The cache size is best practice for many platforms, but not when flash is directly accessible!
- -&gt; Proposal: If flash is directly accessible, reduce the cache  
    
    - E.g., to 1 kB (you win 15 kB!)
- CMake flag CANDERA\_ASSET\_CACHE\_SIZE