New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 868400 link

Starred by 3 users

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Chrome
Pri: 3
Type: Feature

Blocked on: View detail
issue 886914
issue 924310
issue 876810

Blocking:
issue 877694
issue 907636



Sign in to add a comment

VA-API accelerated JPEG decoding in Chrome OS

Project Member Reported by andrescj@chromium.org, Jul 27

Issue description

This is the tracking bug for the implementation of general JPEG decode acceleration in Chrome OS using the VA-API. Currently, acceleration is used for camera captures.
 
Status: Started (was: Assigned)
The design doc is at https://tinyurl.com/accelerated-jpeg-decoding-v2
Project Member

Comment 2 by bugdroid1@chromium.org, Aug 21

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/43c0e8adb8cd58c2f64c68066f88f9bff3087da1

commit 43c0e8adb8cd58c2f64c68066f88f9bff3087da1
Author: Andres Calderon Jaramillo <andrescj@chromium.org>
Date: Tue Aug 21 02:46:23 2018

Add a feature guard to implement CrOS VA-API JPEG decode acceleration.

This CL creates a base::Feature flag in content to guard the
implementation of decode acceleration of JPEG images (as opposed to
camera captures) in Chrome OS using the VA-API.

Bug: 868400
Change-Id: I103a78bc9547862620fea59fb423582226f03d59
Reviewed-on: https://chromium-review.googlesource.com/1180292
Commit-Queue: Andres Calderon Jaramillo <andrescj@chromium.org>
Reviewed-by: Avi Drissman <avi@chromium.org>
Reviewed-by: Miguel Casas <mcasas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#584606}
[modify] https://crrev.com/43c0e8adb8cd58c2f64c68066f88f9bff3087da1/chrome/browser/about_flags.cc
[modify] https://crrev.com/43c0e8adb8cd58c2f64c68066f88f9bff3087da1/chrome/browser/flag_descriptions.cc
[modify] https://crrev.com/43c0e8adb8cd58c2f64c68066f88f9bff3087da1/chrome/browser/flag_descriptions.h
[modify] https://crrev.com/43c0e8adb8cd58c2f64c68066f88f9bff3087da1/content/public/common/content_features.cc
[modify] https://crrev.com/43c0e8adb8cd58c2f64c68066f88f9bff3087da1/content/public/common/content_features.h
[modify] https://crrev.com/43c0e8adb8cd58c2f64c68066f88f9bff3087da1/tools/metrics/histograms/enums.xml

Components: -Internals>GPU>Video Internals>GPU>Image
Blockedon: 876810
Blocking: 877694
Project Member

Comment 6 by bugdroid1@chromium.org, Aug 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/e43eef10c4b17dc1705682639a1b25c3fecb9d86

commit e43eef10c4b17dc1705682639a1b25c3fecb9d86
Author: Andres Calderon Jaramillo <andrescj@chromium.org>
Date: Mon Aug 27 23:34:37 2018

Add a UMA to track the size of JPEG images.

