nV News Forums

 
 

nV News Forums (http://www.nvnews.net/vbulletin/index.php)
-   NVIDIA Linux (http://www.nvnews.net/vbulletin/forumdisplay.php?f=14)
-   -   Nvidia Driver team will oversleep Web GPU acceleration? (http://www.nvnews.net/vbulletin/showthread.php?t=158271)

zbiggy 12-25-10 07:39 PM

Nvidia Driver team will oversleep Web GPU acceleration?
 
This is not Nvidia's problem but just Chromium 10.0.616.0 which sucks this way:


When visiting HTML5 web page with Google Chromium 10.0.616.0 on PC with you will see message on console:
Code:

[25964:25964:53200619961:ERROR:
base/native_library_linux.cc(32)] dlopen failed when
trying to open libGLESv2.so: libGLESv2.so: cannot open
shared object file: No such file or directory

saying that OpenGL ES 2.0 library is not present.

It means only that dumb Chromium looks for libGLESv2.so on desktops system instead using libGL.


Firefox 4.0.b8 after toggling webgl.enabled_for_all_sites to true works great. Which is a proof that Chromium 10.0.616.0 is buggy

zbiggy 12-25-10 08:48 PM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
It looks mesa-lib compiled with these options:
Code:

--enable-gles-overlay --with-state-trackers=egl,es,vega --enable-gallium-swrast
will provide missing OpenGL ES libraries:
Code:

/usr/lib/libGLESv1_CM.so
/usr/lib/libGLESv1_CM.so.1
/usr/lib/libGLESv1_CM.so.1.1.0
/usr/lib/libGLESv2.so
/usr/lib/libGLESv2.so.2
/usr/lib/libGLESv2.so.2.0.0

using software emulation. If you will have luck and use egl_glx driver/translator Nvidia will do some hw GLX acceleration as much as EGL to GLX is possible to be translated.

Unfortunately for Chromium 10.0.616.0 this cheat is not enough and it will crash at GPU acceleration code:
Code:

/usr/lib/chromium/chrome --type=gpu-process
--channel=25734.0xb222a50.801587199:
symbol lookup error: /usr/lib/egl/egl_x11_swrast.so:
undefined symbol: _eglInitDriverFallbacks

Hmm it looks egl_glx driver is not in use. Will check this later why...

Deanjo 12-25-10 10:06 PM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
Forgive me if I'm wrong but I do believe nvidia already supports openGL ES 2.0 through the openGL 4.1 spec.

Edit:Actually confirmed this, setup a symlink for libGLESv2.so to the nvidia libGL library and enjoy.

KDE 12-26-10 06:09 AM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
libGLESv2.so isn't necessary. Chrome is using libGL.so without symlink by gpu-process.

zbiggy 12-26-10 06:52 AM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
Quote:

Originally Posted by Deanjo (Post 2369962)
Forgive me if I'm wrong but I do believe nvidia already supports openGL ES 2.0 through the openGL 4.1 spec.

Edit:Actually confirmed this, setup a symlink for libGLESv2.so to the nvidia libGL library and enjoy.

I recompiled mesa-lib without OpenGL ES and have done symlink to Nvidia's GL library:
/usr/lib/libGLESv2.so -> libGL.so.260.19.29

then ended up with this error on chromium:
Code:

libEGL warning: Could not open driver /usr/lib/egl/egl_glx (/usr/lib/egl/egl_glx: cannot open shared object file: No such file or directory)
libEGL warning: The driver can be overridden by setting EGL_DRIVER
/usr/lib/chromium/chrome --type=gpu-process --channel=11886.0xaf1fc60.895158881: symbol lookup error: /usr/lib/egl/egl_glx.so: undefined symbol: _eglInitDriverFallbacks

To do the tests I visit: http://html5test.com and wait till it finishes testing.

zbiggy 12-26-10 06:53 AM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
Quote:

Originally Posted by KDE (Post 2370018)
libGLESv2.so isn't necessary. Chrome is using libGL.so without symlink by gpu-process.

How to compile chrome(inium) to use libGL instead of libGLESv2?

KDE 12-26-10 07:13 AM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
Chrome should open libGL if libGLESv2 isn't present.
Chrome has options for GPU acceleration which are probably disabled by default, which depend on version of Chrome
command line: --enable-webgl, --enable-accelerated-compositing --enable-accelerated-2d-canvas
about:flags: GPU Accelerated Compositing, GPU Accelerated Canvas 2D

Deanjo 12-26-10 08:14 AM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
Quote:

Originally Posted by zbiggy (Post 2370021)
I recompiled mesa-lib without OpenGL ES and have done symlink to Nvidia's GL library:
/usr/lib/libGLESv2.so -> libGL.so.260.19.29

then ended up with this error on chromium:
Code:

libEGL warning: Could not open driver /usr/lib/egl/egl_glx (/usr/lib/egl/egl_glx: cannot open shared object file: No such file or directory)
libEGL warning: The driver can be overridden by setting EGL_DRIVER
/usr/lib/chromium/chrome --type=gpu-process --channel=11886.0xaf1fc60.895158881: symbol lookup error: /usr/lib/egl/egl_glx.so: undefined symbol: _eglInitDriverFallbacks

To do the tests I visit: http://html5test.com and wait till it finishes testing.

Does your card support OGL 4.1?

zbiggy 12-26-10 08:32 AM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
Code:

server glx vendor string: NVIDIA Corporation
server glx version string: 1.4
client glx vendor string: NVIDIA Corporation
client glx version string: 1.4
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce 8200/PCI/SSE2/3DNOW!
OpenGL version string: 3.3.0 NVIDIA 260.19.29
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler

It looks it is 3.3.0.

Google chrome 8.0.552.224 does not display GL errors but it may be less advanced than chrominium I have: 10.0.616.0.

To have OpenGL 4.1 I should update to Geforce 430? Will it be enough?

zbiggy 12-26-10 02:12 PM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
It looks chromium tries to open libGLESv2.so only when visiting WebGL web pages like this one: http://www.chromeexperiments.com/webgl (chromium crashes looking for libGLESv2.so when "Launch experiment" button is clicked). The WebGL is OpenGLES 2.0.
The question is who failed: Google for not providing wrapper in chromium to OpenGL on desktops or Nvidia for not providing OpenGL ES 2.0 library on Linux. Or me having Geforce 8200 with support for OpenGL 3.3 only.

Same problem in Gentoo:
http://bugs.gentoo.org/show_bug.cgi?id=348841

Can someone having Geforce with OpenGL 4.1 can confirm that symlinking libGLESv2.so to Nvidia's libGL.so makes chromium correctly display WebGL?

Chromium should not crash when libGLESv2.so is not present.

Dragoran 12-26-10 02:19 PM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
Quote:

Originally Posted by zbiggy (Post 2370097)
It looks chromium tries to open libGLESv2.so only when visiting WebGL web pages like this one: http://www.chromeexperiments.com/webgl (chromium crashes looking for libGLESv2.so when "Launch experiment" button is clicked). The WebGL is OpenGLES 2.0.
The question is who failed: Google for not providing wrapper in chromium to OpenGL on desktops or Nvidia for not providing OpenGL ES 2.0 library on Linux. Or me having Geforce 8200 with support for OpenGL 3.3 only.

Same problem in Gentoo:
http://bugs.gentoo.org/show_bug.cgi?id=348841

Can someone having Geforce with OpenGL 4.1 can confirm that symlinking libGLESv2.so to Nvidia's libGL.so makes chromium correctly display WebGL?

Chromium should not crash when libGLESv2.so is not present.

Quote:

OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTX 285/PCI/SSE2
OpenGL version string: 3.3.0 NVIDIA 260.19.29
OpenGL shading language version string: 3.30 NVIDIA via Cg compiler
Have not set any symlinks or any other magic and it "just works" (tm).

Code:

rpm -q chromium
chromium-9.0.600.0-2.fc14.x86_64


zbiggy 12-26-10 02:36 PM

Re: Nvidia Driver team will oversleep Web GPU acceleration?
 
OK. I know why WebGL in chromium is crashing on Nvidia hardware. This is the way chromium try to activate OpenGL:
1) try libEGL / libGLESv2 (if not present display error and crash)
2) try libGL
3) try libosmesa
Because chromium crashes after 1st try there is no chance to use Nvidia's libGL.

