Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(257)

Issue 2829543003: gpu: Empty swaps for surfaceless output surfaces. (Closed)

Created:
3 years, 8 months ago by reveman
Modified:
3 years, 5 months ago
CC:
cc-bugs_chromium.org, chromium-reviews, danakj+watch_chromium.org, darin-cc_chromium.org, jam, jbauman+watch_chromium.org, kalyank, piman+watch_chromium.org
Target Ref:
refs/heads/master
Project:
chromium
Visibility:
Public.

Description

gpu: Empty swaps for surfaceless output surfaces. This improves hardware overlay support by avoiding updates to the primary plane when only overlays are damaged. The previous buffer is now reused for the primary plane when damage rect is empty. An important side-effect of this is that we can always support empty swaps without the need for partial updates. BUG=705290 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/2829543003 Cr-Commit-Position: refs/heads/master@{#466245} Committed: https://chromium.googlesource.com/chromium/src/+/bba53b15c45ce0fa66d3343befae28aa695311c1

Patch Set 1 #

Patch Set 2 : rebase #

Patch Set 3 : fix sw compositing #

Patch Set 4 : fix cc_unittests #

Total comments: 10

Patch Set 5 : new workaround #

Unified diffs Side-by-side diffs Delta from patch set Stats (+58 lines, -26 lines) Patch
M cc/output/direct_renderer.cc View 1 2 3 4 2 chunks +5 lines, -12 lines 0 comments Download
M cc/output/overlay_unittest.cc View 1 2 3 2 chunks +2 lines, -2 lines 0 comments Download
M components/display_compositor/buffer_queue.h View 1 chunk +1 line, -4 lines 0 comments Download
M components/display_compositor/buffer_queue.cc View 1 chunk +20 lines, -1 line 0 comments Download
M content/browser/compositor/gpu_surfaceless_browser_compositor_output_surface.cc View 2 chunks +10 lines, -3 lines 0 comments Download
M gpu/command_buffer/common/capabilities.h View 1 1 chunk +3 lines, -0 lines 0 comments Download
M gpu/command_buffer/service/gles2_cmd_decoder.cc View 1 2 3 4 1 chunk +4 lines, -0 lines 0 comments Download
M gpu/config/gpu_driver_bug_list.json View 1 2 3 4 1 chunk +1 line, -1 line 0 comments Download
M gpu/config/gpu_driver_bug_workaround_type.h View 1 2 3 4 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/ipc/common/gpu_command_buffer_traits_multi.h View 1 1 chunk +1 line, -0 lines 0 comments Download
M services/ui/surfaces/display_output_surface_ozone.cc View 1 2 chunks +9 lines, -3 lines 0 comments Download

Messages

Total messages: 47 (30 generated)
reveman
3 years, 8 months ago (2017-04-19 11:47:41 UTC) #4
Daniele Castagna
https://codereview.chromium.org/2829543003/diff/60001/cc/output/direct_renderer.cc File cc/output/direct_renderer.cc (right): https://codereview.chromium.org/2829543003/diff/60001/cc/output/direct_renderer.cc#newcode354 cc/output/direct_renderer.cc:354: if (!skip_drawing_root_render_pass) In the comment you removed it mentioned ...
3 years, 8 months ago (2017-04-19 19:10:36 UTC) #19
reveman
+jbauman, please take a look. FYI, we'll need to merge this back to M58 as ...
3 years, 8 months ago (2017-04-19 23:59:03 UTC) #23
jbauman
https://codereview.chromium.org/2829543003/diff/60001/gpu/command_buffer/common/capabilities.h File gpu/command_buffer/common/capabilities.h (right): https://codereview.chromium.org/2829543003/diff/60001/gpu/command_buffer/common/capabilities.h#newcode176 gpu/command_buffer/common/capabilities.h:176: bool disable_non_empty_post_sub_buffers = false; Wouldn't an empty PostSubBuffers with ...
3 years, 8 months ago (2017-04-20 00:23:47 UTC) #24
reveman
https://codereview.chromium.org/2829543003/diff/60001/gpu/command_buffer/common/capabilities.h File gpu/command_buffer/common/capabilities.h (right): https://codereview.chromium.org/2829543003/diff/60001/gpu/command_buffer/common/capabilities.h#newcode176 gpu/command_buffer/common/capabilities.h:176: bool disable_non_empty_post_sub_buffers = false; On 2017/04/20 at 00:23:47, jbauman ...
3 years, 8 months ago (2017-04-20 18:21:35 UTC) #25
jbauman
This generally seems good, then. https://codereview.chromium.org/2829543003/diff/60001/cc/output/direct_renderer.cc File cc/output/direct_renderer.cc (right): https://codereview.chromium.org/2829543003/diff/60001/cc/output/direct_renderer.cc#newcode104 cc/output/direct_renderer.cc:104: allow_partial_swap_ = false; If ...
3 years, 8 months ago (2017-04-20 21:30:07 UTC) #26
reveman
PTAL https://codereview.chromium.org/2829543003/diff/60001/cc/output/direct_renderer.cc File cc/output/direct_renderer.cc (right): https://codereview.chromium.org/2829543003/diff/60001/cc/output/direct_renderer.cc#newcode104 cc/output/direct_renderer.cc:104: allow_partial_swap_ = false; On 2017/04/20 at 21:30:06, jbauman ...
3 years, 8 months ago (2017-04-20 22:11:40 UTC) #27
jbauman
lgtm On 2017/04/20 22:11:40, reveman wrote: > PTAL > > https://codereview.chromium.org/2829543003/diff/60001/cc/output/direct_renderer.cc > File cc/output/direct_renderer.cc (right): ...
3 years, 8 months ago (2017-04-20 22:19:43 UTC) #28
reveman
+tsepez for gpu/ipc/common/gpu_command_buffer_traits_multi.h +fsamuel for services/ui/surfaces/display_output_surface_ozone.cc
3 years, 8 months ago (2017-04-20 22:51:24 UTC) #30
Tom Sepez
lgtm
3 years, 8 months ago (2017-04-20 22:55:42 UTC) #35
Fady Samuel
lgtm
3 years, 8 months ago (2017-04-20 23:04:46 UTC) #36
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2829543003/80001
3 years, 8 months ago (2017-04-20 23:09:27 UTC) #38
commit-bot: I haz the power
Try jobs failed on following builders: win_chromium_x64_rel_ng on master.tryserver.chromium.win (JOB_FAILED, http://build.chromium.org/p/tryserver.chromium.win/builders/win_chromium_x64_rel_ng/builds/410140) win_optional_gpu_tests_rel on master.tryserver.chromium.win (JOB_FAILED, ...
3 years, 8 months ago (2017-04-20 23:11:37 UTC) #40
commit-bot: I haz the power
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.org/2829543003/80001
3 years, 8 months ago (2017-04-21 02:25:29 UTC) #42
commit-bot: I haz the power
Committed patchset #5 (id:80001) as https://chromium.googlesource.com/chromium/src/+/bba53b15c45ce0fa66d3343befae28aa695311c1
3 years, 8 months ago (2017-04-21 03:21:11 UTC) #45
Xiaosong
On 2017/04/21 03:21:11, commit-bot: I haz the power wrote: > Committed patchset #5 (id:80001) as ...
3 years, 5 months ago (2017-07-11 08:58:33 UTC) #46
reveman
3 years, 5 months ago (2017-07-11 09:12:03 UTC) #47
Message was sent while issue was closed.
On 2017/07/11 at 08:58:33, xiaosong.wei wrote:
> On 2017/04/21 03:21:11, commit-bot: I haz the power wrote:
> > Committed patchset #5 (id:80001) as
> >
https://chromium.googlesource.com/chromium/src/+/bba53b15c45ce0fa66d3343befae...
> 
> Hi,
> 
> I am trying to verify this "Empty Swap" feature on ChromeOS with a static web
page with video playback inside. 
> From /sys/kernel/debug/drm/0/i915_display_info I can see that the video is
promoted to display via Overlay and the static background in the web page is
displayed via primary plane.
> Per my understanding, in this case the damage_rect should be empty and then it
can avoid swapping buffer on the primary plane.
> But the fact is that the damage_rect is always non-empty so that it can't run
into avoid swapping buffer. I remember that in previous chromium it can go to
empty-swap case with the same web page.
> I am wondering if this "Empty Swap" is still valid in the latest chromium, if
so, is there any change needed to verify it?
> Thanks!

Intel uses partial swap so this is not needed in that case. Still, no
compositing should take place unless output surface buffer needs to be updated.

Powered by Google App Engine
This is Rietveld 408576698