Skip to content
Snippets Groups Projects
Verified Commit d09f7ffc authored by Anna Wilcox's avatar Anna Wilcox :fox:
Browse files

user/kwin: Backport Gallium fix from 5.11.x

parent f6522a65
No related branches found
No related tags found
No related merge requests found
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Maintainer: A. Wilcox <awilfox@adelielinux.org> # Maintainer: A. Wilcox <awilfox@adelielinux.org>
pkgname=kwin pkgname=kwin
pkgver=5.8.7 pkgver=5.8.7
pkgrel=0 pkgrel=1
pkgdesc="Modern, stylish window manager (requires OpenGL)" pkgdesc="Modern, stylish window manager (requires OpenGL)"
url="https://www.kde.org/" url="https://www.kde.org/"
arch="all" arch="all"
...@@ -24,7 +24,8 @@ install="" ...@@ -24,7 +24,8 @@ install=""
subpackages="$pkgname-dev $pkgname-doc $pkgname-lang" subpackages="$pkgname-dev $pkgname-doc $pkgname-lang"
source="http://download.kde.org/stable/plasma/$pkgver/kwin-$pkgver.tar.xz source="http://download.kde.org/stable/plasma/$pkgver/kwin-$pkgver.tar.xz
kwin-5.8-stop-depending-on-qt5-internals.patch kwin-5.8-stop-depending-on-qt5-internals.patch
kwin-5.8-respect-uint.patch" kwin-5.8-respect-uint.patch
kwin-backport-gallium-version-detection.patch"
builddir="$srcdir/kwin-$pkgver" builddir="$srcdir/kwin-$pkgver"
build() { build() {
...@@ -55,4 +56,5 @@ package() { ...@@ -55,4 +56,5 @@ package() {
sha512sums="f1f3b01f85378e663385887add8dd5b2f40076cfc57f7cf638e83e2424fedb576b4b431b14151422ea43c535677131e61b8d9e7fe60e5a5f4ea06520c895bd1e kwin-5.8.7.tar.xz sha512sums="f1f3b01f85378e663385887add8dd5b2f40076cfc57f7cf638e83e2424fedb576b4b431b14151422ea43c535677131e61b8d9e7fe60e5a5f4ea06520c895bd1e kwin-5.8.7.tar.xz
7186dd317204612ba26f11315238f527949424d08f32dc0dab8c1391d642529433cfd7091dc2a057fe849976dee70eed7aab3c8be55b20b8c0655da57976b48e kwin-5.8-stop-depending-on-qt5-internals.patch 7186dd317204612ba26f11315238f527949424d08f32dc0dab8c1391d642529433cfd7091dc2a057fe849976dee70eed7aab3c8be55b20b8c0655da57976b48e kwin-5.8-stop-depending-on-qt5-internals.patch
aaefa9951ec1475adf00784b202d0ca9f92a60634a869387432411e8b7928d9f10b46968998a4ada47228834e8c7f6c9bf1c8dd988673b22619e8e1295e086c7 kwin-5.8-respect-uint.patch" aaefa9951ec1475adf00784b202d0ca9f92a60634a869387432411e8b7928d9f10b46968998a4ada47228834e8c7f6c9bf1c8dd988673b22619e8e1295e086c7 kwin-5.8-respect-uint.patch
9c8cdb884defc3e16444b41de0c53e10774cef6d8d0a461376ba64cc3457dfe19579e13ce45df721e32643dddf518df7d787ee36bcba840ef1bf2b7009d9b1ab kwin-backport-gallium-version-detection.patch"
From e302f87598de6853147c872b631e9a1fe4864f42 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fabian@ritter-vogt.de>
Date: Sat, 23 Dec 2017 23:30:07 +0100
Subject: Properly detect Gallium drivers with newer Mesa
Summary:
The renderer string does not contain "Gallium 0.4 on" anymore,
instead it directly contains the gallium driver's name.
So assume that every unknown renderer is a gallium driver.
Test Plan: Added a testcase, it succeeds only with this patch.
Reviewers: #plasma, graesslin
Subscribers: kwin, plasma-devel, #kwin
Tags: #kwin
Differential Revision: https://phabricator.kde.org/D9495
---
.../libkwineffects/data/glplatform/llvmpipe-5.0 | 22 ++++
libkwineffects/kwinglplatform.cpp | 114 +++++++++++----------
2 files changed, 82 insertions(+), 54 deletions(-)
create mode 100644 autotests/libkwineffects/data/glplatform/llvmpipe-5.0
diff --git a/autotests/libkwineffects/data/glplatform/llvmpipe-5.0 b/autotests/libkwineffects/data/glplatform/llvmpipe-5.0
new file mode 100644
index 0000000..56aa352
--- /dev/null
+++ b/autotests/libkwineffects/data/glplatform/llvmpipe-5.0
@@ -0,0 +1,22 @@
+[Driver]
+Vendor=VMware, Inc.
+Renderer=llvmpipe (LLVM 5.0, 256 bits)
+Version=3.0 Mesa 17.2.6
+ShadingLanguageVersion=1.30
+
+[Settings]
+LooseBinding=true
+GLSL=true
+TextureNPOT=true
+Mesa=true
+Gallium=true
+SoftwareEmulation=true
+GLVersion=3,0
+GLSLVersion=1,30
+MesaVersion=17,2,6
+GalliumVersion=0,4
+DriverVersion=17,2,6
+Driver=12
+ChipClass=99999
+Compositor=9
+
diff --git a/libkwineffects/kwinglplatform.cpp b/libkwineffects/kwinglplatform.cpp
index 2b7b9a4..f5febc0 100644
--- a/libkwineffects/kwinglplatform.cpp
+++ b/libkwineffects/kwinglplatform.cpp
@@ -702,14 +702,69 @@ void GLPlatform::detect(OpenGLPlatformInterface platformInterface)
m_chipClass = detectIntelClass(chipset);
}
+ // Properietary drivers
+ // ====================================================
+ else if (m_vendor == "ATI Technologies Inc.") {
+ m_chipClass = detectRadeonClass(m_renderer);
+ m_driver = Driver_Catalyst;
+
+ if (versionTokens.count() > 1 && versionTokens.at(2)[0] == '(')
+ m_driverVersion = parseVersionString(versionTokens.at(1));
+ else if (versionTokens.count() > 0)
+ m_driverVersion = parseVersionString(versionTokens.at(0));
+ else
+ m_driverVersion = 0;
+ }
+
+ else if (m_vendor == "NVIDIA Corporation") {
+ m_chipClass = detectNVidiaClass(m_renderer);
+ m_driver = Driver_NVidia;
+
+ int index = versionTokens.indexOf("NVIDIA");
+ if (versionTokens.count() > index)
+ m_driverVersion = parseVersionString(versionTokens.at(index + 1));
+ else
+ m_driverVersion = 0;
+ }
+
+ else if (m_vendor == "Qualcomm") {
+ m_driver = Driver_Qualcomm;
+ m_chipClass = detectQualcommClass(m_renderer);
+ }
+
+ else if (m_renderer == "Software Rasterizer") {
+ m_driver = Driver_Swrast;
+ }
+
+ // Virtual Hardware
+ // ====================================================
+ else if (m_vendor == "Humper" && m_renderer == "Chromium") {
+ // Virtual Box
+ m_driver = Driver_VirtualBox;
+
+ const int index = versionTokens.indexOf("Chromium");
+ if (versionTokens.count() > index)
+ m_driverVersion = parseVersionString(versionTokens.at(index + 1));
+ else
+ m_driverVersion = 0;
+ }
+
// Gallium drivers
// ====================================================
- else if (m_renderer.contains("Gallium")) {
- // Sample renderer string: Gallium 0.4 on AMD RV740
+ else {
const QList<QByteArray> tokens = m_renderer.split(' ');
- m_galliumVersion = parseVersionString(tokens.at(1));
- m_chipset = (tokens.at(3) == "AMD" || tokens.at(3) == "ATI") ?
- tokens.at(4) : tokens.at(3);
+ if (m_renderer.contains("Gallium")) {
+ // Sample renderer string: Gallium 0.4 on AMD RV740
+ m_galliumVersion = parseVersionString(tokens.at(1));
+ m_chipset = (tokens.at(3) == "AMD" || tokens.at(3) == "ATI") ?
+ tokens.at(4) : tokens.at(3);
+ }
+ else {
+ // The renderer string does not contain "Gallium" anymore.
+ m_chipset = tokens.at(0);
+ // We don't know the actual version anymore, but it's at least 0.4.
+ m_galliumVersion = kVersionNumber(0, 4, 0);
+ }
// R300G
if (m_vendor == QByteArrayLiteral("X.Org R300 Project")) {
@@ -764,55 +819,6 @@ void GLPlatform::detect(OpenGLPlatformInterface platformInterface)
}
}
-
- // Properietary drivers
- // ====================================================
- else if (m_vendor == "ATI Technologies Inc.") {
- m_chipClass = detectRadeonClass(m_renderer);
- m_driver = Driver_Catalyst;
-
- if (versionTokens.count() > 1 && versionTokens.at(2)[0] == '(')
- m_driverVersion = parseVersionString(versionTokens.at(1));
- else if (versionTokens.count() > 0)
- m_driverVersion = parseVersionString(versionTokens.at(0));
- else
- m_driverVersion = 0;
- }
-
- else if (m_vendor == "NVIDIA Corporation") {
- m_chipClass = detectNVidiaClass(m_renderer);
- m_driver = Driver_NVidia;
-
- int index = versionTokens.indexOf("NVIDIA");
- if (versionTokens.count() > index)
- m_driverVersion = parseVersionString(versionTokens.at(index + 1));
- else
- m_driverVersion = 0;
- }
-
- else if (m_vendor == "Qualcomm") {
- m_driver = Driver_Qualcomm;
- m_chipClass = detectQualcommClass(m_renderer);
- }
-
- else if (m_renderer == "Software Rasterizer") {
- m_driver = Driver_Swrast;
- }
-
- // Virtual Hardware
- // ====================================================
- else if (m_vendor == "Humper" && m_renderer == "Chromium") {
- // Virtual Box
- m_driver = Driver_VirtualBox;
-
- const int index = versionTokens.indexOf("Chromium");
- if (versionTokens.count() > index)
- m_driverVersion = parseVersionString(versionTokens.at(index + 1));
- else
- m_driverVersion = 0;
- }
-
-
// Driver/GPU specific features
// ====================================================
if (isRadeon()) {
--
cgit v0.11.2
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment