Hi ! Thanks for the pointers, the generated JS was indeed very specific. We are finally able to load the *.wasm* module with some minor changes in the generated JS (loading via module) .
Now, we need help to initialize the native code and invoke the functions from JS/HTML ? The native *Application::Create/HelloWorld* Ctor we try to use needs some *platformData*, I wonder how we can provide it from JS/HTML. https://source.chromium.org/chromium/chromium/src/+/main:third_party/skia/example/HelloWorld.cpp;l=29 We saw how Canvaskit does the initialization https://github.com/google/skia/blob/main/demos.skia.org/demos/hello_world/index.html or how Box2D https://github.com/kripken/box2d.js/blob/master/demo/webgl/box2d.html#L24 , Bullet(ammo.js) https://github.com/kripken/ammo.js/blob/main/examples/webgl_demo/ammo.html#L56 does. Are there some other examples we can refer to, to instantiate and control C++ objects/functions from JS. Br, Sohan On Fri, Oct 14, 2022 at 1:01 PM Sohan Jyoti Ghosh <[email protected]> wrote: > > > On Thu, Oct 13, 2022 at 11:39 PM 'Sam Clegg' via emscripten-discuss < > [email protected]> wrote: > >> In general it is not possible to swap the JS and wasm files that >> emscripten generates. The JS is highly specific to the wasm module, and >> not portable between wasm modules. >> > > Okay, so the problem with using emscripten toolchain from Skia is that the > *.html* file is empty. When we use the template > https://github.com/emscripten-core/emscripten/blob/main/src/shell_minimal.html > and refer the script to the generated JS. It is not loading the *.wasm* module > (and not throwing any error/warning in the console to understand). > Is the *.html *generated also very specific ? > > We have shared the gist with the JS generated, let us know if anything > stands out. > >> >> IIRC many folks have had success compiling skia to wasm already. Have >> you looked at https://skia.org/docs/user/modules/canvaskit/? >> > > Yes, we are following Canvaskit, the use-case here is little different, in > that using Canvaskit, the drawing application/code has to be written with > Canvaskit API and JS. > What we are trying to achieve is a C++ based drawing module using native > Skia API's, and the whole package would be compiled to wasm. > > >> >> >> On Thu, Oct 13, 2022 at 10:21 AM Sohan Jyoti Ghosh <[email protected]> >> wrote: >> >>> Thanks for getting back. >>> >>> On Thu, Oct 13, 2022 at 7:29 PM 'Sam Clegg' via emscripten-discuss < >>> [email protected]> wrote: >>> >>>> Can you share the full link command you are using? >>>> >>>> So, we are trying to build the simple skia hello_world c++ app via >>> wasm, to be playable inside the browser. >>> We are trying to setup the SDL2 backend for skia with >>> https://skia-review.googlesource.com/c/skia/+/573643 >>> >>> Here, is our build command for hello_world.wasm, which internally >>> invokes emscripten toolchain >>> *bazel build //example:hello_world_wasm >>> --noincompatible_enable_cc_toolchain_resolution* >>> >>> Can you take a look at the generated JS file? Do you see the >>>> `_embind_register_void` function in that file? It should be defined as a >>>> function then added to the `asmLibraryArg` object which gets passed to >>>> instantiate. >>>> >>>> The generated JS file ( >>> https://gist.github.com/sohanjg/a38f509275b84279e98c097c81c9b5e2) doesnt >>> have >>> `_embind_register_void`. Also the originally generated files somehow >>> wasn't able to load the wasm without throwing errors. So, we changed an >>> existing simple emscripten generated helloworld.js (which was almost >>> identical) to refer to the wasm generated by skia. >>> >>> cheers, >>>> sam >>>> >>>> Br, >>> Sohan >>> >>>> On Thu, Oct 13, 2022 at 7:30 AM Sohan Jyoti Ghosh <[email protected]> >>>> wrote: >>>> >>>>> Hi ! >>>>> >>>>> I am getting errors while instantiating Array Buffer, >>>>> * WebAssembly.instantiate(binary, info)* >>>>> >>>>> The error is, >>>>> *"Uncaught (in promise) RuntimeError: Aborted(LinkError: >>>>> WebAssembly.instantiate(): Import #1 module="env" >>>>> function="_embind_register_void" error: function import requires a >>>>> callable)"* >>>>> >>>>> Any pointers, how "env" obj is missing the function ? And how to >>>>> resolve it ? I am using the JS template coming out of emscripten. >>>>> Is there some error in building the .wasm ? Nothing is reported on >>>>> the build log though. >>>>> >>>>> Br, >>>>> Sohan >>>>> >>>>> -- >>>>> You received this message because you are subscribed to the Google >>>>> Groups "emscripten-discuss" group. >>>>> To unsubscribe from this group and stop receiving emails from it, send >>>>> an email to [email protected]. >>>>> To view this discussion on the web visit >>>>> https://groups.google.com/d/msgid/emscripten-discuss/1b7778de-a61c-44fe-9b65-3479dfdbbc1dn%40googlegroups.com >>>>> <https://groups.google.com/d/msgid/emscripten-discuss/1b7778de-a61c-44fe-9b65-3479dfdbbc1dn%40googlegroups.com?utm_medium=email&utm_source=footer> >>>>> . >>>>> >>>> -- >>>> You received this message because you are subscribed to the Google >>>> Groups "emscripten-discuss" group. >>>> To unsubscribe from this group and stop receiving emails from it, send >>>> an email to [email protected]. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/emscripten-discuss/CAL_va29KUrmS82TbqrzuGMU36fZDHdVpJsLG7fne2kg7o9CjqA%40mail.gmail.com >>>> <https://groups.google.com/d/msgid/emscripten-discuss/CAL_va29KUrmS82TbqrzuGMU36fZDHdVpJsLG7fne2kg7o9CjqA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>>> . >>>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "emscripten-discuss" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/emscripten-discuss/CAOtrQ7ys8aWVjkRXCgdyvYvucNkeUhA6BrKEHiUAyj3w7tCJyA%40mail.gmail.com >>> <https://groups.google.com/d/msgid/emscripten-discuss/CAOtrQ7ys8aWVjkRXCgdyvYvucNkeUhA6BrKEHiUAyj3w7tCJyA%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- >> You received this message because you are subscribed to the Google Groups >> "emscripten-discuss" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/emscripten-discuss/CAL_va2-%2BefpSXiyFkF3KjoHJagX737FSKZuq79prEeQpQGb%3DAQ%40mail.gmail.com >> <https://groups.google.com/d/msgid/emscripten-discuss/CAL_va2-%2BefpSXiyFkF3KjoHJagX737FSKZuq79prEeQpQGb%3DAQ%40mail.gmail.com?utm_medium=email&utm_source=footer> >> . >> > -- You received this message because you are subscribed to the Google Groups "emscripten-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/emscripten-discuss/CAOtrQ7yGeQs04mSJSHwHeweW9R%3DdxCYL1JCLm6gUFLf88tsTyg%40mail.gmail.com.
