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

Issue 2383753002: gpu: Add GpuFence framework.

Created:
4 years, 2 months ago by reveman
Modified:
3 years, 5 months ago
CC:
Aaron Boodman, abarth-chromium, anandc+watch-blimp_chromium.org, bgoldman+watch-blimp_chromium.org, cc-bugs_chromium.org, chromium-apps-reviews_chromium.org, chromium-reviews, darin (slow to review), darin-cc_chromium.org, dtrainor+watch-blimp_chromium.org, extensions-reviews_chromium.org, gcasto+watch-blimp_chromium.org, gurchetansingh, hoegsberg, jam, jessicag+watch-blimp_chromium.org, khushalsagar+watch-blimp_chromium.org, kmarshall+watch-blimp_chromium.org, lethalantidote+watch-blimp_chromium.org, maniscalco+watch-blimp_chromium.org, marcinjb+watch-blimp_chromium.org, nyquist+watch-blimp_chromium.org, perumaal+watch-blimp_chromium.org, piman+watch_chromium.org, qsr+mojo_chromium.org, rjkroege, scf+watch-blimp_chromium.org, shaktisahu+watch-blimp_chromium.org, sriramsr+watch-blimp_chromium.org, steimel+watch-blimp_chromium.org, viettrungluu+watch_chromium.org, yzshen+watch_chromium.org
Target Ref:
refs/pending/heads/master
Project:
chromium
Visibility:
Public.

Description

gpu: Add GpuFence framework. This introduces a new type of synchronization primitive that can be used to more effectively synchronize access to resources shared with the GPU. It's useful when the resources dealing with resources that are used in multiple processes or accessed both using the GPU and the CPU. It provides the building blocks needed to effectively support explicit synchronization and reduce the synchronization overhead for GpuMemoryBuffers on platforms without native buffer support. A software implementation of the GpuFence interface is provided as part of this patch. This software implementation can be used as a fallback on platforms without native sync primitives and is ideal for synchronizing access to GpuMemoryBuffers when backed by shared memory. BUG=653908 TEST=gfx_unittests, gl_tests CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_precise_blink_rel

Patch Set 1 #

Patch Set 2 : GLES2 interface #

Patch Set 3 : gpu: GpuFence prototype. #

Patch Set 4 : gpu: GpuFence prototype. #

Patch Set 5 : Reset #

Patch Set 6 : typo #

Patch Set 7 : move libsync to new cl #

Patch Set 8 : rebase #

Patch Set 9 : gl tests #

Patch Set 10 : remove libsync fd #

Patch Set 11 : fix test #

Patch Set 12 : rebase #

Patch Set 13 : rebase + log #

Patch Set 14 : gpu: Add GpuFence framework. #

Patch Set 15 : gpu: Add GpuFence framework. #

Patch Set 16 : rebase #

Patch Set 17 : nullptr FromHandle #

Patch Set 18 : rebase #

Total comments: 6
Unified diffs Side-by-side diffs Delta from patch set Stats (+1385 lines, -0 lines) Patch
M blimp/client/support/compositor/blimp_gpu_memory_buffer_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +4 lines, -0 lines 0 comments Download
M blimp/client/support/compositor/blimp_gpu_memory_buffer_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +18 lines, -0 lines 0 comments Download
M cc/test/test_gpu_memory_buffer_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +4 lines, -0 lines 0 comments Download
M cc/test/test_gpu_memory_buffer_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +44 lines, -0 lines 0 comments Download
M content/browser/gpu/browser_gpu_memory_buffer_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +8 lines, -0 lines 0 comments Download
M content/browser/gpu/browser_gpu_memory_buffer_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +25 lines, -0 lines 0 comments Download
M content/browser/renderer_host/render_message_filter.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +3 lines, -0 lines 0 comments Download
M content/browser/renderer_host/render_message_filter.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +17 lines, -0 lines 0 comments Download
M content/child/child_gpu_memory_buffer_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +4 lines, -0 lines 0 comments Download
M content/child/child_gpu_memory_buffer_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +24 lines, -0 lines 0 comments Download
M content/common/child_process_messages.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +5 lines, -0 lines 0 comments Download
M gpu/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +1 line, -0 lines 0 comments Download
A gpu/GLES2/extensions/CHROMIUM/CHROMIUM_fence.txt View 1 2 3 4 5 6 1 chunk +54 lines, -0 lines 0 comments Download
M gpu/GLES2/gl2chromium_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/GLES2/gl2extchromium.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +14 lines, -0 lines 0 comments Download
M gpu/command_buffer/build_gles2_cmd_buffer.py View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +12 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/client_test_helper.h View 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_c_lib_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +14 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_implementation.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +3 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_implementation.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +32 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_implementation_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +4 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_interface.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +1 line, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_interface_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_interface_stub_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_interface_stub_impl_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +4 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_trace_implementation_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gles2_trace_implementation_impl_autogen.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +10 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gpu_control.h View 2 chunks +7 lines, -0 lines 0 comments Download
M gpu/command_buffer/client/gpu_memory_buffer_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +11 lines, -0 lines 0 comments Download
M gpu/command_buffer/cmd_buffer_functions.txt View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/command_buffer/service/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +2 lines, -0 lines 0 comments Download
A gpu/command_buffer/service/fence_manager.h View 1 2 1 chunk +43 lines, -0 lines 0 comments Download
A gpu/command_buffer/service/fence_manager.cc View 1 2 1 chunk +48 lines, -0 lines 0 comments Download
M gpu/command_buffer/service/gles2_cmd_decoder.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +4 lines, -0 lines 0 comments Download
M gpu/command_buffer/service/gles2_cmd_decoder.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 6 chunks +13 lines, -0 lines 0 comments Download
M gpu/command_buffer/service/gles2_cmd_decoder_mock.h View 1 2 1 chunk +1 line, -0 lines 0 comments Download
M gpu/command_buffer/service/gles2_cmd_decoder_passthrough.h View 1 2 3 chunks +5 lines, -0 lines 0 comments Download
M gpu/command_buffer/service/gles2_cmd_decoder_passthrough.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +11 lines, -0 lines 0 comments Download
A gpu/command_buffer/tests/gl_gpu_fence_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +67 lines, -0 lines 0 comments Download
M gpu/command_buffer/tests/gl_manager.h View 1 2 3 4 5 6 7 8 5 chunks +8 lines, -0 lines 0 comments Download
M gpu/command_buffer/tests/gl_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 5 chunks +59 lines, -0 lines 0 comments Download
M gpu/gles2_conform_support/egl/context.h View 1 2 3 4 5 6 7 8 9 10 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/gles2_conform_support/egl/context.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +9 lines, -0 lines 0 comments Download
M gpu/ipc/client/BUILD.gn View 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/ipc/client/command_buffer_proxy_impl.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/ipc/client/command_buffer_proxy_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +36 lines, -0 lines 0 comments Download
M gpu/ipc/client/gpu_channel_host.h View 3 chunks +13 lines, -0 lines 0 comments Download
M gpu/ipc/client/gpu_channel_host.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +13 lines, -0 lines 2 comments Download
A gpu/ipc/client/gpu_fence_impl.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +42 lines, -0 lines 0 comments Download
A gpu/ipc/client/gpu_fence_impl.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +55 lines, -0 lines 0 comments Download
M gpu/ipc/common/gpu_messages.h View 1 2 3 4 5 6 7 8 9 10 11 12 2 chunks +13 lines, -0 lines 0 comments Download
M gpu/ipc/in_process_command_buffer.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +2 lines, -0 lines 0 comments Download
M gpu/ipc/in_process_command_buffer.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +9 lines, -0 lines 0 comments Download
M gpu/ipc/service/gpu_channel.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 3 chunks +8 lines, -0 lines 0 comments Download
M gpu/ipc/service/gpu_channel.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +7 lines, -0 lines 0 comments Download
M gpu/ipc/service/gpu_command_buffer_stub.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 2 chunks +3 lines, -0 lines 0 comments Download
M gpu/ipc/service/gpu_command_buffer_stub.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 4 chunks +45 lines, -0 lines 0 comments Download
M ppapi/proxy/ppapi_command_buffer_proxy.h View 1 chunk +2 lines, -0 lines 0 comments Download
M ppapi/proxy/ppapi_command_buffer_proxy.cc View 1 chunk +9 lines, -0 lines 0 comments Download
M services/ui/public/cpp/mojo_gpu_memory_buffer_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +5 lines, -0 lines 0 comments Download
M services/ui/public/cpp/mojo_gpu_memory_buffer_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +18 lines, -0 lines 0 comments Download
M services/ui/ws/mus_gpu_memory_buffer_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +4 lines, -0 lines 0 comments Download
M services/ui/ws/mus_gpu_memory_buffer_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +18 lines, -0 lines 0 comments Download
M ui/aura/mus/mojo_gpu_memory_buffer_manager.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +4 lines, -0 lines 0 comments Download
M ui/aura/mus/mojo_gpu_memory_buffer_manager.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 1 chunk +18 lines, -0 lines 0 comments Download
M ui/gfx/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 2 chunks +4 lines, -0 lines 0 comments Download
A ui/gfx/gpu_fence.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +47 lines, -0 lines 0 comments Download
M ui/gfx/ipc/gfx_param_traits_macros.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 2 chunks +5 lines, -0 lines 0 comments Download
A ui/gfx/shared_event.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +72 lines, -0 lines 0 comments Download
A ui/gfx/shared_event.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +120 lines, -0 lines 2 comments Download
A ui/gfx/shared_event_unittest.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +113 lines, -0 lines 0 comments Download
M ui/gl/BUILD.gn View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +2 lines, -0 lines 0 comments Download
M ui/gl/gl_fence.h View 1 2 1 chunk +6 lines, -0 lines 0 comments Download
M ui/gl/gl_fence.cc View 1 2 1 chunk +9 lines, -0 lines 0 comments Download
A ui/gl/gl_fence_shared_event.h View 1 2 3 4 5 6 7 8 9 10 11 12 13 1 chunk +35 lines, -0 lines 0 comments Download
A ui/gl/gl_fence_shared_event.cc View 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1 chunk +37 lines, -0 lines 2 comments Download

