Proton: Build all 32-bit components with SSE and SSE2 instruction support

Created on 28 Sep 2018  路  6Comments  路  Source: ValveSoftware/Proton

Feature Request

I confirm:

  • [x] that I haven't found another request for this feature.
  • [x] that I have checked whether there are updates for my system available that
    contain this feature already.

Description

Enable SSE and SSE2 instructions in builds of 32-bit components. It should reduce CPU overhead and could give a small boost in performance.

This requires passing -msse -msse2 to the compiler via CFLAGS/CXXFLAGS for all 32-bit component builds and enabling SSE2 support in the configure scripts of sub-modules that have optimized assembly routines, such as ffmpeg.

Justification [optional]

Proton requires an amd64 processor, so support for SSE and SSE2 always present. Wine does not mandate an amd64 processor so it has no such guarantee. Wine could build with SSE and SSE2 support when being built for amd64, but Proton has more components than just Wine.

Risks [optional]

None.

References [optional]

DXVK adopted this idea today:
https://github.com/doitsujin/dxvk/commit/6fb09cb9fceaf9890ec83ded507ddae22c3b6a40

Microsoft dropped support for processors that lack SSE2 earlier this year:
https://www.ghacks.net/2018/06/21/windows-7-support-dropped-for-cpus-without-sse2/

The 32-bit builds of Windows 8 and later require SSE and SSE2, so presumably, their 32-bit libraries on amd64 are built using it, which gives Windows an advantage over Proton:
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/paenxsse2-support-requirement-guide-for-windows-8

Feature Request cw

Most helpful comment

Fixed by 56b174af5409e19004bbc6dbf3cb7175cbe10379.

All 6 comments

Would there be a benefit in going upto SSE3 for Steam's Proton usage? It's at 100% on Steam's hardware survey.

Sadly, no. SSE3 only helped some very esoteric applications.

SSE2 is mandated by Steam itself regardless of amd64. Not enabling it seems a bit odd choice.

https://support.steampowered.com/kb_article.php?ref=7420-QROP-9359

(unless the support article is out of date, of course)

This should be improved in the latest 3.16-3 build. Can you re-test and see if you're happy with the current state?

Fixed by 56b174af5409e19004bbc6dbf3cb7175cbe10379.

@kisak-valve It is a pain to review binaries, so I am late at getting back to people on this. I just wanted to say that I have not spotted any issues. I will let you know if I ever do.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

Yrds picture Yrds  路  886Comments

NTMan picture NTMan  路  848Comments

Yarwin picture Yarwin  路  540Comments

Stumpftopf picture Stumpftopf  路  469Comments

StructByLightning picture StructByLightning  路  241Comments