A small performance mod for Assetto Corsa EVO. It is a dstorage.dll that sits next to the game exe, passes everything through to Microsoft's real DirectStorage runtime and fixes the game's video memory budget on the way. Three files in the game folder, no installer, delete them and you are back to stock.
It exists because a 6 GB card kept crashing the game on car and track changes, lost the icons in the vehicle hub and turned the road to mush after a restart. All of it came down to the same thing, which the mod corrects at start. Built and tested on an RTX 3060 Laptop with 6 GB, Windows 11, game version 0.9.0+release.48.
The mod page, with the discussion and the reviews, is on Overtake. This repo carries the source, the changelog and the same zip as a release.
Important
This was built and tested on one machine. It might or might not work on yours. Cards with more memory get bigger pool sizes picked automatically, but nobody has tested that yet. If the game does not start or runs worse, uninstall (see below) and you are back to stock. If you report a problem, attach acevo_perf.log from the game folder, that file says what the mod did.
- Crashes on car change, track change and at startup.
- Missing icons in the vehicle hub and the menus.
- Mushy road, tyre and ground textures, worse after restarting a session.
It also skips the intro, turns on the game's shader cache and runs the game at above normal priority. All of it is in the ini if you want it off.
The crashes and the icons: the game asks DirectStorage for a 1 GB staging buffer and the runtime keeps two of them in VRAM, so 2 GB of a 6 GB card are gone before anything loads. Swap a car or a track and the card runs out. In the menus the icon textures have nothing left to load into. The mod caps that buffer at 128 MB, which is still four of the biggest requests the game ever makes. Cards over 7 GB get 192 MB, over 11 GB 256 MB.
The textures: the engine sizes its texture pool from whatever VRAM is left mid transition, while the old scene is still resident, which on a 6 GB card was 633 MB in a race and 526 MB after a restart. The engine has two flags for exactly this, force_canonical_pool_sizes and tile_pool_mb, that the release build never reads from the command line. The mod finds their storage inside the running exe and writes them at start, so the pool is created once at 1024 MB (1536, 2048 or 3072 on bigger cards) and never shrinks. Texture quality needs to be on Ultra for this to show.
- Sizes itself to your card: the tile pool and the staging buffer are picked from the render adapter's memory the moment the game creates its DXGI factory, before the renderer sizes its pools. A number in the ini overrides the pick.
- Engine flags from the ini: any bool, int32 or double gflag of the game can be set under
[flags]. The release build ignores flags on the command line, so the mod locates the storage of each one inside the exe and writes it directly.enable_pso_cacheandno_introare on by default. - Process tweaks: above normal priority class, Windows power throttling off for the game, 0.5 ms timer resolution.
- A log that says what happened:
acevo_perf.lognext to the exe lists everything applied, every DirectStorage queue and file, per queue streaming statistics and every frame slower thanhitch_mswith the streaming activity around it. Two CSVs, one line per second and one per frame, are off by default and one line in the ini away. - Two GPU laptops: the log says which adapter owns the monitor the window sits on, and warns when it is not the one rendering, because every frame is then copied across.
- A mods folder: files under
acevo_mods\next to the exe replace files of the same path inside the 64 GB content package, or add new ones, without touching the package. Delete the folder to undo.
- Close the game.
- Download the zip from Overtake or from the latest release here, they are the same file.
- Open the game folder, the one with
AssettoCorsaEVO.exein it. In Steam that is right click the game, Manage, Browse local files. - Copy
dstorage.dll,dstorage_orig.dllandacevo_perf.inifrom the zip into that folder. Let Windows replace the existingdstorage.dll. - Start the game.
acevo_perf.logappears next to the exe and lists what was applied.
After a game update that replaces dstorage.dll, do the same again. If an update breaks the mod, remove it until a new version is out.
- Close the game.
- Delete
dstorage.dll. - Rename
dstorage_orig.dlltodstorage.dll. - Delete
acevo_perf.iniandacevo_perf.log.
Or verify the game files in Steam, which puts the original dstorage.dll back, then delete the ini and the log.
Everything is in acevo_perf.ini, every key is explained in the file.
build.ps1 at the root, needs Visual Studio 2022 with the Windows SDK, output in dist\. release.ps1 builds and zips the payload into release\. Set ACEVO_GAME_DIR to your game folder and build.ps1 -Install copies the build there. The Python tools under tools\ (package inspection, settings files, telemetry reports) find the game the same way.
- CHANGELOG.md: every version, what it fixed and how.
- CONTRIBUTING.md: how to report a problem and what to include.
dstorage_orig.dll is Microsoft's DirectStorage 1.2.3 runtime from the NuGet package Microsoft.Direct3D.DirectStorage, byte identical to the one the game ships, redistributed under its license (third_party/directstorage). The rest is by ecstra.
Licensed under MIT.
