GPU Image Decode Controller should use the PaintImage::Decode API to leverage the decode to scale work done in bug 558070
Hey eric - what's the plan or ETA?
We have an idea of what we need to land (and a WIP CL https://chromium-review.googlesource.com/c/chromium/src/+/713593), but work is currently deprioritized. Will try to get to this some time this quarter.
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/86c790e6a6dcdbec73f22ed343265963c901e749 commit 86c790e6a6dcdbec73f22ed343265963c901e749 Author: Eric Karl <ericrk@chromium.org> Date: Thu Nov 16 22:15:14 2017 Remove use of DeferredTextureImageData APIs and Support Decode to Scale We aren't benefitting from the complexity added by the DeferredTextureImageData APIs, and this API blocks us from using PaintImage::Decode's decode-to-scale functionality. This change removes our usage of DeferredTextureImageData APIs, instead using SkImage::makeTextureImage to handle upload. Additionally, we now use the PaintImage::Decode API, adding decode-to-scale support. Bug: 773799 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel Change-Id: Ia5f480213c3a5c8225ccd289aa2c081056840f94 Reviewed-on: https://chromium-review.googlesource.com/713593 Reviewed-by: vmpstr <vmpstr@chromium.org> Commit-Queue: Eric Karl <ericrk@chromium.org> Cr-Commit-Position: refs/heads/master@{#517206} [modify] https://crrev.com/86c790e6a6dcdbec73f22ed343265963c901e749/cc/tiles/gpu_image_decode_cache.cc [modify] https://crrev.com/86c790e6a6dcdbec73f22ed343265963c901e749/cc/tiles/gpu_image_decode_cache.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/7452277311e15a3459b4fb6fa428840c6afde4df commit 7452277311e15a3459b4fb6fa428840c6afde4df Author: Eric Karl <ericrk@chromium.org> Date: Sat Dec 16 21:42:32 2017 Revert "Remove use of DeferredTextureImageData APIs and Support Decode to Scale" This reverts commit 86c790e6a6dcdbec73f22ed343265963c901e749. Reason for revert: This is causing performance / memory regressions that are trickier to address than expected. Reverting this for now. Original change's description: > Remove use of DeferredTextureImageData APIs and Support Decode to Scale > > We aren't benefitting from the complexity added by the > DeferredTextureImageData APIs, and this API blocks us from using > PaintImage::Decode's decode-to-scale functionality. > > This change removes our usage of DeferredTextureImageData APIs, > instead using SkImage::makeTextureImage to handle upload. Additionally, > we now use the PaintImage::Decode API, adding decode-to-scale support. > > Bug: 773799 > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel > Change-Id: Ia5f480213c3a5c8225ccd289aa2c081056840f94 > Reviewed-on: https://chromium-review.googlesource.com/713593 > Reviewed-by: vmpstr <vmpstr@chromium.org> > Commit-Queue: Eric Karl <ericrk@chromium.org> > Cr-Commit-Position: refs/heads/master@{#517206} TBR=vmpstr@chromium.org,ericrk@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 773799 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel Change-Id: Ie4493559e334100f03dfed1dfb7a408fc26a33e0 Reviewed-on: https://chromium-review.googlesource.com/830587 Commit-Queue: Eric Karl <ericrk@chromium.org> Reviewed-by: Eric Karl <ericrk@chromium.org> Cr-Commit-Position: refs/heads/master@{#524613} [modify] https://crrev.com/7452277311e15a3459b4fb6fa428840c6afde4df/cc/paint/paint_image.h [modify] https://crrev.com/7452277311e15a3459b4fb6fa428840c6afde4df/cc/tiles/gpu_image_decode_cache.cc [modify] https://crrev.com/7452277311e15a3459b4fb6fa428840c6afde4df/cc/tiles/gpu_image_decode_cache.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/94479c4cca4e9c4b4ec9a910b83c056005fb0ac7 commit 94479c4cca4e9c4b4ec9a910b83c056005fb0ac7 Author: Eric Karl <ericrk@chromium.org> Date: Tue Dec 19 18:41:48 2017 Revert "Remove use of DeferredTextureImageData APIs and Support Decode to Scale" This reverts commit 86c790e6a6dcdbec73f22ed343265963c901e749. Reason for revert: This is causing performance / memory regressions that are trickier to address than expected. Reverting this for now. Original change's description: > Remove use of DeferredTextureImageData APIs and Support Decode to Scale > > We aren't benefitting from the complexity added by the > DeferredTextureImageData APIs, and this API blocks us from using > PaintImage::Decode's decode-to-scale functionality. > > This change removes our usage of DeferredTextureImageData APIs, > instead using SkImage::makeTextureImage to handle upload. Additionally, > we now use the PaintImage::Decode API, adding decode-to-scale support. > > Bug: 773799 > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel > Change-Id: Ia5f480213c3a5c8225ccd289aa2c081056840f94 > Reviewed-on: https://chromium-review.googlesource.com/713593 > Reviewed-by: vmpstr <vmpstr@chromium.org> > Commit-Queue: Eric Karl <ericrk@chromium.org> > Cr-Commit-Position: refs/heads/master@{#517206} TBR=ericrk@chromium.org, vmpstr@chromium.org (cherry picked from commit 7452277311e15a3459b4fb6fa428840c6afde4df) Bug: 773799 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel Change-Id: Ie4493559e334100f03dfed1dfb7a408fc26a33e0 Reviewed-on: https://chromium-review.googlesource.com/830587 Commit-Queue: Eric Karl <ericrk@chromium.org> Reviewed-by: Eric Karl <ericrk@chromium.org> Cr-Original-Commit-Position: refs/heads/master@{#524613} Reviewed-on: https://chromium-review.googlesource.com/834451 Cr-Commit-Position: refs/branch-heads/3282@{#298} Cr-Branched-From: 5fdc0fab22ce7efd32532ee989b223fa12f8171e-refs/heads/master@{#520840} [modify] https://crrev.com/94479c4cca4e9c4b4ec9a910b83c056005fb0ac7/cc/paint/paint_image.h [modify] https://crrev.com/94479c4cca4e9c4b4ec9a910b83c056005fb0ac7/cc/tiles/gpu_image_decode_cache.cc [modify] https://crrev.com/94479c4cca4e9c4b4ec9a910b83c056005fb0ac7/cc/tiles/gpu_image_decode_cache.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/90aeb8fe0f41f23552d623ada4a8e5667174e58e commit 90aeb8fe0f41f23552d623ada4a8e5667174e58e Author: Eric Karl <ericrk@chromium.org> Date: Wed Jan 03 02:49:56 2018 Revert "Revert "Remove use of DeferredTextureImageData APIs and Support Decode to Scale"" This reverts commit 7452277311e15a3459b4fb6fa428840c6afde4df. Reason for revert: Have fixes for the original issues. Will land those after un-reverting. Original change's description: > Revert "Remove use of DeferredTextureImageData APIs and Support Decode to Scale" > > This reverts commit 86c790e6a6dcdbec73f22ed343265963c901e749. > > Reason for revert: This is causing performance / memory regressions that are trickier to address than expected. Reverting this for now. > > Original change's description: > > Remove use of DeferredTextureImageData APIs and Support Decode to Scale > > > > We aren't benefitting from the complexity added by the > > DeferredTextureImageData APIs, and this API blocks us from using > > PaintImage::Decode's decode-to-scale functionality. > > > > This change removes our usage of DeferredTextureImageData APIs, > > instead using SkImage::makeTextureImage to handle upload. Additionally, > > we now use the PaintImage::Decode API, adding decode-to-scale support. > > > > Bug: 773799 > > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel > > Change-Id: Ia5f480213c3a5c8225ccd289aa2c081056840f94 > > Reviewed-on: https://chromium-review.googlesource.com/713593 > > Reviewed-by: vmpstr <vmpstr@chromium.org> > > Commit-Queue: Eric Karl <ericrk@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#517206} > > TBR=vmpstr@chromium.org,ericrk@chromium.org > > # Not skipping CQ checks because original CL landed > 1 day ago. > > Bug: 773799 > Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel > Change-Id: Ie4493559e334100f03dfed1dfb7a408fc26a33e0 > Reviewed-on: https://chromium-review.googlesource.com/830587 > Commit-Queue: Eric Karl <ericrk@chromium.org> > Reviewed-by: Eric Karl <ericrk@chromium.org> > Cr-Commit-Position: refs/heads/master@{#524613} TBR=vmpstr@chromium.org,ericrk@chromium.org # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 773799 Change-Id: Ic4492707672b8652bd3b102d3918399afb5321b4 Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel Reviewed-on: https://chromium-review.googlesource.com/847030 Commit-Queue: Eric Karl <ericrk@chromium.org> Reviewed-by: Eric Karl <ericrk@chromium.org> Cr-Commit-Position: refs/heads/master@{#526601} [modify] https://crrev.com/90aeb8fe0f41f23552d623ada4a8e5667174e58e/cc/paint/paint_image.h [modify] https://crrev.com/90aeb8fe0f41f23552d623ada4a8e5667174e58e/cc/tiles/gpu_image_decode_cache.cc [modify] https://crrev.com/90aeb8fe0f41f23552d623ada4a8e5667174e58e/cc/tiles/gpu_image_decode_cache.h
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f9e3faeda46f0fc37bccfe697265200971596533 commit f9e3faeda46f0fc37bccfe697265200971596533 Author: Khushal <khushalsagar@chromium.org> Date: Wed Jun 20 21:31:13 2018 cc: Enable decode to scale for GPU raster. GpuImageDecodeCache supports decoding directly to the desired scale, if supported by the image decoder, but the functionality was commented out in PaintImage. Enable it. Follow up changes should add the use of this API to the software cache. R=ericrk@chromium.org Bug: 558070 , 773799 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel Change-Id: Iea69e200b9b0bc1b1c60231c7c15cef5c6a2f674 Reviewed-on: https://chromium-review.googlesource.com/1102025 Commit-Queue: Khushal <khushalsagar@chromium.org> Reviewed-by: Eric Karl <ericrk@chromium.org> Reviewed-by: Chris Harrelson <chrishtr@chromium.org> Cr-Commit-Position: refs/heads/master@{#569026} [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/cc/paint/paint_image.cc [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/cc/paint/paint_image_unittest.cc [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/cc/test/fake_paint_image_generator.cc [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/cc/test/fake_paint_image_generator.h [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/TestExpectations [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu-rasterization/images/color-profile-filter-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu-rasterization/images/color-profile-image-shape-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/linux/virtual/gpu-rasterization/images/jpeg-with-color-profile-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/color-profile-image-canvas-svg-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/color-profile-image-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/color-profile-image-shape-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/mac/virtual/gpu-rasterization/images/jpeg-with-color-profile-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/images/color-profile-image-canvas-svg-expected.png [add] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/images/color-profile-image-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/images/color-profile-image-filter-all-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/images/color-profile-image-shape-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/platform/win/virtual/gpu-rasterization/images/jpeg-with-color-profile-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/color-profile-background-image-cover-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/color-profile-background-image-repeat-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/color-profile-background-image-space-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/color-profile-image-canvas-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/color-profile-image-canvas-pattern-expected.png [delete] https://crrev.com/d81475b06bcebdbe4797d42ea2bf5cdca57b6e63/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/color-profile-image-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/color-profile-image-object-fit-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/color-profile-image-svg-resource-url-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/color-profile-mask-image-svg-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/exif-orientation-height-image-document-expected.png [modify] https://crrev.com/f9e3faeda46f0fc37bccfe697265200971596533/third_party/WebKit/LayoutTests/virtual/gpu-rasterization/images/jpeg-yuv-progressive-image-expected.png
Comment 1 by ericrk@chromium.org
, Oct 11 2017