|
|
Created:
4 years, 5 months ago by vjiaoblack Modified:
4 years, 5 months ago CC:
reviews_skia.org Base URL:
https://skia.googlesource.com/skia@master Target Ref:
refs/heads/master Project:
skia Visibility:
Public. |
DescriptionCreating framework for drawShadowedPicture
GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003
Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a
Committed: https://skia.googlesource.com/skia/+/95302da19d8b0a3bcd9d9be0e79f486760787f09
Committed: https://skia.googlesource.com/skia/+/5bfee98c8cf59db8d71aa6672088b107f0abf8c9
Patch Set 1 #
Total comments: 2
Patch Set 2 : Fixed 'const sk_sp<SkLights>', also fixed some crumbs from merging #
Total comments: 6
Patch Set 3 : Edited code to meet requirements discussed in discussion #Patch Set 4 : Added setLights and getLIghts calls #
Total comments: 10
Patch Set 5 : Made req. changes #Patch Set 6 : Removed files under testing. #Patch Set 7 : Missed error #
Total comments: 8
Patch Set 8 : Made req changes #
Total comments: 2
Patch Set 9 : Fixed comment. #
Total comments: 2
Patch Set 10 : Made a few more chanage #Patch Set 11 : ugh #Patch Set 12 : Made changes to better hide changes from public #
Total comments: 8
Patch Set 13 : Modified the defines #Patch Set 14 : removed from gyp/core.gypi #Patch Set 15 : Fixed case error #Patch Set 16 : bugfix #Patch Set 17 : Merged with master #Patch Set 18 : removed redundant code #
Messages
Total messages: 68 (35 generated)
Description was changed from ========== First attempt at writing framework for drawShadowedPicture ========== to ========== First attempt at writing framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 ==========
vjiaoblack@google.com changed reviewers: + bsalomon@google.com, jvanverth@google.com, reed@google.com, robertphillips@google.com
https://codereview.chromium.org/2146073003/diff/1/include/core/SkCanvas.h File include/core/SkCanvas.h (right): https://codereview.chromium.org/2146073003/diff/1/include/core/SkCanvas.h#new... include/core/SkCanvas.h:1059: void drawShadowedPicture(const sk_sp<SkPicture>& picture, const sk_sp<SkLights> lights) { api nit: don't use const on 2nd parameter.
Description was changed from ========== First attempt at writing framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 ========== to ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 ==========
https://codereview.chromium.org/2146073003/diff/1/include/core/SkCanvas.h File include/core/SkCanvas.h (right): https://codereview.chromium.org/2146073003/diff/1/include/core/SkCanvas.h#new... include/core/SkCanvas.h:1059: void drawShadowedPicture(const sk_sp<SkPicture>& picture, const sk_sp<SkLights> lights) { On 2016/07/14 14:25:13, reed1 wrote: > api nit: don't use const on 2nd parameter. Done.
Some comments: https://codereview.chromium.org/2146073003/diff/20001/include/core/SkCanvas.h File include/core/SkCanvas.h (right): https://codereview.chromium.org/2146073003/diff/20001/include/core/SkCanvas.h... include/core/SkCanvas.h:1056: * However, this time, we will use the passed-in lights to generate shadows! This is a little too vague. Suggestion: Will use the list of lights and the picture content to generate shadow maps for each light. Even that might not be enough detail. https://codereview.chromium.org/2146073003/diff/20001/include/core/SkCanvas.h... include/core/SkCanvas.h:1058: void drawShadowedPicture(const SkPicture*, sk_sp<SkLights>); Do we not need a matrix or paint? https://codereview.chromium.org/2146073003/diff/20001/src/core/SkLightingShad... File src/core/SkLightingShader.cpp (right): https://codereview.chromium.org/2146073003/diff/20001/src/core/SkLightingShad... src/core/SkLightingShader.cpp:137: // get the handle to the shadow map if there is one Add a TODO: to this comment or remove it. https://codereview.chromium.org/2146073003/diff/20001/src/core/SkPictureFlat.h File src/core/SkPictureFlat.h (right): https://codereview.chromium.org/2146073003/diff/20001/src/core/SkPictureFlat.... src/core/SkPictureFlat.h:69: DRAW_SHADOWED_PICTURE_LIGHTS, You'll need to move this to the end of the list, like TRANSLATE_Z
https://codereview.chromium.org/2146073003/diff/20001/include/core/SkCanvas.h File include/core/SkCanvas.h (right): https://codereview.chromium.org/2146073003/diff/20001/include/core/SkCanvas.h... include/core/SkCanvas.h:1056: * However, this time, we will use the passed-in lights to generate shadows! On 2016/07/14 17:27:09, jvanverth1 wrote: > This is a little too vague. Suggestion: Will use the list of lights and the > picture content to generate shadow maps for each light. Even that might not be > enough detail. Done. https://codereview.chromium.org/2146073003/diff/20001/include/core/SkCanvas.h... include/core/SkCanvas.h:1058: void drawShadowedPicture(const SkPicture*, sk_sp<SkLights>); On 2016/07/14 17:27:09, jvanverth1 wrote: > Do we not need a matrix or paint? I originally thought the proposed function didn't, but I realized that's just pseudocode. Fixing...
https://codereview.chromium.org/2146073003/diff/60001/include/core/SkCanvas.h File include/core/SkCanvas.h (right): https://codereview.chromium.org/2146073003/diff/60001/include/core/SkCanvas.h... include/core/SkCanvas.h:465: void setLights(sk_sp<SkLights> lights); You need to hide this (and translateZ) behind a #ifdef so it's not available as part of the standard API. You'll also need to add a variable to gyp/common_variables.gypi so it can be turned on easily for special builds. Then in common.gypi you set the #define if it's enabled. See the gyp variable skia_vulkan and the #define SK_VULKAN for an example. https://codereview.chromium.org/2146073003/diff/60001/include/core/SkCanvas.h... include/core/SkCanvas.h:1075: void drawShadowedPicture(const SkPicture*, Hide these calls in an #ifdef block too. https://codereview.chromium.org/2146073003/diff/60001/include/core/SkCanvas.h... include/core/SkCanvas.h:1308: sk_sp<SkLights> getLights() const; I'm not sure I understand the point of having a protected accessor when the member variable is also protected. Is this a pattern we do elsewhere? https://codereview.chromium.org/2146073003/diff/60001/include/core/SkLights.h File include/core/SkLights.h (right): https://codereview.chromium.org/2146073003/diff/60001/include/core/SkLights.h... include/core/SkLights.h:80: Light& light(int index) { It might be good to have both a const and a non-const accessor. https://codereview.chromium.org/2146073003/diff/60001/src/core/SkCanvas.cpp File src/core/SkCanvas.cpp (right): https://codereview.chromium.org/2146073003/diff/60001/src/core/SkCanvas.cpp#n... src/core/SkCanvas.cpp:1563: }} Extra } ? https://codereview.chromium.org/2146073003/diff/60001/src/core/SkPictureFlat.h File src/core/SkPictureFlat.h (right): https://codereview.chromium.org/2146073003/diff/60001/src/core/SkPictureFlat.... src/core/SkPictureFlat.h:22: * and update LAST_DRAWTYPE_ENUM to avoid having the code read older skg's wrong. Spelling nit: skps
https://codereview.chromium.org/2146073003/diff/60001/include/core/SkCanvas.h File include/core/SkCanvas.h (right): https://codereview.chromium.org/2146073003/diff/60001/include/core/SkCanvas.h... include/core/SkCanvas.h:465: void setLights(sk_sp<SkLights> lights); On 2016/07/15 19:16:30, jvanverth1 wrote: > You need to hide this (and translateZ) behind a #ifdef so it's not available as > part of the standard API. You'll also need to add a variable to > gyp/common_variables.gypi so it can be turned on easily for special builds. Then > in common.gypi you set the #define if it's enabled. See the gyp variable > skia_vulkan and the #define SK_VULKAN for an example. Done. https://codereview.chromium.org/2146073003/diff/60001/include/core/SkCanvas.h... include/core/SkCanvas.h:1075: void drawShadowedPicture(const SkPicture*, On 2016/07/15 19:16:30, jvanverth1 wrote: > Hide these calls in an #ifdef block too. Done. https://codereview.chromium.org/2146073003/diff/60001/include/core/SkCanvas.h... include/core/SkCanvas.h:1308: sk_sp<SkLights> getLights() const; On 2016/07/15 19:16:30, jvanverth1 wrote: > I'm not sure I understand the point of having a protected accessor when the > member variable is also protected. Is this a pattern we do elsewhere? Done. https://codereview.chromium.org/2146073003/diff/60001/include/core/SkLights.h File include/core/SkLights.h (right): https://codereview.chromium.org/2146073003/diff/60001/include/core/SkLights.h... include/core/SkLights.h:80: Light& light(int index) { On 2016/07/15 19:16:30, jvanverth1 wrote: > It might be good to have both a const and a non-const accessor. Done.
Sorry. Missed error.
https://codereview.chromium.org/2146073003/diff/120001/include/core/SkCanvas.h File include/core/SkCanvas.h (right): https://codereview.chromium.org/2146073003/diff/120001/include/core/SkCanvas.... include/core/SkCanvas.h:460: void translateZ(SkScalar z); Still need to put this behind SK_RELEASE. https://codereview.chromium.org/2146073003/diff/120001/include/core/SkCanvas.... include/core/SkCanvas.h:1312: SkScalar getZ() const; This should be behind SK_RELEASE as well. https://codereview.chromium.org/2146073003/diff/120001/include/core/SkLights.h File include/core/SkLights.h (right): https://codereview.chromium.org/2146073003/diff/120001/include/core/SkLights.... include/core/SkLights.h:88: Light& editLight(int index) { You can just call this light() like the const version -- the compiler will figure it out. https://codereview.chromium.org/2146073003/diff/120001/src/core/SkPictureFlat.h File src/core/SkPictureFlat.h (right): https://codereview.chromium.org/2146073003/diff/120001/src/core/SkPictureFlat... src/core/SkPictureFlat.h:22: * and update LAST_DRAWTYPE_ENUM to avoid having the code read older skp's wrong. Nit: No apostrophe.
https://codereview.chromium.org/2146073003/diff/120001/include/core/SkCanvas.h File include/core/SkCanvas.h (right): https://codereview.chromium.org/2146073003/diff/120001/include/core/SkCanvas.... include/core/SkCanvas.h:460: void translateZ(SkScalar z); On 2016/07/18 15:02:26, jvanverth1 wrote: > Still need to put this behind SK_RELEASE. Done. https://codereview.chromium.org/2146073003/diff/120001/include/core/SkCanvas.... include/core/SkCanvas.h:1312: SkScalar getZ() const; On 2016/07/18 15:02:26, jvanverth1 wrote: > This should be behind SK_RELEASE as well. Done. https://codereview.chromium.org/2146073003/diff/120001/include/core/SkLights.h File include/core/SkLights.h (right): https://codereview.chromium.org/2146073003/diff/120001/include/core/SkLights.... include/core/SkLights.h:88: Light& editLight(int index) { On 2016/07/18 15:02:26, jvanverth1 wrote: > You can just call this light() like the const version -- the compiler will > figure it out. Done. https://codereview.chromium.org/2146073003/diff/120001/src/core/SkPictureFlat.h File src/core/SkPictureFlat.h (right): https://codereview.chromium.org/2146073003/diff/120001/src/core/SkPictureFlat... src/core/SkPictureFlat.h:22: * and update LAST_DRAWTYPE_ENUM to avoid having the code read older skp's wrong. On 2016/07/18 15:02:26, jvanverth1 wrote: > Nit: No apostrophe. Done. Well, it's an arguable grammar issue, right? Like you'd say "I earned 3 A's and 2 B's" and not "I earned 3 As and 2 Bs". But either is clear. Also, just a q: skp is correct, right? Not "SKP"?
Final comment, otherwise this looks okay to me. Brian or Mike, do you have any comments? https://codereview.chromium.org/2146073003/diff/140001/include/core/SkLights.h File include/core/SkLights.h (right): https://codereview.chromium.org/2146073003/diff/140001/include/core/SkLights.... include/core/SkLights.h:59: SkImage* fShadowMap; // if we use an sk_sp, this freaking breaks because it's init to nullptr The default constructor for sk_sp should initialize to nullptr, so you should be able to declare this as sk_sp<SkImage> and not include it in the constructor for Light. If you're worried, you can use fShadowMap.reset(nullptr) in the body of the constructor. That said, your comment should line up with the other ones, and the whole line shouldn't exceed 100 characters. And 'freaking' isn't really appropriate here.
https://codereview.chromium.org/2146073003/diff/140001/include/core/SkLights.h File include/core/SkLights.h (right): https://codereview.chromium.org/2146073003/diff/140001/include/core/SkLights.... include/core/SkLights.h:59: SkImage* fShadowMap; // if we use an sk_sp, this freaking breaks because it's init to nullptr On 2016/07/18 17:32:08, jvanverth1 wrote: > The default constructor for sk_sp should initialize to nullptr, so you should be > able to declare this as sk_sp<SkImage> and not include it in the constructor for > Light. If you're worried, you can use fShadowMap.reset(nullptr) in the body of > the constructor. > > That said, your comment should line up with the other ones, and the whole line > shouldn't exceed 100 characters. And 'freaking' isn't really appropriate here. Fixed the segfault, so I removed the comment entirely!
Should we use a macro other than SK_RELEASE to guard this? https://codereview.chromium.org/2146073003/diff/160001/include/core/SkLights.h File include/core/SkLights.h (right): https://codereview.chromium.org/2146073003/diff/160001/include/core/SkLights.... include/core/SkLights.h:51: fShadowMap = shadowMap; std::move?
https://codereview.chromium.org/2146073003/diff/160001/include/core/SkLights.h File include/core/SkLights.h (right): https://codereview.chromium.org/2146073003/diff/160001/include/core/SkLights.... include/core/SkLights.h:51: fShadowMap = shadowMap; On 2016/07/20 16:25:54, bsalomon wrote: > std::move? Done.
lgtm, but I do think it'd be good to hide this behind a different macro (e.g. SK_EXPERIMENTAL_SHADOWING).
https://codereview.chromium.org/2146073003/diff/220001/src/core/SkPictureReco... File src/core/SkPictureRecord.h (right): https://codereview.chromium.org/2146073003/diff/220001/src/core/SkPictureReco... src/core/SkPictureRecord.h:162: void didTranslateZ(SkScalar) I think it would be cleaner-looking to duplicate the line and use an #ifdef/#else/#endif pattern. https://codereview.chromium.org/2146073003/diff/220001/src/core/SkPictureReco... src/core/SkPictureRecord.h:215: void onDrawShadowedPicture(const SkPicture*, Same here. https://codereview.chromium.org/2146073003/diff/220001/src/core/SkRecorder.h File src/core/SkRecorder.h (right): https://codereview.chromium.org/2146073003/diff/220001/src/core/SkRecorder.h#... src/core/SkRecorder.h:64: void didTranslateZ(SkScalar) Etc. https://codereview.chromium.org/2146073003/diff/220001/tools/debugger/SkDebug... File tools/debugger/SkDebugCanvas.cpp (right): https://codereview.chromium.org/2146073003/diff/220001/tools/debugger/SkDebug... tools/debugger/SkDebugCanvas.cpp:65: override You don't need override in the definition.
https://codereview.chromium.org/2146073003/diff/220001/src/core/SkPictureReco... File src/core/SkPictureRecord.h (right): https://codereview.chromium.org/2146073003/diff/220001/src/core/SkPictureReco... src/core/SkPictureRecord.h:162: void didTranslateZ(SkScalar) On 2016/07/21 13:56:53, jvanverth1 wrote: > I think it would be cleaner-looking to duplicate the line and use an > #ifdef/#else/#endif pattern. Done. https://codereview.chromium.org/2146073003/diff/220001/src/core/SkPictureReco... src/core/SkPictureRecord.h:215: void onDrawShadowedPicture(const SkPicture*, On 2016/07/21 13:56:53, jvanverth1 wrote: > Same here. Done. https://codereview.chromium.org/2146073003/diff/220001/src/core/SkRecorder.h File src/core/SkRecorder.h (right): https://codereview.chromium.org/2146073003/diff/220001/src/core/SkRecorder.h#... src/core/SkRecorder.h:64: void didTranslateZ(SkScalar) On 2016/07/21 13:56:53, jvanverth1 wrote: > Etc. Acknowledged. https://codereview.chromium.org/2146073003/diff/220001/tools/debugger/SkDebug... File tools/debugger/SkDebugCanvas.cpp (right): https://codereview.chromium.org/2146073003/diff/220001/tools/debugger/SkDebug... tools/debugger/SkDebugCanvas.cpp:65: override On 2016/07/21 13:56:53, jvanverth1 wrote: > You don't need override in the definition. Done.
The CQ bit was checked by vjiaoblack@google.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: Test-Ubuntu-GCC-ShuttleA-GPU-GTX660-x86_64-Release-Trybot on master.client.skia (JOB_FAILED, http://build.chromium.org/p/client.skia/builders/Test-Ubuntu-GCC-ShuttleA-GPU...) Build-Ubuntu-GCC-Arm7-Debug-Android-Trybot on master.client.skia.compile (JOB_FAILED, http://build.chromium.org/p/client.skia.compile/builders/Build-Ubuntu-GCC-Arm...) Build-Ubuntu-GCC-Mips-Debug-Android-Trybot on master.client.skia.compile (JOB_FAILED, http://build.chromium.org/p/client.skia.compile/builders/Build-Ubuntu-GCC-Mip...) Build-Ubuntu-GCC-x86_64-Release-Trybot on master.client.skia.compile (JOB_FAILED, http://build.chromium.org/p/client.skia.compile/builders/Build-Ubuntu-GCC-x86...)
The CQ bit was checked by vjiaoblack@google.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by vjiaoblack@google.com
The patchset sent to the CQ was uploaded after l-g-t-m from bsalomon@google.com Link to the patchset: https://codereview.chromium.org/2146073003/#ps260001 (title: "removed from gyp/core.gypi")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 ========== to ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a ==========
Message was sent while issue was closed.
Committed patchset #14 (id:260001) as https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a
Message was sent while issue was closed.
Description was changed from ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a ========== to ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a ==========
Message was sent while issue was closed.
A revert of this CL (patchset #14 id:260001) has been created in https://codereview.chromium.org/2167223002/ by vjiaoblack@google.com. The reason for reverting is: Decided to re-wait for a final LGTM. Already found a bug in variable naming to fix..
Message was sent while issue was closed.
The CQ bit was checked by vjiaoblack@google.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
lgtm
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by vjiaoblack@google.com
The patchset sent to the CQ was uploaded after l-g-t-m from bsalomon@google.com Link to the patchset: https://codereview.chromium.org/2146073003/#ps280001 (title: "Fixed case error")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a ========== to ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a Committed: https://skia.googlesource.com/skia/+/95302da19d8b0a3bcd9d9be0e79f486760787f09 ==========
Message was sent while issue was closed.
Committed patchset #15 (id:280001) as https://skia.googlesource.com/skia/+/95302da19d8b0a3bcd9d9be0e79f486760787f09
Message was sent while issue was closed.
Description was changed from ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a Committed: https://skia.googlesource.com/skia/+/95302da19d8b0a3bcd9d9be0e79f486760787f09 ========== to ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a Committed: https://skia.googlesource.com/skia/+/95302da19d8b0a3bcd9d9be0e79f486760787f09 ==========
The CQ bit was checked by vjiaoblack@google.com
The patchset sent to the CQ was uploaded after l-g-t-m from jvanverth@google.com, bsalomon@google.com Link to the patchset: https://codereview.chromium.org/2146073003/#ps300001 (title: "bugfix")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by vjiaoblack@google.com
... found another bug! and fixed it.
The CQ bit was checked by vjiaoblack@google.com
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: skia_presubmit-Trybot on master.client.skia.fyi (JOB_FAILED, http://build.chromium.org/p/client.skia.fyi/builders/skia_presubmit-Trybot/bu...)
The CQ bit was checked by vjiaoblack@google.com to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
The CQ bit was checked by vjiaoblack@google.com
The patchset sent to the CQ was uploaded after l-g-t-m from jvanverth@google.com, bsalomon@google.com Link to the patchset: https://codereview.chromium.org/2146073003/#ps340001 (title: "removed redundant code")
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a Committed: https://skia.googlesource.com/skia/+/95302da19d8b0a3bcd9d9be0e79f486760787f09 ========== to ========== Creating framework for drawShadowedPicture GOLD_TRYBOT_URL= https://gold.skia.org/search?issue=2146073003 Committed: https://skia.googlesource.com/skia/+/0ae097d116f4332be02a135ffc99c162473dee6a Committed: https://skia.googlesource.com/skia/+/95302da19d8b0a3bcd9d9be0e79f486760787f09 Committed: https://skia.googlesource.com/skia/+/5bfee98c8cf59db8d71aa6672088b107f0abf8c9 ==========
Message was sent while issue was closed.
Committed patchset #18 (id:340001) as https://skia.googlesource.com/skia/+/5bfee98c8cf59db8d71aa6672088b107f0abf8c9 |