This CL introduces the Blink.ImageDecoders.Jpeg.Area UMA which tracks
the area (total # of pixels) of JPEG images. The rationale is that the
area can be used as a proxy for how useful a JPEG decode accelerator
will be: the larger the area, the more likely an accelerator is useful.

Bug: 868400
Change-Id: I5252dea60107cd5160e01970b8f6c490c0931b9e
Reviewed-on: https://chromium-review.googlesource.com/1172914
Reviewed-by: Mark Pearson <mpearson@chromium.org>
Reviewed-by: Khushal <khushalsagar@chromium.org>
Reviewed-by: Leon Scroggins <scroggo@chromium.org>
Reviewed-by: Miguel Casas <mcasas@chromium.org>
Commit-Queue: Andres Calderon Jaramillo <andrescj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#586491}
[modify] https://crrev.com/e43eef10c4b17dc1705682639a1b25c3fecb9d86/third_party/blink/renderer/platform/image-decoders/DEPS
[modify] https://crrev.com/e43eef10c4b17dc1705682639a1b25c3fecb9d86/third_party/blink/renderer/platform/image-decoders/jpeg/jpeg_image_decoder.cc
[modify] https://crrev.com/e43eef10c4b17dc1705682639a1b25c3fecb9d86/tools/metrics/histograms/histograms.xml

Project Member

Comment 7 by bugdroid1@chromium.org, Sep 5

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/605253db5c95e641c8b23693456856022bd0bed1

commit 605253db5c95e641c8b23693456856022bd0bed1
Author: Andres Calderon Jaramillo <andrescj@chromium.org>
Date: Wed Sep 05 15:46:35 2018

Move features::kVaapiJpegImageDecodeAcceleration from content to gpu.

This CL moves features::kVaapiJpegImageDecodeAcceleration so that it can
be accessed easily by GpuServiceImpl. GpuServiceImpl will use it to
decide whether it should instantiate an implementation of the image
decode acceleration mojo interface when requested by a renderer.

Bug: 868400
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I93aa630792adae723236c8403ff807a31469ea8c
Reviewed-on: https://chromium-review.googlesource.com/1203430
Reviewed-by: Camille Lamy <clamy@chromium.org>
Reviewed-by: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Andres Calderon Jaramillo <andrescj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#588877}
[modify] https://crrev.com/605253db5c95e641c8b23693456856022bd0bed1/chrome/browser/about_flags.cc
[modify] https://crrev.com/605253db5c95e641c8b23693456856022bd0bed1/content/public/common/content_features.cc
[modify] https://crrev.com/605253db5c95e641c8b23693456856022bd0bed1/content/public/common/content_features.h
[modify] https://crrev.com/605253db5c95e641c8b23693456856022bd0bed1/gpu/config/gpu_finch_features.cc
[modify] https://crrev.com/605253db5c95e641c8b23693456856022bd0bed1/gpu/config/gpu_finch_features.h
[modify] https://crrev.com/605253db5c95e641c8b23693456856022bd0bed1/gpu/config/gpu_preferences_unittest.cc

Blockedon: 886914
Project Member

Comment 9 by bugdroid1@chromium.org, Sep 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/607ea4c4758bde294761dd6e3e5b09ae6f7f7bd6

commit 607ea4c4758bde294761dd6e3e5b09ae6f7f7bd6
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Thu Sep 27 08:50:31 2018

JPEGCodec{RobustSlow}::Decode: refactor to use unique_ptr.

This CL removes the class DecompressDestroyer in favour of
a unique_ptr<> with specific Deleter. Less lines of code.

Functionality covered by gfx_unittest, also under asan bot.

Bug: 868400
Change-Id: I7ac2d254d6f5771a81620b14db7e610ff3b7e4b9
Reviewed-on: https://chromium-review.googlesource.com/1245467
Commit-Queue: Miguel Casas <mcasas@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594638}
[modify] https://crrev.com/607ea4c4758bde294761dd6e3e5b09ae6f7f7bd6/ui/gfx/codec/chromeos/jpeg_codec_robust_slow.cc
[modify] https://crrev.com/607ea4c4758bde294761dd6e3e5b09ae6f7f7bd6/ui/gfx/codec/jpeg_codec.cc

Project Member

Comment 10 by bugdroid1@chromium.org, Sep 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/2af305d3acd0b5ae5d04c78d82f2ab4211b4f8b7

commit 2af305d3acd0b5ae5d04c78d82f2ab4211b4f8b7
Author: Marina Ciocea <marinaciocea@chromium.org>
Date: Thu Sep 27 11:57:14 2018

Revert "JPEGCodec{RobustSlow}::Decode: refactor to use unique_ptr."

This reverts commit 607ea4c4758bde294761dd6e3e5b09ae6f7f7bd6.

Reason for revert: breaks gfx_unittests on Linux Chromium OS ASan LSan bot. Findit analysis:
https://findit-for-me.appspot.com/waterfall/failure?url=https://build.chromium.org/p/chromium.memory/builders/Linux%20Chromium%20OS%20ASan%20LSan%20Tests%20%281%29/builds/29208


Original change's description:
> JPEGCodec{RobustSlow}::Decode: refactor to use unique_ptr.
> 
> This CL removes the class DecompressDestroyer in favour of
> a unique_ptr<> with specific Deleter. Less lines of code.
> 
> Functionality covered by gfx_unittest, also under asan bot.
> 
> Bug: 868400
> Change-Id: I7ac2d254d6f5771a81620b14db7e610ff3b7e4b9
> Reviewed-on: https://chromium-review.googlesource.com/1245467
> Commit-Queue: Miguel Casas <mcasas@chromium.org>
> Reviewed-by: Daniel Cheng <dcheng@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#594638}

TBR=dcheng@chromium.org,mcasas@chromium.org

Change-Id: Ia8291bed9f539217969c7978c7dbc120c4fead43
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: 868400
Reviewed-on: https://chromium-review.googlesource.com/1249204
Reviewed-by: Marina Ciocea <marinaciocea@chromium.org>
Commit-Queue: Marina Ciocea <marinaciocea@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594679}
[modify] https://crrev.com/2af305d3acd0b5ae5d04c78d82f2ab4211b4f8b7/ui/gfx/codec/chromeos/jpeg_codec_robust_slow.cc
[modify] https://crrev.com/2af305d3acd0b5ae5d04c78d82f2ab4211b4f8b7/ui/gfx/codec/jpeg_codec.cc

Project Member

Comment 11 by bugdroid1@chromium.org, Sep 28

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b6b590ae77285685ba8731fc4df5fecdb5ee6b57

commit b6b590ae77285685ba8731fc4df5fecdb5ee6b57
Author: Sunny Sachanandani <sunnyps@chromium.org>
Date: Fri Sep 28 05:20:43 2018

Simplify GpuChannel initialization

Removes the FilteredSender abstraction that was created specifically for
tests, and replaces it with a simpler method to initialize GpuChannel
for tests.  Should make it simpler to change IPC channel initialization
for associating image decode accelerator mojo interface.


Bug: 868400
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: Ifc57407fe8fac36daa0ace155c88cd54c04b39b4
Reviewed-on: https://chromium-review.googlesource.com/1250139
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#594991}
[modify] https://crrev.com/b6b590ae77285685ba8731fc4df5fecdb5ee6b57/components/viz/service/gl/gpu_service_impl.cc
[modify] https://crrev.com/b6b590ae77285685ba8731fc4df5fecdb5ee6b57/gpu/ipc/service/gpu_channel.cc
[modify] https://crrev.com/b6b590ae77285685ba8731fc4df5fecdb5ee6b57/gpu/ipc/service/gpu_channel.h
[modify] https://crrev.com/b6b590ae77285685ba8731fc4df5fecdb5ee6b57/gpu/ipc/service/gpu_channel_test_common.cc
[modify] https://crrev.com/b6b590ae77285685ba8731fc4df5fecdb5ee6b57/gpu/ipc/service/gpu_channel_test_common.h

Project Member

Comment 12 by bugdroid1@chromium.org, Sep 29

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/943c1b30f6f037f8d620a399467634ee5e7d511b

commit 943c1b30f6f037f8d620a399467634ee5e7d511b
Author: Miguel Casas-Sanchez <mcasas@chromium.org>
Date: Sat Sep 29 00:37:08 2018

RELAND: JPEGCodec{RobustSlow}::Decode: refactor to use unique_ptr.

crrev.com/c/1245467 got reverted due to a silly oversight -- I
have to delete the pointer in the Deleter operator(). Solution
is crrev.com/c/1249481/1..5

Original CL description -------------------------------------
JPEGCodec{RobustSlow}::Decode: refactor to use unique_ptr.

This CL removes the class DecompressDestroyer in favour of
a unique_ptr<> with specific Deleter. Less lines of code.

Functionality covered by gfx_unittest, also under asan bot.

Bug: 868400
Change-Id: I53ff80d4304b02c08719a1b0c5b1175e3a0d061d
Reviewed-on: https://chromium-review.googlesource.com/1249481
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/master@{#595271}
[modify] https://crrev.com/943c1b30f6f037f8d620a399467634ee5e7d511b/ui/gfx/codec/chromeos/jpeg_codec_robust_slow.cc
[modify] https://crrev.com/943c1b30f6f037f8d620a399467634ee5e7d511b/ui/gfx/codec/jpeg_codec.cc

I'm currently working on enabling HW JPEG decoding on Grunt:
 crbug.com/828119 
crrev.com/c/1119742/20

It seems that not all JPEG chrome subsampling formats are supported by the HW decoder on Grunt (e.g. YUV444). I experimented with adding a fallback to SW in the HW decoder on failure. But this clutters up the code, yuv444 is not used in camera capture and yuv444 JPEGs are pretty rare. So for now I decided not to add the fallback. When general HW JPEG decoding is added, we should check what the effects of a failing YUV444 JPEG decode are.
dstaessens@ Thanks! I will have a way to convey to the renderer which formats are supported by the HW decoder, although I'm only expecting to work with YUV420 at the beginning. Take a look at the Blink.ImageDecoders.Jpeg.ColorSpace UMA that I landed recently. It shows the distribution of the subsampling formats for JPEGs decoded in Blink.
Cc: dstaessens@chromium.org
Project Member

Comment 16 by bugdroid1@chromium.org, Oct 30

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a36656853a8d5939f5a9cd9a019ed87d9de7ce09

commit a36656853a8d5939f5a9cd9a019ed87d9de7ce09
Author: Andres Calderon Jaramillo <andrescj@chromium.org>
Date: Tue Oct 30 17:28:44 2018

IPC plumbing for hardware-accelerated image decodes.

This CL creates a new GPU channel IPC message type,
GpuChannelMsg_ScheduleImageDecode, which a renderer will eventually be
able to use to request hardware-accelerated image decodes. Two classes
are added and plumbed into the existing GPU channel architecture to
help deal with this new message:

1) On the service side (GPU process), an ImageDecodeAcceleratorStub
   processes incoming messages. There is one such stub per GpuChannel,
   although it is owned by the GpuChannelMessageFilter because it
   expects to receive messages on the IO thread.

