Skip to content
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

New values of mem min and max heapsize don't work on Linux #746

Open
Tiagoquix opened this issue May 7, 2024 · 10 comments
Open

New values of mem min and max heapsize don't work on Linux #746

Tiagoquix opened this issue May 7, 2024 · 10 comments
Assignees

Comments

@Tiagoquix
Copy link
Contributor

Hello there.

The latest release of mastercomfig increased the values of mem_min_heapsize and mem_max_heapsize to 144 and 720 from the defaults of 64 and 512, respectively.

However, the ConVars still follow their default values and do not obey dxsupport_override.cfg (at least according to the developer console).

I have noticed new files in TF2_FOLDER/bin that start with dxsupport_, and I assume they are new files from the 64-bit update. One of them is dxsupport_linux.cfg.

I tried to use a new dxsupport_override.cfg file with new categories, dxsupport_linux and dxsupport_mac (based on the actual categories of the new files), but the heapsize ConVars stayed at their default values.

Here's what I tried: a VPK named _dxsupport_override.vpk, containing a single file named dxsupport_override.cfg with this inside of it: https://0.jaegers.net/?8047db42db60cbbb#HZ9vHK5Zedtqxiypr18RiyYkPGqW915jUGn8i5pR6hTe. Sadly, it didn't work.

I also tried with a VPK using only "dxsupport_linux" inside the file (basically using the existing file but adding "_linux" to the category name and replacing the testing VPK) and it also did not work.

I do not know if the new values from mem min and max heapsize work normally on Windows.

My assumption is that this patch changed DirectX in some way that it does not respect DX Override anymore, but that's just a guess. (FYI, DirectX on Linux before this patch had mat_dxlevel min 90 and max 92, but now it is min 90 and max 100.)


  • mastercomfig version: 9.10.3
  • DX level: Vulkan, DX 92 (default/forced)
  • Operating system (OS): Fedora Linux 40 KDE
@mastercoms
Copy link
Member

Do you know if they worked before?

@Tiagoquix
Copy link
Contributor Author

Tiagoquix commented May 7, 2024

I didn't usually check these ConVars, but the last time I checked them (before the 64-bit update), on Windows, yes, they were working.

I didn't check the ConVars in the meantime after the 64-bit update, but before this issue. I noticed this today after the new mastercomfig release.

It would be interesting to test this on a Windows machine. I no longer use the OS, so I don't have access to one to test.

If, currently, DX Override works on Windows, then it's either a Linux- or POSIX-only problem, or an internal change to TF2's code in the way it handles Linux/POSIX systems.
If, currently, it doesn't, then it's a problem/regression of the new update(s).

It would be interesting to test with replacing the values in the dxsupport_linux.cfg file, but I'm not sure if would even work because it would be outside of TF2's custom folder, and it also may not be VAC-safe (so no multiplayer). Also, there's a CSV file, so we would need to edit this one too possibly.

@mastercoms
Copy link
Member

mastercoms commented May 8, 2024

Yes but I mean on Linux, could you test if they were working, on a pre-demos branch? Because on Windows, dxsupport works. Also dxsupport_override.cfg and the "dxsupport" key is used regardless of platform, so the reason it's not being applied is some other reason besides the file, most likely the dxlevel is wrong for targeting Linux.

@Tiagoquix
Copy link
Contributor Author

For me, it is not possible to test on older Linux branches, as there are technical errors that prevent it.

I tested all branches (with the exception of prerelease), and in all of them I got the following problems:

Missing game executable - when trying to launch with the "Play Team Fortress 2" launch option.
Disk write error - when trying to launch with the "Legacy OpenGL" launch option.

When trying to open directly through a terminal using the following combinations for all branches...

./hl2.sh
./hl2_linux
./hl2.sh -steam -game tf
./hl2_linux -steam -game tf

...they all lead to the following same result:

