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.

Reply via email to