From a01459df3d48e6d4b5d8e7205a8e56b855d0606e Mon Sep 17 00:00:00 2001 From: lat9nq <22451773+lat9nq@users.noreply.github.com> Date: Sun, 20 Jun 2021 21:12:39 -0400 Subject: [PATCH] gl_device: Expand on Mesa driver names Makes this list a bit more capable at identifying Mesa drivers. Tries to deal with two of the overloaded vendor strings in a more generic fashion. --- src/video_core/renderer_opengl/gl_device.cpp | 31 ++++++++++++++++++-- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/src/video_core/renderer_opengl/gl_device.cpp b/src/video_core/renderer_opengl/gl_device.cpp index 3d26742324..3b00614e70 100644 --- a/src/video_core/renderer_opengl/gl_device.cpp +++ b/src/video_core/renderer_opengl/gl_device.cpp @@ -282,14 +282,21 @@ std::string Device::GetVendorName() const { if (vendor_name == "ATI Technologies Inc.") { return "AMD"; } - if (vendor_name == "Intel" || vendor_name == "Intel Open Source Technology Center") { + if (vendor_name == "Intel") { + // For Mesa, `Intel` is an overloaded vendor string that could mean crocus or iris. + // Simply return `INTEL` for those as well as the Windows driver. return "INTEL"; } + if (vendor_name == "Intel Open Source Technology Center") { + return "I965"; + } if (vendor_name == "Mesa Project") { - return "MESA"; + return "I915"; } if (vendor_name == "Mesa/X.org") { - return "LLVMPIPE"; + // This vendor string is overloaded between llvmpipe, softpipe, and virgl, so just return + // MESA instead of one of those driver names. + return "MESA"; } if (vendor_name == "AMD") { return "RADEONSI"; @@ -297,6 +304,24 @@ std::string Device::GetVendorName() const { if (vendor_name == "nouveau") { return "NOUVEAU"; } + if (vendor_name == "X.Org") { + return "R600"; + } + if (vendor_name == "Collabora Ltd") { + return "ZINK"; + } + if (vendor_name == "Intel Corporation") { + return "OPENSWR"; + } + if (vendor_name == "Microsoft Corporation") { + return "D3D12"; + } + if (vendor_name == "NVIDIA") { + // Mesa's tegra driver reports `NVIDIA`. Only present in this list because the default + // strategy would have returned `NVIDIA` here for this driver, the same result as the + // proprietary driver. + return "TEGRA"; + } return vendor_name; }