tangrams / tangram

WebGL map rendering engine for creative cartography
https://tangram.city
MIT License
2.22k stars 290 forks source link

Error compiling program for style on some Chrome + Windows 7 clients #619

Closed ruatara closed 7 years ago

ruatara commented 7 years ago

I get this issue on some of my clients PCs both on my app and on the refill style test app. my app is using https://mapzen.com/tangram/tangram.debug.js.

The really cool part is that it's only some of their PCs, and it works on IE11 on the same machine.

Tangram 0.14.1 Windows 7, Chrome 61 & 62.0.3202.89

I've attached a dump of the console output here, refill-zinc-tangrams.github.io-1510278528553.txt

image

Any advice on how to proceed? There is obviously some other factor here, not all the win7+ chrome clients exhibit the bug.

bcamper commented 7 years ago

Thanks - I have taken a quick look but have not been able to reproduce the problem on that OS/browser combo on Browserstack (which makes debugging difficult). Some research suggests it could be the same or similar to this issue. It is not trivial to create a test build for you to try that would test this theory, but I will keep this issue open to see if that is possible.

ruatara commented 7 years ago

Thanks. If there's anything you want me to try out,I can.

ruatara commented 7 years ago

I'll try this Try running Chrome from the command line with the argument --user-data-dir=[temporary directory]. and let you know what happens.

ruatara commented 7 years ago

So, I've sorta resolved this.

The machine in question had very old graphics drivers dating from 2012. Updating them resolved the issue.

Other stuff I noticed: reverting to Tangram 0.12 worked on the old drivers. webglreport reported that the browser supported webgl1 fully, and for webgl 2, "This browser supports WebGL , but it is disabled or unavailable". post driver update, this reported support for webgl 2.

IE 11 does not support webgl 2, I believe this is why it worked. Seems like there is something introduced to tangram since 0.12 that can use webgl 2 and it does not correctly fallback if the browser supports webgl but the driver does not.

bcamper commented 7 years ago

Thanks for digging in further - Tangram does not use WegGL 2 at all (you have to create an explicit WebGL2 canvas context for that). I'm not surprised if some browsers have confusing error messages regarding this though, it's not uncommon for WebGL errors to be cryptic.

However, Tangram 0.14.x does use some WebGL 1 features that appear to have less robust support (though they are part of the spec and should function properly in all environments): static vertex attributes, and branching on a boolean uniform in a shader (the latter is the issue identified as an issue on some machines in the link I posted above).

However, at this point, given the small number of browsers/drivers affected, it's unlikely to be worth the significant refactor that would be needed to avoid the issue. As you have noted, most of these occasional incompatibilities resolve themselves via browser or OS upgrades.