| Index: tools/lua/paths.lua
|
| diff --git a/tools/lua/paths.lua b/tools/lua/paths.lua
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0fa65288e1ccd91bd7f5cbaf3adc098e3cc1a9ee
|
| --- /dev/null
|
| +++ b/tools/lua/paths.lua
|
| @@ -0,0 +1,124 @@
|
| +--
|
| +-- Copyright 2014 Google Inc.
|
| +--
|
| +-- Use of this source code is governed by a BSD-style license that can be
|
| +-- found in the LICENSE file.
|
| +--
|
| +
|
| +-- Path scraping script.
|
| +-- This script is designed to count the number of times we fall back to software
|
| +-- rendering for a path in a given SKP. However, this script does not count an exact
|
| +-- number of uploads, since there is some overlap with clipping: e.g. two clipped paths
|
| +-- may cause three uploads to the GPU (set clip 1, set clip 2, unset clip 2/reset clip 1),
|
| +-- but these cases are rare.
|
| +
|
| +draws = 0
|
| +drawPaths = 0
|
| +drawPathsAnti = 0
|
| +drawPathsConvexAnti = 0
|
| +
|
| +clips = 0
|
| +clipPaths = 0
|
| +clipPathsAnti = 0
|
| +clipPathsConvexAnti = 0
|
| +
|
| +usedPath = false
|
| +usedSWPath = false
|
| +
|
| +skpsTotal = 0
|
| +skpsWithPath = 0
|
| +skpsWithSWPath = 0
|
| +
|
| +function sk_scrape_startcanvas(c, fileName)
|
| + usedPath = false
|
| + usedSWPath = false
|
| +end
|
| +
|
| +function sk_scrape_endcanvas(c, fileName)
|
| + skpsTotal = skpsTotal + 1
|
| + if usedPath then
|
| + skpsWithPath = skpsWithPath + 1
|
| + if usedSWPath then
|
| + skpsWithSWPath = skpsWithSWPath + 1
|
| + end
|
| + end
|
| +end
|
| +
|
| +function string.starts(String,Start)
|
| + return string.sub(String,1,string.len(Start))==Start
|
| +end
|
| +
|
| +function isPathValid(path)
|
| + if not path then
|
| + return false
|
| + end
|
| +
|
| + if path:isEmpty() then
|
| + return false
|
| + end
|
| +
|
| + if path:isRect() then
|
| + return false
|
| + end
|
| +
|
| + return true
|
| +end
|
| +
|
| +function sk_scrape_accumulate(t)
|
| + if (string.starts(t.verb, "draw")) then
|
| + draws = draws + 1
|
| + end
|
| +
|
| + if (string.starts(t.verb, "clip")) then
|
| + clips = clips + 1
|
| + end
|
| +
|
| + if t.verb == "clipPath" then
|
| + local path = t.path
|
| + if isPathValid(path) then
|
| + clipPaths = clipPaths + 1
|
| + usedPath = true
|
| + if t.aa then
|
| + clipPathsAnti = clipPathsAnti + 1
|
| + if path:isConvex() then
|
| + clipPathsConvexAnti = clipPathsConvexAnti + 1
|
| + else
|
| + usedSWPath = true
|
| + end
|
| + end
|
| + end
|
| + end
|
| +
|
| + if t.verb == "drawPath" then
|
| + local path = t.path
|
| + local paint = t.paint
|
| + if paint and isPathValid(path) then
|
| + drawPaths = drawPaths + 1
|
| + usedPath = true
|
| + if paint:isAntiAlias() then
|
| + drawPathsAnti = drawPathsAnti + 1
|
| + if path:isConvex() then
|
| + drawPathsConvexAnti = drawPathsConvexAnti + 1
|
| + else
|
| + usedSWPath = true
|
| + end
|
| + end
|
| + end
|
| + end
|
| +end
|
| +
|
| +function sk_scrape_summarize()
|
| + local swDrawPaths = drawPathsAnti - drawPathsConvexAnti
|
| + local swClipPaths = clipPathsAnti - clipPathsConvexAnti
|
| +
|
| + io.write("clips = clips + ", clips, "\n");
|
| + io.write("draws = draws + ", draws, "\n");
|
| + io.write("clipPaths = clipPaths + ", clipPaths, "\n");
|
| + io.write("drawPaths = drawPaths + ", drawPaths, "\n");
|
| + io.write("swClipPaths = swClipPaths + ", swClipPaths, "\n");
|
| + io.write("swDrawPaths = swDrawPaths + ", swDrawPaths, "\n");
|
| +
|
| + io.write("skpsTotal = skpsTotal + ", skpsTotal, "\n");
|
| + io.write("skpsWithPath = skpsWithPath + ", skpsWithPath, "\n");
|
| + io.write("skpsWithSWPath = skpsWithSWPath + ", skpsWithSWPath, "\n");
|
| +end
|
|
|