skia2/resources
Mike Klein 0f61c12737 add used_in_loop bit to skvm::Builder::Instruction
Most hoisted values are used in the loop body (and that's really the
whole point of hoisting) but some are just temporaries to help produce
other hoisted values.  This used_in_loop bit helps us distinguish the
two, and lets us recycle registers holding temporary hoisted values not
used in the loop.

The can-we-recycle logic now becomes:
   - is this a real value?
   - is it time for it to die?
   - is it either not hoisted or a hoisted temporary?

The set-death-to-infinity approach for hoisted values is now gone.  That
worked great for hoisted values used inside the loop, but was too
conservative for hoisted temporaries.  This lifetime extension was
preventing us from recycling those registers, pinning enough registers
that we run out and fail to JIT.

Small amounts of refactoring to make this clearer:
   - move the Instruction hash function definition near its operator==
   - rename the two "hoist" variables to "can_hoist" for Instructions
     and "try_hoisting" for the JIT approach
   - add ↟ to mark hoisted temporaries, _really_ hoisted values.

There's some redundancy here between tracking the can_hoist bit, the
used_in_loop bit, and lifetime tracking.  I think it should be true, for
instance, that !can_hoist && !used_in_loop implies an instruction is
dead code.  I plan to continue refactoring lifetime analysis (in
particular reordering instructions to decrease register pressure) so
hopefully by the time I'm done that metadata will shake out a little
crisper.

Change-Id: I6460ca96d1cbec0315bed3c9a0774cd88ab5be26
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/248986
Commit-Queue: Mike Klein <mtklein@google.com>
Reviewed-by: Herb Derby <herb@google.com>
2019-10-16 18:29:06 +00:00
..
android_fonts Move lang to list in Android font manager. 2017-08-14 19:29:05 +00:00
empty_images Do not create an SkRawCodec with zero dimensions 2016-12-02 22:23:35 +00:00
fonts Add planet emoji font. 2019-03-19 17:49:22 +00:00
icc_profiles update ColorSpaceTest.cpp to remove MakeICC 2018-05-23 17:11:11 +00:00
images Initial version of rescaling async readback API 2019-05-17 16:39:10 +00:00
invalid_images Update piex and add test image 2018-02-22 21:32:48 +00:00
lua Update SampleLua and lua files. 2018-05-22 15:51:25 +00:00
nima skeletal animation support added to API and software backend 2018-06-29 19:34:28 +00:00
particles Interpreter: Reflect all uniform variables in ByteCode 2019-10-16 15:35:48 +00:00
skottie [skottie] Luma matte support 2019-10-16 13:17:51 +00:00
text Shaper Tests: make a macro, rename test resources. 2019-05-03 17:16:36 +00:00
Cowboy.svg Add animated cowboy sample from WebKit tests, and fix. 2017-09-25 21:14:09 +00:00
crbug769134.fil Avoid uninitialized memory in readByteArrayAsData 2017-09-28 19:51:32 +00:00
nov-talk-sequence.txt demo tweaks, scale up perlin, add call to flush for fps 2015-11-09 13:10:30 -08:00
pdf_command_stream.txt SkPDF/Bench: add bench for SkPDFSharedStream (deflate) 2016-02-24 15:17:20 -08:00
README Add animated cowboy sample from WebKit tests, and fix. 2017-09-25 21:14:09 +00:00
SkVMTest.expected add used_in_loop bit to skvm::Builder::Instruction 2019-10-16 18:29:06 +00:00

The resources directory includes some third party content used by Skia.
Licenses for that code are included in this file.

Openclipart

Openclipart uses the Creative Commons Zero 1.0 Public Domain License every time
an artist uploads a piece of clipart to Openclipart to make it clear the artist
is releasing the creative work for anyone to use for any reason, even
commercially. This act of "sharing" is the foundation Openclipart is based upon.
More details on the license can be found at
https://creativecommons.org/publicdomain/zero/1.0/.

LGPL or compatible (as implied by inclusion in KDE SVN)
http://websvn.kde.org/trunk/tests/ksvgtests/custom/cowboy.svg