Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / third_party / skia / tools / lua / paths.lua
1 --
2 -- Copyright 2014 Google Inc.
3 --
4 -- Use of this source code is governed by a BSD-style license that can be
5 -- found in the LICENSE file.
6 --
7
8 -- Path scraping script.
9 -- This script is designed to count the number of times we fall back to software
10 -- rendering for a path in a given SKP. However, this script does not count an exact
11 -- number of uploads, since there is some overlap with clipping: e.g. two clipped paths
12 -- may cause three uploads to the GPU (set clip 1, set clip 2, unset clip 2/reset clip 1),
13 -- but these cases are rare.
14
15 draws = 0
16 drawPaths = 0
17 drawPathsAnti = 0
18 drawPathsConvexAnti = 0
19
20 clips = 0
21 clipPaths = 0
22 clipPathsAnti = 0
23 clipPathsConvexAnti = 0
24
25 usedPath = false
26 usedSWPath = false
27
28 skpsTotal = 0
29 skpsWithPath = 0
30 skpsWithSWPath = 0
31
32 function sk_scrape_startcanvas(c, fileName)
33    usedPath = false
34    usedSWPath = false
35 end
36
37 function sk_scrape_endcanvas(c, fileName)
38    skpsTotal = skpsTotal + 1
39    if usedPath then
40       skpsWithPath = skpsWithPath + 1
41       if usedSWPath then
42          skpsWithSWPath = skpsWithSWPath + 1
43       end
44    end
45 end
46
47 function string.starts(String,Start)
48    return string.sub(String,1,string.len(Start))==Start
49 end
50
51 function isPathValid(path)
52    if not path then
53       return false
54    end
55
56    if path:isEmpty() then
57       return false
58    end
59
60    if path:isRect() then
61       return false
62    end
63
64    return true
65 end
66
67 function sk_scrape_accumulate(t)
68    if (string.starts(t.verb, "draw")) then
69       draws = draws + 1
70    end
71
72    if (string.starts(t.verb, "clip")) then
73       clips = clips + 1
74    end
75
76    if t.verb == "clipPath" then
77       local path = t.path
78       if isPathValid(path) then
79          clipPaths = clipPaths + 1
80          usedPath = true
81          if t.aa then
82             clipPathsAnti = clipPathsAnti + 1
83             if path:isConvex() then
84                clipPathsConvexAnti = clipPathsConvexAnti + 1
85             else
86                usedSWPath = true
87             end
88          end
89       end
90    end
91
92    if t.verb == "drawPath" then
93       local path = t.path
94       local paint = t.paint
95       if paint and isPathValid(path) then
96          drawPaths = drawPaths + 1
97          usedPath = true
98          if paint:isAntiAlias() then
99             drawPathsAnti = drawPathsAnti + 1
100             if path:isConvex() then
101                drawPathsConvexAnti = drawPathsConvexAnti + 1
102             else
103                usedSWPath = true
104             end
105          end
106       end
107    end
108 end
109
110 function sk_scrape_summarize() 
111    local swDrawPaths = drawPathsAnti - drawPathsConvexAnti
112    local swClipPaths = clipPathsAnti - clipPathsConvexAnti
113
114    io.write("clips = clips + ", clips, "\n");
115    io.write("draws = draws + ", draws, "\n");
116    io.write("clipPaths = clipPaths + ", clipPaths, "\n");
117    io.write("drawPaths = drawPaths + ", drawPaths, "\n");
118    io.write("swClipPaths = swClipPaths + ", swClipPaths, "\n");
119    io.write("swDrawPaths = swDrawPaths + ", swDrawPaths, "\n");
120
121    io.write("skpsTotal = skpsTotal + ", skpsTotal, "\n");
122    io.write("skpsWithPath = skpsWithPath + ", skpsWithPath, "\n");
123    io.write("skpsWithSWPath = skpsWithSWPath + ", skpsWithSWPath, "\n");
124 end