vcl/inc/opengl/program.hxx | 5 +++++ vcl/opengl/program.cxx | 13 ++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-)
New commits: commit 0efe8c5c3c6c417636d31ab6e02d5066ebd6dd2b Author: Lubosz Sarnecki <lubosz.sarne...@collabora.co.uk> Date: Thu Aug 20 16:22:43 2015 +0200 vcl OpenGL program: Cache mvp matrix to reduce ~200 api calls per frame. Change-Id: I86ae50bd8d2148e86a6c8fc0821d3e2bc29a0cd4 (cherry picked from commit e3cd97ce0b2e153b8b6812cc66f2e7d33504a7da) Reviewed-on: https://gerrit.libreoffice.org/18006 Reviewed-by: Tomaž Vajngerl <qui...@gmail.com> Tested-by: Tomaž Vajngerl <qui...@gmail.com> diff --git a/vcl/inc/opengl/program.hxx b/vcl/inc/opengl/program.hxx index 5ca9aff..0f0f9a5 100644 --- a/vcl/inc/opengl/program.hxx +++ b/vcl/inc/opengl/program.hxx @@ -39,6 +39,11 @@ private: TextureList maTextures; bool mbBlending; + float mfLastWidth; + float mfLastHeight; + float mfLastPixelOffset; + + OpenGLProgram(const OpenGLProgram &) SAL_DELETED_FUNCTION; public: OpenGLProgram(); diff --git a/vcl/opengl/program.cxx b/vcl/opengl/program.cxx index 3bfa6c2..5f9d276 100644 --- a/vcl/opengl/program.cxx +++ b/vcl/opengl/program.cxx @@ -21,7 +21,10 @@ OpenGLProgram::OpenGLProgram() : mnPositionAttrib( SAL_MAX_UINT32 ), mnTexCoordAttrib( SAL_MAX_UINT32 ), mnAlphaCoordAttrib( SAL_MAX_UINT32 ), - mbBlending( false ) + mbBlending( false ), + mfLastWidth(0.0), + mfLastHeight(0.0), + mfLastPixelOffset(0.0) { } @@ -241,6 +244,14 @@ void OpenGLProgram::SetTransform( void OpenGLProgram::ApplyMatrix(float fWidth, float fHeight, float fPixelOffset) { + + if (mfLastWidth == fWidth && mfLastHeight == fHeight && mfLastPixelOffset == fPixelOffset) + return; + + mfLastWidth = fWidth; + mfLastHeight = fHeight; + mfLastPixelOffset = fPixelOffset; + OString sProjectionMatrix("mvp"); GLuint nUniform = GetUniformLocation(sProjectionMatrix);
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits