[ozone/wayland] Get Wayland functioning with a separate gpu process. |
||||||||||||||||||||||||||||
Issue descriptionThat is, currently Wayland can only work in a single process mode. After trying several approaches, wayland dmabuf approach has been taken. ⛆ |
|
|
,
Mar 8 2018
,
Mar 8 2018
,
Mar 8 2018
,
Mar 9 2018
Prototyping started.
,
Mar 12 2018
,
Apr 24 2018
Deprecating Proj-Mustash-Mus labels in favor of components.
,
May 17 2018
,
May 17 2018
,
May 17 2018
,
May 17 2018
,
May 25 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4d8f328048f02241aed91a042ea8f75669e77607 commit 4d8f328048f02241aed91a042ea8f75669e77607 Author: Maksim Sisov <msisov@igalia.com> Date: Fri May 25 19:43:39 2018 [ozone/wayland/drm] Place drm format helper methods into shared place. This CL is a part of Wayland gpu/ui split effort, which fixes the Ozone/Wayland and makes it functional when the gpu service is running off the browser process. The patch does not bring any functionality changes, but rather prepares Ozone/Wayland dmabuf based approach, which uses ozone/drm code, to be landed in the upstream. In particular, drm_util is partly moved to ui/ozone/common/linux and implements drm format conversion methods, which are used by Ozone/drm and are going to be used by Wayland with dmabuf approach. Bug: 820047 Change-Id: I024fd1f6a57b9e9693864e62d5cb8a443afd9e2a Reviewed-on: https://chromium-review.googlesource.com/1071792 Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Commit-Queue: Maksim Sisov <msisov@igalia.com> Cr-Commit-Position: refs/heads/master@{#561977} [modify] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/common/BUILD.gn [add] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/common/linux/drm_util_linux.cc [add] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/common/linux/drm_util_linux.h [modify] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/platform/drm/BUILD.gn [modify] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/platform/drm/common/drm_util.cc [modify] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/platform/drm/common/drm_util.h [modify] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/platform/drm/gpu/drm_gpu_display_manager.cc [modify] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc [modify] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/platform/drm/gpu/drm_overlay_validator_unittest.cc [modify] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/platform/drm/gpu/drm_thread.cc [modify] https://crrev.com/4d8f328048f02241aed91a042ea8f75669e77607/ui/ozone/platform/drm/gpu/gbm_buffer.cc
,
May 29 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/336e5548392b53950f6ae8f8e7b651ff866c826b commit 336e5548392b53950f6ae8f8e7b651ff866c826b Author: Maksim Sisov <msisov@igalia.com> Date: Tue May 29 16:54:20 2018 [ozone/wayland/drm] Place OverlayPlane and ScanoutBuffer into shared place. This CL is a part of Wayland gpu/ui split effort, which fixes the Ozone/Wayland and mades it functional when the gpu service is running out of the browser process. The patch does not bring any functionality changes, but rather prepares Ozone/Wayland for a dmabuf based approach, which uses ozone/drm code, to be landed in the upstream. In particular, overlay_plane.cc/h and scanout_buffer.h are moved into a common folder in the ui/ozone/common/linux. These are only compiled for wayland (downstream now) and drm backends, and does not bring any additional load on other backends. Bug: 820047 Change-Id: I1268eeb38e710e9a1c335def08fa94edf103095f Reviewed-on: https://chromium-review.googlesource.com/1071928 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Cr-Commit-Position: refs/heads/master@{#562465} [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/common/BUILD.gn [add] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/common/linux/OWNERS [rename] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/common/linux/overlay_plane.cc [rename] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/common/linux/overlay_plane.h [rename] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/common/linux/scanout_buffer.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/BUILD.gn [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/crtc_controller.cc [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/crtc_controller.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/drm_buffer.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/drm_overlay_validator.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/drm_window.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/drm_window_proxy.cc [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/gbm_buffer.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/gbm_surfaceless.cc [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/gbm_surfaceless.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/hardware_display_controller.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.cc [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_atomic.cc [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/hardware_display_plane_manager_legacy.cc [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/mock_scanout_buffer.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/gpu/screen_manager.cc [modify] https://crrev.com/336e5548392b53950f6ae8f8e7b651ff866c826b/ui/ozone/platform/drm/ozone_platform_gbm.cc
,
May 29 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/03d4a1967d2c958945643be36e726ef184e69ddd commit 03d4a1967d2c958945643be36e726ef184e69ddd Author: Maksim Sisov <msisov@igalia.com> Date: Tue May 29 21:58:37 2018 [ozone/wayland/drm] Refactor and place gbm_device into shared place. This CL is a part of Wayland gpu/ui split effort, which fixes the Ozone/Wayland and makes it functional when the gpu service is running out of the browser process. The patch does not bring any functionality changes, but rather prepares Ozone/Wayland for a dmabuf based approach, which uses ozone/drm code, to be landed in the upstream. In particular, gbm_device.cc/h is moved into a common folder in the ui/ozone/common/linux and renamed to gbm_device_linux.cc/h. What is more, it is refactored in such a way that it can be used by both Wayland with dmabuf approach and ozone/drm. This is only compiled for wayland(downstream now) and drm backends, and does not bring any additional load on other backends. Bug: 820047 Change-Id: I9eb4da474eb24d6d32fe355ff37b6d0806672fde Reviewed-on: https://chromium-review.googlesource.com/1071889 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Cr-Commit-Position: refs/heads/master@{#562613} [modify] https://crrev.com/03d4a1967d2c958945643be36e726ef184e69ddd/ui/ozone/common/BUILD.gn [add] https://crrev.com/03d4a1967d2c958945643be36e726ef184e69ddd/ui/ozone/common/linux/gbm_device_linux.cc [add] https://crrev.com/03d4a1967d2c958945643be36e726ef184e69ddd/ui/ozone/common/linux/gbm_device_linux.h [modify] https://crrev.com/03d4a1967d2c958945643be36e726ef184e69ddd/ui/ozone/platform/drm/gpu/drm_device.h [modify] https://crrev.com/03d4a1967d2c958945643be36e726ef184e69ddd/ui/ozone/platform/drm/gpu/gbm_device.cc [modify] https://crrev.com/03d4a1967d2c958945643be36e726ef184e69ddd/ui/ozone/platform/drm/gpu/gbm_device.h
,
Jun 8 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b5b7198ac07aa51ae733007953f803b288270d26 commit b5b7198ac07aa51ae733007953f803b288270d26 Author: Maksim Sisov <msisov@igalia.com> Date: Fri Jun 08 07:17:04 2018 [ozone/common/drm] Avoid forward declaration on not declared deps. Make sure forward declaration is not used to just avoid declaring dependencies in the common/BUILD.gn. That is, DrmDevice is a drm platform's class, which shouldn't be known by the ozone/common. To fix this, return GbmDeviceLinux instead and add AsGbmDeviceLinux method to the DrmDevice class to return downcasted pointer to self, and move ScanoutBufferGenerator to drm/gpu as long as it's not needed by the Wayland with dmabuf approach at this stage. Bug: 820047 Change-Id: I25703db41234275e0c0cb5aaefe0e61964a50e83 Reviewed-on: https://chromium-review.googlesource.com/1088690 Reviewed-by: Michael Spang <spang@chromium.org> Commit-Queue: Maksim Sisov <msisov@igalia.com> Cr-Commit-Position: refs/heads/master@{#565574} [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/common/linux/scanout_buffer.h [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/BUILD.gn [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/drm_buffer.cc [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/drm_buffer.h [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/drm_device.h [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/drm_overlay_validator.cc [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/drm_thread.cc [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/drm_window.cc [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/drm_window_unittest.cc [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/gbm_buffer.cc [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/gbm_buffer.h [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/mock_dumb_buffer_generator.h [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/mock_scanout_buffer.cc [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/mock_scanout_buffer.h [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/mock_scanout_buffer_generator.h [add] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/scanout_buffer_generator.h [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/screen_manager.cc [modify] https://crrev.com/b5b7198ac07aa51ae733007953f803b288270d26/ui/ozone/platform/drm/gpu/screen_manager_unittest.cc
,
Jun 29 2018
,
Jul 16
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/b29640a793cd64f416b09489d8ce0521cde6c322 commit b29640a793cd64f416b09489d8ce0521cde6c322 Author: Maksim Sisov <msisov@igalia.com> Date: Mon Jul 16 11:25:25 2018 [ozone/wayland/drm] Implement gbm bo wrapper in common. This CL is a part of the Wayland gpu/ui split effort, which fixes the Ozone/Wayland and makes it functional when the gpu service is running out of the browser process. The patch does not bring any functionality changes, but rather prepares Ozone/Wayland for a dmabuf based approach, which uses ozone/drm code, to be landed in the upstream. In particular, gbm_bo_wrapper.cc/h is now a wrapper around gbm_bo, which is going to be used by ozone/drm and ozone/wayland. This is only compiled for wayland (downstream now) and drm backends, and does not bring any additional load on other backends. TEST: compile ozone/drm. Bug: 820047 Change-Id: I10cf2bcb990aa6de8acb67e941cc4e774747682a Reviewed-on: https://chromium-review.googlesource.com/1078247 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Reviewed-by: Michael Spang <spang@chromium.org> Cr-Commit-Position: refs/heads/master@{#575225} [modify] https://crrev.com/b29640a793cd64f416b09489d8ce0521cde6c322/ui/ozone/common/BUILD.gn [add] https://crrev.com/b29640a793cd64f416b09489d8ce0521cde6c322/ui/ozone/common/linux/BUILD.gn [add] https://crrev.com/b29640a793cd64f416b09489d8ce0521cde6c322/ui/ozone/common/linux/gbm_bo_wrapper.cc [add] https://crrev.com/b29640a793cd64f416b09489d8ce0521cde6c322/ui/ozone/common/linux/gbm_bo_wrapper.h [modify] https://crrev.com/b29640a793cd64f416b09489d8ce0521cde6c322/ui/ozone/platform/drm/BUILD.gn [modify] https://crrev.com/b29640a793cd64f416b09489d8ce0521cde6c322/ui/ozone/platform/drm/gpu/gbm_buffer.cc [modify] https://crrev.com/b29640a793cd64f416b09489d8ce0521cde6c322/ui/ozone/platform/drm/gpu/gbm_buffer.h
,
Jul 18
,
Aug 2
,
Aug 10
,
Aug 14
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/1df29ae0d52a07f6bc80b344cef8a5a2358fc37f commit 1df29ae0d52a07f6bc80b344cef8a5a2358fc37f Author: Maksim Sisov <msisov@igalia.com> Date: Tue Aug 14 09:47:05 2018 Roll third_party/minigbm 3cb5bba..ff1ecaf $ git log --oneline 3cb5bbacc5c8a79105c868875222696f6b9d8296...ff1ecaf1014df4cb9ca36c5a270647a9934aaa99 ff1ecaf minigbm: fixup! align minigbm functions names with upstream libgbm 79205a5 minigbm: align minigbm functions names with upstream libgbm faeb009 minigbm: Opening new fd for dri backend a047d41 minigbm: increment ref count in drv_bo_import dc8554f minigbm: amdgpu: align the stride to 256 1805a9b msm: allow allocation of NV12 dumb buffers dea0ccb minigbm: Add BO_USE_HW_VIDEO_DECODER to supported flags a8a3895 minigbm: close bo handle in bo destroy 293d9e3 minigbm: DRM_FORMAT_BGR888 for amdgpu 9924776 minigbm: Build fix for arm64 abe44f6 minigbm: add support for BG24 6bd7885 minigbm: run clang-format Bug: 820047, 869206 Change-Id: I512b35c7821fd3221a97592006de5279b414dd01 Reviewed-on: https://chromium-review.googlesource.com/1169821 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Michael Spang <spang@chromium.org> Cr-Commit-Position: refs/heads/master@{#582875} [modify] https://crrev.com/1df29ae0d52a07f6bc80b344cef8a5a2358fc37f/DEPS
,
Aug 15
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/4efeaf16f08b269b047de0628df8e4a211724cbd commit 4efeaf16f08b269b047de0628df8e4a211724cbd Author: Maksim Sisov <msisov@igalia.com> Date: Wed Aug 15 16:01:36 2018 [ozone/Wayland] Implement Wayland dmabuf approach. This patch makes it possible to run Wayland backend with a separate gpu process. That is, WaylandConnection is not available on the GPU process side and so buffers cannot be created that way. To overcome this, a Wayland dmabuf based approach is used: - On the gpu process side, gl::Surfaceless is used, which is implemented by GbmSurfaceless. It differs from the one provided by the Ozone/Gbm backend (the difference is that there are no frame buffers, because DRM render node is used instead.) Basically, on the GPU side, a gbm_bo buffer is created and its file descriptor is shared with the WaylandConnection, which then imports a wl_buffer and attaches it to a requested surface. TL:DR; - There are two communicating parties - WaylandConnection, which establishes a connection with Wayland, and a WaylandConnectionProxy, which serves the GPU process with a forwarding mojo connection to the WaylandConnection. In single process mode, WaylandConnectionProxy just forwards calls to WaylandConnection, and GLSurfaceEGL is used. In a multi process mode, the l::Surfaceless and dmabuf based approach is used instead. - The communication is established in the following way: when WaylandConnectionConnector receives a OnGpuServiceLaunched, it binds WaylandConnection and WaylandConnectionProxy interfaces, and calls to WaylandConnectionProxy to set a mojo ptr to the WaylandConnection. The WaylandConnectionProxy receives the pointer, stores it and also stores a task runner to make sure mojo is called on the right sequence. How buffers are created: - Basically, the GPU process doesn't know about Wayland. What it does is that it creates a GbmBuffer utilizing a DRM render node (it can't use a drm card device, because authentication requires master access), takes a gbm_bo file descriptor and shares it via a mojo call with the WaylandConnection, which then uses the zwp_linux_dmabuf interface to import a wl_buffer, which can be attached to a needed WaylandWindow and commit-ed to show contents. That is, the gbm framework is used to share buffers between the browser and the GPU process, where the browser process can read from them and the GPU process is able to read and write using gl commands. How buffers are committed: - GbmSurfaceless uses a normal procedure and submits frames on SwapBuffersAsync call: a frame is created and scheduled as an overlay plane, once scheduling is done, a widget is taken from that pending plane and WaylandConnection::ScheduleBufferSwap is called. In order to specify, which wl_buffer must be used, gbm bo handle is used as a buffer id. Once the WaylandConnection receives a buffer swap call, it finds a buffer by a buffer id and attaches that buffer to a WaylandWindow, which is also found by a widget passed to it. PresentationCallback is not used and will be enabled in the future. The missing feature is the software rasterization. That is, the gbm buffers cannot be mmap'ed using unix mmap method. Thus, it's impossible to get a mapped memory range and let the cpu write to it. I think this problem can be resolved in the downstream projects in different ways but these solutions are not generic enough to be upstreamed. Another missing feature is presentation feedback. This will be implemented in follow up CLs. COMPILE= compiles only with third_party minigbm now. For example, add use_intel_minigbm=true if intel gpu is ozone_platform_wayland=true. Using system libgbm will be available soon. TEST=run and compile ozone/wayland. Bug: 820047 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: Id351edd9883a765d3e549543a50175299108c6ab Reviewed-on: https://chromium-review.googlesource.com/1057468 Reviewed-by: Scott Violet <sky@chromium.org> Reviewed-by: Antoine Labour <piman@chromium.org> Reviewed-by: Ilya Sherman <isherman@chromium.org> Reviewed-by: Tom Sepez <tsepez@chromium.org> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Commit-Queue: Maksim Sisov <msisov@igalia.com> Cr-Commit-Position: refs/heads/master@{#583265} [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/content/browser/gpu/gpu_process_host.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/content/browser/gpu/gpu_process_host.h [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/content/public/app/mojo/content_gpu_manifest.json [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/tools/metrics/histograms/enums.xml [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/tools/metrics/histograms/histograms.xml [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/common/linux/BUILD.gn [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/common/linux/drm_util_linux.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/common/linux/drm_util_linux.h [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/drm/host/drm_device_connector.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/drm/host/drm_device_connector.h [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.h [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/scenic/ozone_platform_scenic.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/BUILD.gn [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/DEPS [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/client_native_pixmap_factory_wayland.cc [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/drm_render_node_handle.cc [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/drm_render_node_handle.h [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.cc [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.h [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/wayland_connection_proxy.cc [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/gpu/wayland_connection_proxy.h [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/ozone_platform_wayland.cc [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland.gni [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_connection.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_connection.h [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_connection_connector.cc [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_connection_connector.h [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_object.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_object.h [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_surface_factory.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_surface_factory.h [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_surface_factory_unittest.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_test.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/platform/wayland/wayland_test.h [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/public/gpu_platform_support_host.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/public/gpu_platform_support_host.h [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/public/interfaces/wayland/BUILD.gn [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/public/interfaces/wayland/OWNERS [add] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/public/interfaces/wayland/wayland_connection.mojom [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/public/ozone_platform.cc [modify] https://crrev.com/4efeaf16f08b269b047de0628df8e4a211724cbd/ui/ozone/public/ozone_platform.h
,
Aug 15
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a89bb8dbd7043a597fa8a40eea9a5867da84b73b commit a89bb8dbd7043a597fa8a40eea9a5867da84b73b Author: Xida Chen <xidachen@chromium.org> Date: Wed Aug 15 17:53:47 2018 Revert "[ozone/Wayland] Implement Wayland dmabuf approach." This reverts commit 4efeaf16f08b269b047de0628df8e4a211724cbd. Reason for revert: <INSERT REASONING HERE> Causes a lot of unit test failure: https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/linux-chromeos-dbg/7319 Original change's description: > [ozone/Wayland] Implement Wayland dmabuf approach. > > This patch makes it possible to run Wayland backend with a separate gpu process. > That is, WaylandConnection is not available on the GPU process side > and so buffers cannot be created that way. > > To overcome this, a Wayland dmabuf based approach is used: > - On the gpu process side, gl::Surfaceless is used, which is > implemented by GbmSurfaceless. It differs from the one provided by > the Ozone/Gbm backend (the difference is that there are no frame > buffers, because DRM render node is used instead.) Basically, > on the GPU side, a gbm_bo buffer is created and its file descriptor is > shared with the WaylandConnection, which then imports a wl_buffer and attaches > it to a requested surface. > > TL:DR; > - There are two communicating parties - WaylandConnection, which establishes > a connection with Wayland, and a WaylandConnectionProxy, which serves > the GPU process with a forwarding mojo connection to the WaylandConnection. > In single process mode, WaylandConnectionProxy just forwards calls to > WaylandConnection, and GLSurfaceEGL is used. In a multi process mode, > the l::Surfaceless and dmabuf based approach is used instead. > > - The communication is established in the following way: > when WaylandConnectionConnector receives a OnGpuServiceLaunched, > it binds WaylandConnection and WaylandConnectionProxy interfaces, and > calls to WaylandConnectionProxy to set a mojo ptr to the WaylandConnection. > The WaylandConnectionProxy receives the pointer, stores it and also stores > a task runner to make sure mojo is called on the right sequence. > > How buffers are created: > - Basically, the GPU process doesn't know about Wayland. What it does > is that it creates a GbmBuffer utilizing a DRM render node (it can't use > a drm card device, because authentication requires master access), takes > a gbm_bo file descriptor and shares it via a mojo call with the > WaylandConnection, which then uses the zwp_linux_dmabuf interface to > import a wl_buffer, which can be attached to a needed WaylandWindow > and commit-ed to show contents. That is, the gbm framework is used to share buffers > between the browser and the GPU process, where the browser process can read from them and > the GPU process is able to read and write using gl commands. > > How buffers are committed: > - GbmSurfaceless uses a normal procedure and submits frames on > SwapBuffersAsync call: a frame is created and scheduled as an overlay plane, > once scheduling is done, a widget is taken from that pending plane and > WaylandConnection::ScheduleBufferSwap is called. In order to specify, which > wl_buffer must be used, gbm bo handle is used as a buffer id. > Once the WaylandConnection receives a buffer swap call, it finds a buffer by a > buffer id and attaches that buffer to a WaylandWindow, which is also found > by a widget passed to it. PresentationCallback is not used and will be > enabled in the future. > > The missing feature is the software rasterization. That is, the gbm buffers cannot be > mmap'ed using unix mmap method. Thus, it's impossible to get a mapped memory range and let the cpu > write to it. I think this problem can be resolved in the downstream projects in different ways > but these solutions are not generic enough to be upstreamed. > > Another missing feature is presentation feedback. This will be implemented in follow up > CLs. > > COMPILE= compiles only with third_party minigbm now. For example, add use_intel_minigbm=true > if intel gpu is ozone_platform_wayland=true. Using system libgbm will be available soon. > TEST=run and compile ozone/wayland. > Bug: 820047 > > 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: Id351edd9883a765d3e549543a50175299108c6ab > Reviewed-on: https://chromium-review.googlesource.com/1057468 > Reviewed-by: Scott Violet <sky@chromium.org> > Reviewed-by: Antoine Labour <piman@chromium.org> > Reviewed-by: Ilya Sherman <isherman@chromium.org> > Reviewed-by: Tom Sepez <tsepez@chromium.org> > Reviewed-by: Robert Kroeger <rjkroege@chromium.org> > Commit-Queue: Maksim Sisov <msisov@igalia.com> > Cr-Commit-Position: refs/heads/master@{#583265} TBR=rjkroege@chromium.org,reveman@chromium.org,sky@chromium.org,spang@chromium.org,isherman@chromium.org,tsepez@chromium.org,piman@chromium.org,msisov@igalia.com Change-Id: I69eadb7666d275dabeceff306e3e5cde62ddf795 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 820047 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 Reviewed-on: https://chromium-review.googlesource.com/1175468 Reviewed-by: Xida Chen <xidachen@chromium.org> Commit-Queue: Xida Chen <xidachen@chromium.org> Cr-Commit-Position: refs/heads/master@{#583314} [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/content/browser/gpu/gpu_process_host.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/content/browser/gpu/gpu_process_host.h [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/content/public/app/mojo/content_gpu_manifest.json [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/tools/metrics/histograms/enums.xml [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/tools/metrics/histograms/histograms.xml [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/common/linux/BUILD.gn [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/common/linux/drm_util_linux.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/common/linux/drm_util_linux.h [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/drm/host/drm_device_connector.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/drm/host/drm_device_connector.h [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.h [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/scenic/ozone_platform_scenic.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/BUILD.gn [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/DEPS [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/client_native_pixmap_factory_wayland.cc [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/drm_render_node_handle.cc [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/drm_render_node_handle.h [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.cc [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.h [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/wayland_connection_proxy.cc [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/gpu/wayland_connection_proxy.h [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/ozone_platform_wayland.cc [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/wayland.gni [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/wayland_connection.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/wayland_connection.h [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/wayland_connection_connector.cc [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/platform/wayland/wayland_connection_connector.h [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/wayland_object.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/wayland_object.h [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/wayland_surface_factory.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/wayland_surface_factory.h [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/wayland_surface_factory_unittest.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/wayland_test.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/platform/wayland/wayland_test.h [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/public/gpu_platform_support_host.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/public/gpu_platform_support_host.h [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/public/interfaces/wayland/BUILD.gn [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/public/interfaces/wayland/OWNERS [delete] https://crrev.com/8c2cabaeff05c202f94645c5ff14b62c14467bcc/ui/ozone/public/interfaces/wayland/wayland_connection.mojom [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/public/ozone_platform.cc [modify] https://crrev.com/a89bb8dbd7043a597fa8a40eea9a5867da84b73b/ui/ozone/public/ozone_platform.h
,
Aug 16
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/cbdc9b3f2934df57908413d6895592f4e25bec9a commit cbdc9b3f2934df57908413d6895592f4e25bec9a Author: Maksim Sisov <msisov@igalia.com> Date: Thu Aug 16 07:17:07 2018 Reland "[ozone/Wayland] Implement Wayland dmabuf approach." This reverts commit a89bb8dbd7043a597fa8a40eea9a5867da84b73b. Reason for revert: crashes in ozone_unittest are fixed in //ui/ozone/platform/wayland/BUILD.gn. It was a "defines = [ "WAYLAND_GBM" ], which was missing. Original change's description: > Revert "[ozone/Wayland] Implement Wayland dmabuf approach." > > This reverts commit 4efeaf16f08b269b047de0628df8e4a211724cbd. > > Reason for revert: <INSERT REASONING HERE> > Causes a lot of unit test failure: > https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/linux-chromeos-dbg/7319 > > Original change's description: > > [ozone/Wayland] Implement Wayland dmabuf approach. > > > > This patch makes it possible to run Wayland backend with a separate gpu process. > > That is, WaylandConnection is not available on the GPU process side > > and so buffers cannot be created that way. > > > > To overcome this, a Wayland dmabuf based approach is used: > > - On the gpu process side, gl::Surfaceless is used, which is > > implemented by GbmSurfaceless. It differs from the one provided by > > the Ozone/Gbm backend (the difference is that there are no frame > > buffers, because DRM render node is used instead.) Basically, > > on the GPU side, a gbm_bo buffer is created and its file descriptor is > > shared with the WaylandConnection, which then imports a wl_buffer and attaches > > it to a requested surface. > > > > TL:DR; > > - There are two communicating parties - WaylandConnection, which establishes > > a connection with Wayland, and a WaylandConnectionProxy, which serves > > the GPU process with a forwarding mojo connection to the WaylandConnection. > > In single process mode, WaylandConnectionProxy just forwards calls to > > WaylandConnection, and GLSurfaceEGL is used. In a multi process mode, > > the l::Surfaceless and dmabuf based approach is used instead. > > > > - The communication is established in the following way: > > when WaylandConnectionConnector receives a OnGpuServiceLaunched, > > it binds WaylandConnection and WaylandConnectionProxy interfaces, and > > calls to WaylandConnectionProxy to set a mojo ptr to the WaylandConnection. > > The WaylandConnectionProxy receives the pointer, stores it and also stores > > a task runner to make sure mojo is called on the right sequence. > > > > How buffers are created: > > - Basically, the GPU process doesn't know about Wayland. What it does > > is that it creates a GbmBuffer utilizing a DRM render node (it can't use > > a drm card device, because authentication requires master access), takes > > a gbm_bo file descriptor and shares it via a mojo call with the > > WaylandConnection, which then uses the zwp_linux_dmabuf interface to > > import a wl_buffer, which can be attached to a needed WaylandWindow > > and commit-ed to show contents. That is, the gbm framework is used to share buffers > > between the browser and the GPU process, where the browser process can read from them and > > the GPU process is able to read and write using gl commands. > > > > How buffers are committed: > > - GbmSurfaceless uses a normal procedure and submits frames on > > SwapBuffersAsync call: a frame is created and scheduled as an overlay plane, > > once scheduling is done, a widget is taken from that pending plane and > > WaylandConnection::ScheduleBufferSwap is called. In order to specify, which > > wl_buffer must be used, gbm bo handle is used as a buffer id. > > Once the WaylandConnection receives a buffer swap call, it finds a buffer by a > > buffer id and attaches that buffer to a WaylandWindow, which is also found > > by a widget passed to it. PresentationCallback is not used and will be > > enabled in the future. > > > > The missing feature is the software rasterization. That is, the gbm buffers cannot be > > mmap'ed using unix mmap method. Thus, it's impossible to get a mapped memory range and let the cpu > > write to it. I think this problem can be resolved in the downstream projects in different ways > > but these solutions are not generic enough to be upstreamed. > > > > Another missing feature is presentation feedback. This will be implemented in follow up > > CLs. > > > > COMPILE= compiles only with third_party minigbm now. For example, add use_intel_minigbm=true > > if intel gpu is ozone_platform_wayland=true. Using system libgbm will be available soon. > > TEST=run and compile ozone/wayland. > > Bug: 820047 > > > > 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: Id351edd9883a765d3e549543a50175299108c6ab > > Reviewed-on: https://chromium-review.googlesource.com/1057468 > > Reviewed-by: Scott Violet <sky@chromium.org> > > Reviewed-by: Antoine Labour <piman@chromium.org> > > Reviewed-by: Ilya Sherman <isherman@chromium.org> > > Reviewed-by: Tom Sepez <tsepez@chromium.org> > > Reviewed-by: Robert Kroeger <rjkroege@chromium.org> > > Commit-Queue: Maksim Sisov <msisov@igalia.com> > > Cr-Commit-Position: refs/heads/master@{#583265} > > TBR=rjkroege@chromium.org,reveman@chromium.org,sky@chromium.org,spang@chromium.org,isherman@chromium.org,tsepez@chromium.org,piman@chromium.org,msisov@igalia.com > > Change-Id: I69eadb7666d275dabeceff306e3e5cde62ddf795 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: 820047 > 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 > Reviewed-on: https://chromium-review.googlesource.com/1175468 > Reviewed-by: Xida Chen <xidachen@chromium.org> > Commit-Queue: Xida Chen <xidachen@chromium.org> > Cr-Commit-Position: refs/heads/master@{#583314} TBR=rjkroege@chromium.org,reveman@chromium.org,sky@chromium.org,spang@chromium.org,isherman@chromium.org,tsepez@chromium.org,piman@chromium.org,xidachen@chromium.org,msisov@igalia.com Change-Id: I8344cd3552694a753327ea7a68b1949cd7001fd9 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: 820047 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 Reviewed-on: https://chromium-review.googlesource.com/1177341 Reviewed-by: Maksim Sisov <msisov@igalia.com> Commit-Queue: Maksim Sisov <msisov@igalia.com> Cr-Commit-Position: refs/heads/master@{#583570} [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/content/browser/gpu/gpu_process_host.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/content/browser/gpu/gpu_process_host.h [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/content/public/app/mojo/content_gpu_manifest.json [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/tools/metrics/histograms/enums.xml [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/tools/metrics/histograms/histograms.xml [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/common/linux/BUILD.gn [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/common/linux/drm_util_linux.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/common/linux/drm_util_linux.h [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/drm/host/drm_device_connector.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/drm/host/drm_device_connector.h [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/drm/host/drm_gpu_platform_support_host.h [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/scenic/ozone_platform_scenic.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/BUILD.gn [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/DEPS [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/client_native_pixmap_factory_wayland.cc [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/drm_render_node_handle.cc [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/drm_render_node_handle.h [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.cc [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/drm_render_node_path_finder.h [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.h [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.cc [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/gbm_surfaceless_wayland.h [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/wayland_connection_proxy.cc [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/gpu/wayland_connection_proxy.h [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/ozone_platform_wayland.cc [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland.gni [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_connection.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_connection.h [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_connection_connector.cc [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_connection_connector.h [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_object.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_object.h [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_surface_factory.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_surface_factory.h [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_surface_factory_unittest.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_test.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/platform/wayland/wayland_test.h [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/public/gpu_platform_support_host.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/public/gpu_platform_support_host.h [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/public/interfaces/wayland/BUILD.gn [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/public/interfaces/wayland/OWNERS [add] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/public/interfaces/wayland/wayland_connection.mojom [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/public/ozone_platform.cc [modify] https://crrev.com/cbdc9b3f2934df57908413d6895592f4e25bec9a/ui/ozone/public/ozone_platform.h
,
Aug 16
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/0b8963fa7962904f890818d8205ca11981afe2bf commit 0b8963fa7962904f890818d8205ca11981afe2bf Author: Maksim Sisov <msisov@igalia.com> Date: Thu Aug 16 12:40:47 2018 [ozone/wayland] Ensure all the mojo calls happen on gpu main thread. This cl fixes threading model: the proxy object is created on a gpu main thread, whereas mojo ptr for a WaylandConnection is set on a IO child thread. ScheduleSwap is also called on GpuMainThread, but other methods can be called from IO threads. To make a consitency, always use GpuMainThread's task runner. This is also needed for a frame callback, which will be passed during ScheduleSwap calls in a follow up cl. Bug: 859012 , 820047 Change-Id: I6833f3722cb4531da375387a7d443c1835f3c870 Reviewed-on: https://chromium-review.googlesource.com/1170827 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Cr-Commit-Position: refs/heads/master@{#583618} [modify] https://crrev.com/0b8963fa7962904f890818d8205ca11981afe2bf/ui/ozone/platform/wayland/gpu/wayland_connection_proxy.cc [modify] https://crrev.com/0b8963fa7962904f890818d8205ca11981afe2bf/ui/ozone/platform/wayland/gpu/wayland_connection_proxy.h
,
Aug 17
,
Aug 17
,
Aug 17
,
Aug 17
,
Aug 17
,
Aug 27
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/3d93d3028418b78f5bad0368931aad4faba43b4f commit 3d93d3028418b78f5bad0368931aad4faba43b4f Author: Maksim Sisov <msisov@igalia.com> Date: Mon Aug 27 07:26:04 2018 [ozone/wayland] Gardening: move buffer management into own class. This is a preliminary work before introducing frame and presentation callbacks. Summary: It's too much for WaylandConnection to hold that much functionality. Instead, move the buffer management mechanism to its own WaylandBufferManager class. It's mostly moving code around with no functionality changes except that CreateBuffer, SwapBuffer and DestroyBuffer return the result of their job. On false, an error message is set and WaylandConnection uses it when calling TerminateGpuProcess. In followup CLs, I will make the buffer management easier. That will allow us to use frame callbacks in quite a nice way. Bug: 820047 Change-Id: Ib64d4d5d3e4c64bd7e95154e8d280509bbdac8b6 Reviewed-on: https://chromium-review.googlesource.com/1179835 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Reviewed-by: Antonio Gomes <tonikitoo@igalia.com> Cr-Commit-Position: refs/heads/master@{#586201} [modify] https://crrev.com/3d93d3028418b78f5bad0368931aad4faba43b4f/ui/ozone/platform/wayland/BUILD.gn [add] https://crrev.com/3d93d3028418b78f5bad0368931aad4faba43b4f/ui/ozone/platform/wayland/wayland_buffer_manager.cc [add] https://crrev.com/3d93d3028418b78f5bad0368931aad4faba43b4f/ui/ozone/platform/wayland/wayland_buffer_manager.h [modify] https://crrev.com/3d93d3028418b78f5bad0368931aad4faba43b4f/ui/ozone/platform/wayland/wayland_connection.cc [modify] https://crrev.com/3d93d3028418b78f5bad0368931aad4faba43b4f/ui/ozone/platform/wayland/wayland_connection.h
,
Aug 28
,
Aug 29
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/2c5dbc93ba3e0575b224bcca8a0e8e04bb824864 commit 2c5dbc93ba3e0575b224bcca8a0e8e04bb824864 Author: Maksim Sisov <msisov@igalia.com> Date: Wed Aug 29 08:49:42 2018 [ozone/wayland] Fix several issues when there is no gbm or zwp dmabuf This CL fixes an issue when zwp linux dmabuf extension is not available, but it tries to access supported buffer formats, which are only provided on availability of that extension protocol. Other issue is unused private member |surface_factory_| when wayland gbm is not used. TBR=rjkroege@chromium.org Bug: 820047 Change-Id: I7f5d210ec6c5c6cfb8b9ac59a379cae68e0caca2 Reviewed-on: https://chromium-review.googlesource.com/1193929 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Maksim Sisov <msisov@igalia.com> Cr-Commit-Position: refs/heads/master@{#587042} [modify] https://crrev.com/2c5dbc93ba3e0575b224bcca8a0e8e04bb824864/ui/ozone/platform/wayland/client_native_pixmap_factory_wayland.cc [modify] https://crrev.com/2c5dbc93ba3e0575b224bcca8a0e8e04bb824864/ui/ozone/platform/wayland/wayland_buffer_manager.h [modify] https://crrev.com/2c5dbc93ba3e0575b224bcca8a0e8e04bb824864/ui/ozone/platform/wayland/wayland_connection.cc [modify] https://crrev.com/2c5dbc93ba3e0575b224bcca8a0e8e04bb824864/ui/ozone/platform/wayland/wayland_connection.h [modify] https://crrev.com/2c5dbc93ba3e0575b224bcca8a0e8e04bb824864/ui/ozone/platform/wayland/wayland_surface_factory.cc
,
Sep 3
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/a7b03c87c16e998d898473350b1065ae37f1a5d2 commit a7b03c87c16e998d898473350b1065ae37f1a5d2 Author: Maksim Sisov <msisov@igalia.com> Date: Mon Sep 03 10:51:45 2018 [ozone/wayland] Introduce WaylandBufferManager::Buffer instance The concept is pretty simple here - instead of using many map structures, just use a single Buffer structure, which will keep all the neccessary data we need to create/swap/destroy buffers/wl_buffers. In other words, the Buffer is both representation of dmabuf on the GPU side and the wl_buffer on the browser side. And it has a direct association between the |widget| and the dmabuf. Note that different Buffers can have the same widget they are attached/ being attached/were attached to. tl:dr; The Buffer structure holds all the necessary data to create native wl_buffers now. That is, it holds zwp linux params variable, which is used for creation of wl_buffers and asynchronous mapping between the Buffer and the wl_buffer on CreateSucceeded calls. Also, the Buffer holds associated widget and a buffer_id, which is to find and attach a wl_buffer to a wl_surface requested by the GPU process. In the future, the Buffer is going to keep a gpu callback, which will hold a swap result and a presentation feedback of the swap request. There is no functionality change, but I'm just rather improving the code. Bug: 859012 , 820047 Change-Id: I7812d10e0a9e7fb472298231a191dfa09701bd2a Reviewed-on: https://chromium-review.googlesource.com/1193447 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Cr-Commit-Position: refs/heads/master@{#588371} [modify] https://crrev.com/a7b03c87c16e998d898473350b1065ae37f1a5d2/ui/ozone/platform/wayland/wayland_buffer_manager.cc [modify] https://crrev.com/a7b03c87c16e998d898473350b1065ae37f1a5d2/ui/ozone/platform/wayland/wayland_buffer_manager.h [modify] https://crrev.com/a7b03c87c16e998d898473350b1065ae37f1a5d2/ui/ozone/platform/wayland/wayland_connection.cc
,
Sep 5
,
Sep 7
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/9dc2f03d8086a9b60136c3585abb83aca356a676 commit 9dc2f03d8086a9b60136c3585abb83aca356a676 Author: Maksim Sisov <msisov@igalia.com> Date: Fri Sep 07 09:36:33 2018 [ozone/common] Make gbm_wrapper to be compiled with system libgbm This patch makes use of new minigbm APi names, which are aligned with Linux libgbm. Also, it defines certain definitions, which are different between libgbm and minigbm. What is more, it adds USING_MINIGBM for internal usage to be able to distinguish between system linux gbm and minigbm. Last but not least, drmPrimeHandleToFd is used in case of linux system libgbm in order to be able to get mappable fds per each plane, which is neede to add GpuMemoryBuffers support. Bug: 869206 , 578890, 820047 Change-Id: I0a743aef1c8bad2bb5792a58ab29abec45ea4585 Reviewed-on: https://chromium-review.googlesource.com/1158234 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Michael Spang <spang@chromium.org> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Cr-Commit-Position: refs/heads/master@{#589475} [modify] https://crrev.com/9dc2f03d8086a9b60136c3585abb83aca356a676/ui/ozone/common/linux/gbm_wrapper.cc
,
Sep 13
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/53084c963baf5aea98c7b453a8e4c633e267d22e commit 53084c963baf5aea98c7b453a8e4c633e267d22e Author: Maksim Sisov <msisov@igalia.com> Date: Thu Sep 13 13:30:49 2018 [ozone/wayland] Start using format modifier Let's start providing this meta data as well in order to better describe the buffer/image. What is format modifier? From drm_fourcc: * Format modifiers describe, typically, a re-ordering or modification * of the data in a plane of an FB. This can be used to express tiled/ * swizzled formats, or compression, or a combination of the two. Bug: 820047 Change-Id: I16f87b6130486439a8069ec1e39ff2c6084c4ccc Reviewed-on: https://chromium-review.googlesource.com/1219617 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Michael Spang <spang@chromium.org> Reviewed-by: Robert Kroeger <rjkroege@chromium.org> Cr-Commit-Position: refs/heads/master@{#590989} [modify] https://crrev.com/53084c963baf5aea98c7b453a8e4c633e267d22e/ui/ozone/platform/wayland/gpu/gbm_pixmap_wayland.cc [modify] https://crrev.com/53084c963baf5aea98c7b453a8e4c633e267d22e/ui/ozone/platform/wayland/wayland_buffer_manager.cc
,
Sep 19
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/816f0e1e5c15d7fce9389a428cbd49bbdf158501 commit 816f0e1e5c15d7fce9389a428cbd49bbdf158501 Author: Ryo Hashimoto <hashimoto@chromium.org> Date: Wed Sep 19 04:46:16 2018 Revert "[ozone/common] Make gbm_wrapper to be compiled with system libgbm" This reverts commit 9dc2f03d8086a9b60136c3585abb83aca356a676. Reason for revert: causes crash loop on grunt Original change's description: > [ozone/common] Make gbm_wrapper to be compiled with system libgbm > > This patch makes use of new minigbm APi names, which are aligned with > Linux libgbm. > > Also, it defines certain definitions, which are different between > libgbm and minigbm. > > What is more, it adds USING_MINIGBM for internal usage to be able > to distinguish between system linux gbm and minigbm. > > Last but not least, drmPrimeHandleToFd is used in case of linux > system libgbm in order to be able to get mappable fds per each > plane, which is neede to add GpuMemoryBuffers support. > > Bug: 869206 , 578890, 820047 > Change-Id: I0a743aef1c8bad2bb5792a58ab29abec45ea4585 > Reviewed-on: https://chromium-review.googlesource.com/1158234 > Commit-Queue: Maksim Sisov <msisov@igalia.com> > Reviewed-by: Michael Spang <spang@chromium.org> > Reviewed-by: Robert Kroeger <rjkroege@chromium.org> > Cr-Commit-Position: refs/heads/master@{#589475} TBR=rjkroege@chromium.org,spang@chromium.org,msisov@igalia.com # Not skipping CQ checks because original CL landed > 1 day ago. Bug: 869206 , 578890, 820047 Change-Id: Idd0f9e4aa584bc1e353d3947cef12e4ee8839385 Reviewed-on: https://chromium-review.googlesource.com/1232881 Reviewed-by: Ryo Hashimoto <hashimoto@chromium.org> Reviewed-by: Michael Spang <spang@chromium.org> Commit-Queue: Ryo Hashimoto <hashimoto@chromium.org> Cr-Commit-Position: refs/heads/master@{#592321} [modify] https://crrev.com/816f0e1e5c15d7fce9389a428cbd49bbdf158501/ui/ozone/common/linux/gbm_wrapper.cc
,
Sep 21
,
Oct 2
,
Oct 16
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/f99be2213ca6958f558add3eaf4494101a4c1821 commit f99be2213ca6958f558add3eaf4494101a4c1821 Author: Maksim Sisov <msisov@igalia.com> Date: Tue Oct 16 06:50:03 2018 [ozone/common] Make planar import work with 0x5505 and 0x5504. This is first step to migrate minigbm to use GBM_BO_IMPORT_FD_MODIFIER instead of GBM_BO_IMPORT_FD_PLANAR. Ones ChromeOS will start using the newest chrome, we can finally add GBM_BO_IMPORT_FD_MODIFIER 0x5504 to minigbm and get rid of GBM_BO_IMPORT_FD_PLANAR. See comment from Tomasz in https://crrev.com/c/1273455 Bug: 869206 , 578890, 820047 Change-Id: Ibac5c0c874c523e845675ff944561d3e2a3ec530 Reviewed-on: https://chromium-review.googlesource.com/c/1278400 Commit-Queue: Maksim Sisov <msisov@igalia.com> Reviewed-by: Michael Spang <spang@chromium.org> Cr-Commit-Position: refs/heads/master@{#599893} [modify] https://crrev.com/f99be2213ca6958f558add3eaf4494101a4c1821/ui/ozone/common/linux/gbm_wrapper.cc
,
Dec 3
,
Dec 3
|
|||||||||||||||||||||||||
►
Sign in to add a comment |
||||||||||||||||||||||||||||
Comment 1 by msi...@igalia.com
, Mar 8 2018