18 June 2018

Firestorm and OS X Mojave

At the Apple Worldwide Developer's Conference held a few weeks ago, Apple announced OS X 10.14 Mojave. In amongst all of the other things Apple announced, one announcement has made waves in the gaming world: they announced that, as of Mojave, OpenGL was deprecated and would no longer be maintained.

This is important because Firestorm, like every other graphical Second Life viewer, is based on OpenGL

I got an email from a concerned user this morning asking about the problem and urging us to convert Firestorm to Metal, Apple's new and improved 3D graphics API. Here's my reply:

***

What follows is my own personal opinion. I’m not speaking for the Firestorm team, and certainly not for Linden Lab.

I think Apple seriously shot themselves in the ass with their recent announcement. In essence, they told the gaming world to drop dead.

First, what they did and didn’t announce. What they did announce was that Mojave would deprecate OpenGL. What they did not announce was a drop-dead release beyond which OpenGL would not work. Indeed, OpenGL works in Mojave, and with a couple of fixes not related to the graphics subsystem, the Linden viewer (and, presumably, Firestorm; we haven’t tested it ourselves) runs on Mojave just fine. Those fixes will be in the next release of Firestorm, which we are moving toward.

To understand the magnitude of the problem, let me lay a couple of numbers on you. Firestorm currently consists of 25,649 files of source code, containing well over 1.2 million lines. I don’t know just how much of that is OpenGL code. What I do know is that there is no clean boundary in the viewer’s source code between the parts that use OpenGL and the parts that don’t; OpenGL is scattered throughout the entire codebase. This is true of every viewer based on the Linden Lab code, which is all of them that do graphics (with the notable exception of Lumiya, which was a ground-up implementation for Android, and a remarkable technical achievement in its own right). Some of that code is over 20 years old at this point.

Simply to factor all of that out so there’s a clean separation between the graphics code and the rest of the viewer is a monumental task. And that’s just a preliminary. Once that’s done, then a separate renderer would need to be written just for the Mac. That’s not a trivial undertaking, and to the best of my knowledge, there are exactly five people on the planet who understand the Second Life render pipeline well enough to do it: two of them work for Linden Lab, and the other three are certifiably insane. None of them are on the Firestorm team. In any event, the effort required to do this is measured in man-years.

It’s telling that Apple committed large amounts of time and money and people resources to Unity and Unreal to get their game engines ported to Metal. I’d be astounded if they did the same for Second Life. The market is simply too small.

My understanding of the Linden Lab position on this is that they’re evaluating what they are going to do going forward, and that no decisions have been made. I would hope they are at least talking with Apple to see how much time they have. They probably have contacts that let them do that. I do not, and in any case we’re dependent on what the Lab does.

While I am a faithful Mac user and have been for the last 16 years, I have not actually used a Mac as my primary Second Life system in a few years. Apple’s OpenGL implementation, not to put too fine a point on it, sucks. I usually get 30-40 FPS on one scene I spend a lot of time in, on my dual-hex MacPro 3.3 GHz/64 GB, with a Radeon R9-280X. I have actually wound up running Linux Mint natively on a second Mac Pro, this one a dual-quad 2.9 GHz/48 GB with a GTX 960. On that same scene, with the same window size, I easily turn 140 FPS or so.

Personally, I don’t see how Second Life on the Mac, at least natively on OS X, will survive the loss of OpenGL. The market’s too small and the effort’s too large to make it economical. I personally expect to find myself running Firestorm exclusively on Linux, or else under Windows in a virtual machine on OS X (which I haven’t tested at all in the past several years) at some point in the future.

Again, I must remind you that Apple has deprecated OpenGL on OS X. All that means is that they will stop supporting it at some point in the future. That point is not today, and they have not said when that point is. Until they do, Second Life, and Firestorm, will run on OS X as well as it does now.

***

Update, 22 June: At his Meet the Lindens interview with Saffia Widdershins at the SL15B celebration yesterday, Oz said that "we will find a way to keep Second Life running on the Mac." This is good news. I hope it comes to pass.