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]<javascript:> > > 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]<javascript:> >> > 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]<javascript:> >>> > 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]<javascript:> >>>> > 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]<javascript:> >>>>> . >>>>> 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]<javascript:> >>>> . >>>> 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]<javascript:> >>> . >>> 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] <javascript:>. >> 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.
