
Now, I bring you what is hopefully the final installment (posted here for usefulness to the internet-at-large). Though the x87 vs SSE thing isn't their fault - no x86_64 system has ever not had SSE.įive years ago, in the year of our lord 2014, I wrote about the difficulties of drawing bitmapped graphics to screen in macOS, and I revisited that issue again in the winter of 2017. Dealing with macOS updates and compatibility is really not enjoyable. Apple likes to change the appearance of NSTableViews and then provide ways to get them partially back to their previous style, but not all the way. When launching Audio MIDI Setup.app, the new path is /System/Applications/Utilities/Audio MIDI Setup.app rather than /Applications, for example. There were other things that came up that aren't as interesting. Of course, there will be little quirks that differ between the SSE and x87 versions, so those will need ages and ages of testing to get ironed out.
#Licecap record 60 fps code
The answer probably is something more incremental, like introduce some helpful optimizations into EEL2's code generation that will help get the SSE version up to parity. Also tempted to overhaul EEL2 to optimize for non-stack based architectures (which would also greatly improve the aarch64 version). Tempted to make a jsfx-sse.dylib and only use it if running in Rosetta2. I did an EEL2-SSE branch a while back, and I have it working again, but it's about 20% slower than the x87 version in a lot of important cases. Side note: so now, I'm trying to figure out the best way to deal with this. The benchmark I used was actually pretty low on math, I think on DSP code it's probably even worse, like a 100x slowdown.
#Licecap record 60 fps portable
(bytecode is EEL2 in portable non-JIT mode).

A quick benchmark in EEL2 gave me this: arm64 native: 1.25s, arm64 bytecode: 4.18s, rosetta2 x86_64 bytecode 9.18s, rosetta2 x86_64 x87 code 59s. EEL2 still generates x87 code, so JSFX on REAPER-intel on an M1 is incredibly slow.


#Licecap record 60 fps update
This most recent (as of this blog post) macOS update (and new architecture) has raised a number of issues with REAPER development - I'm documenting them here in hopes of it being useful to someone:
