Any help on this would still be hugely appreciated! :) Thank you
On Oct 29, 2017 6:09 PM, "Andrew Varga" <[email protected]> wrote: > I have updated my test code now, and it works but I still have a few > questions: > > https://github.com/andrewvarga/wasm_test/blob/master/index.html > > What I do here is I generate an array in JS, I call HEAPU8.set (so this > copies it from JS to Wasm), manipulate it (just adding 1 to each element > now) and then getting the result by creating a Uint8Array view. > > How/why would I use "subarray"? As far as I see it, subarray doesn't copy > the actual underlying ArrayBuffer data, it only creates a new > TypedArrayView for that same ArrayBuffer. So now I just create a > new Uint8Array which is also just a view on the data. > If I really want to copy the actual data, I could do that with eg. > buffer.slice (the last lines of index.html). > > My use case is that I have a Uint8Array which is pixel data acquired from > a canvas, I manipulate it (the length doesn't change) and add draw it back > onto the canvas, so the data I have initially is in JS, and I'm not sure > how malloc would help me? > > My memory calculations are wrong I think, if I increase the array length > from 1000*1000*4 to say 10,000*4,000*4 that results in a runtime Wasm out > of bounds memory error. Did I calculate the requiredPages incorrectly? > > If there's anything else wrong in the code, or if there's a more efficient > way of doing this, please let me know! > > Thanks! > > > > > On Tue, Oct 24, 2017 at 8:31 PM, Charles Vaughn <[email protected]> wrote: > >> You might be better off malloc'ing the buffer then using subarray [1] to >> avoid copying back and forth. >> >> [1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe >> rence/Global_Objects/TypedArray/subarray >> >> On Tuesday, October 24, 2017 at 6:25:27 AM UTC-7, Andrew Varga wrote: >>> >>> Thank you for the explanation! >>> >>> So I will have to copy the data from js into the Wasm module's memory, >>> call the Wasm function to operate on the data, and then finally copy it >>> back to javascript. >>> In this case I wonder if using Wasm over js will yield in any >>> performance improvements, so I will test it out. >>> >>> It seems it could be worth doing this since this is what they are doing >>> here in the WebAssembly Video Editor, but I'm getting much lower framerate >>> for Wasm compared to js in both Chrome and Firefox: >>> https://github.com/shamadee/web-dsp >>> https://d2jta7o2zej4pf.cloudfront.net/ >>> >>> >>> >>> On Tue, Oct 24, 2017 at 2:01 PM, Jukka Jylänki <[email protected]> wrote: >>> >>>> It is not possible to pass ArrayBuffers or ArrayBufferViews from >>>> JavaScript to WebAssembly. WebAssembly operates only on a single >>>> linear heap that is bound as its own memory space, so it's only >>>> possible to pass pointers (indices) to that one memory buffer. So >>>> currently you would have Wasm operate on its own memory, and then >>>> going out to JS, copy the data from the singleton Wasm memory out to >>>> other JavaScript ArrayBuffers. >>>> >>>> There have been talks about expanding Wasm to be able to operate on >>>> multiple ArrayBuffers at a time, by expanding the opcode list to allow >>>> specifying one of multiple ArrayBuffers which to manipulate, but >>>> currently that kind of feature does not yet exist. >>>> >>>> 2017-10-23 15:11 GMT+03:00 Andrew Varga <[email protected]>: >>>> > This actually looks very helpful, but I wonder if there is a "cleaner >>>> > looking" way to actually "pass" an arraybuffer from js to a wasm >>>> module: >>>> > https://stackoverflow.com/questions/46861475/how-can-i-find- >>>> out-the-address-of-a-webassembly-buffer-and-return-it-to-javascri >>>> > >>>> > On Sun, Oct 22, 2017 at 4:35 PM, Andrew Varga <[email protected]> >>>> wrote: >>>> >> >>>> >> Hi, >>>> >> >>>> >> I'm having a hard time achieving something that sounds easy: >>>> >> - create an ArrayBufferView instance in JavaScript eg.: new >>>> >> Uint8Array([1,2,3] >>>> >> - pass this to a function in a wasm module that will operate on it >>>> and >>>> >> change some of the values (it will not create a new array) >>>> >> - be able to access the modified array in JavaScript >>>> >> >>>> >> I'm trying to achieve this with as little glue-code as possible, my >>>> setup >>>> >> is here: >>>> >> https://github.com/andrewvarga/wasm_test >>>> >> >>>> >> When I run index.html, the console output is 29 which I believe >>>> comes from >>>> >> 23 + 6 (see buffertest.c), so I must be doing something very wrong. >>>> >> >>>> >> What I'm looking for is the simplest, smallest, fastest way to allow >>>> wasm >>>> >> module to change an array (like adding 6 to each element that I >>>> tried to do >>>> >> here). >>>> >> >>>> >> Any help would be very much appreciated! >>>> >> >>>> >> Thank you, >>>> >> Andrew >>>> >> >>>> >> >>>> >> -- >>>> >> You received this message because you are subscribed to a topic in >>>> the >>>> >> Google Groups "emscripten-discuss" group. >>>> >> To unsubscribe from this topic, visit >>>> >> https://groups.google.com/d/topic/emscripten-discuss/ecAgoEw >>>> K2ME/unsubscribe. >>>> >> To unsubscribe from this group and all its topics, send an email to >>>> >> [email protected]. >>>> >> For more options, visit https://groups.google.com/d/optout. >>>> > >>>> > >>>> > -- >>>> > 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]. >>>> > For more options, visit https://groups.google.com/d/optout. >>>> >>>> -- >>>> You received this message because you are subscribed to a topic in the >>>> Google Groups "emscripten-discuss" group. >>>> To unsubscribe from this topic, visit https://groups.google.com/d/to >>>> pic/emscripten-discuss/ecAgoEwK2ME/unsubscribe. >>>> To unsubscribe from this group and all its topics, send an email to >>>> [email protected]. >>>> For more options, visit https://groups.google.com/d/optout. >>>> >>> >>> -- >> You received this message because you are subscribed to a topic in the >> Google Groups "emscripten-discuss" group. >> To unsubscribe from this topic, visit https://groups.google.com/d/to >> pic/emscripten-discuss/ecAgoEwK2ME/unsubscribe. >> To unsubscribe from this group and all its topics, send an email to >> [email protected]. >> For more options, visit https://groups.google.com/d/optout. >> > > -- 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]. For more options, visit https://groups.google.com/d/optout.