2) On the client side (renderer), an ImageDecodeAcceleratorProxy is
   associated with a GpuChannelHost. It's a thread-safe helper that
   allows components in the renderer to schedule image decodes and get
   back a SyncToken to synchronize on the completion of the decode.

The processing of the new IPC message is guarded by the
kVaapiJpegImageDecodeAcceleration feature flag: the stub refuses to
handle that message if the feature is disabled.

Bug: 868400
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: I5d24e661341b5744b30306aca22903f28a52d695
Reviewed-on: https://chromium-review.googlesource.com/c/1285610
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Commit-Queue: Andres Calderon Jaramillo <andrescj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#603944}
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/client/BUILD.gn
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/client/gpu_channel_host.cc
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/client/gpu_channel_host.h
[add] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/client/image_decode_accelerator_proxy.cc
[add] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/client/image_decode_accelerator_proxy.h
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/common/BUILD.gn
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/common/command_buffer_id.h
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/common/gpu_messages.h
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/service/BUILD.gn
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/service/gpu_channel.cc
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/service/gpu_channel.h
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/service/gpu_channel_manager_unittest.cc
[modify] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/service/gpu_channel_unittest.cc
[add] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/service/image_decode_accelerator_stub.cc
[add] https://crrev.com/a36656853a8d5939f5a9cd9a019ed87d9de7ce09/gpu/ipc/service/image_decode_accelerator_stub.h

Project Member

Comment 17 by bugdroid1@chromium.org, Nov 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/1e14110706a8693be3f78cd4ed998cc681473768

commit 1e14110706a8693be3f78cd4ed998cc681473768
Author: Andres Calderon Jaramillo <andrescj@chromium.org>
Date: Tue Nov 13 02:07:18 2018

Let ClientTransferCache lock entries without creating on the service.

This CL adds a method to ClientTransferCache that allows the client to
get a ClientDiscardableHandle without
ClientTransferCache::Client::IssueCreateTransferCacheEntry getting
called so that the client can essentially start a locked entry but
trigger the creation of the service-side entry using some other
mechanism, e.g., an IPC message.

This is needed for hardware-accelerated image decodes because the decode
will be started by sending an IPC message, and the service-side cache
entry shouldn't be created until the decode is done, so the usual flow
of triggering the cache entry creation using the command buffer won't
do.

Additionally, some documentation is updated.

Bug: 868400
Change-Id: I24cf9b921b8a0ea2e7038c1801f2b7c36fda1927
Reviewed-on: https://chromium-review.googlesource.com/c/1328184
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Khushal <khushalsagar@chromium.org>
Commit-Queue: Andres Calderon Jaramillo <andrescj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607438}
[modify] https://crrev.com/1e14110706a8693be3f78cd4ed998cc681473768/gpu/command_buffer/client/client_transfer_cache.cc
[modify] https://crrev.com/1e14110706a8693be3f78cd4ed998cc681473768/gpu/command_buffer/client/client_transfer_cache.h

Blocking: 907636
Project Member

Comment 19 by bugdroid1@chromium.org, Nov 27

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/8235453838db4d7f51a3181ce8a52a3cd51c51af

commit 8235453838db4d7f51a3181ce8a52a3cd51c51af
Author: Andres Calderon Jaramillo <andrescj@chromium.org>
Date: Tue Nov 27 20:53:06 2018

RasterInterface plumbing for image decode acceleration.

This CL adds a ScheduleImageDecode() method to RasterInterface that
locks a transfer cache entry and sends an image decode request. This is
done so that it's convenient for the GpuImageDecodeCache to eventually
request image decodes.

Note that a new interface was introduced:
ImageDecodeAcceleratorInterface. This is necessary to allow
RasterImplementation to use ImageDecodeAcceleratorProxy without breaking
dependencies.

