-- -- 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