Change-Id: I4643cc4c1f75deab279625e752b9fee7da2e2779
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/539039
Reviewed-by: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
This simplifies the bot script slightly. More importantly, it means that
local developers don't need to remember to do this when building ANGLE
on Mac.
Cq-Include-Trybots: luci.skia.skia.primary:Test-Mac12-Clang-MacMini9.1-GPU-AppleM1-arm64-Release-All-ANGLE
Change-Id: Ia60cd07f15e3b447b58cfa1198ea26f68f72384b
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/539036
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: John Stiles <johnstiles@google.com>
Use if constexpr so that tracing code does not bit rot.
Change-Id: Ib85f79b53c6a48bb1b80a51e5539dbdf077802d8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538898
Reviewed-by: Ben Wagner <bungeman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
I was searching for urllib2 while resolving issues with
https://skia-review.googlesource.com/c/skia/+/538636
when I found several old, apparently unused scripts.
Rather than fix them, let's get rid of them. If they
are still in use, the conversion to urllib.request is
pretty easy.
Change-Id: I27d419601e81c93a3d53e280188a379dfab927c4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538936
Auto-Submit: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
Commit-Queue: Ravi Mistry <rmistry@google.com>
Reviewed-by: Ravi Mistry <rmistry@google.com>
Simplify the fields used by each, and simplify the CTORs in
the original SkGlyphRunPainter.
TODO: come up with a better no gpu method. Eventually, this
should be pure Sk. There is no need for GPU to make and
serialize a slug only to draw them.
Change-Id: I446fe0c285ae778a14b30e09c8a2cff3cd1a56c1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538896
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Move the SubRun buffers from the Paint to the Builder that is held
by the Canvas. This allows better sharing of the buffers, and enables
splitting the Painter into CPU and GPU.
Change-Id: I860441732b4042be0534af3d002d63ece02de8c5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538662
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
In theory all glyph representations including masks, paths and drawables
should keep a reference to the SkStrike which owns the actual data they
refer to. For paths this is worked around by always creating a copy of
the path (which is inexpensive) which itself simply reference counts the
underlying path data which is not directly owned by the SkStrike. For
masks it is impractical for every mask to hold a reference to the
SkStrike in any event as the pointer alone would often be larger than
the image. For drawables the implementation may be simply a pointer to
the scaler context and a glyph id. In theory each drawable could hold a
reference to the SkStrike, but potentially means a lot of references
when ensuring the SkStrike outlives any drawables it produces would be
more effecient.
This change ensures that the SkStrike is referenced while holding
references to drawables the SkStrike produced.
Bug: chromium:1322902
Change-Id: I6db8ae1bd614167da008caaff089e7d3e15aa9bb
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537980
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Isolate the buffers to move them from the Painter, where they are
situated on the Device(CPU) or SurfaceDrawContext(GPU), to the
Canvas. This will allow better sharing of the buffers, and the
splitting out of the CPU and GPU parts of the Painter.
Change-Id: Ie2a99dc7f9e784c4f00012b71ece5ff482687a88
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538660
Commit-Queue: Herb Derby <herb@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
Now that the painter has moved from a GlyphRun to a GlyphRunList,
handle the buffers at the GlyphRunList level only.
Change-Id: I37416c8b2164bbde207ecab0a77b419775d58e66
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538659
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Also updates a script with 2to3 to be python3-compatible.
Change-Id: I45981349664aef4491e7ab20e49889d461f8bf3f
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538417
Commit-Queue: James Godfrey-Kittle <jamesgk@google.com>
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Bug: skia:13263
Change-Id: I29e04ccc88a9ff2286c82302740e404aeba1b740
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/534669
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Change-Id: I43ca73d208334c71b393a4b6352b758c8c45ce27
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538045
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
For usages of constants in classes outside of skgpu::tess (e.g. when
using tessellation in skgpu::v1 or skgpu::graphite), the constants are
accessed with tess::. This is just to help with clarity since it scopes
the constant name. However, functions and types are still referred to
without that, and using namespace skgpu::tess is used to keep those
references simpler.
In headers, tess:: is added when there are only a few usages of the
types, or it's brought in as an alias.
Change-Id: I12af595659fe791de419db0393482dae6cd238e3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/534668
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
On a Linux x64 build, this saves ~17 KB of code size.
It also reliably makes all sksl_spirv_ benchmarks faster.
Change-Id: If4a0f7cc320eb73017791d2e09127f96addec629
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538044
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Rename processGlyphRun to categorizeGlyphRunList. Change processing
a single glyph run to processing the entire list. By taking
an SkGlyphRunList the code will have access to the buffers it needs
for processing when I move the buffers to the builder.
Clean up - remove some unneeded includes.
Change-Id: I2ce66292b7e63b9cbc63610ba9653b255417d7c1
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/538037
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
Calls to "python" won't work on vanilla MacOS installs (nor many
distributions of Linux), and AFAICT we're assuming it refers to python3
anyways.
xreadlines was removed in Python 3, and the suggested equivalent is to
use the file directly as an iterator:
https://docs.python.org/2.7/library/stdtypes.html#file.xreadlines
Change-Id: Iae51e3923e38ea63f857a17b9ff80e79871efee5
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537982
Reviewed-by: Kevin Lubick <kjlubick@google.com>
Commit-Queue: James Godfrey-Kittle <jamesgk@google.com>
Bug: 1320964
Change-Id: I5f05ea469b824b1382f64c1eb3fb9be0498cf329
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537517
Reviewed-by: Greg Daniel <egdaniel@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
The canvas contains the builder. By passing a pointer to the
builder with the GlyphRunList, we can add the machinety for
building SubRuns in future CLs.
Currently, all the buffers needed for building SubRuns are
maintained in the Device for CPU and the SurfaceDrawContext
for GPU. Because of the Layer mechanism in the API this means
we can have multiple sets of buffers. By moving the buffers to
the builder, there will be only one set, and the memory will
be hotter.
Change-Id: I47223b0dcfbab7d9b383d8410bb8d8e897706dd2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537776
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>
For additional context, see "Codifying Certain Build Options"
and "Building on the CI" in the design doc go/skia-bazel
Suggested review order:
- builder_name_schema.json to see the three required and
one optional part of BazelBuild jobs.
- jobs.json to see one new BazelBuild job added. In an
ideal world, this job would have been named
BazelBuild-//modules/canvaskit:canvaskit_wasm-debug-linux_x64
but Buildbucket (?) requires jobs match the regex
^[a-zA-Z0-9\\-_.\\(\\) ]{1,128}$
so we use spaces instead of slashes or colons.
- gen_tasks_logic.go; noting the makeBazelLabel function
expands most of the spaces to / and the last one to a
colon to make a single-target label. If there are three
dots, then it is a multi-target label, and we do not
need to add a colon.
- bazel_build.go; This is a very simple task driver, and
I do not anticipate getting too much more complex.
The place where we decide which args to augment
a build with depend on the host platform and thus
should be set in gen_tasks_logic.go.
- bazel/buildrc to see some initial configurations set,
one of which, "debug", is used by the new job.
The "release" version of CanvasKit probably works on
3.1.10 which had a bugfix, but we are still on
3.1.9
- .bazelrc to see a rename of the linux-rbe config to
linux_rbe (our configs should have no dashes if
we want to specify them verbatim in our Job names).
It also imports the Skia-specified build configs
from //bazel/buildrc and supports the user-specified
//bazel/user/buildrc file if it exists.
- All other files in any order.
Change-Id: Ib954dd6045100eadcbbf4ffee0888f6fbce65fa7
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537797
Reviewed-by: Eric Boren <borenet@google.com>
Reviewed-by: Jorge Betancourt <jmbetancourt@google.com>
This is a reland of commit 094bcdb9e5
Original change's description:
> [infra] Use Python3 for our Presubmits
>
> https://source.chromium.org/chromium/chromium/tools/depot_tools/+/main:presubmit_support.py;l=319;drc=443d9135cc33f3156d5fe25ebec33f9adffbab65
>
> This also makes any errors from `make train -C infra/bots`
> look well formatted because check_output returns a bytestring
> in Python3 and when that is printed, the newlines et al are not
> rendered correctly. Thus we want the output of check_output
> to be encoded to UTF-8.
>
> Without setting the USE_PYTHON3 = True in PRESUBMIT.py,
> it appears that `git cl upload` would try to run our
> infra_tests.py in Python2 mode, which does not have
> the encoding argument for check_output.
>
> Apparently cipd_bin_packages/vpython3 does not have the
> "six" package installed (but cipd_bin_packages/vpython does)
> so I replaced the six.StringIO with io.StringIO, which
> is where that is located in Python3.
>
> Change-Id: Ic8f61bf943531583ba3d110a85260d69bdbf5eb2
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537677
> Reviewed-by: Ravi Mistry <rmistry@google.com>
> Reviewed-by: Eric Boren <borenet@google.com>
Change-Id: Ia7fb2f3b6d8b70ca95cf10763782d4a0122053e0
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537978
Reviewed-by: Eric Boren <borenet@google.com>
Commit-Queue: Kevin Lubick <kjlubick@google.com>
I don't know if we ever actually used this feature. Removing it removes
and needless loop over all the render tasks.
Change-Id: Ife8014c45a34fdec743227dea09e440e0d1d9ea3
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537516
Commit-Queue: Robert Phillips <robertphillips@google.com>
Reviewed-by: Greg Daniel <egdaniel@google.com>
9865ed8b81..1d5d09e419
2022-05-06 syoussefi@chromium.org Vulkan: Prefer MAILBOX over IMMEDIATE present mode
2022-05-05 cclao@google.com Vulkan: Reduce kMaxBufferToImageCopySize to 64M
2022-05-05 cclao@google.com Vulkan: Limit the total bytes of suballocation garbages in flight
2022-05-05 lubosz.sarnecki@collabora.com FramebufferTest: Add FramebufferChangeTest test.
2022-05-05 cnorthrop@google.com Scripts: Strip prebuilt debug APK from AOSP roll
2022-05-05 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 1c301e690de1 to 7a60295b6324 (184 revisions)
2022-05-05 cclao@google.com Vulkan: Force prune when there are lots of suballocations destroyed
2022-05-05 boliu@google.com Remove limit_max_texture_size_to_4096 workaround
2022-05-05 cclao@google.com Vulkan: Use heuristic to decide how many empty buffers to keep
2022-05-05 lubosz.sarnecki@collabora.com Tests: Add Alto's Odyssey trace.
2022-05-05 pkasting@chromium.org Fixes for C++20 support.
2022-05-05 abdolrashidi@google.com Vulkan: Set timeout for MultiContextDrawWithSwap*
2022-05-05 angle-autoroll@skia-public.iam.gserviceaccount.com Roll Chromium from 6db3a94387ed to 1c301e690de1 (550 revisions)
2022-05-05 ynovikov@chromium.org Decommission win7-x86-amd and win7-x64-nvidia
If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/angle-skia-autoroll
Please CC jlavrova@google.com on the revert to ensure that a human
is aware of the problem.
To file a bug in ANGLE: https://bugs.chromium.org/p/angleproject/issues/entry
To file a bug in Skia: https://bugs.chromium.org/p/skia/issues/entry
To report a problem with the AutoRoller itself, please file a bug:
https://bugs.chromium.org/p/skia/issues/entry?template=Autoroller+Bug
Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Cq-Include-Trybots: skia/skia.primary:Build-Debian10-Clang-x86_64-Release-ANGLE;skia/skia.primary:Test-Win10-Clang-AlphaR2-GPU-RadeonR9M470X-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-Golo-GPU-QuadroP400-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC5i7RYH-GPU-IntelIris6100-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC6i5SYK-GPU-IntelIris540-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUC8i5BEK-GPU-IntelIris655-x86_64-Debug-All-ANGLE;skia/skia.primary:Test-Win10-Clang-NUCD34010WYKH-GPU-IntelHD4400-x86_64-Debug-All-ANGLE
Tbr: jlavrova@google.com
Test: Test: ./scripts/roll_aosp.sh and inspect //build
Test: Test: angle_end2end_tests --gtest_filter="FramebufferTest_ES3.FramebufferChangeTest/*"
Test: Test: angle_perftests --gtest_filter="*altos_odyssey*"
Change-Id: I9fb3e027c895be626e0385dcc533a8e56f71c582
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537900
Commit-Queue: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
Bot-Commit: skia-autoroll <skia-autoroll@skia-public.iam.gserviceaccount.com>
The client passes a GrDirectContext* when creating a vertex or index
buffer. The data is copied to a GPU accessible buffer object
and the client gets a Skia object that may only be used with the GrDirectContext. The GPU backend draws directly from the buffer, thereby
avoiding the per-draw copy cost.
The underlying Ganesh object is freed in a thread-safe manner using an
existing message bus to perform a delayed unref in GrResourceCache.
Bug: skia:12720
Change-Id: If2578fbbf094874967a294a095b3bc5d7616d73a
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/527918
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Change-Id: I2374fd376f3038e59c82f57c68ac13557058de8d
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/534663
Reviewed-by: Robert Phillips <robertphillips@google.com>
Reviewed-by: Jim Van Verth <jvanverth@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
This reverts commit 094bcdb9e5.
Reason for revert: Breaking Housekeeper-PerCommit-InfraTests_Linux. The bot will have to be updated as part of this change.
Original change's description:
> [infra] Use Python3 for our Presubmits
>
> https://source.chromium.org/chromium/chromium/tools/depot_tools/+/main:presubmit_support.py;l=319;drc=443d9135cc33f3156d5fe25ebec33f9adffbab65
>
> This also makes any errors from `make train -C infra/bots`
> look well formatted because check_output returns a bytestring
> in Python3 and when that is printed, the newlines et al are not
> rendered correctly. Thus we want the output of check_output
> to be encoded to UTF-8.
>
> Without setting the USE_PYTHON3 = True in PRESUBMIT.py,
> it appears that `git cl upload` would try to run our
> infra_tests.py in Python2 mode, which does not have
> the encoding argument for check_output.
>
> Apparently cipd_bin_packages/vpython3 does not have the
> "six" package installed (but cipd_bin_packages/vpython does)
> so I replaced the six.StringIO with io.StringIO, which
> is where that is located in Python3.
>
> Change-Id: Ic8f61bf943531583ba3d110a85260d69bdbf5eb2
> Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537677
> Reviewed-by: Ravi Mistry <rmistry@google.com>
> Reviewed-by: Eric Boren <borenet@google.com>
Change-Id: I0becb25d155ce0b0281c25d83662f1b01aee8033
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537777
Bot-Commit: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Commit-Queue: Rubber Stamper <rubber-stamper@appspot.gserviceaccount.com>
Auto-Submit: Ravi Mistry <rmistry@google.com>
In general, we drop the entire flush when we detect an allocation
failure. This CL makes an allocation failure in the flush-time preFlush
call also drop the entire flush.
Bug: 1320964
Change-Id: Idd2e24fbf5d2083c4fec8de7ccd028897a239b33
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/536837
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Robert Phillips <robertphillips@google.com>
The HW stroke tessellator had subclassed PatchWriter and called
writePatch() directly. Now the fixed-count variants all just use
the trait templates to configure PatchWriter directly.
Bug: skia:13263, skia:13056
Change-Id: I51c674968fe46974b217069909d71446a0d829c9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/534568
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
There had been plumbing for variable amounts of segments throughout
the patch writers and shaders because HW tessellation had to limit it
based on what the GPU could handle in its tessellation pipeline.
Now that everything just uses the fixed count approach, we can keep it
all as constants. I considered letting it remain parameterized in the
event we wanted ganesh and graphite to diverge, but figured it was
better to have consistent handling of paths.
Bug: skia:13263, skia:13056
Change-Id: I351d5d762bdab47e4091b18efbd857ac1e500be4
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/534567
Commit-Queue: Michael Ludwig <michaelludwig@google.com>
Reviewed-by: Robert Phillips <robertphillips@google.com>
https://source.chromium.org/chromium/chromium/tools/depot_tools/+/main:presubmit_support.py;l=319;drc=443d9135cc33f3156d5fe25ebec33f9adffbab65
This also makes any errors from `make train -C infra/bots`
look well formatted because check_output returns a bytestring
in Python3 and when that is printed, the newlines et al are not
rendered correctly. Thus we want the output of check_output
to be encoded to UTF-8.
Without setting the USE_PYTHON3 = True in PRESUBMIT.py,
it appears that `git cl upload` would try to run our
infra_tests.py in Python2 mode, which does not have
the encoding argument for check_output.
Apparently cipd_bin_packages/vpython3 does not have the
"six" package installed (but cipd_bin_packages/vpython does)
so I replaced the six.StringIO with io.StringIO, which
is where that is located in Python3.
Change-Id: Ic8f61bf943531583ba3d110a85260d69bdbf5eb2
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537677
Reviewed-by: Ravi Mistry <rmistry@google.com>
Reviewed-by: Eric Boren <borenet@google.com>
This, combined with moving the def for GlyphVector::regenerateAtlas to
a Ganesh-only cpp file, allows us to move GlyphVector into the shared
gpu GN group.
Bug: skia:13118
Change-Id: I59b91f8406ac31f105f10fcddf6d0076d35c5bd9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537459
Commit-Queue: Jim Van Verth <jvanverth@google.com>
Reviewed-by: Herb Derby <herb@google.com>
Starting with Visual Studio 2019 version 16.9 (msvc++ 14.28,
__MSC_VER 1928) has support for it's own version of AddressSanitizer.
Change-Id: I106b7e765ac80e4fc6eabd5b88500cbec5e38714
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537461
Reviewed-by: Brian Osman <brianosman@google.com>
Commit-Queue: Ben Wagner <bungeman@google.com>
Any settings in the FreeType build which may modify the public FreeType
headers must be public_defines. Otherwise FreeType may be built one way
and the dependents on this target may be built with what are essentially
different headers.
This fixes the Skia build with built-in FreeType on Windows.
Change-Id: I6b317fbe491dd6fdd135928b6f50436102a1e281
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537460
Commit-Queue: Herb Derby <herb@google.com>
Auto-Submit: Ben Wagner <bungeman@google.com>
Reviewed-by: Herb Derby <herb@google.com>
In preparation for making GlyphRunList handle the drawing buffers.
When handling the drawing buffers, there will no longer be
an empty glyph run list.
Change-Id: I7b3ff1bffc5e684515daabfa7601df0e107082f9
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/537458
Reviewed-by: Robert Phillips <robertphillips@google.com>
Commit-Queue: Herb Derby <herb@google.com>