-
Notifications
You must be signed in to change notification settings - Fork 6
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
geo_heap and cb_heap sizes #47
Comments
I don't think I have issues right now, but I'm willing to build and play with the env vars to see if I can get better results (or worse). Could you explain what each of the envars do? What increasing / decreasing gives? And what size they should be min/max. And perhaps a suggested size based on VRAM. |
I'm not sure I can explain it very well, I shall try https://comminos.com/posts/2018-02-21-wined3d-profiling.html
This is the GEO and CB bit
in short , a big chunk of video ram that we use so we don't have to shuffle around in memory so much some practical observations
Well, this is the kind of data I wish to collect
For now, leave CB_HEAP at 128, ( unless dx9, in that case set it at 1 , refer to FF XIV ) With the very limited data we have currently, it seems 2048 is likely a sweetspot.. trouble is I only have 1024 on my gt620 , so the defaults are near max for me.. oh the irony 😞 EDIT: |
Aight, the way I understand it now:
I understood 1) already, but I simply didn't understand what 2) was used for, but I'm assuming that is a direct mapping of DX10/11 constant shader buffers now. Right, so we need to set sizes enough for both to make it smooth. Running out of heap space will result in the allocator having to drop older data I guess. So having more is better, but only if you don't run out of VRAM. For my 4gb card, I'll start with GEO=1536, and CB=256, and pay attention to my VRAM usage. PS: I compiled and ran in the VSync bug, so I won't timetest test yet. I'll rebuild fri/sat when 3.5 is out when the vsync bug is gone, and then test more. EDIT: Reduced my starting values a bit, and removed a sentence. |
Have you found any performance gains tweaking these values @IngeniousDox ? |
@SveSop it is not about performance |
I figured that if the GEO/CB heap isn't big enough, you might end up in a situation where you run out of room. I do not know what happens at that point, and if you could get more performance by just having a bigger heap in the first place. Almost impossible for me to check. That said, I played some WoW last night with those values, but the max VRAM wow ever used was around 1400mb. This was in Antorus. I don't think I gained any fps over the "original values". |
@FireRat I know that it is not made for performance... but it COULD have a side-effect of more performance if a particular game gets somewhat starved or whatever of heap space no? And since me and @IngeniousDox both play wow, it was worth asking if he found something :) |
I've updated my patch no change in function, but I believe it is technically cleaner |
I think adding new dll like wined3d_dx9.dll with hardcoded GEO=256 and CB=1 for d3d9.dll and using default PBA envars for wined3d.dll for d3d11.dll could be an easy solution for most cases. |
nah, a basic shell script is a far better solution. |
Yeah, but only for Linux. I am mostly testing on Windows so I have to tune values and recompile each time. |
fair enough .. here is my original patch, which used registy |
oh forgot
|
It seems it is using User-mode system memory instead of GPU memory. When I use /3GB switch it works without crashes on any GEO and CB values. I have 3GB of video memory but only 3.5GB of system memory where only 2GB of memory available for User-mode space. |
I guess your application is 32bit it crashes because the 'blind' creation of the heap goes beyond the 32bit address space |
I am using 32 bit version of Windows |
How about https://en.wikipedia.org/wiki/Physical_Address_Extension, at least for Wine? How hard would it be to implement this ability in Wine? |
well, your 3gb video ram is wasted on that OS
read and note that Svyatpro is using 32bit wine on a 32bit windows (undisclosed version) OS normally (without PBA) the vram gets freed once the gfx job is done , so address space isn't an issue but performance is poor. IF a 64bit client is available you should use that to avoid the limited address space problem. some 32bit clients work fine with PBA's defaults, some don't |
I have WS03 which "can" see up to 64GB of RAM being 32-bit and PAE works without problems. But, the problem is that it anyway provide only 2GB of User-mode memory by default. I heard about AWE (Address Windowing Extensions) but it seems there are no other application that using it except SQL Server. Personally, I don't care of how I waste my VRAM. I just care of WineD3D quality and I think it should be stable in all cases like DX9 on XP with any amount of RAM or VRAM - it doesn't crash being 32-bit and having low User-mode memory. |
personally I think you should provide details initially instead of dripping in details bit by bit. I'm not wasting anymore time on this. good luck. |
Just for the record: PBA in a form, is being scheduled for inclusion into Wine. Wine PBA in its current form is a good proof of concept, but as we all know it has its quirks. But it works. And it has been noticed. Now I don't know the details, but they will either adapt the current implementation. Or write it from the ground up with the same concepts, but more "robust. So for now use what there is, and just have patience till it lands in actual wine in the coming months. Source: Discord discussion with people part of Proton development. |
that does seem promising |
Actually, it was discussed on the DXVK. Don't even know if there is a Proton server out there. ;) |
over at https://github.com/Firerat/wine-pba/tree/heap_size_envvars
specifically
0011-wined3d-GEO-and-CB-heap-size-override-envvars.patch0010-OPTIONAL-wined3d-GEO-and-CB-heap-size-envvars.patch
I have added option to tweak the geo and cb heap sizes
the reason behind this was to enable PBA on my puny laptop
it works
__PBA_GEO_HEAP=200 __PBA_CB_HEAP=1 wine somedx9game.exe
@GloriousEggroll has used this to get FF XIV to behave along with Guild Wars 2 and Warframe render lag
@shmerl has had some limited success with TheWitcher3
for reference, current PBA hardcoded defaults are Geo = 512mb and cb = 128
I would love for people to both
at least initially it is probably better to concentrate on the geo heap size, if things appear to be missing, up it a little.
please mention your vid cards ram
this one should apply over an existing wine-pba
wined3d-GEO-and-CB-heap-size-override-envvars.patch.gz0010-OPTIONAL-wined3d-GEO-and-CB-heap-size-envvars.patch.gz
no need to get my full repo or anything like that
The text was updated successfully, but these errors were encountered: