vcl/opengl/win/gdiimpl.cxx |   15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

New commits:
commit e971a7192c81c4db84192c6a545dc045aab1a37d
Author: Tor Lillqvist <t...@collabora.com>
Date:   Tue May 31 16:11:35 2016 +0300

    tdf#100159: Use shader preambles as needed, add missing shader combinations
    
    Some shaders are in some cases (or always?) compiled with a preamble,
    so add that then as applicable when compiling and caching them in
    advance.
    
    Add a few shader combinations that I hadn't noticed.
    
    Change-Id: Ib66027e03a36cd4b161fe9f57ceaa338f9fb042d

diff --git a/vcl/opengl/win/gdiimpl.cxx b/vcl/opengl/win/gdiimpl.cxx
index 163d2db..6c4f7f6 100644
--- a/vcl/opengl/win/gdiimpl.cxx
+++ b/vcl/opengl/win/gdiimpl.cxx
@@ -353,7 +353,7 @@ bool InitMultisample(const PIXELFORMATDESCRIPTOR& pfd, int& 
rPixelFormat,
 namespace
 {
 
-bool tryShaders(const OUString& rVertexShader, const OUString& 
rFragmentShader, const OUString& rGeometryShader = "")
+bool tryShaders(const OUString& rVertexShader, const OUString& 
rFragmentShader, const OUString& rGeometryShader = "", const OString& rPreamble 
= "")
 {
     GLint nId;
 
@@ -362,9 +362,14 @@ bool tryShaders(const OUString& rVertexShader, const 
OUString& rFragmentShader,
     // only of the combination of vertex and fragment (but not geometry) 
shader. So if we have a
     // geometry shader, we should not save the binary.
     if (rGeometryShader.isEmpty())
-        nId = OpenGLHelper::LoadShaders(rVertexShader, rFragmentShader, 
rGeometryShader, "", OpenGLHelper::GetDigest( rVertexShader, rFragmentShader, 
""));
+    {
+        nId = OpenGLHelper::LoadShaders(rVertexShader, rFragmentShader, 
rPreamble, OpenGLHelper::GetDigest( rVertexShader, rFragmentShader, rPreamble));
+    }
     else
+    {
+        assert(rPreamble.isEmpty());
         nId = OpenGLHelper::LoadShaders(rVertexShader, rFragmentShader, 
rGeometryShader);
+    }
     if (!nId)
         return false;
     glDeleteProgram(nId);
@@ -420,11 +425,17 @@ bool compiledShaderBinariesWork()
          tryShaders("textureVertexShader", "areaScaleFragmentShader") &&
          tryShaders("transformedTextureVertexShader", 
"maskedTextureFragmentShader") &&
          tryShaders("transformedTextureVertexShader", 
"areaScaleFastFragmentShader") &&
+         tryShaders("transformedTextureVertexShader", 
"areaScaleFastFragmentShader", "", "#define MASKED") &&
          tryShaders("transformedTextureVertexShader", 
"areaScaleFragmentShader") &&
+         tryShaders("transformedTextureVertexShader", 
"areaScaleFragmentShader", "", "#define MASKED") &&
          tryShaders("transformedTextureVertexShader", "textureFragmentShader") 
&&
          tryShaders("combinedTextureVertexShader", 
"combinedTextureFragmentShader") &&
+         tryShaders("combinedTextureVertexShader", 
"combinedTextureFragmentShader", "", "// flush shader\n") &&
          tryShaders("textureVertexShader", "linearGradientFragmentShader") &&
          tryShaders("textureVertexShader", "radialGradientFragmentShader") &&
+         tryShaders("textureVertexShader", "areaHashCRC64TFragmentShader") &&
+         tryShaders("textureVertexShader", "replaceColorFragmentShader") &&
+         tryShaders("textureVertexShader", "greyscaleFragmentShader") &&
          tryShaders("textureVertexShader", "textureFragmentShader") &&
          tryShaders("textureVertexShader", "convolutionFragmentShader") &&
          tryShaders("textureVertexShader", "areaScaleFastFragmentShader") &&
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to