Open Bug 1232960 Opened 9 years ago Updated 2 months ago

Nvidia Tegra drivers have different numbering sequence than desktop drivers

Categories

(Core :: Widget: Gtk, defect)

42 Branch
ARM
Linux
defect

Tracking

()

UNCONFIRMED
Tracking Status
platform-rel --- +

People

(Reporter: jens.moller.andreasen, Unassigned, NeedInfo)

References

(Blocks 1 open bug)

Details

(Whiteboard: gfx-noted [platform-rel-nVidia])

Attachments

(1 file)

User Agent: Mozilla/5.0 (X11; Ubuntu; Linux armv7l; rv:42.0) Gecko/20100101 Firefox/42.0 Build ID: 20151030085205 Steps to reproduce: Install Ubuntu on Acer Chromebook CB5 (Nvidia K1) Start Firefox, type 'about:support' Actual results: GPU accelerated Windows listed as: "0/1 Basic (OMTC) Blocked for your graphics driver version. Try updating your graphics driver to version NVIDIA 257.21 or newer." Expected results: GPU accelerated Windows listed as: "1/1 (OMTC)" - or similar. This is a newish, valid driver, but the version number follows a scheme different from the desktop drivers: Adapter Description: NVIDIA Corporation -- GK20A/NullRM/AXI Asynchronous Pan/Zoom: none Device ID: GK20A/NullRM/AXI Driver Version: 4.4.0 NVIDIA 21.3 ... Latest driver is 21.4
Component: Untriaged → Graphics
Product: Firefox → Core
OS: Unspecified → Linux
Hardware: Unspecified → ARM
jma@flatline:~$ glxinfo | grep OpenGL OpenGL vendor string: NVIDIA Corporation OpenGL renderer string: GK20A/NullRM/AXI OpenGL core profile version string: 4.3.0 NVIDIA 21.3 OpenGL core profile shading language version string: 4.30 NVIDIA via Cg compiler OpenGL core profile context flags: (none) OpenGL core profile profile mask: core profile OpenGL core profile extensions: OpenGL version string: 4.4.0 NVIDIA 21.3 OpenGL shading language version string: 4.40 NVIDIA via Cg compiler OpenGL context flags: (none) OpenGL profile mask: (none) OpenGL extensions: jma@flatline:~$ glxinfo | grep glx server glx vendor string: NVIDIA Corporation server glx version string: 1.4 server glx extensions: client glx vendor string: NVIDIA Corporation client glx version string: 1.4 client glx extensions: jma@flatline:~$
ccing some linux users. Milan, do we have this hardware anywhere?
FWIW, list of devices which shipped this chipset can be found here: https://en.wikipedia.org/wiki/Tegra#Devices_5 I have one of these devices in Vancouver (HTC Nexus 9) but it's running Android. I'm not sure if that helps.
The Nexus 9 has a very different, totally unique 64 bit CPU, not to be found anywhere else. The GPU is the same though. The /exact/ same 32 bit chipset with Kepler GPU would be: Acer CB5 311 Chromebook HP 14 (G2) Chromebook Nvidia Shield tablet Nvidia Jetson TK1 dev board Similar, but 64 bit and with Maxwell GPU: Nvidia Shield TV Nvidia Jetson TX1 dev board
Thanks Jens. Jamie, that hardware does not show up in our inventory wiki page so I have to assume we do not have it. We could try canvasing more broadly to see if anyone at Mozilla has the necessary hardware. Is there something specific you need it for which Jens couldn't help?
(In reply to Anthony Hughes, QA Mentor (:ashughes) from comment #5) > Is there something specific you need it for which Jens couldn't help? No, not really. In fact this seems like the type of bug that could quite easily be fixed without hardware in front of you.
(In reply to Jamie Nicol [:jnicol] from comment #6) > No, not really. In fact this seems like the type of bug that could quite > easily be fixed without hardware in front of you. Okay. So that I can better understand the issue, what's the *actual* bug here? I mean if NVIDIA is intentionally using a different version numbering scheme, how is that a bug in Firefox? How does this affect our users?
I think we're blocklisting acceleration based on the numbering scheme, but since these devices use a different scheme we end up blocking them when we shouldn't. The user impact is that they don't get hardware acceleration. We need to update our blocklisting code to detect the new scheme and enable acceleration on those devices (assuming they support it).
Thanks Jamie, that makes a lot of sense.
What's the new numbering scheme? Is that actually the driver version, or are we picking up some other version string instead of the driver version? As in, is there a location with a "better" value? Also, is this specific to this chipset, maybe we need a special case for it - as in, recognize Tegra as something different than "regular Nvidia" when it comes to versioning.
The release numbers follows the version of the Jetson dev kit, which is also where you get the Nvidia OpenGL libs and X drivers. I know of 19.3, 21.2 and 21.3 for GK20A, and 23.1 for GM20B. Xorg picks up those numbers as well, so that's how it is. It is not a mistaken identity: ... [ 86599.656] (II) LoadModule: "nvidia" [ 86599.656] (II) Loading /usr/lib/xorg/modules/drivers/nvidia_drv.so [ 86599.659] (II) Module nvidia: vendor="NVIDIA Corporation" [ 86599.659] compiled for 4.0.2, module version = 1.0.0 [ 86599.659] Module class: X.Org Video Driver [ 86599.659] (II) NVIDIA dlloader X Driver 21.3 Release Build (integ_stage_rel) (buildbrain@mobile-u64-720) Mon Feb 2 17:51:55 PST 2015 [ 86599.659] (II) NVIDIA Unified Driver for all Supported NVIDIA GPUs [ 86599.659] (++) using VT number 7 --<snip>-- Yes, this is specific for their SoC's ... Are there any "regular" drivers in existence with a major version lower than 100? If not, then you could set a lower bounds on the test. It will take Nvidia a while to get past 100 for Tegra, if ever.
/proc/cpuinfo identifies the chip as a Tegra - that would be the clean way to go ... processor : 3 model name : ARMv7 Processor rev 3 (v7l) BogoMIPS : 15.03 Features : swp half thumb fastmult vfp edsp thumbee neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae CPU implementer : 0x41 CPU architecture: 7 CPU variant : 0x3 CPU part : 0xc0f CPU revision : 3 Hardware : NVIDIA Tegra SoC (Flattened Device Tree) Revision : 0000 Serial : 0000000000000000
Even cleaner would be to check the version of OpenGL rather than the driver release number.
Whiteboard: gfx-noted
platform-rel: --- → ?
Whiteboard: gfx-noted → gfx-noted [platform-rel-nVidia]
platform-rel: ? → +
Severity: normal → S3

Still an issue making firefox unusable on tegra devices (at least pre-orin which use different driver version)

I have tested spoofing the driver version MOZ_GFX_SPOOF_GL_VERSION="OpenGL ES 3.2 NVIDIA 480.0.0" to get around all checks for now and do not notice any of the issues previously reported in firefox for nvidia gpu desktop drivers

This is with using 32.3.1 drivers on Nvidia Tegra X1, so I request that all driver version based feature disabling be removed for tegra at least for this minimum driver version.

Blocks: wr-nv-linux
See Also: → 1903688

Can you share the correct error you see in about:support?
I see quite a lot in https://searchfox.org/mozilla-central/rev/56dd89bcf4d3b85f66621e89eac6e2936ad382d9/widget/gtk/GfxInfo.cpp#834-1146

Flags: needinfo?(dofficialgman)

Please open about:support, click on "Copy text to clipboard" and paste it here. Thanks!

(In reply to :gerard-majax from comment #16)

Can you share the correct error you see in about:support?
I see quite a lot in https://searchfox.org/mozilla-central/rev/56dd89bcf4d3b85f66621e89eac6e2936ad382d9/widget/gtk/GfxInfo.cpp#834-1146

FEATURE_FAILURE_OLD_NVIDIA and FEATURE_FAILURE_WEBRENDER_OLD_NVIDIA and FEATURE_ROLLOUT_X11_EGL_NVIDIA_BINARY

that is why I use the spoof to 480 to avoid all 3.

Flags: needinfo?(dofficialgman)

Martin, would you know how this is supposed to be properly fixed, or who we should ask for help?

Flags: needinfo?(stransky)

dofficialgman please run Firefox on terminal with MOZ_GFX_DEBUG=1 env variable and attach the output here.
Thanks.

Flags: needinfo?(stransky) → needinfo?(dofficialgman)
Component: Graphics → Widget: Gtk

GFX detection code itself is here:
https://searchfox.org/mozilla-central/source/toolkit/xre/glxtest/glxtest.cpp

We may also update ID to driver name mapping in gfx code if it's needed.

(In reply to Martin Stránský [:stransky] (ni? me) from comment #22)

dofficialgman please run Firefox on terminal with MOZ_GFX_DEBUG=1 env variable and attach the output here.
Thanks.

MOZ_GFX_DEBUG=1 firefox
GLX_TEST: childgltest start
GLX_TEST: get_pci_status start
GLX_TEST: get_pci_status finished
GLX_TEST: x11_egltest start
GLX_TEST: get_egl_status start
GLX_TEST: get_egl_gl_status start
GLX_TEST: get_egl_gl_status finished
GLX_TEST: get_egl_status finished with return: 1
GLX_TEST: get_xrandr_info start
GLX_TEST: get_xrandr_info finished
GLX_TEST: x11_egltest finished
VENDOR
NVIDIA Corporation
RENDERER
NVIDIA Tegra X1 (nvgpu)/integrated
VERSION
OpenGL ES 3.2 NVIDIA 32.3.1
TFP
TRUE
WARNING
drmGetDevices2 failed
DDX_DRIVER
NVIDIA-0;
TEST_TYPE
EGL
GLX_TEST: childgltest finished
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: drmGetDevices2 failed (t=2.10558) [GFX1-]: glxtest: drmGetDevices2 failed
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: drmGetDevices2 failed (t=2.10558) |[1][GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt (t=7.37165) [GFX1-]: RenderCompositorSWGL failed mapping default framebuffer, no dt

Flags: needinfo?(dofficialgman)
Flags: needinfo?(stransky)

Martin. Is there anything else you need from me to help move this forward? It has been a couple of weeks and I see you flagged yourself as needinfo.

(In reply to dofficialgman from comment #26)

Martin. Is there anything else you need from me to help move this forward? It has been a couple of weeks and I see you flagged yourself as needinfo.

It's still on my TODO list, no info needed.

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: