Changeset View
Changeset View
Standalone View
Standalone View
krita/ui/opengl/kis_opengl_canvas2_p.h
Show First 20 Lines • Show All 122 Lines • ▼ Show 20 Line(s) | 118 | if (triedDisable && !result) { | |||
---|---|---|---|---|---|
123 | qCritical() << "CRITICAL: sudo nvidia-settings > (tab) OpenGL settings > Sync to VBlank ( unchecked )"; | 123 | qCritical() << "CRITICAL: sudo nvidia-settings > (tab) OpenGL settings > Sync to VBlank ( unchecked )"; | ||
124 | qCritical(); | 124 | qCritical(); | ||
125 | } | 125 | } | ||
126 | return result; | 126 | return result; | ||
127 | } | 127 | } | ||
128 | } | 128 | } | ||
129 | 129 | | |||
130 | #elif defined Q_OS_WIN | 130 | #elif defined Q_OS_WIN | ||
131 | // QT5TODO: T360 | | |||
132 | //#include <GL/wglew.h> | | |||
133 | namespace VSyncWorkaround { | 131 | namespace VSyncWorkaround { | ||
134 | bool tryDisableVSync(QWidget *) { | 132 | bool tryDisableVSync(QOpenGLContext *ctx) { | ||
135 | bool retval = false; | 133 | bool retval = false; | ||
136 | 134 | | |||
137 | #ifdef WGL_EXT_swap_control | 135 | if (ctx->hasExtension("WGL_EXT_swap_control")) { | ||
138 | if (WGLEW_EXT_swap_control) { | 136 | typedef void (*wglSwapIntervalEXT)(int); | ||
139 | wglSwapIntervalEXT(0); | 137 | typedef int (*wglGetSwapIntervalEXT)(void); | ||
140 | int interval = wglGetSwapIntervalEXT(); | 138 | ((wglSwapIntervalEXT)ctx->getProcAddress("wglSwapIntervalEXT"))(0); | ||
139 | int interval = ((wglGetSwapIntervalEXT)ctx->getProcAddress("wglGetSwapIntervalEXT"))(); | ||||
141 | 140 | | |||
142 | if (interval) { | 141 | if (interval) { | ||
143 | qWarning() << "Failed to disable VSync with WGLEW_EXT_swap_control"; | 142 | qWarning() << "Failed to disable VSync with WGLEW_EXT_swap_control"; | ||
144 | } | 143 | } | ||
145 | 144 | | |||
146 | retval = !interval; | 145 | retval = !interval; | ||
147 | } else { | 146 | } else { | ||
148 | qWarning() << "WGL_EXT_swap_control extension is not available"; | 147 | qWarning() << "WGL_EXT_swap_control extension is not available. Found extensions" << ctx->extensions(); | ||
149 | } | 148 | } | ||
150 | #else | | |||
151 | qWarning() << "GLEW WGL_EXT_swap_control extension is not compiled in"; | | |||
152 | #endif | | |||
153 | | ||||
154 | return retval; | 149 | return retval; | ||
155 | } | 150 | } | ||
156 | } | 151 | } | ||
157 | 152 | | |||
158 | #else // !defined Q_OS_LINUX && !defined Q_OS_WIN | 153 | #else // !defined Q_OS_LINUX && !defined Q_OS_WIN | ||
159 | 154 | | |||
160 | namespace VSyncWorkaround { | 155 | namespace VSyncWorkaround { | ||
161 | bool tryDisableVSync(QWidget *) { | 156 | bool tryDisableVSync(QOpenGLContext *) { | ||
162 | return false; | 157 | return false; | ||
163 | } | 158 | } | ||
164 | } | 159 | } | ||
165 | #endif // defined Q_OS_LINUX | 160 | #endif // defined Q_OS_LINUX | ||
166 | 161 | | |||
167 | #include <QGLFormat> | | |||
168 | namespace Sync { | 162 | namespace Sync { | ||
169 | //For checking sync status | 163 | //For checking sync status | ||
170 | enum SyncStatus { | 164 | enum SyncStatus { | ||
171 | Signaled, | 165 | Signaled, | ||
172 | Unsignaled | 166 | Unsignaled | ||
173 | }; | 167 | }; | ||
174 | 168 | | |||
175 | #ifndef GL_SYNC_GPU_COMMANDS_COMPLETE | 169 | #ifndef GL_SYNC_GPU_COMMANDS_COMPLETE | ||
▲ Show 20 Lines • Show All 79 Lines • Show Last 20 Lines |