Paint.NET v4.2.6 will require SSE2 on 32-bit / x86

I’m just giving everyone a heads-up that the minimum system requirements will be increasing a little with the upcoming version 4.2.6 update. The change is simply to require a processor with SSE2 instead of SSE for the 32-bit version of the app. The 64-bit version is unchanged; it has always required SSE2 because the 64-bit “x64” instruction set has always included SSE2 (as per AMD, Intel, and Microsoft).

Most systems aren’t affected by this. All modern CPUs have had support for SSE2 since 2003 or so.

Here’s a list of the newest processors that will no longer be supported:

So on the Intel side you just need a Pentium 4 or newer (circa 2000). On the AMD side you’ll need an Athlon 64 or newer (circa 2003). So if you bought your computer within the last, oh, 15 years … you’ll be fine! Otherwise you should probably upgrade anyway, or just stick with older versions of Paint.NET and turn off the built-in updater.

I’ve never really felt a strong compulsion to bump up the minimum CPU requirements. I always maintain “scalar” code paths for anything optimized to use SIMD instructions (SSE2, AVX2, etc.) so that I never get locked in to any particular instruction set or CPU architecture. This permits me to port to other CPU architectures, e.g. ARM, if/when that actually becomes compelling or even necessary.

However, .NET Core requires SSE and SSE2 on x86, so this change will help get things ready for that migration. I don’t have a concrete timeline for this, and my estimates for things like this have historically been bad, but hopefully within the next year or so.

This also means the 32-bit version of the app will get a small performance boost in the 4.2.6 update. The Visual C++ compiler optimizes a few key code paths in the C++ code which are used for things like BGRA32 –> PBGRA32 pixel format conversion, as well conversions between integers, floats, and doubles. (However, with the migration to .NET Core, these may actually be better implemented in C# code!)

10 thoughts on “Paint.NET v4.2.6 will require SSE2 on 32-bit / x86

  1. Whelkman says:

    If you’re somehow rocking a VIA processor and using Paint.NET with it, it’ll have to be a C7 (2005) or newer to support SSE2.

  2. chrarnoldus says:

    Perhaps worth mentioning, Windows 8 and 10 also require SSE2, so if you’re running one of those you should be fine.

  3. kwerboom says:

    Wow! You’re late to this party. Normally Mozilla is the last one to make a switch like this, but even they started requiring SSE2 back in September 2016 with Firefox 49.

      • kwerboom says:

        I could make up for it and start requiring AVX2 starting next month?

        LOL!😆 No, I don’t think you will want to limit Paint.NET to only CPUs made in the last six years.

        I just figured that by now, every program used some form of hardware accelerated SIMD because most hardware architectures seem to include some variant of it on the silicon.

        • Rick Brewster says:

          Paint.NET has had targeted SIMD optimizations for quite awhile, so your expectation is correct there. These are selected at runtime with if-else-if branches, e.g. if (AVX2) { RunAVX2Version(); } else if (SSE2) { RunSSE2Version(); } etc.

          However, there are a few functions over in standard C code that I rely on the VC++ compiler to optimize for me, at which point I only get the SIMD path. It only makes a difference if I use /arch:SSE2 (which is implied on x64).

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.