jj,

OK, thanks, that answers what I'm seeing! We'll migrate it over to SDL2.

Best, Greg


On Wednesday, June 3, 2020 at 12:05:28 PM UTC-6, jj wrote:
>
> Oh, the code uses GLUT to initialize the GL context. Unfortunately 
> OFFSCREEN_FRAMEBUFFER (and OFFSCREENCANVAS_SUPPORT) features are only 
> available for contexts created with HTML5 API and SDL2, but won't work 
> for contexts created with GLUT, GLEW, GLFW, EGL or SDL 1. 
>
> ti 2. kesäk. 2020 klo 18.13 Greg Baxes ([email protected] <javascript:>) 
> kirjoitti: 
> > 
> > Hi jj, 
> > 
> > Thanks for your reply, very helpful in that building with -s 
> OFFSCREEN_FRAMEBUFFER=1 allows WebGL to be available from pthreads. 
> > 
> > However, when I build with -s OFFSCREEN_FRAMEBUFFER=1, it throws 
> "emscripten_async_queue_call_on_thread" errors from pthread at runtime. 
> This occurs in both my terrain renderer builds as well as the simple 
> es2gears.c example. As a simple test case, I have attached es2gears.c. It 
> builds and runs nicely in chrome if I build it with: 
> > 
> >   emcc -s WASM=1 -s USE_PTHREADS=1 -g es2gears.c -o demo.html 
> > 
> > However, it crashes at runtime with the 
> "emscripten_async_queue_call_on_thread" errors from pthreads if I build it 
> with: 
> > 
> >   emcc -s WASM=1 -s USE_PTHREADS=1 -s PROXY_TO_PTHREAD=1 -s 
> OFFSCREEN_FRAMEBUFFER=1 -g es2gears.c -o demo.html 
> > 
> > Can you advise what I'm missing to get es2gears.c running with WebGL and 
> pthreads? Thank you. 
> > 
> > 
> > On Tuesday, June 2, 2020 at 1:46:35 AM UTC-6, jj wrote: 
> >> 
> >> WebGL API is only available in main browser thread by default. 
> >> 
> >> If you build with -s OFFSCREEN_FRAMEBUFFER=1, then WebGL will be 
> >> available from pthreads via the Emscripten WebGL runtime proxying all 
> >> the GL calls to the main thread. 
> >> 
> >> If you build with -s OFFSCREENCANVAS_SUPPORT=1, then WebGL will be 
> >> available from pthreads via the OffscreenCanvas web api. Check 
> >> https://caniuse.com/#feat=offscreencanvas for availability. 
> >> 
> >> Browsers are really bad at printing JS errors: the error "Cannot read 
> >> property 'enable' of undefined" should read something like "GLctx is 
> >> undefined in GLctx.enable(x) at function _glEnable". That is, there is 
> >> no active GL context in the current thread where the GL call was 
> >> attempted. 
> >> 
> >> ti 2. kesäk. 2020 klo 0.34 Greg Baxes ([email protected]) kirjoitti: 
> >> > 
> >> > Hi everyone, 
> >> > 
> >> > I have been working successfully with Emscripten over the past few 
> weeks porting a fairly heavy C++ GLES2 3D terrain-rendering engine and 
> small glut-based application layer. It uses pthreads. Everything runs 
> incredibly well in Chrome! I have always seen the JS console throw the 
> warning: "Blocking on the main thread is very dangerous." To correct this 
> blocking-on-main issue and to be able to add websockets support to the 
> application, I have added the -s PROXY_TO_PTHREAD=1 flag to my build. With 
> this, the application crashes with a pthread error when it first encounters 
> a glGetString call. I have tried using the -s OFFSCREEN_FRAMEBUFFER=1 flag 
> and things get further, but then crash on a glTexImage2D call. 
> >> > 
> >> > To emulate the problem in a simpler context, I went back to my first 
> simple GLES2 test, standard es2gears.c, which I successfully built using: 
> >> > 
> >> > emcc -s WASM=1 -g es2gears.c -o demo.html 
> >> > 
> >> > Similarly with it, when I add the -s PROXY_TO_PTHREAD=1 and -s 
> USE_PTHREADS=1 flags, it crashes the same way when it encounters a glEnable 
> call, throwing the same kind of error: 
> >> > 
> >> > "pthread sent an error! ... Uncaught TypeError: Cannot read property 
> 'enable' of undefined at _glEnable" 
> >> > 
> >> > So, I think the es2gears.c build is a good test case of the issue I'm 
> seeing. 
> >> > 
> >> > Any suggestions to fix this? Is WebGL not able to run in a thread 
> under main? Thank you for any insights! 
> >> > 
> >> > -- 
> >> > 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:>. 
> >> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/emscripten-discuss/b7bf634d-aaf2-4acd-988c-13058fdda1e5%40googlegroups.com.
>  
>
> > 
> > -- 
> > 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:>. 
>
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/emscripten-discuss/6239f4c9-6ab3-4ea8-8eab-b4d1cef15205%40googlegroups.com.
>  
>
>

-- 
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/ba55322d-30fc-4607-af22-0dc4db9ec3ce%40googlegroups.com.

Reply via email to