Here is workaround which works for me:
Code:

chromium --use-gl=desktop --enable-webgl
chromium run this way does not crash on WebGL content but displays this warning:
Code:

[2323:2323:33120768985:ERROR:app/gfx/gl/gl_context_linux.cc(539)] glXChooseFBConfig failed.
When trying to run experiment on http://www.chromeexperiments.com/webgl
here comes flood of missing GL functions:
Code:

[2323:2323:33631991252:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetProgramiv: unknown program
[2323:2323:33631991390:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetActiveAttrib: unknown program
[2323:2323:33631991485:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetAttribLocation: unknown program
[2323:2323:33631991631:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetProgramiv: unknown program
[2323:2323:33631991771:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetActiveAttrib: unknown program
[2323:2323:33631991866:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetAttribLocation: unknown program
[2323:2323:33631992040:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetProgramiv: unknown program

Here are GL errors when chromium is run with GPU acceleration of several things:
Code:

chromium --use-gl=desktop --enable-accelerated-2d-canvas --enable-accelerated-compositing
Errors on console:
Code:

[2462:2462:34027764084:ERROR:app/gfx/gl/gl_context_linux.cc(539)] glXChooseFBConfig failed.
[2462:2462:34027801765:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glShaderSource: unknown shader
[2462:2462:34027801790:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glCompileShader: unknown shader
[2462:2462:34027801831:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetShaderiv: unknown shader
[2462:2462:34027801948:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glShaderSource: unknown shader
[2462:2462:34027801957:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glCompileShader: unknown shader
[2462:2462:34027801995:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetShaderiv: unknown shader
[2462:2462:34027802113:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glAttachShader: unknown program
[2462:2462:34027802122:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glAttachShader: unknown program
[2462:2462:34027802131:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glLinkProgram: unknown program
[2462:2462:34027802170:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetProgramiv: unknown program
[2462:2462:34027802284:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glDeleteShader: unknown shader
[2462:2462:34027802293:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glDeleteShader: unknown shader
[2462:2462:34027802303:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glUniformLocation: unknown program
[2462:2462:34027802387:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glUniformLocation: unknown program
[2462:2462:34027802473:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetAttribLocation: unknown program
[2462:2462:34027802563:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glShaderSource: unknown shader
[2462:2462:34027802572:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glCompileShader: unknown shader
[2462:2462:34027802610:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetShaderiv: unknown shader
[2462:2462:34027802727:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glShaderSource: unknown shader
[2462:2462:34027802736:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glCompileShader: unknown shader
[2462:2462:34027802776:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetShaderiv: unknown shader
[2462:2462:34027802880:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glAttachShader: unknown program
[2462:2462:34027802889:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glAttachShader: unknown program
[2462:2462:34027802896:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glLinkProgram: unknown program
[2462:2462:34027802937:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetProgramiv: unknown program
[2462:2462:34027803044:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glDeleteShader: unknown shader
[2462:2462:34027803052:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glDeleteShader: unknown shader
[2462:2462:34027803063:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glUniformLocation: unknown program
[2462:2462:34027803140:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glUniformLocation: unknown program
[2462:2462:34027803235:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glUniformLocation: unknown program
[2462:2462:34027803315:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glGetAttribLocation: unknown program
[2462:2462:34027803393:ERROR:gpu/command_buffer/service/gles2_cmd_decoder.cc(3869)] glUniformLocation: unknown program
[2462:2462:34028621510:ERROR:app/gfx/gl/gl_context_linux.cc(539)] glXChooseFBConfig failed.



All times are GMT -5. The time now is 08:20 PM.

Powered by vBulletin® Version 3.7.1
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Copyright 1998 - 2014, nV News.