[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    [kwin/fredrik/vulkan] /: options: Add a Vulkan V-sync setting
From:       Fredrik_Höglund <null () kde ! org>
Date:       2018-02-16 17:01:48
Message-ID: E1emjOO-0004Yx-Qu () code ! kde ! org
[Download RAW message or body]

Git commit a759f310d7c2e2d26db6a37ec0813ba84247e670 by Fredrik Höglund.
Committed on 16/02/2018 at 16:58.
Pushed by fredrik into branch 'fredrik/vulkan'.

options: Add a Vulkan V-sync setting

M  +19   -0    options.cpp
M  +11   -0    options.h

https://commits.kde.org/kwin/a759f310d7c2e2d26db6a37ec0813ba84247e670

diff --git a/options.cpp b/options.cpp
index 281bad74c..1c737b568 100644
--- a/options.cpp
+++ b/options.cpp
@@ -125,6 +125,7 @@ Options::Options(QObject *parent)
     , m_glPreferBufferSwap(Options::defaultGlPreferBufferSwap())
     , m_glPlatformInterface(Options::defaultGlPlatformInterface())
     , m_vulkanDevice(0, 0, 0)
+    , m_vulkanVsync(1)
     , m_windowsBlockCompositing(true)
     , OpTitlebarDblClick(Options::defaultOperationTitlebarDblClick())
     , CmdActiveTitlebar1(Options::defaultCommandActiveTitlebar1())
@@ -741,6 +742,16 @@ void Options::setVulkanDevice(const VulkanDeviceId &device)
     }
 }
 
+void Options::setVulkanVsync(int vsync)
+{
+    vsync = std::min(std::max(vsync, 0), 2);
+
+    if (m_vulkanVsync != vsync) {
+        m_vulkanVsync = vsync;
+        emit vulkanVsyncChanged();
+    }
+}
+
 void Options::setGlPlatformInterface(OpenGLPlatformInterface interface)
 {
     // check environment variable
@@ -1009,6 +1020,14 @@ void Options::reloadCompositingSettings(bool force)
         setVulkanDevice(VulkanDeviceId(0, 0, 0));
     }
 
+    const QString vulkanVsync = config.readEntry("VulkanVSync", "Doublebuffer");
+    if (vulkanVsync == QStringLiteral("Off"))
+        setVulkanVsync(0);
+    else if (vulkanVsync == QStringLiteral("Triplebuffer"))
+        setVulkanVsync(2);
+    else
+        setVulkanVsync(1);
+
     HiddenPreviews previews = Options::defaultHiddenPreviews();
     // 4 - off, 5 - shown, 6 - always, other are old values
     int hps = config.readEntry("HiddenPreviews", 5);
diff --git a/options.h b/options.h
index ded06b83f..799473967 100644
--- a/options.h
+++ b/options.h
@@ -222,6 +222,7 @@ class KWIN_EXPORT Options : public QObject
     Q_PROPERTY(bool glCoreProfile READ glCoreProfile WRITE setGLCoreProfile NOTIFY \
                glCoreProfileChanged)
     Q_PROPERTY(GlSwapStrategy glPreferBufferSwap READ glPreferBufferSwap WRITE \
                setGlPreferBufferSwap NOTIFY glPreferBufferSwapChanged)
     Q_PROPERTY(VulkanDeviceId vulkanDevice READ vulkanDevice WRITE setVulkanDevice \
NOTIFY vulkanDeviceChanged) +    Q_PROPERTY(int vulkanVsync READ vulkanVsync WRITE \
                setVulkanVsync NOTIFY vulkanVsyncChanged)
     Q_PROPERTY(KWin::OpenGLPlatformInterface glPlatformInterface READ \
                glPlatformInterface WRITE setGlPlatformInterface NOTIFY \
                glPlatformInterfaceChanged)
     Q_PROPERTY(bool windowsBlockCompositing READ windowsBlockCompositing WRITE \
setWindowsBlockCompositing NOTIFY windowsBlockCompositingChanged)  public:
@@ -628,6 +629,10 @@ public:
         return m_vulkanDevice;
     }
 
+    int vulkanVsync() const {
+        return m_vulkanVsync;
+    }
+
     bool windowsBlockCompositing() const
     {
         return m_windowsBlockCompositing;
@@ -697,6 +702,7 @@ public:
     void setGlPreferBufferSwap(char glPreferBufferSwap);
     void setGlPlatformInterface(OpenGLPlatformInterface interface);
     void setVulkanDevice(const VulkanDeviceId &device);
+    void setVulkanVsync(int vsync);
     void setWindowsBlockCompositing(bool set);
 
     // default values
@@ -808,6 +814,9 @@ public:
     static VulkanDeviceId defaultVulkanDevice() {
         return VulkanDeviceId(0, 0, 0);
     }
+    static int defaultVulkanVSync() {
+        return 1;
+    }
     static OpenGLPlatformInterface defaultGlPlatformInterface() {
         return kwinApp()->shouldUseWaylandForCompositing() ? EglPlatformInterface : \
GlxPlatformInterface;  };
@@ -892,6 +901,7 @@ Q_SIGNALS:
     void glPreferBufferSwapChanged();
     void glPlatformInterfaceChanged();
     void vulkanDeviceChanged();
+    void vulkanVsyncChanged();
     void windowsBlockCompositingChanged();
 
     void configChanged();
@@ -939,6 +949,7 @@ private:
     GlSwapStrategy m_glPreferBufferSwap;
     OpenGLPlatformInterface m_glPlatformInterface;
     VulkanDeviceId m_vulkanDevice;
+    int m_vulkanVsync;
     bool m_windowsBlockCompositing;
 
     WindowOperation OpTitlebarDblClick;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic