summaryrefslogtreecommitdiff
path: root/external/skia/constexpr-debug-std-max.patch.1
blob: 9f3784836c7015397fd8663975903616bf878671 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
diff --git a/src/shaders/SkImageShader.cpp b/src/shaders/SkImageShader.cpp
index 52dda13e29..cafe2e672a 100755
--- a/src/shaders/SkImageShader.cpp
+++ b/src/shaders/SkImageShader.cpp
@@ -322,6 +322,18 @@ sk_sp<SkShader> SkImageShader::Make(sk_sp<SkImage> image, SkTileMode tmx, SkTile
 #include "src/gpu/effects/GrBlendFragmentProcessor.h"
 #include "src/gpu/effects/GrTextureEffect.h"
 
+namespace {
+template<typename T>
+constexpr T skia_max( std::initializer_list<T> list )
+{
+T max = *list.begin();
+for(auto i: list)
+    if( max < i )
+        max = i;
+return max;
+}
+}
+
 std::unique_ptr<GrFragmentProcessor> SkImageShader::asFragmentProcessor(
         const GrFPArgs& args) const {
     const auto lm = this->totalLocalMatrix(args.fPreLocalMatrix);
@@ -331,11 +343,11 @@ std::unique_ptr<GrFragmentProcessor> SkImageShader::asFragmentProcessor(
     }
 
     // This would all be much nicer with std::variant.
-    static constexpr size_t kSize = std::max({sizeof(GrYUVAImageTextureMaker),
+    static constexpr size_t kSize = skia_max({sizeof(GrYUVAImageTextureMaker),
                                               sizeof(GrTextureAdjuster      ),
                                               sizeof(GrImageTextureMaker    ),
                                               sizeof(GrBitmapTextureMaker   )});
-    static constexpr size_t kAlign = std::max({alignof(GrYUVAImageTextureMaker),
+    static constexpr size_t kAlign = skia_max({alignof(GrYUVAImageTextureMaker),
                                                alignof(GrTextureAdjuster      ),
                                                alignof(GrImageTextureMaker    ),
                                                alignof(GrBitmapTextureMaker   )});
diff --git a/src/sksl/SkSLASTNode.h b/src/sksl/SkSLASTNode.h
index 5922cd5fb3..17a877ee21 100644
--- a/src/sksl/SkSLASTNode.h
+++ b/src/sksl/SkSLASTNode.h
@@ -17,6 +17,18 @@
 
 namespace SkSL {
 
+namespace {
+template<typename T>
+constexpr T skia_max( std::initializer_list<T> list )
+{
+T max = *list.begin();
+for(auto i: list)
+    if( max < i )
+        max = i;
+return max;
+}
+}
+
 /**
  * Represents a node in the abstract syntax tree (AST). The AST is based directly on the parse tree;
  * it is a parsed-but-not-yet-analyzed version of the program.
@@ -263,7 +275,7 @@ struct ASTNode {
     };
 
     struct NodeData {
-        char fBytes[std::max({sizeof(Token),
+        char fBytes[skia_max({sizeof(Token),
                               sizeof(StringFragment),
                               sizeof(bool),
                               sizeof(SKSL_INT),