blob: 0fa65288e1ccd91bd7f5cbaf3adc098e3cc1a9ee [file] [log] [blame]
krajcevski0f149e52014-08-18 07:52:25 -07001--
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
15draws = 0
16drawPaths = 0
17drawPathsAnti = 0
18drawPathsConvexAnti = 0
19
20clips = 0
21clipPaths = 0
22clipPathsAnti = 0
23clipPathsConvexAnti = 0
24
25usedPath = false
26usedSWPath = false
27
28skpsTotal = 0
29skpsWithPath = 0
30skpsWithSWPath = 0
31
32function sk_scrape_startcanvas(c, fileName)
33 usedPath = false
34 usedSWPath = false
35end
36
37function 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
45end
46
47function string.starts(String,Start)
48 return string.sub(String,1,string.len(Start))==Start
49end
50
51function 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
65end
66
67function 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
108end
109
110function 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");
124end