MacBook – Safari + webGL problem

hardwaremacbook prosafariwebgl

I have MacBook Pro 15" late 2016 w/ AMD r460, and I just found that
Safari does not enable r460 hardware acceleration when viewing webGL sites.

For example, I cannot play this site with Safari.

If I check this page with Firefox or Chrome, they play this site just fine enabling dedicated Radeon r460 card. However, Safari never turned on the dedicated r460 card, no matter what sites I was seeing.

Can any body please confirm that the site below is not playable using Safari, and how I can solve this problem?


Best Answer

I can confirm that this site does not work in Safari, Safari Technical Preview, or the latest WebKit nightly, as of the 5th of March 2017.

The issue is not with your specific hardware (r460), this runs in Chrome on far older hardware. I tested it on a 2009 iMac w/ Nvidia GeForce 9400, it worked in Chrome but ran very slowly, it did not work in Safari. I saw the same behaviour on the 13" 2016 MacBook Pro with 2 thunderbolt ports.

The root cause of the issue seems to be Safari being more picky than Chrome or Firefox. I don't know if this is an issue with the page author's code, or with Safari, but if you open up the Web Inspector's Console tab you'll see that there are a couple of logged errors; an IndexSizeError, and a TypeError. Either way I expect this issue is limited to this site unless you can find additional examples of this.

Your options for solving this are probably quite limited. You could raise an issue on GitHub on the linked repo, or submit a pull request if you can work out how to fix the issue manually.

If you try out other WebGL (v1) examples you shouldn't see this issue, check out a few at this link:

Edit: I have raised this as an issue on the GitHub repo, I'll update this answer accordingly.

Edit 2: It's been fixed, although the performance in Safari is quite poor compared to Chrome.

Edit 3: Safari doesn't support hardware acceleration with WebGL according to the OP's comment from a phone call with Apple Support. This is also demonstrable when comparing the example website mentioned in the question, , in Chrome and Safari.