I’ve spent many nights trying to get CS2 to run somewhat smooth in Linux, so I thought I’d share the combination of settings I’ve found to make it run flawlessly.

At 3840 x 1600 @ 160 Hz, my monitor seems to be pushing the limits of what my 6700 XT + i9-9900K desktop is able to handle. Running at monitor native resolution was not a great experience for competitive CS, especially when the FPS was dipping below 160 FPS.

Downscaling to any of the lower native resolutions in CS2 would make the game a blurry mess. With the following settings, my FPS is close to what I’ve been seeing in Windows previously. I no longer dual boot, so I haven’t been able to confirm with actual stats.

Launch parameters

gamescope -W 2560 -H 1440 -w 2560 -h 1440 -f --adaptive-sync --force-grab-cursor -- mangohud %command% -noreflex

On my 3840 x 1600 monitor, this gives me 1440p with black bars.

If you want to stretch the image you could add -S stretch or even downscale to 1080p:

gamescope -W 2560 -H 1440 -w 1920 -h 1080 -f -S stretch --force-grab-cursor -- %command% -noreflex

Mangohud is optional, so you can run without it if you want.

-noreflex gave me +20% FPS boost, and as far as I understand my GPU doesn’t even support reflex.

--force-grab-cursors is necessary, or the mouse will be inverted and locked to a tiny box in the middle of the screen for some reason.

Variable refresh rate

--adaptive-sync should be enabled if your monitor supports VRR (Freesync / GSync).

Refresh rate is not configured in CS without -r [your refresh rate here], but it seems like the game is running at whatever the refresh rate is set to in your DE, even though display settings are saying “60”.

To avoid VRR Range exceedance, it is recommended to set a frame cap to ~3% below your refresh rate. https://forums.blurbusters.com/viewtopic.php?t=12305

I’ve been doing this with MANGOHUD_CONFIG=fps_limit=155,, but I suspect you will get the same result with -r 155.

Gamemoderun made no difference for me, and also env LD_PRELOAD="" did nothing (except disable steam overlay of course).

If you use Gnome, you have to enable VRR as an experimental feature for now https://wiki.archlinux.org/title/Variable_refresh_rate

Graphics settings

When it comes to the graphic settings in CS2 I use freesync with vsync off. As far as I understand, vsync will only happen if the VRR range is exceeded.

Also, if you don’t have GSync/freesync you should probably disable vsync to avoid judder. Generally tearing is preferred over judder for competitive gameplay.

VRR explained: https://www.youtube.com/watch?v=Ldic94hqLFc

If your framerates are permanently above your refresh rate, you should set vsync to off or set a framerate cap, as explained earlier. VRR works best when fluctuating within the VRR range.

Source: https://forums.blurbusters.com/viewtopic.php?t=5714

Vibrating walls

This strange bug was the last missing piece. The polling rate button on my Logitech G603 was not pushed all the way over, and was stuck in “lo”. This caused stuttering when using the mouse. https://www.reddit.com/r/GlobalOffensive/comments/16fvki6/cs2_shaking_vibrating_walls_anyone/

Advanced graphics settings for balance between quality/visibility

  • Boost player contrast: Enabled
  • MSAA: 4x
  • Global Shadow: High
  • Dynamic Shadow: All
  • Texture filtering mode: Bilinear (this makes player models more visible)
  • Shader detail: Low
  • Particle Detail: Low
  • Ambient occlusion: Disabled
  • HDR: Quality
  • FidelityFX: Disabled

Hw for reference

  • OS: Fedora Linux 41 (Workstation Edition) x86_64
  • Kernel: 6.13.10-200.fc41.x86_64
  • Resolution: 3840x1600
  • DE: GNOME 47.5
  • CPU: Intel i9-9900K (16) @ 5.000GHz
  • GPU: AMD ATI Radeon RX 6700 XT

Edit: added explanation about --adaptive-sync.

  • slazer2au@lemmy.world
    link
    fedilink
    English
    arrow-up
    4
    ·
    4 个月前

    Do you mean Cities Skylines 2 or Counter Strike 2?

    I hate how they moth have the same acronym.

  • ag10n@lemmy.world
    link
    fedilink
    English
    arrow-up
    2
    ·
    4 个月前

    Adaptive sync is vsync, that’s why you’re getting a smooth experience

    Is there any reason youre forcing gamescope? Just works for me without any tinkering and the same gpu.

    • Stomy@noc.social
      link
      fedilink
      arrow-up
      4
      ·
      4 个月前

      @ag10n @Arose8334 vsync locks the game to the monitors refresh rate. I’m pretty sure adaptive sync and free sync adjust the displays refresh rate to match the game.

      • ag10n@lemmy.world
        link
        fedilink
        English
        arrow-up
        2
        ·
        4 个月前

        It syncs the output of the graphics card with the display Similar to vsync in that you’re telling the software/source to sync with the display; adaptive means it’s not a fixed frequency/framerate

        Developed by VESA, Adaptive Sync adjusts the display’s refresh rate to match the GPU’s outputting frames on the fly. Every single frame is displayed as soon as possible to prevent input lag and not repeated, thus avoiding game stuttering and screen tearing.

        https://www.viewsonic.com/library/tech/explained/what-is-adaptive-sync/

        • Stomy@noc.social
          link
          fedilink
          arrow-up
          1
          ·
          4 个月前

          @ag10n that’s what I said, you just used more words.

          They may give similar results but they aren’t the same thing.

          • ag10n@lemmy.world
            link
            fedilink
            English
            arrow-up
            2
            ·
            4 个月前

            the result is the same, i should’ve said “adaptive sync is similar to vsync”

            it is still the primary reason for a smooth experience.

            • Arose8334@lemm.eeOP
              link
              fedilink
              English
              arrow-up
              1
              ·
              4 个月前

              Adaptive sync + downscaled resolution with black bars + -noreflex + sane graphics settings in CS

              • ag10n@lemmy.world
                link
                fedilink
                English
                arrow-up
                2
                ·
                4 个月前

                right, turn off adaptive sync and you’ll objectively agree on the impact

                • Arose8334@lemm.eeOP
                  link
                  fedilink
                  English
                  arrow-up
                  1
                  ·
                  4 个月前

                  Without adaptive sync is still better than native resolution without gamescope, so I’m not sure why you’re so dismissive. I’m just trying to share a list of tweaks that made the experience better.

    • Arose8334@lemm.eeOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      edit-2
      4 个月前

      I think this is incorrect. I suspect it is because I am using a variable refresh rate display (LG 38GN950P). According to arch docs

      If your monitor supports it, enable variable refresh rate by passing the --adaptive-sync flag

      Also: https://gamedev.stackexchange.com/questions/207322/what-does-vsync-mean-on-a-variable-refresh-rate-monitor

      However, I am forcing gamescope to downscale to play at a lower resolution (without the game looking like a blurry mess)

  • Matt@lemmy.ml
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    4 个月前

    CS2 runs perfect without downscaling. If this is for CS : 2, then state it explicitly.