Messages

Total messages: 26 (20 generated)
reveman
4 years, 2 months ago (2016-09-30 12:04:39 UTC) #4
reveman
Hi, this is ready for initial review now that we have display latency tests that ...
4 years, 1 month ago (2016-11-02 14:47:59 UTC) #19
reveman
+ericrk, +sonnyps
3 years, 11 months ago (2017-01-06 08:22:06 UTC) #21
ericrk
I'm liking this so far :D - Still wrapping my head around how everything fits ...
3 years, 9 months ago (2017-03-10 03:04:39 UTC) #22
reveman
https://codereview.chromium.org/2383753002/diff/340001/gpu/ipc/client/gpu_channel_host.cc File gpu/ipc/client/gpu_channel_host.cc (right): https://codereview.chromium.org/2383753002/diff/340001/gpu/ipc/client/gpu_channel_host.cc#newcode290 gpu/ipc/client/gpu_channel_host.cc:290: gfx::SharedEvent::DuplicateHandle(source_handle.shared_event_handle); On 2017/03/10 at 03:04:39, ericrk wrote: > We ...
3 years, 9 months ago (2017-03-13 12:33:06 UTC) #23
reveman
3 years, 5 months ago (2017-07-17 13:17:32 UTC) #26
+sadrul

FYI, I'm going to seriously start moving this and follow up patches (native
fence primitives and explicit synchronization support) forward now that we have
explicit cross-process/device synchronization on some Intel devices on CrOS. I'm
going to have dcastagna@ do the high level review of each patch and include the
others of you for more specific owner reviews of specific components.

Powered by Google App Engine
This is Rietveld 408576698