playcanvas / engine

JavaScript game engine built on WebGL, WebGPU, WebXR and glTF
https://playcanvas.com
MIT License
9.61k stars 1.34k forks source link

Basis Failed to transcode image (Safari 17.0, iOS 17.0) #5509

Open cd-vaughamhong opened 1 year ago

cd-vaughamhong commented 1 year ago

Hello!

We recently upgraded to Playcanvas 1.64.4 and basis transcode has stopped working for some platforms.

(Console errors)

Screenshot 2023-07-26 at 11 10 41 AM

(basis-worker.js)

Screenshot 2023-07-26 at 11 37 21 AM

Our basisInitialize config: { “glueUrl":"(some url)/assets/lib/basis/basis.wasm.js", "wasmUrl":"(some url)/assets/lib/basis/basis.wasm.wasm", "fallbackUrl":"(some url)/assets/lib/basis/basis.js", "maxRetries":3, "rgbPriority":["etc1","etc2","astc","dxt","pvr","atc"], "rgbaPriority":["astc","dxt","etc2","pvr","atc"] }

If we force the fallback path (via hard coding wasmSupport to false) instead of compileStreaming / compileManual, our basis images do load properly.

(basis.js)

Screenshot 2023-07-26 at 11 39 26 AM

Let me know if there is any other info you’d like me to gather / follow up on. Any workarounds (other than forcing fallback) would be great!

slimbuck commented 1 year ago

Hi @cd-vaughamhong ,

I've run a few different projects which use basis and they all work fine for me (for example https://playcanv.as/p/SA7hVBLt/). This is on ventura (13.4.1 and 13.5) and safari technology preview (17.0).

Can you see if the above project works for you?

Are you able to give me access to the failing project? If I am not able to reproduce the problem then I am not able to investigate.

Thanks!

cd-vaughamhong commented 1 year ago

Hey @slimbuck,

Thanks for the quick reply!

Screenshot 2023-07-27 at 3 31 31 PM

We did implement a quick workaround which chains the wasm basis transcoder's failure into fallback (non-wasm) basis transcoder workers. This seems to be working for us at the moment.

Let me know if you can repro with the basis file I provided, otherwise.. umm.. Safari 17 / iOS 17 (beta) wasm regression?

mvaligursky commented 1 year ago

I can reproduce it in this engine example: https://playcanvas.github.io/#/graphics/texture-basis When running on Safari Tech Preview which is 17.0 Screenshot 2023-08-16 at 10 00 32

slimbuck commented 1 year ago

I've logged an issue on webkit https://bugs.webkit.org/show_bug.cgi?id=260252

mvaligursky commented 1 year ago

I just tested Safari Tech Preview (Release 179 (Safari 17.0, WebKit 18617.1.8.1)) and the issue is still there.

However a workaround for this has been added here: https://github.com/playcanvas/engine/pull/5657

mvaligursky commented 2 weeks ago

another reference: https://forum.playcanvas.com/t/unhandled-promise-rejection-compileerror-webassembly-module-problem/37038

mvaligursky commented 2 weeks ago

this is the actual workaround we tested as working: https://github.com/playcanvas/engine/pull/5674 use the newly compiled WASM files that do not seem to exhibit the issue