Bug 1731480 - Stop reporting swrast as driver, r=aosmond

`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/software-unknown" instead.
No functional change beyond reporting intended here.

Differential Revision: https://phabricator.services.mozilla.com/D126052
This commit is contained in:
Robert Mader 2021-09-20 14:38:22 +00:00
parent 502869a709
commit b9982073c9
3 changed files with 7 additions and 4 deletions

View File

@ -995,6 +995,7 @@ const nsAString& GfxDriverInfo::GetDriverVendor(DriverVendor id) {
DECLARE_DRIVER_VENDOR_ID(MesaLLVMPipe, "mesa/llvmpipe");
DECLARE_DRIVER_VENDOR_ID(MesaSoftPipe, "mesa/softpipe");
DECLARE_DRIVER_VENDOR_ID(MesaSWRast, "mesa/swrast");
DECLARE_DRIVER_VENDOR_ID(MesaSWUnknown, "mesa/software-unknown");
DECLARE_DRIVER_VENDOR_ID(MesaUnknown, "mesa/unknown");
DECLARE_DRIVER_VENDOR_ID(MesaR600, "mesa/r600");
DECLARE_DRIVER_VENDOR_ID(MesaNouveau, "mesa/nouveau");

View File

@ -234,6 +234,7 @@ enum DriverVendor : uint8_t {
MesaLLVMPipe,
MesaSoftPipe,
MesaSWRast,
MesaSWUnknown,
// AMD
MesaR600,
// Nouveau: Open-source nvidia

View File

@ -290,13 +290,14 @@ void GfxInfo::GetData() {
GfxDriverInfo::GetDriverVendor(DriverVendor::MesaSoftPipe),
mDriverVendor);
mIsAccelerated = false;
} else if (strcasestr(glRenderer.get(), "software rasterizer") ||
!mIsAccelerated) {
// Fallback to reporting swrast if GLX_MESA_query_renderer tells us
// we're using an unaccelerated context.
} else if (strcasestr(glRenderer.get(), "software rasterizer")) {
CopyUTF16toUTF8(GfxDriverInfo::GetDriverVendor(DriverVendor::MesaSWRast),
mDriverVendor);
mIsAccelerated = false;
} else if (!mIsAccelerated) {
CopyUTF16toUTF8(
GfxDriverInfo::GetDriverVendor(DriverVendor::MesaSWUnknown),
mDriverVendor);
} else if (!driDriver.IsEmpty()) {
mDriverVendor = nsPrintfCString("mesa/%s", driDriver.get());
} else {