SDL video target is 'x11'
SDL video target is 'x11'
This system supports the OpenGL extension GL_EXT_framebuffer_object.
This system supports the OpenGL extension GL_EXT_framebuffer_blit.
This system supports the OpenGL extension GL_EXT_framebuffer_multisample.
This system DOES NOT support the OpenGL extension GL_APPLE_fence.
This system supports the OpenGL extension GL_NV_fence.
This system supports the OpenGL extension GL_ARB_sync.
This system supports the OpenGL extension GL_EXT_draw_buffers2.
This system supports the OpenGL extension GL_EXT_bindable_uniform.
This system DOES NOT support the OpenGL extension GL_APPLE_flush_buffer_range.
This system supports the OpenGL extension GL_ARB_map_buffer_range.
This system supports the OpenGL extension GL_ARB_vertex_buffer_object.
This system supports the OpenGL extension GL_ARB_occlusion_query.
This system DOES NOT support the OpenGL extension GL_APPLE_texture_range.
This system DOES NOT support the OpenGL extension GL_APPLE_client_storage.
This system DOES NOT support the OpenGL extension GL_ARB_uniform_buffer.
This system supports the OpenGL extension GL_ARB_vertex_array_bgra.
This system supports the OpenGL extension GL_EXT_vertex_array_bgra.
This system supports the OpenGL extension GL_ARB_framebuffer_object.
This system DOES NOT support the OpenGL extension GL_GREMEDY_string_marker.
This system supports the OpenGL extension GL_ARB_debug_output.
This system supports the OpenGL extension GL_EXT_direct_state_access.
This system supports the OpenGL extension GL_NV_bindless_texture.
This system DOES NOT support the OpenGL extension GL_AMD_pinned_memory.
This system supports the OpenGL extension GL_EXT_framebuffer_multisample_blit_scaled.
This system supports the OpenGL extension GL_EXT_texture_sRGB_decode.
This system supports the OpenGL extension GL_NVX_gpu_memory_info.
This system DOES NOT support the OpenGL extension GL_ATI_meminfo.
This system supports the OpenGL extension GL_EXT_texture_compression_s3tc.
This system supports the OpenGL extension GL_EXT_texture_compression_dxt1.
This system DOES NOT support the OpenGL extension GL_ANGLE_texture_compression_dxt3.
This system DOES NOT support the OpenGL extension GL_ANGLE_texture_compression_dxt5.
This system supports the OpenGL extension GL_ARB_buffer_storage.
This system supports the OpenGL extension GLX_EXT_swap_control_tear.
OpenGL: NVIDIA GeForce GTX 1050 Ti/PCIe/SSE2 4.6.0 NVIDIA 550.78 (4.6.0)
GL_NV_bindless_texture: DISABLED
GL_AMD_pinned_memory: DISABLED
GL_ARB_buffer_storage: AVAILABLE
GL_EXT_texture_sRGB_decode: AVAILABLE
AppFramework : Unable to load module engine.so!
Unable to load interface VCvarQuery001 from engine.so

And the game doesn't open.

@Tiagoquix
Copy link
Contributor Author

A possible solution would be to define it directly through the console (in comfig.cfg), but I don't know if that would work.

@mastercoms
Copy link
Member

mastercoms commented May 8, 2024

They have to be set early in dxsupport, not in a cfg, so it won't work.

Also you have to launch with the correct library path on Linux, but maybe launching with -gl will be fine on the current version.

@Tiagoquix
Copy link
Contributor Author

The shell script sets the correct library path for me (or at least it should), so this does not seem to be a path problem.


Testing with the Legacy OpenGL version and... surprise! It works!
Also tested mat_dxlevel. Max. value was also raised to 100.

image

@Tiagoquix
Copy link
Contributor Author

I believe the right path from here would be to open an issue on Source-1-Games.

@Tiagoquix
Copy link
Contributor Author

Also, the fx_drawimpactdebris, fx_drawimpactdust and fx_drawmetalspark ConVars are not visible in the developer console in the Vulkan version, but are visible in the OpenGL version.

The others ConVars are visible, but they have a different default (especially when returning their default values).

OpenGL:
image

Vulkan:
image

Also notice that mat_dxlevel got changed when I launched OpenGL before. Probably because the default value is now 100 and it just followed DX Support Override from the previous OpenGL launch.

DX Support Override seems to be completely ignored in Vulkan.

@Tiagoquix
Copy link
Contributor Author

@mastercoms Hi there, do you have any suggestions/ideas regarding this issue? I'm thinking about creating an issue on Source-1-Games repo, but if you have something to say please let me know before I proceed. Thanks in advance.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants