libglvnd: If second, unused, Nvidia GPU is present with the Nvidia driver installed, the Intel APU does not have correct vendorID, deviceID, driverVendor, is thus not qualified for HW WR.
Categories
(Core :: Graphics: WebRender, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr78 | --- | unaffected |
firefox-esr91 | --- | wontfix |
firefox92 | --- | wontfix |
firefox93 | --- | wontfix |
firefox94 | --- | wontfix |
firefox95 | --- | fix-optional |
People
(Reporter: jan, Unassigned)
References
(Blocks 1 open bug, Regression, )
Details
(Keywords: leave-open, nightly-community, regression)
Attachments
(8 files, 1 obsolete file)
Ubuntu 21.04, Nvidia driver 470
- Shutdown
- Booted into UEFI: Configured Intel APU as primary graphics controller. Saved. Rebooted.
- Removed HDMI cable from Nvidia card and plugged it into the mainboard
- Booted into KDE, started Nightly, noticed it's still using Nvidia.
- Nvidia X Server settings said PRIME offload is active. Selected "Intel (Power Saving Mode)", saved. It wanted a reboot. Rebooted.
- Started Nightly and found out it's not qualified for hardware WebRender. GLX/EGL do not matter.
glxinfo
Vendor: Intel (0x8086)
Device: Mesa Intel(R) HD Graphics 630 (KBL GT2) (0x5912)
Version: 21.0.3
Accelerated: yes
Video memory: 3072MB
after second regression: 2021-09-18
gfx.adapters.[0].description Mesa Intel(R) HD Graphics 630 (KBL GT2)
gfx.adapters.[0].vendorID Intel
gfx.adapters.[0].deviceID Mesa Intel(R) HD Graphics 630 (KBL GT2)
gfx.adapters.[0].subsysID null
gfx.adapters.[0].RAM 0
gfx.adapters.[0].driver null
gfx.adapters.[0].driverVendor mesa/swrast
gfx.adapters.[0].driverVersion 21.0.3.0
gfx.adapters.[0].driverDate null
gfx.adapters.[0].GPUActive true
gfx.adapters.[1].description null
gfx.adapters.[1].vendorID 0x8086
gfx.adapters.[1].deviceID 0x5912
gfx.adapters.[1].subsysID null
gfx.adapters.[1].RAM null
gfx.adapters.[1].driver null
gfx.adapters.[1].driverVendor null
gfx.adapters.[1].driverVersion null
gfx.adapters.[1].driverDate null
gfx.adapters.[1].GPUActive false
gfx.monitors.[0].screenWidth 2560
gfx.monitors.[0].screenHeight 1440
gfx.features.compositor webrender_software
gfx.features.hwCompositing.status blocked:
gfx.features.gpuProcess.status unused
gfx.features.wrQualified.status blocklisted:FEATURE_FAILURE_SOFTWARE_GL
gfx.features.webrender.status disabled:FEATURE_FAILURE_NOT_QUALIFIED
gfx.features.wrCompositor.status blocklisted:FEATURE_FAILURE_WEBRENDER_COMPOSITOR_DISABLED
gfx.features.wrSoftware.status available
gfx.features.openglCompositing.status unavailable:FEATURE_FAILURE_OPENGL_NEED_HWCOMP
gfx.features.omtp.status unused
after first regression: 2021-06-20
gfx.adapters.[0].description Mesa Intel(R) HD Graphics 630 (KBL GT2)
gfx.adapters.[0].vendorID 0x8086
gfx.adapters.[0].deviceID 0x5912
gfx.adapters.[0].subsysID null
gfx.adapters.[0].RAM 0
gfx.adapters.[0].driver null
gfx.adapters.[0].driverVendor mesa/swrast
gfx.features.compositor webrender_software
good: 2021-06-01
gfx.adapters.[0].description Mesa Intel(R) HD Graphics 630 (KBL GT2)
gfx.adapters.[0].vendorID 0x8086
gfx.adapters.[0].deviceID 0x5912
gfx.adapters.[0].subsysID null
gfx.adapters.[0].RAM 0
gfx.adapters.[0].driver null
gfx.adapters.[0].driverVendor mesa/iris
gfx.adapters.[0].driverVersion 21.0.3.0
gfx.adapters.[0].driverDate null
gfx.adapters.[0].GPUActive true
gfx.adapters.[1].description null
gfx.adapters.[1].vendorID 0x10de
gfx.adapters.[1].deviceID 0x1c02
gfx.adapters.[1].subsysID null
gfx.adapters.[1].RAM null
gfx.adapters.[1].driver null
gfx.adapters.[1].driverVendor null
gfx.adapters.[1].driverVersion null
gfx.adapters.[1].driverDate null
gfx.adapters.[1].GPUActive false
gfx.monitors.[0].screenWidth 2560
gfx.monitors.[0].screenHeight 1440
gfx.features.compositor webrender
gfx.features.hwCompositing.status available
gfx.features.gpuProcess.status unused
gfx.features.wrQualified.status available
gfx.features.webrender.status available
gfx.features.wrCompositor.status blocklisted:FEATURE_FAILURE_WEBRENDER_COMPOSITOR_DISABLED
gfx.features.wrSoftware.status available
gfx.features.openglCompositing.status available
gfx.features.omtp.status disabled:FEATURE_FAILURE_DISABLED
good=mesa/iris + HW WR, bad=mesa/swrast + software rendering (about:support was broken in May/June)
mozregression --good 2021-01-18 --bad 2021-09-18 --pref gfx.x11-egl.force-disabled:true -a about:telemetry#search=gfx
19:34.35 INFO: Last good revision: 77da39e524d64464f0905b4d2f254d4d7bf11a17
19:34.35 INFO: First bad revision: 22f7bdbfbd92da789512f446ec3e70660a02070c
19:34.35 INFO: Pushlog:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=77da39e524d64464f0905b4d2f254d4d7bf11a17&tochange=22f7bdbfbd92da789512f446ec3e70660a02070c
22f7bdbfbd92da789512f446ec3e70660a02070c Robert Mader — Bug 1714069 - Block Mesa software drivers for HW-WR, r=aosmond
good: vendorID=0x8086 + deviceID=0x5912
bad: "Intel" + "Mesa Intel(R) HD Graphics 630 (KBL GT2)"
mozregression --good 2021-06-05 --bad 2021-09-18 --pref gfx.x11-egl.force-disabled:true -a about:telemetry#search=gfx
11:01.81 INFO: Last good revision: 3b2212d68b0849890b35d676bfb2cdba1e3df2ad
11:01.81 INFO: First bad revision: 240cbdff5521cadcc818770a074db3c67a8324fe
11:01.81 INFO: Pushlog:
https://hg.mozilla.org/integration/autoland/pushloghtml?fromchange=3b2212d68b0849890b35d676bfb2cdba1e3df2ad&tochange=240cbdff5521cadcc818770a074db3c67a8324fe
240cbdff5521cadcc818770a074db3c67a8324fe Robert Mader — Bug 1717857 - Detect more multi-GPU cases via PCI in GfxInfo,r=aosmond
Reporter | ||
Comment 1•3 years ago
|
||
Reporter | ||
Comment 2•3 years ago
|
||
Reporter | ||
Comment 3•3 years ago
|
||
Comment 4•3 years ago
|
||
Hm, here we're most likely running into:
- https://searchfox.org/mozilla-central/source/toolkit/xre/glxtest.cpp#546 - to be investigated why that is
- https://searchfox.org/mozilla-central/source/widget/gtk/GfxInfo.cpp#295-298 - clearly a bug, swrast doesn't exist any more in recent mesa.
Comment 5•3 years ago
|
||
swrast
is reported as fallback software driver. This happens with
unknown sw-drivers (e.g. zink on lavapipe), but also when glxtest
incorrectly detects software rendering. This can be confusing and
is basically always wrong - by now it even got removed from Mesa
and for years only has been used on niche setups.
Make this more clear by using "mesa/sw-all" instead.
No functional change beyond reporting intended here.
Updated•3 years ago
|
Reporter | ||
Comment 6•3 years ago
•
|
||
Omg, it can be fixed with sudo apt purge *nvidia*
and a Firefox restart. No reboot required.
My theory was that I might not be directly using Mesa and the Nvidia driver might be forwarding everything to Mesa. Or it does that only for GLX, but passes EGL to llvmpipe, or something like that.
Reporter | ||
Comment 7•3 years ago
•
|
||
eglinfo: The only difference between before and after is slightly different ordered "EGL client extensions" right at the top. Everything else is the same.
eglinfo after rebooting once is still the same as right after sudo apt purge *nvidia*
.
Comment 8•3 years ago
|
||
Could it be that libglvnd was installed? If so, does installing it again bring back the issue?
Reporter | ||
Comment 9•3 years ago
•
|
||
test app from bug 1680505 comment 17 with eglGetError added (I'm not a programmer):
// sudo apt install libdrm-dev libegl-dev clang
// clang test.c $(pkg-config --cflags --libs libdrm egl) -o test && ./test
#include <fcntl.h>
#include <xf86drm.h>
#include <stdio.h>
#include <EGL/egl.h>
#include <EGL/eglext.h>
int main(int argc, char *argv[]) {
EGLDisplay display = eglGetDisplay(EGL_DEFAULT_DISPLAY);
eglInitialize(display, NULL, NULL);
PFNEGLQUERYDISPLAYATTRIBEXTPROC eglQueryDisplayAttribEXT = (PFNEGLQUERYDISPLAYATTRIBEXTPROC)eglGetProcAddress("eglQueryDisplayAttribEXT");
PFNEGLQUERYDEVICESTRINGEXTPROC eglQueryDeviceStringEXT = (PFNEGLQUERYDEVICESTRINGEXTPROC)eglGetProcAddress("eglQueryDeviceStringEXT");
const char* deviceString;
EGLDeviceEXT device;
if (eglQueryDisplayAttribEXT(display, EGL_DEVICE_EXT, (EGLAttrib*)&device) == EGL_TRUE) {
printf("eglQueryDisplayAttribEXT supported\n");
printf("eglGetError(): %#x\n", eglGetError());
deviceString = eglQueryDeviceStringEXT(device, EGL_DRM_DEVICE_FILE_EXT);
printf("eglGetError(): %#x\n", eglGetError());
}
if (!deviceString) return 0;
printf("device:%s\n", deviceString);
int fd = open(deviceString, O_RDONLY);
if (fd == -1) return 0;
drmDevicePtr dev;
if (!drmGetDevice(fd, &dev)) {
printf("Vendor ID:%#x\nDevice ID:%#x\n",
dev->deviceinfo.pci->vendor_id,
dev->deviceinfo.pci->device_id);
}
return 0;
}
$ clang test.c $(pkg-config --cflags --libs libdrm egl) -o test && ./test
eglQueryDisplayAttribEXT supported
eglGetError(): 0x3000 // eglQueryDisplayAttribEXT returned EGL_SUCCESS
eglGetError(): 0x3000 // eglQueryDeviceStringEXT returned EGL_SUCCESS
device:/dev/dri/card0
Vendor ID:0x8086
Device ID:0x5912
$ sudo apt install nvidia-driver-470
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following package was automatically installed and is no longer required:
libwayland-client0:i386
Use 'sudo apt autoremove' to remove it.
The following additional packages will be installed:
libnvidia-cfg1-470 libnvidia-common-470 libnvidia-compute-470 libnvidia-decode-470 libnvidia-encode-470 libnvidia-extra-470 libnvidia-fbc1-470 libnvidia-gl-470 libnvidia-gl-470:i386 libnvidia-ifr1-470 libnvidia-ifr1-470:i386 nvidia-compute-utils-470 nvidia-dkms-470
nvidia-kernel-common-470 nvidia-kernel-source-470 nvidia-prime nvidia-settings nvidia-utils-470 xserver-xorg-video-nvidia-470
The following NEW packages will be installed:
libnvidia-cfg1-470 libnvidia-common-470 libnvidia-compute-470 libnvidia-decode-470 libnvidia-encode-470 libnvidia-extra-470 libnvidia-fbc1-470 libnvidia-gl-470 libnvidia-gl-470:i386 libnvidia-ifr1-470 libnvidia-ifr1-470:i386 nvidia-compute-utils-470 nvidia-dkms-470
nvidia-driver-470 nvidia-kernel-common-470 nvidia-kernel-source-470 nvidia-prime nvidia-settings nvidia-utils-470 xserver-xorg-video-nvidia-470
0 upgraded, 20 newly installed, 0 to remove and 10 not upgraded.
Need to get 0 B/244 MB of archives.
After this operation, 673 MB of additional disk space will be used.
Do you want to continue? [Y/n]
No Reboot. Firefox restart: Problem is back.
$ clang test.c $(pkg-config --cflags --libs libdrm egl) -o test && ./test
eglQueryDisplayAttribEXT supported
eglGetError(): 0x3000 // eglQueryDisplayAttribEXT returned EGL_SUCCESS
eglGetError(): 0x3008 // eglQueryDeviceStringEXT returned EGL_BAD_DISPLAY
$ sudo apt purge *nvidia*
The following packages were automatically installed and are no longer required:
libatomic1:i386 libbsd0:i386 libdrm-amdgpu1:i386 libdrm-intel1:i386 libdrm-nouveau2:i386 libdrm-radeon1:i386 libdrm2:i386 libedit2:i386 libelf1:i386 libexpat1:i386 libffi8ubuntu1:i386 libgl1:i386 libgl1-mesa-dri:i386 libglapi-mesa:i386 libglvnd0:i386 libglx-mesa0:i386
libglx0:i386 libllvm12:i386 libmd0:i386 libnvidia-compute-470:i386 libnvidia-decode-470:i386 libnvidia-encode-470:i386 libnvidia-fbc1-470:i386 libpciaccess0:i386 libsensors5:i386 libstdc++6:i386 libvulkan1:i386 libwayland-client0:i386 libx11-6:i386 libx11-xcb1:i386 libxau6:i386
libxcb-dri2-0:i386 libxcb-dri3-0:i386 libxcb-glx0:i386 libxcb-present0:i386 libxcb-shm0:i386 libxcb-sync1:i386 libxcb-xfixes0:i386 libxcb1:i386 libxdmcp6:i386 libxext6:i386 libxfixes3:i386 libxnvctrl0 libxshmfence1:i386 libxxf86vm1:i386 screen-resolution-extra
Use 'sudo apt autoremove' to remove them.
The following packages will be REMOVED:
libnvidia-cfg1-470* libnvidia-common-470* libnvidia-compute-470* libnvidia-decode-470* libnvidia-encode-470* libnvidia-extra-470* libnvidia-fbc1-470* libnvidia-gl-470* libnvidia-gl-470:i386* libnvidia-ifr1-470* libnvidia-ifr1-470:i386* nvidia-compute-utils-470* nvidia-dkms-470*
nvidia-driver-470* nvidia-kernel-common-470* nvidia-kernel-source-470* nvidia-prime* nvidia-settings* nvidia-utils-470* xserver-xorg-video-nvidia-470*
0 upgraded, 0 newly installed, 20 to remove and 10 not upgraded.
After this operation, 673 MB disk space will be freed.
Do you want to continue? [Y/n]
$ clang test.c $(pkg-config --cflags --libs libdrm egl) -o test && ./test
eglQueryDisplayAttribEXT supported
eglGetError(): 0x3000 // eglQueryDisplayAttribEXT returned EGL_SUCCESS
eglGetError(): 0x3000 // eglQueryDeviceStringEXT returned EGL_SUCCESS
device:/dev/dri/card0
Vendor ID:0x8086
Device ID:0x5912
$ dpkg -l | grep libglvnd
ii libglvnd-dev:amd64 1.3.2-1 amd64 Vendor neutral GL dispatch library -- development files
ii libglvnd0:amd64 1.3.2-1 amd64 Vendor neutral GL dispatch library
ii libglvnd0:i386 1.3.2-1 i386 Vendor neutral GL dispatch library
The presence of libglvnd itself does not seem to be the problem. It doesn't get removed when I purge nvidia.
Comment 10•3 years ago
|
||
eglQueryDeviceStringEXT returned EGL_BAD_DISPLAY
That strongly smells like a internal driver error:
const char *eglQueryDeviceStringEXT(EGLDeviceEXT device,
EGLint name);
...
On failure, NULL is returned. An EGL_BAD_DEVICE_EXT error is
generated if <device> is not a valid EGLDeviceEXT. An
EGL_BAD_PARAMETER error is generated if <name> is not one of the
values described above.
The call does not even take a display argument - the previous one, eglQueryDisplayAttribEXT
, does, but succeeded. So yeah, most likely not our bug.
Reporter | ||
Comment 11•3 years ago
•
|
||
llvmpipe:
With Nvidia driver installed:
$ LIBGL_ALWAYS_SOFTWARE=1 clang test.c $(pkg-config --cflags --libs libdrm egl) -o test && ./test
eglQueryDisplayAttribEXT supported
eglGetError(): 0x3000 // eglQueryDisplayAttribEXT returned EGL_SUCCESS
eglGetError(): 0x3008 // eglQueryDeviceStringEXT returned EGL_BAD_DISPLAY
$ sudo apt purge *nvidia*
$ LIBGL_ALWAYS_SOFTWARE=1 clang test.c $(pkg-config --cflags --libs libdrm egl) -o test && ./test
eglQueryDisplayAttribEXT supported
eglGetError(): 0x3000 // eglQueryDisplayAttribEXT returned EGL_SUCCESS
eglGetError(): 0x3000 // eglQueryDeviceStringEXT returned EGL_SUCCESS
device:/dev/dri/card0
Vendor ID:0x8086
Device ID:0x5912
For my example app it does not matter whether LIBGL_ALWAYS_SOFTWARE=1 is set.
https://editor.mergely.com/cPlE2om1/
left: LIBGL_ALWAYS_SOFTWARE=1 eglinfo
right: eglinfo
- "EGL client extension" EXT_device_query is always present
- "X11 platform" and visuals differ
So the relevant question seems to be why does eglQueryDeviceStringEXT return EGL_BAD_DISPLAY with nvidia-driver-470 installed.
Comment 12•3 years ago
|
||
$ LIBGL_ALWAYS_SOFTWARE=1 clang test.c $(pkg-config --cflags --libs libdrm egl) -o test && ./test
The LIBGL_ALWAYS_SOFTWARE=1
only works for one command ,not the one after the &&
. Can you retest?
Reporter | ||
Comment 13•3 years ago
•
|
||
Oh, yes.
llvmpipe:
With Nvidia driver installed:
$ LIBGL_ALWAYS_SOFTWARE=1 ./test
eglQueryDisplayAttribEXT supported
eglGetError(): 0x3000 // eglQueryDisplayAttribEXT returned EGL_SUCCESS
eglGetError(): 0x3008 // eglQueryDeviceStringEXT returned EGL_BAD_DISPLAY
= same as without LIBGL_ALWAYS_SOFTWARE=1
$ sudo apt purge *nvidia*
$ LIBGL_ALWAYS_SOFTWARE=1 ./test
eglQueryDisplayAttribEXT supported
eglGetError(): 0x3000 // eglQueryDisplayAttribEXT returned EGL_SUCCESS
eglGetError(): 0x300c // eglQueryDeviceStringEXT returned EGL_BAD_PARAMETER <-------------
Reporter | ||
Comment 14•3 years ago
|
||
$ clang test.c $(pkg-config --cflags --libs libdrm egl gl x11) -o test
$ sudo apt install nvidia-driver-470 -y
Screenshot comment 1: Nvidia driver is installed, but Intel GPU selected in Nvidia X Server Settings. The HDMI cable is plugged into the motherboard.
$ ./test
0x3000 clientExtensions (EGL_EXTENSIONS for EGL_NO_DISPLAY): EGL_EXT_platform_base EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_EXT_platform_device EGL_EXT_platform_wayland EGL_KHR_platform_wayland EGL_MESA_platform_xcb EGL_MESA_platform_gbm EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
clientExtensions: EGL_KHR_client_get_all_proc_addresses supported
clientExtensions: EGL_EXT_platform_base supported
clientExtensions: EGL_KHR_platform_x11 supported
0x3000 eglGetPlatformDisplay
0x3000 eglInitialize ok
0x3000 EGL_VENDOR: Mesa Project
0x3000 displayExtensions (EGL_EXTENSIONS for initialized display): EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_CHROMIUM_sync_control EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_swap_buffers_with_damage EGL_IMG_context_priority EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_NOK_texture_from_pixmap EGL_WL_bind_wayland_display
clientExtensions: EGL_EXT_device_query supported
0x3000 eglGetProcAddress(eglQueryDisplayAttribEXT)
0x3000 eglGetProcAddress(eglQueryDeviceStringEXT)
0x3000 device: eglQueryDisplayAttribEXT EGL_DEVICE_EXT ok
0x3008 deviceExtensions (EGL_EXTENSIONS for device) failed
bug from comment 0:
We don't know if EGL_EXT_device_drm or EGL_MESA_device_software is supported
because eglQueryDeviceStringEXT(device, EGL_EXTENSIONS) fails with EGL_BAD_DISPLAY
although EGL_VENDOR is Mesa and eglQueryDisplayAttribEXT was ok.
This could be https://gitlab.freedesktop.org/glvnd/libglvnd/-/issues/210.
https://gitlab.freedesktop.org/glvnd/libglvnd/-/issues/215
https://gitlab.freedesktop.org/glvnd/libglvnd/-/merge_requests/239
Apparently we should also use eglQueryDevicesEXT.
$ LIBGL_ALWAYS_SOFTWARE=1 ./test
0x3000 clientExtensions (EGL_EXTENSIONS for EGL_NO_DISPLAY): EGL_EXT_platform_base EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_EXT_platform_device EGL_EXT_platform_wayland EGL_KHR_platform_wayland EGL_MESA_platform_xcb EGL_MESA_platform_gbm EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
clientExtensions: EGL_KHR_client_get_all_proc_addresses supported
clientExtensions: EGL_EXT_platform_base supported
clientExtensions: EGL_KHR_platform_x11 supported
0x3000 eglGetPlatformDisplay
0x3000 eglInitialize ok
0x3000 EGL_VENDOR: Mesa Project
0x3000 displayExtensions (EGL_EXTENSIONS for initialized display): EGL_EXT_create_context_robustness EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image_base EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_query_driver
clientExtensions: EGL_EXT_device_query supported
0x3000 eglGetProcAddress(eglQueryDisplayAttribEXT)
0x3000 eglGetProcAddress(eglQueryDeviceStringEXT)
0x3000 device: eglQueryDisplayAttribEXT EGL_DEVICE_EXT ok
0x3008 deviceExtensions (EGL_EXTENSIONS for device) failed
Same bug as above.
sudo apt purge *nvidia* -y
$ ./test
0x3000 clientExtensions (EGL_EXTENSIONS for EGL_NO_DISPLAY): EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device EGL_EXT_platform_wayland EGL_KHR_platform_wayland EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_xcb EGL_MESA_platform_gbm EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
clientExtensions: EGL_KHR_client_get_all_proc_addresses supported
clientExtensions: EGL_EXT_platform_base supported
clientExtensions: EGL_KHR_platform_x11 supported
0x3000 eglGetPlatformDisplay
0x3000 eglInitialize ok
0x3000 EGL_VENDOR: Mesa Project
0x3000 displayExtensions (EGL_EXTENSIONS for initialized display): EGL_ANDROID_blob_cache EGL_ANDROID_native_fence_sync EGL_CHROMIUM_sync_control EGL_EXT_buffer_age EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_EXT_swap_buffers_with_damage EGL_IMG_context_priority EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_KHR_swap_buffers_with_damage EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_image_dma_buf_export EGL_MESA_query_driver EGL_NOK_texture_from_pixmap EGL_WL_bind_wayland_display
clientExtensions: EGL_EXT_device_query supported
0x3000 eglGetProcAddress(eglQueryDisplayAttribEXT)
0x3000 eglGetProcAddress(eglQueryDeviceStringEXT)
0x3000 device: eglQueryDisplayAttribEXT EGL_DEVICE_EXT ok
0x3000 deviceExtensions (EGL_EXTENSIONS for device): EGL_EXT_device_drm
deviceExtensions: EXT_device_drm supported
0x3000 EGL_DRM_DEVICE_FILE_EXT: /dev/dri/card0
Vendor ID:0x8086
Device ID:0x5912
We have EGL_EXT_device_drm, thus we choose hardware WebRender.
$ LIBGL_ALWAYS_SOFTWARE=1 ./test
0x3000 clientExtensions (EGL_EXTENSIONS for EGL_NO_DISPLAY): EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_EXT_platform_base EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_EXT_platform_device EGL_EXT_platform_wayland EGL_KHR_platform_wayland EGL_EXT_platform_x11 EGL_KHR_platform_x11 EGL_MESA_platform_xcb EGL_MESA_platform_gbm EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
clientExtensions: EGL_KHR_client_get_all_proc_addresses supported
clientExtensions: EGL_EXT_platform_base supported
clientExtensions: EGL_KHR_platform_x11 supported
0x3000 eglGetPlatformDisplay
0x3000 eglInitialize ok
0x3000 EGL_VENDOR: Mesa Project
0x3000 displayExtensions (EGL_EXTENSIONS for initialized display): EGL_EXT_create_context_robustness EGL_KHR_cl_event2 EGL_KHR_config_attribs EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_create_context_no_error EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image_base EGL_KHR_no_config_context EGL_KHR_reusable_sync EGL_KHR_surfaceless_context EGL_EXT_pixel_format_float EGL_KHR_wait_sync EGL_MESA_configless_context EGL_MESA_drm_image EGL_MESA_query_driver
clientExtensions: EGL_EXT_device_query supported
0x3000 eglGetProcAddress(eglQueryDisplayAttribEXT)
0x3000 eglGetProcAddress(eglQueryDeviceStringEXT)
0x3000 device: eglQueryDisplayAttribEXT EGL_DEVICE_EXT ok
0x3000 deviceExtensions (EGL_EXTENSIONS for device): EGL_MESA_device_software
deviceExtensions: EXT_device_drm not supported, ignoring
0x300c no EGL_DRM_DEVICE_FILE_EXT
We don't have EGL_EXT_device_drm, but even know about EGL_MESA_device_software, thus we choose software WebRender.
Reporter | ||
Comment 15•3 years ago
|
||
Btw, this is how it looks when Nvidia is the primary GPU and the HDMI cable is plugged into it:
$ ./test
0x3000 clientExtensions (EGL_EXTENSIONS for EGL_NO_DISPLAY): EGL_EXT_platform_base EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_EXT_platform_device EGL_EXT_platform_wayland EGL_KHR_platform_wayland EGL_MESA_platform_xcb EGL_MESA_platform_gbm EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
clientExtensions: EGL_KHR_client_get_all_proc_addresses supported
clientExtensions: EGL_EXT_platform_base supported
clientExtensions: EGL_KHR_platform_x11 supported
0x3000 eglGetPlatformDisplay
0x3000 eglInitialize ok
0x3000 EGL_VENDOR: NVIDIA
0x3000 displayExtensions (EGL_EXTENSIONS for initialized display): EGL_EXT_buffer_age EGL_EXT_client_sync EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_MESA_image_dma_buf_export EGL_EXT_output_base EGL_EXT_stream_acquire_mode EGL_EXT_sync_reuse EGL_IMG_context_priority EGL_KHR_config_attribs EGL_KHR_create_context_no_error EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_partial_update EGL_KHR_swap_buffers_with_damage EGL_KHR_no_config_context EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_reusable_sync EGL_KHR_stream EGL_KHR_stream_attrib EGL_KHR_stream_consumer_gltexture EGL_KHR_stream_cross_process_fd EGL_KHR_stream_fifo EGL_KHR_stream_producer_eglsurface EGL_KHR_surfaceless_context EGL_KHR_wait_sync EGL_NV_nvrm_fence_sync EGL_NV_post_sub_buffer EGL_NV_quadruple_buffer EGL_NV_stream_consumer_eglimage EGL_NV_stream_cross_display EGL_NV_stream_cross_object EGL_NV_stream_cross_process EGL_NV_stream_cross_system EGL_NV_stream_dma EGL_NV_stream_flush EGL_NV_stream_metadata EGL_NV_stream_remote EGL_NV_stream_reset EGL_NV_stream_socket EGL_NV_stream_socket_inet EGL_NV_stream_socket_unix EGL_NV_stream_sync EGL_NV_stream_fifo_next EGL_NV_stream_fifo_synchronous EGL_NV_stream_consumer_gltexture_yuv EGL_NV_stream_attrib EGL_NV_stream_origin EGL_NV_system_time EGL_NV_output_drm_flip_event EGL_NV_triple_buffer
clientExtensions: EGL_EXT_device_query supported
0x3000 eglGetProcAddress(eglQueryDisplayAttribEXT)
0x3000 eglGetProcAddress(eglQueryDeviceStringEXT)
0x3000 device: eglQueryDisplayAttribEXT EGL_DEVICE_EXT ok
0x3000 deviceExtensions (EGL_EXTENSIONS for device): EGL_NV_device_cuda EGL_EXT_device_drm EGL_EXT_device_query_name
deviceExtensions: nvidia EGL_EXT_device_query_name supported
0x3000 EGL_RENDERER_EXT: NVIDIA GeForce GTX 1060 3GB
0x3000 EGL_VENDOR: NVIDIA
deviceExtensions: EXT_device_drm supported
0x3000 EGL_DRM_DEVICE_FILE_EXT: /dev/dri/card1
Vendor ID:0x10de
Device ID:0x1c02
$ LIBGL_ALWAYS_SOFTWARE=1 ./test
0x3000 clientExtensions (EGL_EXTENSIONS for EGL_NO_DISPLAY): EGL_EXT_platform_base EGL_EXT_device_base EGL_EXT_device_enumeration EGL_EXT_device_query EGL_KHR_client_get_all_proc_addresses EGL_EXT_client_extensions EGL_KHR_debug EGL_KHR_platform_x11 EGL_EXT_platform_x11 EGL_EXT_platform_device EGL_EXT_platform_wayland EGL_KHR_platform_wayland EGL_MESA_platform_xcb EGL_MESA_platform_gbm EGL_KHR_platform_gbm EGL_MESA_platform_surfaceless
clientExtensions: EGL_KHR_client_get_all_proc_addresses supported
clientExtensions: EGL_EXT_platform_base supported
clientExtensions: EGL_KHR_platform_x11 supported
0x3000 eglGetPlatformDisplay
0x3000 eglInitialize ok
0x3000 EGL_VENDOR: NVIDIA
0x3000 displayExtensions (EGL_EXTENSIONS for initialized display): EGL_EXT_buffer_age EGL_EXT_client_sync EGL_EXT_create_context_robustness EGL_EXT_image_dma_buf_import EGL_EXT_image_dma_buf_import_modifiers EGL_MESA_image_dma_buf_export EGL_EXT_output_base EGL_EXT_stream_acquire_mode EGL_EXT_sync_reuse EGL_IMG_context_priority EGL_KHR_config_attribs EGL_KHR_create_context_no_error EGL_KHR_context_flush_control EGL_KHR_create_context EGL_KHR_fence_sync EGL_KHR_get_all_proc_addresses EGL_KHR_partial_update EGL_KHR_swap_buffers_with_damage EGL_KHR_no_config_context EGL_KHR_gl_colorspace EGL_KHR_gl_renderbuffer_image EGL_KHR_gl_texture_2D_image EGL_KHR_gl_texture_3D_image EGL_KHR_gl_texture_cubemap_image EGL_KHR_image EGL_KHR_image_base EGL_KHR_image_pixmap EGL_KHR_reusable_sync EGL_KHR_stream EGL_KHR_stream_attrib EGL_KHR_stream_consumer_gltexture EGL_KHR_stream_cross_process_fd EGL_KHR_stream_fifo EGL_KHR_stream_producer_eglsurface EGL_KHR_surfaceless_context EGL_KHR_wait_sync EGL_NV_nvrm_fence_sync EGL_NV_post_sub_buffer EGL_NV_quadruple_buffer EGL_NV_stream_consumer_eglimage EGL_NV_stream_cross_display EGL_NV_stream_cross_object EGL_NV_stream_cross_process EGL_NV_stream_cross_system EGL_NV_stream_dma EGL_NV_stream_flush EGL_NV_stream_metadata EGL_NV_stream_remote EGL_NV_stream_reset EGL_NV_stream_socket EGL_NV_stream_socket_inet EGL_NV_stream_socket_unix EGL_NV_stream_sync EGL_NV_stream_fifo_next EGL_NV_stream_fifo_synchronous EGL_NV_stream_consumer_gltexture_yuv EGL_NV_stream_attrib EGL_NV_stream_origin EGL_NV_system_time EGL_NV_output_drm_flip_event EGL_NV_triple_buffer
clientExtensions: EGL_EXT_device_query supported
0x3000 eglGetProcAddress(eglQueryDisplayAttribEXT)
0x3000 eglGetProcAddress(eglQueryDeviceStringEXT)
0x3000 device: eglQueryDisplayAttribEXT EGL_DEVICE_EXT ok
0x3000 deviceExtensions (EGL_EXTENSIONS for device): EGL_NV_device_cuda EGL_EXT_device_drm EGL_EXT_device_query_name
deviceExtensions: nvidia EGL_EXT_device_query_name supported
0x3000 EGL_RENDERER_EXT: NVIDIA GeForce GTX 1060 3GB
0x3000 EGL_VENDOR: NVIDIA
deviceExtensions: EXT_device_drm supported
0x3000 EGL_DRM_DEVICE_FILE_EXT: /dev/dri/card1
Vendor ID:0x10de
Device ID:0x1c02
Updated•3 years ago
|
Comment 16•3 years ago
|
||
Reporter | ||
Updated•3 years ago
|
Comment 17•3 years ago
|
||
Btw, this is how it looks when Nvidia is the primary GPU and the HDMI cable is plugged into it:
Looks to me like the nvidia driver does not know the LIBGL_ALWAYS_SOFTWARE
variable - which would make sense.
Comment 18•3 years ago
|
||
bugherder |
Comment 19•3 years ago
|
||
Unassigning for now as to me this looks like a setup/driver bug.
Reporter | ||
Updated•3 years ago
|
Reporter | ||
Updated•3 years ago
|
Comment 20•3 years ago
|
||
The severity field is not set for this bug.
:jimm, could you have a look please?
For more information, please visit auto_nag documentation.
Reporter | ||
Updated•3 years ago
|
Reporter | ||
Updated•3 years ago
|
Updated•3 years ago
|
Reporter | ||
Updated•3 years ago
|
Comment 23•2 years ago
|
||
The leave-open keyword is there and there is no activity for 6 months.
:gw, maybe it's time to close this bug?
For more information, please visit auto_nag documentation.
Comment 24•2 years ago
|
||
Jan, does this still happen? IIRC this should have been fixed in libglvnd.
Updated•2 years ago
|
Comment 25•4 months ago
|
||
Clear a needinfo that is pending on an inactive user.
Inactive users most likely will not respond; if the missing information is essential and cannot be collected another way, the bug maybe should be closed as INCOMPLETE
.
For more information, please visit BugBot documentation.
Description
•