diff --git a/app/streaming/session.cpp b/app/streaming/session.cpp index 61b193e4..399da4e8 100644 --- a/app/streaming/session.cpp +++ b/app/streaming/session.cpp @@ -605,8 +605,8 @@ bool Session::initialize() #ifndef STEAM_LINK // Opt-in to all encryption features if we detect that the platform - // has AES cryptography acceleration instructions. - if (StreamUtils::hasFastAes()) { + // has AES cryptography acceleration instructions and more than 2 cores. + if (StreamUtils::hasFastAes() && SDL_GetCPUCount() > 2) { m_StreamConfig.encryptionFlags = ENCFLG_ALL; } else { diff --git a/app/streaming/streamutils.cpp b/app/streaming/streamutils.cpp index c9f693ef..eb89fd42 100644 --- a/app/streaming/streamutils.cpp +++ b/app/streaming/streamutils.cpp @@ -10,6 +10,10 @@ #include #endif +#ifdef Q_OS_LINUX +#include +#endif + Uint32 StreamUtils::getPlatformWindowFlags() { #if defined(Q_OS_DARWIN) @@ -118,8 +122,15 @@ bool StreamUtils::hasFastAes() #elif defined(Q_OS_DARWIN) // Everything that runs Catalina and later has AES-NI or ARMv8 crypto instructions return true; +#elif defined(Q_OS_LINUX) && defined(Q_PROCESSOR_ARM) && QT_POINTER_SIZE == 4 + return getauxval(AT_HWCAP2) & HWCAP2_AES; +#elif defined(Q_OS_LINUX) && defined(Q_PROCESSOR_ARM) && QT_POINTER_SIZE == 8 + return getauxval(AT_HWCAP) & HWCAP_AES; +#elif QT_POINTER_SIZE == 4 + #warning Unknown 32-bit platform. Assuming AES is slow on this CPU. + return false; #else - // Assume AES is fast if we don't recognize the OS or processor + #warning Unknown 64-bit platform. Assuming AES is fast on this CPU. return true; #endif }