diff options
author | Tor Lillqvist <tml@collabora.com> | 2016-01-26 11:17:57 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2016-02-08 14:14:55 +0000 |
commit | 59ebd032b834f31f2b3069395f7e7962a0adfea2 (patch) | |
tree | 5a123cad10bad8c6c9ec0d1e17a002431b78ca5a /vcl | |
parent | 572252b562075825a0ee7e8b6c2421d16e48f98c (diff) |
tdf#97633 Add API to get the number of OpenGL buffer swaps, including ...
... through UNO
(cherry picked from commits dff18c2be9c72aa05940982f506804eb41d3d79a,
2c55288357c9d5410afae58c1fbb97cdfabf0360,
32d98b2551644dea50e58f99ae921a82a0f69753 and
4cd058f3f6568724c65ac88769f17fcc6078da23)
Change-Id: Iff29ac615ad4b6516790b1cbbde0215a3cd0efe6
Reviewed-on: https://gerrit.libreoffice.org/22209
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'vcl')
-rw-r--r-- | vcl/Library_vcl.mk | 4 | ||||
-rw-r--r-- | vcl/inc/OpenGLWrapper.hxx | 20 | ||||
-rw-r--r-- | vcl/osx/OpenGLWrapper.cxx | 27 | ||||
-rw-r--r-- | vcl/source/opengl/OpenGLContext.cxx | 23 |
4 files changed, 17 insertions, 57 deletions
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk index b0804a05bf55..a9fe72fd73a4 100644 --- a/vcl/Library_vcl.mk +++ b/vcl/Library_vcl.mk @@ -106,10 +106,6 @@ $(eval $(call gb_Library_add_cxxflags,vcl,\ $(gb_OBJCXXFLAGS) \ )) -$(eval $(call gb_Library_add_exception_objects,vcl,\ - vcl/osx/OpenGLWrapper \ -)) - endif ifeq ($(ENABLE_JAVA),TRUE) diff --git a/vcl/inc/OpenGLWrapper.hxx b/vcl/inc/OpenGLWrapper.hxx deleted file mode 100644 index 9134801ea98a..000000000000 --- a/vcl/inc/OpenGLWrapper.hxx +++ /dev/null @@ -1,20 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#include "AppKit/NSOpenGLView.h" -#include "AppKit/NSOpenGL.h" - -namespace OpenGLWrapper -{ - void swapBuffers(NSOpenGLView* pView); - void makeCurrent(NSOpenGLView* pView); - void resetCurrent(); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/osx/OpenGLWrapper.cxx b/vcl/osx/OpenGLWrapper.cxx deleted file mode 100644 index fc008f41929d..000000000000 --- a/vcl/osx/OpenGLWrapper.cxx +++ /dev/null @@ -1,27 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - */ - -#include "OpenGLWrapper.hxx" - -void OpenGLWrapper::swapBuffers(NSOpenGLView* pView) -{ - [[pView openGLContext] flushBuffer]; -} - -void OpenGLWrapper::makeCurrent(NSOpenGLView* pView) -{ - [[pView openGLContext] makeCurrentContext]; -} - -void OpenGLWrapper::resetCurrent() -{ - [NSOpenGLContext clearCurrentContext]; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx index 82d987deeaae..bdd6a4e7e08e 100644 --- a/vcl/source/opengl/OpenGLContext.cxx +++ b/vcl/source/opengl/OpenGLContext.cxx @@ -11,6 +11,7 @@ #include <vcl/opengl/OpenGLContext.hxx> #include <vcl/opengl/OpenGLHelper.hxx> +#include <vcl/opengl/OpenGLWrapper.hxx> #include <vcl/syschild.hxx> #include <vcl/sysdata.hxx> @@ -22,7 +23,8 @@ #if defined(MACOSX) #include <premac.h> -#include "OpenGLWrapper.hxx" +#include <AppKit/NSOpenGLView.h> +#include <AppKit/NSOpenGL.h> #include <postmac.h> #endif @@ -49,6 +51,8 @@ static std::vector<GLXContext> g_vShareList; static std::vector<HGLRC> g_vShareList; #endif +static sal_Int64 nBufferSwapCounter = 0; + GLWindow::~GLWindow() { #if defined( UNX ) && !defined MACOSX && !defined IOS && !defined ANDROID && !defined(LIBO_HEADLESS) @@ -991,7 +995,7 @@ bool OpenGLContext::ImplInit() VCL_GL_INFO("OpenGLContext::ImplInit----start"); NSOpenGLView* pView = getOpenGLView(); - OpenGLWrapper::makeCurrent(pView); + [[pView openGLContext] makeCurrentContext]; bool bRet = InitGLEW(); InitGLEWDebugging(); @@ -1265,7 +1269,7 @@ void OpenGLContext::reset() m_aGLWin.hRC = 0; } #elif defined( MACOSX ) - OpenGLWrapper::resetCurrent(); + [NSOpenGLContext clearCurrentContext]; #elif defined( IOS ) || defined( ANDROID ) || defined(LIBO_HEADLESS) // nothing #elif defined( UNX ) @@ -1421,7 +1425,7 @@ void OpenGLContext::makeCurrent() } #elif defined( MACOSX ) NSOpenGLView* pView = getOpenGLView(); - OpenGLWrapper::makeCurrent(pView); + [[pView openGLContext] makeCurrentContext]; #elif defined( IOS ) || defined( ANDROID ) || defined(LIBO_HEADLESS) // nothing #elif defined( UNX ) @@ -1512,7 +1516,7 @@ void OpenGLContext::resetCurrent() wglMakeCurrent(NULL, NULL); #elif defined( MACOSX ) (void) this; // loplugin:staticmethods - OpenGLWrapper::resetCurrent(); + [NSOpenGLContext clearCurrentContext]; #elif defined( IOS ) || defined( ANDROID ) || defined(LIBO_HEADLESS) // nothing #elif defined( UNX ) @@ -1529,13 +1533,15 @@ void OpenGLContext::swapBuffers() SwapBuffers(m_aGLWin.hDC); #elif defined( MACOSX ) NSOpenGLView* pView = getOpenGLView(); - OpenGLWrapper::swapBuffers(pView); + [[pView openGLContext] flushBuffer]; #elif defined( IOS ) || defined( ANDROID ) || defined(LIBO_HEADLESS) // nothing #elif defined( UNX ) glXSwapBuffers(m_aGLWin.dpy, m_aGLWin.win); #endif + nBufferSwapCounter++; + static bool bSleep = getenv("SAL_GL_SLEEP_ON_SWAP"); if (bSleep) { @@ -1545,6 +1551,11 @@ void OpenGLContext::swapBuffers() } } +sal_Int64 OpenGLWrapper::getBufferSwapCounter() +{ + return nBufferSwapCounter; +} + void OpenGLContext::sync() { OpenGLZone aZone; |