I did further testing and found that increasing this value (in multiples of 16) further improves performance as long as you have enough RAM.
I would recommend 256 as a starting point and reducing as needed.
Sorry for any confusion.
I did further testing and found that increasing this value (in multiples of 16) further improves performance as long as you have enough RAM.
I would recommend 256 as a starting point and reducing as needed.
Sorry for any confusion.
Is there a form of logic to know how much to set based on how much RAM you have? Like if I have 16GB RAM, would I then need to multiply it by 16 and as such set it as 256?
Hi, I’m little confused with streaming_max_open_streams value which is set to 48 when in your previous forum post this value was set to 64 and don’t know if 48 is the new value that works better or a typo/mistake?
5800X3D | RX 9070 XT | 32GB DDR4 3200MHZ
Unfortunately, I have not had enough testing from people with 16gb of RAM to have a definitive rule on this. From the limited testing people have helped me with, 256 as a value should be fine for 16gb of RAM, though if you get any ‘Out of Memory’ crashes, I would recommend lowering the value.
Let me know if you have any questions, and I would appreciate feedback on your specs and if this change worked for you.
Thanks
Hey claude,
I would recommend staying at 48 unless you notice issues with texture pop-in. In that case, you can try increasing it to 64, though this may hurt your performance slightly.
Windows 10 Pro 22H2
CPU: Ryzen 5 PRO 4650g 6c/12t
GPU: RX6600 XT 8GB VRAM
RAM: 16GB
AMD driver version: 25.11.1
The worst part is that before this I had a RX580 4GB VRAM GPU (same other specs) and the fact that with that GPU I had the exact same performance as I do now is insanity.
I have basically tried every optimization trick in the sun like: lowering in-game res so I enable FSR in Adrenalin, trying out your guides and finding out it basically did nothing for me, resetting the graphics options, etc.
Windows 11 25H2
CPU: 5800X3D
GPU: 9070XT
RAM: 32GB
AMD Driver: 25.11.1
Just swapped out my 5600X & RX 6800 for a 5800X3D & 9070 XT and noticed massive lag every once and while straight away - which I didnt have with the old setup.
I deleted the Darktide folder in %appdata%
Have left SAM on because I want the performance for Battlefield 6 and am not turning it on and off in the BIOS.
I tried your settings above and while it lowered my overall FPS it hasnt stopped the big spikes of lag. From memory with my old setup I had SAM off and that was the key because with SAM on with the RX 6800 it had similar spikes.
I wish this would just work like other games but it appears it cant.
Thats unfortunate to hear.
I always get stutters after a big update for darktide unfortunately.
I also got the impression that the RDNA2 cards handled Darktide better.
I’ve deffintely felt like the new driver has improved my performance in darktide a touch.
I have the exact same system and specs also keeping SAM on. On top of the changes mentioned in this post imo tile_staging_buffer_size to 128 and disabling anti-lag has seemed to have worked for smooth gameplay. I think there are still situations where fps will drop a lot, but has made the game at least playable.
Do you have HAGS enabled? I came from 6950xt that didn’t have the toggle and it worked fine, wonder if that could possibly be related, too. Idk much about HAGS though. I have it enabled.
Thank you for this guide. AMD 9070 isn’t enough for the game without this fix ![]()
Maybe it’s time for devs to take some notes and integrate it into their game?)
This is how it runs for me when running 5 circles around Mourningstar:
(my settings > Vizra > default)
Vizra settings:
my settings:
default settings:
My specs:
W11 version 10.0.26200, Adrenaline 25.12.1, chipset 7.11.26.2142, rebar on
9800X3D, 32GB 6000mt/s CL 30 , RX 9070xt
3440x1440 FSR4 quality, vsync on, mostly maxed settings with max ray tracing
EDIT - detailed settings
in-game settings: from top to bottom in the menu
rt reflections: high
rtgi: high
mesh: 5.0
ambient occlusion: extreme
lighting: extreme
volumetric fog: low
depth of field: off
bloom: off
subsurface scattering: on
blur: off
lens settings: off
sliders below that (decals, ragdols, etc.) maxed
settings_common.ini (relevant non default)
feedback_streamer_settings = {
feedback_buffer_size = 2
max_age_out_tiles_per_frame = 64
max_streaming_tiles_per_frame = 64
max_texture_pool_size = 1024
max_write_feedback_threshold = 0.009
min_write_feedback_threshold = 0.005
staging_buffer_size = 1
threaded_streamer = true
tile_age_out_time_ms = 5000
tile_staging_buffer_size = 1
}
lightfx = {
enabled = false
}
mesh_streamer_settings = {
disable = false
eviction_timeout = 5
frame_time_budget = 1
io_buffer_budget = 10240
limit = 768
}
streaming_buffer_size = 64
streaming_max_open_streams = 64
streaming_texture_pool_size = 512
surface_properties = “application_settings/global”
texture_streamer_settings = {
streaming_buffer_size = 64
streaming_texture_pool_size = 512
}
EDIT 2:
Per Vizra comment “entries in the feedback streamer settings have the same value“
with ‘2’:
feedback_streamer_settings = {
feedback_buffer_size = 2
max_age_out_tiles_per_frame = 2
max_streaming_tiles_per_frame = 2
max_texture_pool_size = 1024
max_write_feedback_threshold = 0.009
min_write_feedback_threshold = 0.005
staging_buffer_size = 2
threaded_streamer = true
tile_age_out_time_ms = 5000
tile_staging_buffer_size = 1
}
and with ‘4’
feedback_streamer_settings = {
feedback_buffer_size = 4
max_age_out_tiles_per_frame = 4
max_streaming_tiles_per_frame = 4
max_texture_pool_size = 1024
max_write_feedback_threshold = 0.009
min_write_feedback_threshold = 0.005
staging_buffer_size = 4
threaded_streamer = true
tile_age_out_time_ms = 5000
tile_staging_buffer_size = 4
}
I personally don’t use the Morningstar as an example as you will get stutters everytime a player is loaded into the Morningstar.
Additionally, Ray tracing causes issues on AMD cards in Darktide. Which is why I have opted to leave it off.
Also, please share your settings. Any contribution that can be better than mine I want to know about.
Thanks
Edited previous comment (to keep all useful info in one place).
I like the concept of ray tracing (especially GI) that’s why i really want to keep it. I see that overal the GPU is capable of providing playable framerate with RT on, only problem is that game engine is poorly tuned.
I’m super excited for Fatshark working with AMD on Radiance Caching (component of FSR Redstone), that will hopefully give them an oportunity totake a closer look at problem that we are trying to solve here + some better RT for me.
And big thank you to you @Vizra , without you and this thread we all would be doomed to default settings, with poor frametime consistency. I see how time consuming tweaking the game is and testing those changes.
Maybe @FatsharkJulia could help us and ask around the devs for tips and tricks on how to tweak those settings ingame without need to restarting it inbetween ![]()
So lets talk about that…
I’m gonna go ahead and make a claim that tile_staging_buffer_size = 256+ is just a fanciful way to say default and keep it at the original value. I’ve seen pulpable differences within the 1 to 32 range, but past that it was no different from the original value of 4.
Worse yet, given by my experience with it, the value of 256 would make the game unplayable. From what i can tell the tile_staging_buffer_size behaves like pre-render with corresponding behaviour when set high (by which i mean the value of 16).
And if my assuption is correct and it actually very well might be, the value of 256 is not only not safe at all, but waaay past the parameters the tile_staging_buffer_size could reasonably require!
Btw i’m sorry if i sound confrontational, that’s not my intention o7
Edit.
I genuinely think that the size in tile_staging_buffer_size is being misunderstood for allocating more resources for buffer (to make it bigger) and that’s not what it really does.
As a matter of fact i think the tile_staging_buffer_size is in fact creatively named setting for frame pre-rendering!
This has not been my experience whatsoever, and neither for the people I have had testing my config changes.
I have cycled through 1,2,3,4,8,16,32,64,128,256,512,768,1024,1536, and 2042 as values for tile staging buffer size.
In this I noticed a STARK difference in smoothness on my system. Though my input lag did in fact increase noticeably at 1536.
All my testers, from AMD Athlon CPUs to 9800x3Ds, and GTX 1650, RTX 4070 super, GTX 1080, and myself on a 9070 xt noticed a difference when tile staging buffer size was increased.
If you are having issues with this, please share your specs and experience as any exception to the “rules” i have established is appreciated. I am not the final say for this stuff, and if I am wrong / more people can be helped by running something different, I would be happy to update things.
As i mentioned yesterday,
I did some digging, involved some people on discord and it seems there’s correlation between tile_staging_buffer_size and dstorage_staging_buffer_size and the tile_staging_buffer_size value wont effectively exceed the dstorage_staging_buffer_size value.
dstorage_staging_buffer_size default value is 32mb, with default enum 0 16 20 24 28 32
Which corresponds with our testing the tile_staging_buffer_size where the the value 16 seems to be the first one that has a noticeable impact
Now to solve this puzzle i have two questions,
- What is your dstorage_staging_buffer_size?
Mind you the dstorage_staging_buffer_size can be bigger than
32mband its entirely possible you might done something to it (something desirable) that will explain the differences we experience
- Does the tile_staging_buffer_size = 4 even work at this value?
Is it possible that tile_staging_buffer_size as set by default in the settings_common isn’t really working and the number we set instead isn’t really that much about the size of buffer but about making the buffer work in the first place?
Now to clear out some misconception you might have about my post, changing the tile_staging_buffer_size value indeed helps with stutter and general smoothness, nobody challenges that ![]()
I do however raise my doubt about these values 64,128,256,512,768,1024 and put forth that they do not work on their own, but are dependent on a different setting and without it the value like 256 is null.
Now you might disagree about that and all fair, but if you do have at least a little bit of doubt, it wouldn’t be entirely out of question to add into your main post that for some people the value range is 0 16 20 24 28 32 and exceeding it migt deliver no results or improvements!
You have peaked my curiosity so I tried turning off Re-Sizable Bar in my Bios and tested.
And I did in fact, notice a very minimal difference (if any) between 1024 and 256 tile_staging_buffer_size.
I know that NVIDIA GPUs do not use Re-Bar for Darktide, and maybe that is why you are experiencing this.
Additionally, when Re-bar is enabled with my personal settings, my game is noticeably smoother and responsive, but has pop-in for certain models that need be loaded in. (Plague Ogryn, Chaos Spawn, and the Scanner Minigame thing.
Are you on an NVIDIA GPU? If this is the case, I wonder if this is why you are experiencing little to no difference with the increase in tile_staging_buffer_size.
Yes, its Nvidia
I got two setups, 10700 with 2070 and 12700k with 3070, both of them see benefits from the tweaks but i have to be far more conservative with the numbers than your guide is suggesting and follow/stay within this enum 0 16 20 24 28 32 to see proper effect.
I also have to compensate for increasing the tile_staging_buffer_size by also increasing feedback_buffer_size otherwise the game desync some frames.
Another factor is Framegen, regardless of the FPS i might have without Framegen the tweaks seems to really work best with Framegen On, without it the effects of the tweaks seems kind half-cooked.
Lastly, turning off direct storage seems to pretty much nullify any benefit gained from the tweaks!
Now i could swear (but can’t find it now) that ATI did some official yapping about Radeons and dstorage_buffer size increase and i wonder if the Radeon drivers come with it by default.
Turning off reBar and seeing no difference past 256 makes sense, but doesn’t really explain my “problem”, as i genuinely struggle to see any difference past 32 on both setups!
I’d say that while eventually working as intended, the tweaks on NVIDIA seems to require more nuance and few balancing acts instead of straightforward changes that work on Radeon gpu’s.
Edit.
The 10700/2070 is hooked up to a basic Benq 1080 screen and nothing shows how badly broken is the game after the hotfixes than trying to run the game with a vsync on that setup
It is a shame good information is lost in individual posts in various threads.
There is at least dozen AMD, Nvidia, in game and outside in windows tweaks. DDU, clear shader cache, no overlays, polling background apps from input device/RGB/fan control software, MSI Afterburner impact, worker threads for cpu architecture, Backup of user_settings.config and delete folder in appdata, reset graphic settings on launcher or specific amd/nvidia feature settings.
I would suggest FS do verify and pin but that means they would have to test themselves.
So now people are limited to searching amd or nvidia etc and go by latest posts.
Just information not collectively altogether in one.
Can confirm this, modded 2070 to have reBar and the difference is real, had to be less forcefull with the 3070 and again the positive impact is noticeable ![]()
I wish it was this clear, right now going with the usual approach and clearing all shader cache will result in corrupted .pso_libs and kinda defeats the purpose of clearing the shaders in the first place!
This thread explains it,
The way to go about is to delete only the shader_cache.hans and leave the rest untouched, which should keep the .pso_libs below 1% fail rate without being required to wait for them to slowly rebuild over the sessions!
Yeah that would be nice, but just FYI some of the stuff that is being discussed in this thread is actually behind Microsoft NDA, like the staging_buffer. We are flying so blind that even the basic question of enum has somewhat uncertain answer ![]()