Re: Firefox glxtest libpci dependency

From: Jan Beich <jbeich_at_FreeBSD.org>
Date: Sun, 30 May 2021 15:56:19 UTC
Evgeniy Khramtsov writes:

> When starting Firefox in a terminal emulator, it complains about libpci
> missing for glxtest.
>
> According to the source, Firefox dlopens libpci.so.3:
> https://searchfox.org/mozilla-central/source/toolkit/xre/glxtest.cpp#250
>
> devel/libpci provides this library and installing it resolves the
> warning. Should this library be added as a runtime dependency for gecko?
>
> Note that this was tested on mozilla-central Firefox
> (hg tagname 9d30cff8f9d48403530819099b36b36f41acb845).

Upstream added libpci due to lack of GLX_EXT_query_renderer under Wayland
but it seems to help enabling WebRender by default under Xorg.

https://cgit.FreeBSD.org/ports/commit/?id=f079b462f891b1e5c2cec31ac1190c73c17b0054

$ env -u WAYLAND_DISPLAY firefox about:support
--- about:support	default as of 89.0_1,2
+++ about:support	after installing libpci
@@ -283,23 +283,20 @@
   },
   "graphics": {
     "numTotalWindows": 1,
-    "numAcceleratedWindows": 0,
-    "windowLayerManagerType": "Basic",
+    "numAcceleratedWindows": 1,
+    "windowLayerManagerType": "WebRender",
     "windowLayerManagerRemote": true,
     "windowUsingAdvancedLayers": false,
-    "numAcceleratedWindowsMessage": {
-      "key": ""
-    },
     "adapterDescription": "Mesa Intel(R) HD Graphics 530 (SKL GT2)",
     "adapterVendorID": "0x8086",
-    "adapterDeviceID": "Mesa Intel(R) HD Graphics 530 (SKL GT2)",
+    "adapterDeviceID": "0x1912",
     "adapterRAM": 0,
     "adapterDrivers": "",
     "driverVendor": "mesa/iris",
     "driverVersion": "20.2.3.0",
     "driverDate": "",
-    "adapterVendorID2": "",
-    "adapterDeviceID2": "",
+    "adapterVendorID2": "0x10de",
+    "adapterDeviceID2": "0x0fc1",
     "isGPU2Active": false,
     "usesTiling": false,
     "contentUsesTiling": false,
@@ -332,71 +329,49 @@
       "DisplayCount": 1,
       "Display0": "3840x2160 default"
     },
-    "failures": [
-      "[GFX1-]: glxtest: libpci missing"
-    ],
-    "indices": [
-      0
-    ],
     "featureLog": {
       "features": [
         {
           "name": "HW_COMPOSITING",
           "description": "Compositing",
-          "status": "blocked",
+          "status": "available",
           "log": [
             {
               "type": "default",
               "status": "available"
-            },
-            {
-              "type": "env",
-              "status": "blocked",
-              "message": "Acceleration blocked by platform"
             }
           ]
         },
         {
           "name": "OPENGL_COMPOSITING",
           "description": "OpenGL Compositing",
-          "status": "unavailable",
+          "status": "available",
           "log": [
             {
               "type": "default",
-              "status": "unavailable",
-              "message": "Hardware compositing is disabled"
+              "status": "available"
             }
           ]
         },
         {
           "name": "WEBRENDER",
           "description": "WebRender",
-          "status": "disabled",
+          "status": "available",
           "log": [
             {
               "type": "default",
               "status": "available"
-            },
-            {
-              "type": "env",
-              "status": "disabled",
-              "message": "Not qualified"
             }
           ]
         },
         {
           "name": "WEBRENDER_QUALIFIED",
           "description": "WebRender qualified",
-          "status": "denied",
+          "status": "available",
           "log": [
             {
               "type": "default",
               "status": "available"
-            },
-            {
-              "type": "env",
-              "status": "denied",
-              "message": "Not on allowlist"
             }
           ]
         },
@@ -413,35 +388,36 @@
           ]
         },
         {
+          "name": "WEBRENDER_PARTIAL",
+          "description": "WebRender partial present",
+          "status": "available",
+          "log": [
+            {
+              "type": "default",
+              "status": "available"
+            }
+          ]
+        },
+        {
           "name": "WEBRENDER_SHADER_CACHE",
           "description": "WebRender shader disk cache",
-          "status": "unavailable",
+          "status": "disabled",
           "log": [
             {
               "type": "default",
               "status": "disabled",
               "message": "Disabled by default"
-            },
-            {
-              "type": "runtime",
-              "status": "unavailable",
-              "message": "WebRender disabled"
             }
           ]
         },
         {
           "name": "WEBRENDER_OPTIMIZED_SHADERS",
           "description": "WebRender optimized shaders",
-          "status": "unavailable",
+          "status": "available",
           "log": [
             {
               "type": "default",
               "status": "available"
-            },
-            {
-              "type": "runtime",
-              "status": "unavailable",
-              "message": "WebRender disabled"
             }
           ]
         },
@@ -518,7 +494,7 @@
         {
           "name": "WEBGPU",
           "description": "WebGPU",
-          "status": "unavailable-no-webrender",
+          "status": "blocked",
           "log": [
             {
               "type": "default",
@@ -527,8 +503,8 @@
             },
             {
               "type": "runtime",
-              "status": "unavailable-no-webrender",
-              "message": "WebGPU can't present without WebRender"
+              "status": "blocked",
+              "message": "WebGPU can only be enabled in nightly"
             }
           ]
         },