From 3f73cfdf5c721b250910cd220e54d53e3311840b Mon Sep 17 00:00:00 2001 From: Marco Cecchetti Date: Sun, 13 Sep 2015 12:15:13 +0200 Subject: tdf#93814: Added support for caching shader program binaries. Change-Id: I21c844b47282f6b3eec443933a86421a074e24df --- include/vcl/opengl/OpenGLContext.hxx | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'include/vcl/opengl/OpenGLContext.hxx') diff --git a/include/vcl/opengl/OpenGLContext.hxx b/include/vcl/opengl/OpenGLContext.hxx index ecc503829051..b2aaa173ea3a 100644 --- a/include/vcl/opengl/OpenGLContext.hxx +++ b/include/vcl/opengl/OpenGLContext.hxx @@ -55,10 +55,13 @@ class NSOpenGLView; #include #include #include +#include #include #include +#include #include +#include class OpenGLFramebuffer; class OpenGLProgram; @@ -271,15 +274,16 @@ private: OpenGLFramebuffer* mpFirstFramebuffer; OpenGLFramebuffer* mpLastFramebuffer; - struct ProgramKey + struct ProgramHash { - ProgramKey( const OUString& vertexShader, const OUString& fragmentShader, const OString& preamble ); - bool operator< ( const ProgramKey& other ) const; - OUString vertexShader; - OUString fragmentShader; - OString preamble; + size_t operator()( const rtl::OString& aDigest ) const + { + return (size_t)( rtl_crc32( 0, aDigest.getStr(), aDigest.getLength() ) ); + } }; - std::map > maPrograms; + + typedef std::unordered_map< rtl::OString, std::shared_ptr, ProgramHash > ProgramCollection; + ProgramCollection maPrograms; OpenGLProgram* mpCurrentProgram; #ifdef DBG_UTIL std::set maParents; -- cgit v1.2.3