Project: chromium Issues People Development process History Sign in
New issue
Advanced search Search tips
Starred by 6 users
Status: Fixed
Owner:
Closed: Apr 7
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: All
Pri: 1
Type: Feature

Blocked on:
issue 563861

Blocking:
issue 563816



Sign in to add a comment
[2D Canvas] Make ImageBitmapRenderingContext able to consume a texture-backed ImageBitmap without a readback
Project Member Reported by junov@chromium.org, Feb 9 2016 Back to list
The initial implementation of  ImageBitmapRenderingContext will be performing a readback when it is given a texture-backed ImageBitmap (e.g. a snapshot of a gpu-accelerated 2D canvas). This data flow should not be transferring image data through RAM. Because texture-backed bitmaps cannot be safely serialized for impl-side rasterization, we need to set up an ExternalTextureLayer to pass the image to the compositor via Mailbox.
 
Comment 1 by junov@chromium.org, Feb 9 2016
Blocking: chromium:563816
Comment 2 by junov@chromium.org, Feb 9 2016
Status: Assigned
Comment 3 by xlai@chromium.org, Oct 20 2016
This feature is blocking OffscreenCanvas. Any progress on how it can be done?
Comment 4 by xlai@chromium.org, Oct 20 2016
Blocking: -563816
Summary: [2D Canvas] Make ImageBitmapRenderingContext able to consume a texture-backed ImageBitmap without a readback (was: [2D Canvas] Make ImageBitmapRenderingContext able to consume a texture-backed ImageBitmap with a readback)
Cc: junov@chromium.org
 Issue 696224  has been merged into this issue.
Labels: -Pri-2 M-59 Pri-1
Blocking: 563816
Project Member Comment 9 by bugdroid1@chromium.org, Apr 6
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/300bd53cd8a10fd63b4362b52bb6b6b92e345821

commit 300bd53cd8a10fd63b4362b52bb6b6b92e345821
Author: junov <junov@chromium.org>
Date: Thu Apr 06 21:49:10 2017

Streamline the presentation of ImageBitmapRenderingContext

This change adds an ImageLayerBridge class that provides a direct
compositing path for displaying ImageBitmap objects, without
going through a blink paint pass.  As a consequence, there are
no more GPU readbacks when the source of the image is
GPU-accelerated.

In canvas rendering context classes, the notion of being
accelerated had to be decoupled from the notion of being
composited.  This is because non-accelerated canvases are
are directly composited with ImageBitmapRenderingContext.

BUG= 696224 ,  585607 
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_layout_tests_slimming_paint_v2;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2738573002
Cr-Commit-Position: refs/heads/master@{#462634}

[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/content/test/gpu/gpu_tests/pixel_expectations.py
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/content/test/gpu/gpu_tests/pixel_test_pages.py
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/LayoutTests/FlagExpectations/enable-slimming-paint-v2
[add] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/PerformanceTests/Canvas/transferFromImageBitmap.html
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/core/frame/ImageBitmap.h
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/core/frame/ImageBitmapTest.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/core/html/HTMLCanvasElement.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/core/html/HTMLCanvasElement.h
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/core/html/canvas/CanvasRenderingContext.h
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/core/layout/compositing/CompositedLayerMapping.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/core/paint/HTMLCanvasPainter.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/core/paint/HTMLCanvasPainterTest.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/modules/accessibility/AXLayoutObject.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.h
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/modules/imagebitmap/ImageBitmapRenderingContext.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/modules/imagebitmap/ImageBitmapRenderingContext.h
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/modules/offscreencanvas2d/OffscreenCanvasRenderingContext2D.h
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/modules/webgl/WebGLRenderingContextBase.h
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/platform/BUILD.gn
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/platform/graphics/Canvas2DLayerBridge.cpp
[modify] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/platform/graphics/StaticBitmapImage.h
[add] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.cpp
[add] https://crrev.com/300bd53cd8a10fd63b4362b52bb6b6b92e345821/third_party/WebKit/Source/platform/graphics/gpu/ImageLayerBridge.h

Project Member Comment 10 by bugdroid1@chromium.org, Apr 7
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c691ffcd4824ed498763b46ef9378d639ae1ab41

commit c691ffcd4824ed498763b46ef9378d639ae1ab41
Author: junov <junov@chromium.org>
Date: Fri Apr 07 20:37:35 2017

Remove supressions for rebaselined gpu pixel tests

Affected tests:
Pixel_OffscreenCanvasTransferToImageBitmap
Pixel_OffscreenCanvasTransferToImageBitmapWorker

BUG= 696224 ,  585607 
TBR=xlai@chromium.org
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel

Review-Url: https://codereview.chromium.org/2804323002
Cr-Commit-Position: refs/heads/master@{#462991}

[modify] https://crrev.com/c691ffcd4824ed498763b46ef9378d639ae1ab41/content/test/gpu/gpu_tests/pixel_expectations.py

Status: Fixed
Sign in to add a comment