Yes, audio is possible as well. I don't have plans to work on this myself but happy to give guidelines if anyone else wants to.
- Alon On Sun, Dec 29, 2013 at 4:54 PM, Richard Janicek <[email protected]> wrote: > Hello, > > I am testing --proxy-to-worker with VICE.js. Looks like it's getting +10% > performance boost on Chrome. Very nice. > > Would it be possible to also proxy SDL audio? > > Best regards, > ~Richard Janicek > > On Saturday, September 14, 2013 12:37:21 AM UTC-4, azakai wrote: > >> Close to that, yes. SDL_Delay can be implemented as a busy-wait both on >> the main thread and in workers, but on the main thread _it blocks >> rendering_. On workers, it just blocks event handling; the worker can still >> send out paint events. >> >> This actually happens in Doom, it does screen wipe effects synchronously. >> Those are not shown when running on the main thread, because nothing >> renders until the event loop is exited. But when running in a worker, they >> are shown perfectly. Input events can't be handled during that time, but in >> that case it doesn't matter - this might be a problem in other ones. >> >> I see it refresh the canvas very quickly, and this is without much >> optimization (no typed array transfers, for example). No reason it can't be >> 60fps. >> >> - Alon >> >> >> >> >> >> On Fri, Sep 13, 2013 at 6:34 PM, Richard Janicek <[email protected]> wrote: >> >>> Oh wow, I think this may work for my app. Does this mean it is possible >>> to allow synchronous blocking flow control in the worker thread (SDL_Delay) >>> ? How fast can it refresh the canvas, is 60 fps possible? >>> >>> Thank you very much for this! >>> >>> § Richard Janicek <http://janicek.co> ¦ mappur <http://mappur.com> ¦ >>> player <http://player.janicek.co/#player> ¦ clock2d<http://www.clock2d.com/> >>> >>> >>> On Fri, Sep 13, 2013 at 8:47 PM, Alon Zakai <[email protected]> wrote: >>> >>>> If you use HTML canvas commands like lines, shapes, fills, etc., all >>>> those need a 2D canvas context, and do not work in workers (yet). Right now >>>> what works is if all you do is render pixels to a buffer and do >>>> SDL_UnlockSurface to push them to the screen. >>>> >>>> But this is temporary, there is spec work going on to get canvas and >>>> WebGL to workers, it will happen eventually, see e.g. >>>> >>>> https://bugzilla.mozilla.org/show_bug.cgi?id=801176 >>>> >>>> - Alon >>>> >>>> >>>> >>>> On Fri, Sep 13, 2013 at 5:44 PM, Richard Janicek <[email protected]>wrote: >>>> >>>>> What do you mean by "software renderer" ? My app >>>>> (VICE.js<http://vice.janicek.co/>) >>>>> renders frames to HTML canvas, does this mean I can't take advantage of >>>>> this new technique? >>>>> >>>>> Thank you, >>>>> >>>>> § Richard Janicek <http://janicek.co> ¦ mappur <http://mappur.com> ¦ >>>>> clock2d <http://www.clock2d.com/> >>>>> >>>>> >>>>> On Fri, Sep 13, 2013 at 7:49 PM, Alon Zakai <[email protected]> wrote: >>>>> >>>>>> 1. Proxing to/from a worker. With >>>>>> >>>>>> emcc --proxy-to-worker >>>>>> >>>>>> the compiler will generate html and js files, where the html is a >>>>>> small shim that just proxies events to the js, which runs in a worker, >>>>>> and >>>>>> the js sends back the SDL screen which the html then renders. So >>>>>> basically >>>>>> this lets you run simple SDL apps in a worker, which is usually good for >>>>>> performance (doing less on the main thread). >>>>>> >>>>>> This just supports code that does not use HTML canvas or WebGL, >>>>>> because those don't run in workers in browsers (yet). So it will work >>>>>> right >>>>>> now for a software renderer, for example. I've tested this on Doom. >>>>>> >>>>>> 2. emscripten_async_load_script (see emscripten.h) >>>>>> >>>>>> This loads a url into a newly-created HTML script element. This is >>>>>> the most efficient way to load a new large amount of code into your app >>>>>> (emscripten_run_script converts binary to text, then evals, which is >>>>>> worse). It also integrates with the run dependencies system, which means >>>>>> that you can generate code to preload some files using the file packager, >>>>>> and emscripten_async_load_script of that will asynchronously load the >>>>>> script as well as fetch the file data and prepare it; the callback will >>>>>> happen when all the data is ready. This can be used e.g. to load the next >>>>>> level in your game, at the right time, and in general it can make it >>>>>> easier >>>>>> to avoid preloading everything at the beginning, which can cause a >>>>>> noticeable pause. >>>>>> >>>>>> - Alon >>>>>> >>>>>> -- >>>>>> 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/groups/opt_out. >>>>>> >>>>> >>>>> -- >>>>> 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/groups/opt_out. >>>>> >>>> >>>> -- >>>> 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/groups/opt_out. >>>> >>> >>> -- >>> 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/groups/opt_out. >>> >> >> -- > 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/groups/opt_out. > -- 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/groups/opt_out.
