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

Issue 716286 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
not on Chrome anymore
Closed: May 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug



Sign in to add a comment

Put software-decoded video into overlays on Windows

Project Member Reported by jbau...@chromium.org, Apr 28 2017

Issue description

Ideally both for clear and EME content. We'll need to use GpuMemoryBuffers for the frames, then upload them to the overlay in DirectCompositionSurfaceWin.

 
My prototype reduces power when playing https://www.youtube.com/watch?v=cU-nK4V5idY in 1080p60 with hardware accelerated video disabled from around 4 W to around 3.1W, partly through a reduction in GPU power from 0.37W to 0.09W and partly by doing less work on the CPU with all the GL commands.
Nice! That's way more savings then I was ever able to see with zero-copy.
Project Member

Comment 3 by bugdroid1@chromium.org, May 4 2017

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

commit d817ddec78c9de78881a1661fa7f03e077d32d36
Author: jbauman <jbauman@chromium.org>
Date: Thu May 04 21:05:05 2017

Allow binding multiple textures to one DC Layer overlay.

Modify ScheduleDCLayers command to take an array of textures.  This will
allow using NV12 shared-memory GpuMemoryBuffers, which will have
separate Y and UV GLImages.

BUG= 716286 
CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel;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/2849743002
Cr-Commit-Position: refs/heads/master@{#469468}

[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/cc/output/gl_renderer.cc
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/build_gles2_cmd_buffer.py
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/client/gles2_c_lib_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/client/gles2_cmd_helper_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/client/gles2_implementation.cc
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/client/gles2_implementation_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/client/gles2_interface_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/client/gles2_interface_stub_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/client/gles2_trace_implementation_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/cmd_buffer_functions.txt
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/common/gles2_cmd_format_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/common/gles2_cmd_format_test_autogen.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/service/gles2_cmd_decoder.cc
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doer_prototypes.h
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_doers.cc
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/command_buffer/service/gles2_cmd_decoder_passthrough_handlers.cc
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/ipc/service/direct_composition_surface_win.cc
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/gpu/ipc/service/direct_composition_surface_win_unittest.cc
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/ui/gl/dc_renderer_layer_params.cc
[modify] https://crrev.com/d817ddec78c9de78881a1661fa7f03e077d32d36/ui/gl/dc_renderer_layer_params.h

Project Member

Comment 4 by bugdroid1@chromium.org, May 5 2017

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

commit 60b4d8b24e7096491e00b1745ec64129a5234e06
Author: jbauman <jbauman@chromium.org>
Date: Fri May 05 01:07:16 2017

Allow putting NV12 software GMBs into overlays on windows

Copy the shared-memory NV12 GpuMemoryBuffer into an NV12 D3D11 dynamic
texture, which can be used as the source for the video processing that
goes to the backbuffer.

This still needs --enable-gpu-memory-buffer-video-frames to be enabled.
In my testing it reduces power on a 1080p60 VP9 video from 4W to 3.1W.

BUG= 716286 
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/2849963003
Cr-Commit-Position: refs/heads/master@{#469558}

[modify] https://crrev.com/60b4d8b24e7096491e00b1745ec64129a5234e06/gpu/ipc/service/direct_composition_surface_win.cc
[modify] https://crrev.com/60b4d8b24e7096491e00b1745ec64129a5234e06/gpu/ipc/service/direct_composition_surface_win_unittest.cc
[modify] https://crrev.com/60b4d8b24e7096491e00b1745ec64129a5234e06/media/video/gpu_memory_buffer_video_frame_pool.cc
[modify] https://crrev.com/60b4d8b24e7096491e00b1745ec64129a5234e06/ui/gl/gl_image.h
[modify] https://crrev.com/60b4d8b24e7096491e00b1745ec64129a5234e06/ui/gl/gl_image_memory.cc
[modify] https://crrev.com/60b4d8b24e7096491e00b1745ec64129a5234e06/ui/gl/gl_image_memory.h

Project Member

Comment 5 by bugdroid1@chromium.org, May 5 2017

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

commit a0bb898bd0e15d717ce009d706b16ffd0b58c62d
Author: jbauman <jbauman@chromium.org>
Date: Fri May 05 19:50:53 2017

Enable GpuMemoryBuffer video frames on systems that support overlays.

This allows the video frames to be drawn using overlays, saving power.

BUG= 716286 

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

[modify] https://crrev.com/a0bb898bd0e15d717ce009d706b16ffd0b58c62d/content/renderer/render_thread_impl.cc

Status: Fixed (was: Started)

Sign in to add a comment