[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