skia2/tools/lua/paths.lua

125 lines
3.1 KiB
Lua

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