Bug: 868400
Change-Id: Ib24ffa9f5855cc843e1bf83ef4cd2ebb039c04d8
Reviewed-on: https://chromium-review.googlesource.com/c/1313671
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Commit-Queue: Andres Calderon Jaramillo <andrescj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#611304}
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/BUILD.gn
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/client_transfer_cache.cc
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/client_transfer_cache.h
[add] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/image_decode_accelerator_interface.h
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/raster_implementation.cc
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/raster_implementation.h
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/raster_implementation_gles.cc
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/raster_implementation_gles.h
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/raster_implementation_unittest.cc
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/command_buffer/client/raster_interface.h
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/ipc/client/image_decode_accelerator_proxy.cc
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/ipc/client/image_decode_accelerator_proxy.h
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/ipc/common/command_buffer_id.h
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/gpu/ipc/raster_in_process_context.cc
[modify] https://crrev.com/8235453838db4d7f51a3181ce8a52a3cd51c51af/services/ws/public/cpp/gpu/context_provider_command_buffer.cc

Project Member

Comment 20 by bugdroid1@chromium.org, Dec 11

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/c8c2769f4dd8c5761af90b3a39529c338c149257

commit c8c2769f4dd8c5761af90b3a39529c338c149257
Author: Andres Calderon Jaramillo <andrescj@chromium.org>
Date: Tue Dec 11 01:38:37 2018

Handle the release of sync tokens for image decode acceleration.

This CL adds code to make the gpu::ImageDecodeAcceleratorStub use the
gpu::Scheduler to release decode sync tokens when a decode is completed.
A new interface is created, ImageDecodeAcceleratorWorker, which will
eventually be implemented to carry out the actual hardware decode. Upon
receiving an IPC request, the ImageDecodeAcceleratorStub does the
following:

1) Schedule a task in the GPU scheduler to release the decode sync
token. This task, encapsulated by the ProcessCompletedDecode() method,
is not run until the decode completes.

2) Ask the ImageDecodeAcceleratorWorker to do the actual decode. Upon
completion, the worker calls the OnCompletedDecode() method which
enables the scheduler sequence so that the task created in (1) can run.

Test: created unit tests for the added behavior.
Bug: 868400
Change-Id: I562ed5a81badca578acb468864f67942eacf2f43
Reviewed-on: https://chromium-review.googlesource.com/c/1355528
Commit-Queue: Andres Calderon Jaramillo <andrescj@chromium.org>
Reviewed-by: Antoine Labour <piman@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#615371}
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/components/viz/service/gl/gpu_service_impl.cc
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/BUILD.gn
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/command_buffer/service/scheduler.cc
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/BUILD.gn
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/gpu_channel.cc
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/gpu_channel.h
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/gpu_channel_manager.cc
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/gpu_channel_manager.h
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/gpu_channel_test_common.cc
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/gpu_channel_test_common.h
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/image_decode_accelerator_stub.cc
[modify] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/image_decode_accelerator_stub.h
[add] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/image_decode_accelerator_stub_unittest.cc
[add] https://crrev.com/c8c2769f4dd8c5761af90b3a39529c338c149257/gpu/ipc/service/image_decode_accelerator_worker.h

Project Member

Comment 21 by bugdroid1@chromium.org, Dec 13

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/64f5ebbc492de150283631a0fc352868cb681f90

commit 64f5ebbc492de150283631a0fc352868cb681f90
Author: Andres Calderon Jaramillo <andrescj@chromium.org>
Date: Thu Dec 13 02:20:33 2018

Validate release_count and output_size in a ScheduleImageDecode request.

This CL adds code to make sure that

a) ScheduleImageDecode requests are submitted in order, i.e., the
release_count of the sync tokens is strictly increasing and starts at >= 1.

b) The output_size parameter is at least 1x1.

Additionally, the overflow check for the output data size is removed as that
will be delegated to the ImageDecodeAcceleratorWorker later when it needs to
calculate the data size and allocate memory for the output.

Test: this CL adds unit tests for the validation code.
Bug: 868400
Change-Id: Ia3348668a9f8df982d2ed31729bfcd1382282cd0
Reviewed-on: https://chromium-review.googlesource.com/c/1368595
Commit-Queue: Andres Calderon Jaramillo <andrescj@chromium.org>
Reviewed-by: Robert Sesek <rsesek@chromium.org>
Reviewed-by: Sunny Sachanandani <sunnyps@chromium.org>
Cr-Commit-Position: refs/heads/master@{#616166}
[modify] https://crrev.com/64f5ebbc492de150283631a0fc352868cb681f90/gpu/ipc/service/image_decode_accelerator_stub.cc
[modify] https://crrev.com/64f5ebbc492de150283631a0fc352868cb681f90/gpu/ipc/service/image_decode_accelerator_stub.h
[modify] https://crrev.com/64f5ebbc492de150283631a0fc352868cb681f90/gpu/ipc/service/image_decode_accelerator_stub_unittest.cc

Comment 22 by andrescj@chromium.org, Today (12 hours ago)

Blockedon: 924310

Sign in to add a comment