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

Issue 820047 link

Starred by 2 users

Issue metadata

Status: Started
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Chrome
Pri: 2
Type: Bug
viz


Sign in to add a comment

[ozone/wayland] Get Wayland functioning with a separate gpu process.

Project Member Reported by msi...@igalia.com, Mar 8 2018

Issue description

That is, currently Wayland can only work in a single process mode.

After trying several approaches, wayland dmabuf approach has been taken.
 

Comment 1 by msi...@igalia.com, Mar 8 2018

Blocking: 732805

Comment 2 by msi...@igalia.com, Mar 8 2018

Description: Show this description

Comment 3 by msi...@igalia.com, Mar 8 2018

Cc: je_julie.kim@chromium.org

Comment 4 by msi...@igalia.com, Mar 8 2018

Description: Show this description

Comment 5 by msi...@igalia.com, Mar 9 2018

Status: Started (was: Untriaged)
Prototyping started.

Comment 6 by msi...@igalia.com, Mar 12 2018

Components: Internals>GPU
Components: Internals>Services>WindowService Internals>Services>Viz
Labels: -Proj-Mustash-Mus -Proj-Mustash-Mus-External
Deprecating Proj-Mustash-Mus labels in favor of components.

Comment 8 by msi...@igalia.com, May 17 2018

Blocking: 578890

Comment 9 by msi...@igalia.com, May 17 2018

Description: Show this description

Comment 10 by msi...@igalia.com, May 17 2018

Labels: Proj-Ozone
Project Member

Comment 12 by bugdroid1@chromium.org, 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

Project Member

Comment 13 by bugdroid1@chromium.org, 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

Project Member

Comment 14 by bugdroid1@chromium.org, 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

Project Member

Comment 15 by bugdroid1@chromium.org, 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

Comment 16 by msi...@igalia.com, Jun 29 2018

Blockedon: 859012
Project Member

Comment 17 by bugdroid1@chromium.org, 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

Blockedon: 864914
Blocking: -732805
Blockedon: 873132
Project Member

Comment 21 by bugdroid1@chromium.org, 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

Project Member

Comment 22 by bugdroid1@chromium.org, 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

Project Member

Comment 23 by bugdroid1@chromium.org, 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

Project Member

Comment 24 by bugdroid1@chromium.org, 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

Project Member

Comment 25 by bugdroid1@chromium.org, 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

Description: Show this description
Labels: Wayland
Summary: [ozone/wayland] Get Wayland functioning with gpu split. (was: Get Wayland functioning with gpu split.)
Components: -Internals>Services>WindowService
Blockedon: 848385
Blockedon: 791920
Project Member

Comment 31 by bugdroid1@chromium.org, 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

Blockedon: -791920
Project Member

Comment 33 by bugdroid1@chromium.org, 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

Project Member

Comment 34 by bugdroid1@chromium.org, 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

Blockedon: 880726
Project Member

Comment 36 by bugdroid1@chromium.org, 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

Project Member

Comment 37 by bugdroid1@chromium.org, 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

Project Member

Comment 38 by bugdroid1@chromium.org, 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

Summary: [ozone/wayland] Get Wayland functioning with a separate gpu process. (was: [ozone/wayland] Get Wayland functioning with gpu split.)
Blockedon: 891188
Project Member

Comment 41 by bugdroid1@chromium.org, 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

Blockedon: 910998
Labels: -Wayland Proj-Ozone-Wayland

Sign in to add a comment