You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
3.1 KiB
124 lines
3.1 KiB
-- |
|
-- 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
|
|
|